diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 02:57:58 +0000 |
commit | be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 (patch) | |
tree | 9754ff1ca740f6346cf8483ec915d4054bc5da2d /web/server/h2o/libh2o/misc/oktavia/bin | |
parent | Initial commit. (diff) | |
download | netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.tar.xz netdata-be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97.zip |
Adding upstream version 1.44.3.upstream/1.44.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/server/h2o/libh2o/misc/oktavia/bin')
-rwxr-xr-x | web/server/h2o/libh2o/misc/oktavia/bin/httpstatus | 7032 | ||||
-rwxr-xr-x | web/server/h2o/libh2o/misc/oktavia/bin/oktavia-mkindex | 25034 | ||||
-rwxr-xr-x | web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search | 24779 |
3 files changed, 56845 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/misc/oktavia/bin/httpstatus b/web/server/h2o/libh2o/misc/oktavia/bin/httpstatus new file mode 100755 index 00000000..40d13cd7 --- /dev/null +++ b/web/server/h2o/libh2o/misc/oktavia/bin/httpstatus @@ -0,0 +1,7032 @@ +#!/usr/bin/env node +// generatedy by JSX compiler 0.9.24 (2013-04-05 13:45:00 +0900; 1b229cc6a411f674f0f7cf7a79b7a8b3f8eb7414) +var JSX = {}; +(function (JSX) { +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +/** + * sideeffect().a /= b + */ +function $__jsx_div_assign(obj, prop, divisor) { + return obj[prop] = (obj[prop] / divisor) | 0; +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +var $__jsx_isNaN = isNaN; +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +/** + * class HTTPStatus extends Object + * @constructor + */ +function HTTPStatus() { +} + +/** + * @constructor + */ +function HTTPStatus$() { + /** @type {Oktavia} */ + var this$0; + /** @type {Stemmer} */ + var stemmer$0; + /** @type {Oktavia} */ + var oktavia$0; + this.splitter = null; + this.httpstatus = null; + oktavia$0 = this.oktavia = new Oktavia$(); + this$0 = oktavia$0; + stemmer$0 = new EnglishStemmer$(); + this$0._stemmer = stemmer$0; + this.splitter = this.oktavia.addSplitter$S('line break'); + this.makeIndex$(); +}; + +HTTPStatus$.prototype = new HTTPStatus; + +/** + */ +HTTPStatus.prototype.makeIndex$ = function () { + /** @type {!number} */ + var i; + /** @type {Splitter} */ + var this$0; + /** @type {!number} */ + var index$0$0; + /** @type {Oktavia} */ + var this$0$0; + /** @type {FMIndex} */ + var this$0$0$0; + /** @type {Oktavia} */ + var this$1; + this.httpstatus = [ "100: Continue", "101: Switching Protocols", "102: Processing", "200: OK", "201: Created", "202: Accepted", "203: Non-Authoritative Information", "204: No Content", "205: Reset Content", "206: Partial Content", "207: Multi-Status", "208: Already Reported", "300: Multiple Choices", "301: Moved Permanently", "302: Found", "303: See Other", "304: Not Modified", "305: Use Proxy", "307: Temporary Redirect", "400: Bad Request", "401: Unauthorized", "402: Payment Required", "403: Forbidden", "404: Not Found", "405: Method Not Allowed", "406: Not Acceptable", "407: Proxy Authentication Required", "408: Request Timeout", "409: Conflict", "410: Gone", "411: Length Required", "412: Precondition Failed", "413: Request Entity Too Large", "414: Request-URI Too Large", "415: Unsupported Media Type", "416: Request Range Not Satisfiable", "417: Expectation Failed", "418: I'm a teapot", "422: Unprocessable Entity", "423: Locked", "424: Failed Dependency", "425: No code", "426: Upgrade Required", "428: Precondition Required", "429: Too Many Requests", "431: Request Header Fields Too Large", "449: Retry with", "500: Internal Server Error", "501: Not Implemented", "502: Bad Gateway", "503: Service Unavailable", "504: Gateway Timeout", "505: HTTP Version Not Supported", "506: Variant Also Negotiates", "507: Insufficient Storage", "509: Bandwidth Limit Exceeded", "510: Not Extended" ]; + for (i in this.httpstatus) { + this.oktavia.addWord$SB(this.httpstatus[i], true); + this$0 = this.splitter; + this$0$0 = this$0._parent; + this$0$0$0 = this$0$0._fmindex; + index$0$0 = this$0$0$0._substr.length; + this$0._bitVector.set$I(index$0$0 - 1); + } + this$1 = this.oktavia; + this$1.build$IB(5, false); +}; + +/** + * @param {Array.<undefined|!string>} words + * @return {!string} + */ +HTTPStatus.prototype.search$AS = function (words) { + /** @type {QueryParser} */ + var queryParser; + /** @type {Array.<undefined|Query>} */ + var queries; + /** @type {!string} */ + var result; + /** @type {SearchSummary} */ + var summary; + /** @type {Array.<undefined|!string>} */ + var resultWords; + /** @type {!number} */ + var i; + queryParser = ({queries: [ ]}); + queries = QueryParser$parse$LQueryParser$AS(queryParser, words); + if (queries.length === 0) { + result = this.httpstatus.join('\n'); + result = result + "\n\nToday's status: " + this.httpstatus[Math.round(Math.random() * this.httpstatus.length)]; + return result; + } else { + summary = this.oktavia.search$ALQuery$(queries); + if (SearchSummary$size$LSearchSummary$(summary) === 0) { + return "not found "; + } + resultWords = [ ]; + for (i in summary.result.unitIds) { + resultWords.push(this.splitter.getContent$I(summary.result.unitIds[i])); + } + return resultWords.join('\n'); + } +}; + +/** + * @return {!string} + */ +HTTPStatus.prototype.random$ = function () { + return this.httpstatus[Math.round(Math.random() * this.httpstatus.length)]; +}; + +/** + * class _Main extends Object + * @constructor + */ +function _Main() { +} + +/** + * @constructor + */ +function _Main$() { +}; + +_Main$.prototype = new _Main; + +/** + * @param {Array.<undefined|!string>} argv + */ +_Main.main$AS = function (argv) { + /** @type {HTTPStatus} */ + var httpstatus; + httpstatus = new HTTPStatus$(); + console.log(httpstatus.search$AS(argv)); +}; + +var _Main$main$AS = _Main.main$AS; + +/** + * class Oktavia extends Object + * @constructor + */ +function Oktavia() { +} + +/** + * @constructor + */ +function Oktavia$() { + /** @type {Array.<undefined|!string>} */ + var _utf162compressCode$0; + this._compressCode2utf16 = null; + this._fmindex = new FMIndex$(); + this._metadatas = ({ }); + this._metadataLabels = [ ]; + this._stemmer = null; + this._stemmingResult = ({ }); + _utf162compressCode$0 = this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + _utf162compressCode$0.length = 65536; + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; +}; + +Oktavia$.prototype = new Oktavia; + +/** + * @param {Stemmer} stemmer + */ +Oktavia.prototype.setStemmer$LStemmer$ = function (stemmer) { + this._stemmer = stemmer; +}; + +/** + * @return {Metadata} + */ +Oktavia.prototype.getPrimaryMetadata$ = function () { + return this._metadatas[this._metadataLabels[0]]; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.addSection$S = function (key) { + /** @type {Section} */ + var section; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + section = new Section$LOktavia$(this); + this._metadatas[key] = section; + return section; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.getSection$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.addSplitter$S = function (key) { + /** @type {Splitter} */ + var splitter; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + splitter = new Splitter$LOktavia$(this); + this._metadatas[key] = splitter; + return splitter; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.getSplitter$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!string>} headers + * @return {Table} + */ +Oktavia.prototype.addTable$SAS = function (key, headers) { + /** @type {Table} */ + var table; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + table = new Table$LOktavia$AS(this, headers); + this._metadatas[key] = table; + return table; +}; + +/** + * @param {!string} key + * @return {Table} + */ +Oktavia.prototype.getTable$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.addBlock$S = function (key) { + /** @type {Block} */ + var block; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + block = new Block$LOktavia$(this); + this._metadatas[key] = block; + return block; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.getBlock$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + */ +Oktavia.prototype.addEndOfBlock$ = function () { + this._fmindex.push$S(Oktavia.eob); +}; + +/** + * @param {!string} words + */ +Oktavia.prototype.addWord$S = function (words) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {undefined|!string} */ + var newCharCode; + str = [ ]; + str.length = words.length; + for (i = 0; i < words.length; i++) { + charCode = words.charCodeAt(i); + newCharCode = this._utf162compressCode[charCode]; + if (newCharCode == null) { + newCharCode = String.fromCharCode(this._compressCode2utf16.length); + this._utf162compressCode[charCode] = newCharCode; + this._compressCode2utf16.push(String.fromCharCode(charCode)); + } + str.push(newCharCode); + } + this._fmindex.push$S(str.join('')); +}; + +/** + * @param {!string} words + * @param {!boolean} stemming + */ +Oktavia.prototype.addWord$SB = function (words, stemming) { + /** @type {Array.<undefined|!string>} */ + var wordList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var originalWord; + /** @type {!string} */ + var smallWord; + /** @type {undefined|!string} */ + var registerWord; + /** @type {!string} */ + var baseWord; + /** @type {!string} */ + var compressedCodeWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + this.addWord$S(words); + wordList = words.split(/\s+/); + for (i = 0; i < wordList.length; i++) { + originalWord = wordList[i]; + smallWord = originalWord.slice(0, 1).toLowerCase() + originalWord.slice(1); + registerWord = null; + if (stemming && this._stemmer) { + baseWord = this._stemmer.stemWord$S(originalWord.toLowerCase()); + if (originalWord.indexOf(baseWord) === -1) { + registerWord = baseWord; + } + } else { + if (originalWord != smallWord) { + registerWord = smallWord; + } + } + if (registerWord) { + compressedCodeWord = this._convertToCompressionCode$S(originalWord); + stemmedList = this._stemmingResult[registerWord]; + if (! stemmedList) { + stemmedList = [ compressedCodeWord ]; + this._stemmingResult[registerWord] = stemmedList; + } else { + if (stemmedList.indexOf(compressedCodeWord) === -1) { + stemmedList.push(compressedCodeWord); + } + } + } + } +}; + +/** + * @param {!string} keyword + * @return {!string} + */ +Oktavia.prototype._convertToCompressionCode$S = function (keyword) { + /** @type {Array.<undefined|!string>} */ + var resultChars; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var chr; + resultChars = [ ]; + for (i = 0; i < keyword.length; i++) { + chr = this._utf162compressCode[keyword.charCodeAt(i)]; + if (chr == null) { + resultChars.push(Oktavia.unknown); + } else { + resultChars.push(chr); + } + } + return resultChars.join(''); +}; + +/** + * @param {!string} keyword + * @param {!boolean} stemming + * @return {Array.<undefined|!number>} + */ +Oktavia.prototype.rawSearch$SB = function (keyword, stemming) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!string} */ + var baseWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + if (stemming) { + result = [ ]; + if (this._stemmer) { + baseWord = this._stemmer.stemWord$S(keyword.toLowerCase()); + stemmedList = this._stemmingResult[baseWord]; + if (stemmedList) { + for (i = 0; i < stemmedList.length; i++) { + word = stemmedList[i]; + result = result.concat(this._fmindex.search$S(word)); + } + } + } + } else { + result = this._fmindex.search$S(this._convertToCompressionCode$S(keyword)); + } + return result; +}; + +/** + * @param {Array.<undefined|Query>} queries + * @return {SearchSummary} + */ +Oktavia.prototype.search$ALQuery$ = function (queries) { + /** @type {SearchSummary} */ + var summary; + /** @type {!number} */ + var i; + /** @type {SingleResult} */ + var result$0; + summary = ({sourceResults: [ ], result: null, oktavia: this}); + for (i = 0; i < queries.length; i++) { + result$0 = this._searchQuery$LQuery$(queries[i]); + summary.sourceResults.push(result$0); + } + summary.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$(summary, summary.sourceResults); + return summary; +}; + +/** + * @param {Query} query + * @return {SingleResult} + */ +Oktavia.prototype._searchQuery$LQuery$ = function (query) { + /** @type {SingleResult} */ + var result; + /** @type {Array.<undefined|!number>} */ + var positions; + result = new SingleResult$SBB(query.word, query.or, query.not); + if (query.raw) { + positions = this.rawSearch$SB(query.word, false); + } else { + positions = this.rawSearch$SB(query.word, false).concat(this.rawSearch$SB(query.word, true)); + } + this._metadatas[this._metadataLabels[0]].grouping$LSingleResult$AISB(result, positions, query.word, ! query.raw); + return result; +}; + +/** + */ +Oktavia.prototype.build$ = function () { + this.build$IB(5, false); +}; + +/** + * @param {!number} cacheDensity + * @param {!boolean} verbose + */ +Oktavia.prototype.build$IB = function (cacheDensity, verbose) { + /** @type {!string} */ + var key; + /** @type {!number} */ + var cacheRange; + /** @type {!number} */ + var maxChar; + for (key in this._metadatas) { + this._metadatas[key]._build$(); + } + cacheRange = Math.round(Math.max(1, 100 / Math.min(100, Math.max(0.01, cacheDensity)))); + maxChar = this._compressCode2utf16.length; + this._fmindex.build$SIIB(Oktavia.eof, maxChar, cacheRange, verbose); +}; + +/** + * @return {!string} + */ +Oktavia.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +Oktavia.prototype.dump$B = function (verbose) { + /** @type {!string} */ + var header; + /** @type {!string} */ + var fmdata; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {CompressionReport} */ + var report; + /** @type {undefined|!string} */ + var name; + /** @type {!string} */ + var data; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (verbose) { + console.log("Source text size: " + (this._fmindex.size$() * 2 + "") + ' bytes'); + } + fmdata = this._fmindex.dump$B(verbose); + result = [ header, fmdata ]; + result.push(Binary$dump16bitNumber$I(this._compressCode2utf16.length)); + for (i = 3; i < this._compressCode2utf16.length; i++) { + result.push(this._compressCode2utf16[i]); + } + if (verbose) { + console.log('Char Code Map: ' + (this._compressCode2utf16.length * 2 - 2 + "") + ' bytes'); + } + report = ({source: 0, result: 0}); + result.push(Binary$dumpStringListMap$HASLCompressionReport$(this._stemmingResult, report)); + if (verbose) { + console.log('Stemmed Word Table: ' + (result[result.length - 1].length + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + result.push(Binary$dump16bitNumber$I(this._metadataLabels.length)); + for (i = 0; i < this._metadataLabels.length; i++) { + report = ({source: 0, result: 0}); + name = this._metadataLabels[i]; + data = this._metadatas[name]._dump$LCompressionReport$(report); + result.push(Binary$dumpString$SLCompressionReport$(name, report), data); + if (verbose) { + console.log('Meta Data ' + name + ': ' + (data.length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + } + return result.join(''); +}; + +/** + * @param {!string} data + */ +Oktavia.prototype.load$S = function (data) { + /** @type {!string} */ + var header; + /** @type {!number} */ + var offset; + /** @type {!number} */ + var charCodeCount; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {LoadedStringListMapResult} */ + var stemmedWords; + /** @type {!number} */ + var metadataCount; + /** @type {LoadedStringResult} */ + var nameResult; + /** @type {!string} */ + var name; + /** @type {!number} */ + var type; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (data.slice(0, 5) !== header) { + throw new Error('Invalid data file'); + } + this._metadatas = ({ }); + this._metadataLabels = [ ]; + offset = 5; + offset = this._fmindex.load$SI(data, offset); + charCodeCount = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + for (i = 3; i < charCodeCount; i++) { + charCode = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16.push(String.fromCharCode(charCode)); + this._utf162compressCode[charCode] = String.fromCharCode(i); + } + stemmedWords = Binary$loadStringListMap$SI(data, offset); + this._stemmingResult = stemmedWords.result; + offset = stemmedWords.offset; + metadataCount = Binary$load16bitNumber$SI(data, offset++); + for (i = 0; i < metadataCount; i++) { + nameResult = Binary$loadString$SI(data, offset); + name = nameResult.result; + offset = nameResult.offset; + type = Binary$load16bitNumber$SI(data, offset++); + switch (type) { + case 0: + offset = Section$_load$LOktavia$SSI(this, name, data, offset); + break; + case 1: + offset = Splitter$_load$LOktavia$SSI(this, name, data, offset); + break; + case 2: + offset = Table$_load$LOktavia$SSI(this, name, data, offset); + break; + case 3: + offset = Block$_load$LOktavia$SSI(this, name, data, offset); + break; + } + } +}; + +/** + * @return {!number} + */ +Oktavia.prototype.contentSize$ = function () { + /** @type {FMIndex} */ + var this$0; + this$0 = this._fmindex; + return this$0._substr.length; +}; + +/** + * @param {!number} position + * @return {!number} + */ +Oktavia.prototype.wordPositionType$I = function (position) { + /** @type {!number} */ + var result; + /** @type {!string} */ + var ahead; + result = 0; + if (position === 0) { + result = 4; + } else { + ahead = this._fmindex.getSubstring$II(position - 1, 1); + if (/\s/.test(ahead)) { + result = 2; + } else { + if (/\W/.test(ahead)) { + result = 1; + } else { + if (Oktavia.eob === ahead) { + result = 3; + } + } + } + } + return (result | 0); +}; + +/** + * @param {!number} position + * @param {!number} length + * @return {!string} + */ +Oktavia.prototype._getSubstring$II = function (position, length) { + /** @type {!string} */ + var result; + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + result = this._fmindex.getSubstring$II(position, length); + str = [ ]; + for (i = 0; i < result.length; i++) { + str.push(this._compressCode2utf16[result.charCodeAt(i)]); + } + return str.join(''); +}; + +/** + * class Metadata extends Object + * @constructor + */ +function Metadata() { +} + +/** + * @constructor + * @param {Oktavia} parent + */ +function Metadata$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); +}; + +Metadata$LOktavia$.prototype = new Metadata; + +/** + * @return {!number} + */ +Metadata.prototype._size$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {!number} */ + var i$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0 = _bitVector$0 = this._bitVector; + i$0 = _bitVector$0._size; + return this$0.rank$IB(i$0, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getContent$I = function (index) { + /** @type {!number} */ + var startPosition; + /** @type {!number} */ + var length; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + length = this._bitVector.select$I(index) - startPosition + 1; + return this._parent._getSubstring$II(startPosition, length); +}; + +/** + * @param {!number} index + * @return {!number} + */ +Metadata.prototype.getStartPosition$I = function (index) { + /** @type {!number} */ + var startPosition; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + return (startPosition | 0); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Metadata.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Metadata.prototype._build$ = function () { + this._bitVector.build$(); +}; + +/** + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Metadata.prototype._load$SSI = function (name, data, offset) { + offset = this._bitVector.load$SI(data, offset); + this._parent._metadataLabels.push(name); + this._parent._metadatas[name] = this; + return offset; +}; + +/** + * @return {!string} + */ +Metadata.prototype._dump$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + contents$0.push(Binary$dump32bitNumberList$AN(this$0._v)); + return contents$0.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Metadata.prototype._dump$LCompressionReport$ = function (report) { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents$0.push(Binary$dump32bitNumberList$ANLCompressionReport$(this$0._v, report)); + return contents$0.join(''); +}; + +/** + * class Section extends Metadata + * @constructor + */ +function Section() { +} + +Section.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Section$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; +}; + +Section$LOktavia$.prototype = new Section; + +/** + * @param {!string} name + */ +Section.prototype.setTail$S = function (name) { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._names.push(name); + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!string} name + * @param {!number} index + */ +Section.prototype.setTail$SI = function (name, index) { + this._names.push(name); + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Section.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Section.prototype.getSectionIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getName$I = function (index) { + if (index < 0 || this._names.length <= index) { + throw new Error("Section.getName() : range error"); + } + return this._names[index]; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Section.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getSectionIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getInformation$I = function (index) { + return this.getName$I(index); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Section._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Section} */ + var section; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + section = new Section$LOktavia$(parent); + section._names = strs.result; + offset$0 = strs.offset; + offset$0 = section._bitVector.load$SI(data, offset$0); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset$0; +}; + +var Section$_load$LOktavia$SSI = Section._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Section.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Section.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Splitter extends Metadata + * @constructor + */ +function Splitter() { +} + +Splitter.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Splitter$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = null; +}; + +Splitter$LOktavia$.prototype = new Splitter; + +/** + * @constructor + * @param {Oktavia} parent + * @param {!string} name + */ +function Splitter$LOktavia$S(parent, name) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = name; +}; + +Splitter$LOktavia$S.prototype = new Splitter; + +/** + * @return {!number} + */ +Splitter.prototype.size$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + */ +Splitter.prototype.split$ = function () { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!number} index + */ +Splitter.prototype.split$I = function (index) { + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Splitter.prototype.getIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error"); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Splitter.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Splitter.prototype.getInformation$I = function (index) { + return (this.name != null ? this.name + (index + 1 + "") : ''); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Splitter._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {Splitter} */ + var section; + section = new Splitter$LOktavia$(parent); + offset = section._bitVector.load$SI(data, offset); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset; +}; + +var Splitter$_load$LOktavia$SSI = Splitter._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Splitter.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Splitter.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Table extends Metadata + * @constructor + */ +function Table() { +} + +Table.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + * @param {Array.<undefined|!string>} headers + */ +function Table$LOktavia$AS(parent, headers) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._headers = headers; + this._columnTails = new BitVector$(); +}; + +Table$LOktavia$AS.prototype = new Table; + +/** + * @return {!number} + */ +Table.prototype.rowSize$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + * @return {!number} + */ +Table.prototype.columnSize$ = function () { + return (this._headers.length | 0); +}; + +/** + */ +Table.prototype.setColumnTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + /** @type {Oktavia} */ + var _parent$0; + this$0 = _parent$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + _parent$0._fmindex.push$S(Oktavia.eob); + this._columnTails.set$I(index - 1); +}; + +/** + */ +Table.prototype.setRowTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {Array.<undefined|!number>} + */ +Table.prototype.getCell$I = function (position) { + /** @type {!number} */ + var row; + /** @type {!number} */ + var currentColumn; + /** @type {!number} */ + var lastRowColumn; + /** @type {!number} */ + var startPosition; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {BitVector} */ + var this$0; + /** @type {BitVector} */ + var this$1; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + row = this$0.rank$IB(position, true); + this$1 = this._columnTails; + currentColumn = this$1.rank$IB(position, true); + lastRowColumn = 0; + if (row > 0) { + startPosition = this._bitVector.select$I(row - 1) + 1; + lastRowColumn = this._columnTails.rank$I(startPosition); + } + result = [ row, currentColumn - lastRowColumn ]; + return result; +}; + +/** + * @param {!number} rowIndex + * @return {Object.<string, undefined|!string>} + */ +Table.prototype.getRowContent$I = function (rowIndex) { + /** @type {!string} */ + var content; + /** @type {Array.<undefined|!string>} */ + var values; + /** @type {Object.<string, undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + content = this.getContent$I(rowIndex); + values = content.split(Oktavia.eob, this._headers.length); + result = ({ }); + for (i in this._headers) { + if (i < values.length) { + result[this._headers[i]] = values[i]; + } else { + result[this._headers[i]] = ''; + } + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Table.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Table.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Table.prototype._build$ = function () { + this._bitVector.build$(); + this._columnTails.build$(); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Table._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Table} */ + var table; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + table = new Table$LOktavia$AS(parent, strs.result); + offset$0 = strs.offset; + offset$0 = table._bitVector.load$SI(data, offset$0); + table._parent._metadataLabels.push(name); + table._parent._metadatas[name] = table; + offset = offset$0; + return table._columnTails.load$SI(data, offset$0); +}; + +var Table$_load$LOktavia$SSI = Table._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Table.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$AS(this._headers), Metadata.prototype._dump$.call(this), this._columnTails.dump$() ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Table.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$ASLCompressionReport$(this._headers, report), Metadata.prototype._dump$LCompressionReport$.call(this, report), this._columnTails.dump$LCompressionReport$(report) ].join(''); +}; + +/** + * class Block extends Metadata + * @constructor + */ +function Block() { +} + +Block.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Block$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; + this._start = false; +}; + +Block$LOktavia$.prototype = new Block; + +/** + * @param {!string} blockName + */ +Block.prototype.startBlock$S = function (blockName) { + this.startBlock$SI(blockName, this._parent.contentSize$()); +}; + +/** + * @param {!string} blockName + * @param {!number} index + */ +Block.prototype.startBlock$SI = function (blockName, index) { + if (this._start) { + throw new Error('Splitter `' + this._names[this._names.length - 1] + '` is not closed'); + } + this._start = true; + this._names.push(blockName); + this._bitVector.set$I(index - 1); +}; + +/** + */ +Block.prototype.endBlock$ = function () { + this.endBlock$I(this._parent.contentSize$()); +}; + +/** + * @param {!number} index + */ +Block.prototype.endBlock$I = function (index) { + if (! this._start) { + throw new Error('Splitter is not started'); + } + this._start = false; + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Block.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Block.prototype.blockIndex$I = function (position) { + /** @type {!number} */ + var result; + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._parent._fmindex.size$() - 1 <= position) { + throw new Error("Block.blockIndex() : range error " + (position + "")); + } + if (position >= this._bitVector.size$()) { + position = (this._bitVector.size$() - 1 | 0); + result = (this._bitVector.rank$I(position) + 1 | 0); + } else { + this$0 = this._bitVector; + result = this$0.rank$IB(position, true); + } + return result; +}; + +/** + * @param {!number} position + * @return {!boolean} + */ +Block.prototype.inBlock$I = function (position) { + /** @type {!number} */ + var blockIndex; + blockIndex = this.blockIndex$I(position); + return blockIndex % 2 !== 0; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockContent$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this.getContent$I(blockIndex); + } else { + result = ''; + } + return result; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockName$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this._names[blockIndex >>> 1]; + } else { + result = ''; + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Block.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Block.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Block._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Block} */ + var block; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + block = new Block$LOktavia$(parent); + block._names = strs.result; + offset$0 = strs.offset; + offset$0 = block._bitVector.load$SI(data, offset$0); + block._parent._metadataLabels.push(name); + block._parent._metadatas[name] = block; + return offset$0; +}; + +var Block$_load$LOktavia$SSI = Block._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Block.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Block.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class QueryParser extends Object + * @constructor + */ +function QueryParser() { +} + +/** + * @constructor + */ +function QueryParser$() { + this.queries = [ ]; +}; + +QueryParser$.prototype = new QueryParser; + +/** + * @param {QueryParser} $this + * @param {Array.<undefined|!string>} queryStrings + * @return {Array.<undefined|Query>} + */ +QueryParser.parse$LQueryParser$AS = function ($this, queryStrings) { + /** @type {!boolean} */ + var nextOr; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + /** @type {Query} */ + var query; + nextOr = false; + for (i = 0; i < queryStrings.length; i++) { + word = queryStrings[i]; + if (word == 'OR') { + nextOr = true; + } else { + query = new Query$(); + if (nextOr) { + query.or = true; + nextOr = false; + } + if (word.slice(0, 1) === '-') { + query.not = true; + word = word.slice(1); + } + if (word.slice(0, 1) === '"' && word.slice(word.length - 1) === '"') { + query.raw = true; + word = word.slice(1, word.length - 1); + } + query.word = word; + $this.queries.push(query); + } + } + return $this.queries; +}; + +var QueryParser$parse$LQueryParser$AS = QueryParser.parse$LQueryParser$AS; + +/** + * @param {QueryParser} $this + * @return {!string} + */ +QueryParser.highlight$LQueryParser$ = function ($this) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {Query} */ + var query; + result = [ ]; + for (i = 0; i < $this.queries.length; i++) { + query = $this.queries[i]; + if (! query.not) { + result.push("highlight=" + $__jsx_encodeURIComponent(query.word)); + } + } + return '?' + result.join('&'); +}; + +var QueryParser$highlight$LQueryParser$ = QueryParser.highlight$LQueryParser$; + +/** + * class FMIndex extends Object + * @constructor + */ +function FMIndex() { +} + +/** + * @constructor + */ +function FMIndex$() { + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + this._ssize = 0; + (this._ddic = 0, this._head = 0); + this._substr = ""; + this._sv = new WaveletMatrix$(); + this._posdic = [ ]; + this._idic = [ ]; + _rlt$0 = this._rlt = [ ]; + _rlt$0.length = 65536; +}; + +FMIndex$.prototype = new FMIndex; + +/** + */ +FMIndex.prototype.clear$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + this$0._bv.length = 0; + this$0._seps.length = 0; + this$0._size = 0; + this._posdic.length = 0; + this._idic.length = 0; + this._ddic = 0; + this._head = 0; + this._substr = ""; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.size$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + return this$0._size; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.contentSize$ = function () { + return this._substr.length; +}; + +/** + * @param {!string} key + * @return {!number} + */ +FMIndex.prototype.getRows$S = function (key) { + /** @type {Array.<undefined|!number>} */ + var pos; + pos = [ ]; + return this.getRows$SAI(key, pos); +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!number>} pos + * @return {!number} + */ +FMIndex.prototype.getRows$SAI = function (key, pos) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {!number} */ + var c; + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + i = key.length - 1; + code = key.charCodeAt(i); + first = (_rlt$0 = this._rlt)[code] + 1; + last = _rlt$0[code + 1]; + while (first <= last) { + if (i === 0) { + pos[0] = (-- first | 0); + pos[1] = -- last; + return (last - first + 1 | 0); + } + i--; + c = key.charCodeAt(i); + first = this._rlt[c] + this._sv.rank$II(first - 1, c) + 1; + last = this._rlt[c] + this._sv.rank$II(last, c); + } + return 0; +}; + +/** + * @param {!number} i + * @return {!number} + */ +FMIndex.prototype.getPosition$I = function (i) { + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + if (i >= this.size$()) { + throw new Error("FMIndex.getPosition() : range error"); + } + pos = 0; + while (i !== this._head) { + if (i % this._ddic === 0) { + pos += this._posdic[i / this._ddic] + 1; + break; + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos++; + } + return (pos % this.size$() | 0); +}; + +/** + * @param {!number} pos + * @param {!number} len + * @return {!string} + */ +FMIndex.prototype.getSubstring$II = function (pos, len) { + /** @type {!number} */ + var pos_end; + /** @type {!number} */ + var pos_tmp; + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos_idic; + /** @type {!string} */ + var substr; + /** @type {!number} */ + var c; + /** @type {!number} */ + var _ddic$0; + if (pos >= this.size$()) { + throw new Error("FMIndex.getSubstring() : range error"); + } + pos_end = Math.min(pos + len, this.size$()); + pos_tmp = this.size$() - 1; + i = this._head; + pos_idic = Math.floor((pos_end + (_ddic$0 = this._ddic) - 2) / _ddic$0); + if (pos_idic < this._idic.length) { + pos_tmp = pos_idic * this._ddic; + i = this._idic[pos_idic]; + } + substr = ""; + while (pos_tmp >= pos) { + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + if (pos_tmp < pos_end) { + substr = String.fromCharCode(c) + substr; + } + if (pos_tmp === 0) { + break; + } + pos_tmp--; + } + return substr; +}; + +/** + */ +FMIndex.prototype.build$ = function () { + this.build$SIIB(String.fromCharCode(0), 65535, 20, false); +}; + +/** + * @param {!string} end_marker + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIB = function (end_marker, ddic, verbose) { + this.build$SIIB(end_marker, 65535, ddic, verbose); +}; + +/** + * @param {!string} end_marker + * @param {!number} maxChar + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIIB = function (end_marker, maxChar, ddic, verbose) { + /** @type {BurrowsWheelerTransform} */ + var b; + /** @type {!string} */ + var s; + /** @type {!number} */ + var c; + /** @type {!string} */ + var str$0; + /** @type {WaveletMatrix} */ + var this$0; + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + if (verbose) { + console.time("building burrows-wheeler transform"); + } + this._substr += end_marker; + b = ({_str: "", _size: 0, _head: 0, _suffixarray: [ ]}); + str$0 = this._substr; + _str$0 = b._str = str$0; + b._size = _str$0.length; + _suffixarray$0 = b._suffixarray = SAIS$make$S(str$0); + b._head = (_suffixarray$0.indexOf(0) | 0); + s = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$(b); + this._ssize = s.length; + this._head = b._head; + b._str = ""; + b._size = 0; + b._head = 0; + b._suffixarray.length = 0; + this._substr = ""; + if (verbose) { + console.timeEnd("building burrows-wheeler transform"); + } + if (verbose) { + console.time("building wavelet matrix"); + } + this$0 = this._sv; + this$0._bitsize = (Math.ceil(Math.log(maxChar) / 0.6931471805599453) | 0); + if (verbose) { + console.log(" maxCharCode: ", maxChar); + console.log(" bitSize: ", this._sv.bitsize$()); + } + this._sv.build$S(s); + if (verbose) { + console.timeEnd("building wavelet matrix"); + } + if (verbose) { + console.time("caching rank less than"); + } + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + if (verbose) { + console.timeEnd("caching rank less than"); + } + this._ddic = ddic; + if (verbose) { + console.time("building dictionaries"); + } + this._buildDictionaries$(); + if (verbose) { + console.timeEnd("building dictionaries"); + console.log(''); + } +}; + +/** + */ +FMIndex.prototype._buildDictionaries$ = function () { + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + for (i = 0; i < this._ssize / this._ddic + 1; i++) { + this._posdic.push(0); + this._idic.push(0); + } + i = this._head; + pos = this.size$() - 1; + do { + if (i % this._ddic === 0) { + this._posdic[Math.floor(i / this._ddic)] = (pos | 0); + } + if (pos % this._ddic === 0) { + this._idic[Math.floor(pos / this._ddic)] = (i | 0); + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos--; + } while (i !== this._head); +}; + +/** + * @param {!string} doc + */ +FMIndex.prototype.push$S = function (doc) { + if (doc.length <= 0) { + throw new Error("FMIndex::push(): empty string"); + } + this._substr += doc; +}; + +/** + * @param {!string} keyword + * @return {Array.<undefined|!number>} + */ +FMIndex.prototype.search$S = function (keyword) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {Array.<undefined|!number>} */ + var position; + /** @type {!number} */ + var rows; + /** @type {undefined|!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {undefined|!number} */ + var i; + result = [ ]; + position = [ ]; + rows = this.getRows$SAI(keyword, position); + if (rows > 0) { + first = position[0]; + last = position[1]; + for (i = first; i <= last; i++) { + result.push(this.getPosition$I(i)); + } + } + return result; +}; + +/** + * @return {!string} + */ +FMIndex.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +FMIndex.prototype.dump$B = function (verbose) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {CompressionReport} */ + var report; + /** @type {!number} */ + var i; + contents = [ ]; + report = ({source: 0, result: 0}); + contents.push(Binary$dump32bitNumber$N(this._ddic)); + contents.push(Binary$dump32bitNumber$N(this._ssize)); + contents.push(Binary$dump32bitNumber$N(this._head)); + CompressionReport$add$LCompressionReport$II(report, 6, 6); + contents.push(this._sv.dump$LCompressionReport$(report)); + if (verbose) { + console.log("Serializing FM-index"); + console.log(' Wavelet Matrix: ' + (contents[3].length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + contents.push(Binary$dump32bitNumber$N(this._posdic.length)); + for (i in this._posdic) { + contents.push(Binary$dump32bitNumber$N(this._posdic[i])); + } + for (i in this._idic) { + contents.push(Binary$dump32bitNumber$N(this._idic[i])); + } + if (verbose) { + console.log(' Dictionary Cache: ' + (this._idic.length * 16 + "") + ' bytes'); + } + return contents.join(""); +}; + +/** + * @param {!string} data + * @return {!number} + */ +FMIndex.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +FMIndex.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var maxChar; + /** @type {!number} */ + var c; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._ddic = (result$0 | 0); + this._ssize = (Binary$load32bitNumber$SI(data, offset + 2) | 0); + this._head = (Binary$load32bitNumber$SI(data, offset + 4) | 0); + offset = this._sv.load$SI(data, offset + 6); + maxChar = Math.pow(2, this._sv.bitsize$()); + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + size = result$1; + offset += 2; + for (i = 0; i < size; (i++, offset += 2)) { + this._posdic.push(Binary$load32bitNumber$SI(data, offset)); + } + for (i = 0; i < size; (i++, offset += 2)) { + this._idic.push(Binary$load32bitNumber$SI(data, offset)); + } + return offset; +}; + +/** + * class Binary extends Object + * @constructor + */ +function Binary() { +} + +/** + * @constructor + */ +function Binary$() { +}; + +Binary$.prototype = new Binary; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump32bitNumber$N = function (num) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ String.fromCharCode(Math.floor(num / 65536)) ]; + result.push(String.fromCharCode(num % 65536)); + return result.join(""); +}; + +var Binary$dump32bitNumber$N = Binary.dump32bitNumber$N; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load32bitNumber$SI = function (buffer, offset) { + /** @type {!number} */ + var result; + result = buffer.charCodeAt(offset) * 65536 + buffer.charCodeAt(offset + 1); + return result; +}; + +var Binary$load32bitNumber$SI = Binary.load32bitNumber$SI; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump16bitNumber$I = function (num) { + return String.fromCharCode(num % 65536); +}; + +var Binary$dump16bitNumber$I = Binary.dump16bitNumber$I; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load16bitNumber$SI = function (buffer, offset) { + return (buffer.charCodeAt(offset) | 0); +}; + +var Binary$load16bitNumber$SI = Binary.load16bitNumber$SI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.dumpString$S = function (str) { + return Binary$dumpString$SLCompressionReport$(str, null); +}; + +var Binary$dumpString$S = Binary.dumpString$S; + +/** + * @param {!string} str + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpString$SLCompressionReport$ = function (str, report) { + /** @type {!number} */ + var length; + /** @type {!boolean} */ + var compress; + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {undefined|!number} */ + var bytes; + if (str.length > 32768) { + str = str.slice(0, 32768); + } + length = str.length; + compress = true; + charCodes = [ ]; + for (i = 0; i < length; i++) { + charCode = str.charCodeAt(i); + if (charCode > 255) { + compress = false; + break; + } + charCodes.push(charCode); + } + if (compress) { + result = [ Binary$dump16bitNumber$I(length + 32768) ]; + for (i = 0; i < length; i += 2) { + bytes = charCodes[i]; + if (i !== length - 1) { + bytes += charCodes[i + 1] << 8; + } + result.push(String.fromCharCode(bytes % 65536)); + } + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, Math.ceil(length / 2)); + } + } else { + result = [ Binary$dump16bitNumber$I(length), str ]; + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, length); + } + } + return result.join(''); +}; + +var Binary$dumpString$SLCompressionReport$ = Binary.dumpString$SLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringResult} + */ +Binary.loadString$SI = function (buffer, offset) { + return new LoadedStringResult$SI(buffer, offset); +}; + +var Binary$loadString$SI = Binary.loadString$SI; + +/** + * @param {Array.<undefined|!string>} strList + * @return {!string} + */ +Binary.dumpStringList$AS = function (strList) { + return Binary$dumpStringList$ASLCompressionReport$(strList, null); +}; + +var Binary$dumpStringList$AS = Binary.dumpStringList$AS; + +/** + * @param {Array.<undefined|!string>} strList + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringList$ASLCompressionReport$ = function (strList, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ Binary$dump32bitNumber$N(strList.length) ]; + for (i = 0; i < strList.length; i++) { + result.push(Binary$dumpString$SLCompressionReport$(strList[i], report)); + } + return result.join(''); +}; + +var Binary$dumpStringList$ASLCompressionReport$ = Binary.dumpStringList$ASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListResult} + */ +Binary.loadStringList$SI = function (buffer, offset) { + return new LoadedStringListResult$SI(buffer, offset); +}; + +var Binary$loadStringList$SI = Binary.loadStringList$SI; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @return {!string} + */ +Binary.dumpStringListMap$HAS = function (strMap) { + return Binary$dumpStringListMap$HASLCompressionReport$(strMap, null); +}; + +var Binary$dumpStringListMap$HAS = Binary.dumpStringListMap$HAS; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringListMap$HASLCompressionReport$ = function (strMap, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + result = [ ]; + counter = 0; + for (key in strMap) { + result.push(Binary$dumpString$SLCompressionReport$(key, report)); + result.push(Binary$dumpStringList$ASLCompressionReport$(strMap[key], report)); + counter++; + } + return Binary$dump32bitNumber$N(counter) + result.join(''); +}; + +var Binary$dumpStringListMap$HASLCompressionReport$ = Binary.dumpStringListMap$HASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListMapResult} + */ +Binary.loadStringListMap$SI = function (buffer, offset) { + return new LoadedStringListMapResult$SI(buffer, offset); +}; + +var Binary$loadStringListMap$SI = Binary.loadStringListMap$SI; + +/** + * @param {Array.<undefined|!number>} array + * @return {!string} + */ +Binary.dump32bitNumberList$AN = function (array) { + return Binary$dump32bitNumberList$ANLCompressionReport$(array, null); +}; + +var Binary$dump32bitNumberList$AN = Binary.dump32bitNumberList$AN; + +/** + * @param {Array.<undefined|!number>} array + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dump32bitNumberList$ANLCompressionReport$ = function (array, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var index; + /** @type {!number} */ + var inputLength; + /** @type {!number} */ + var length; + /** @type {!string} */ + var resultString; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + result = [ Binary$dump32bitNumber$N(array.length) ]; + index = 0; + inputLength = array.length; + while (index < inputLength) { + if (array[index] == 0) { + length = Binary$_countZero$ANI(array, index); + result.push(Binary$_zeroBlock$I(length)); + index += length; + } else { + if (Binary$_shouldZebraCode$ANI(array, index)) { + result.push(Binary$_createZebraCode$ANI(array, index)); + value1$0 = array.length; + value2$0 = index + 15; + index = (value1$0 <= value2$0 ? value1$0 : value2$0); + } else { + length = Binary$_searchDoubleZero$ANI(array, index); + result.push(Binary$_nonZeroBlock$ANII(array, index, length)); + if (length === 0) { + throw new Error(''); + } + index += length; + } + } + } + resultString = result.join(''); + if (report) { + CompressionReport$add$LCompressionReport$II(report, array.length * 2 + 2, resultString.length); + } + return resultString; +}; + +var Binary$dump32bitNumberList$ANLCompressionReport$ = Binary.dump32bitNumberList$ANLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedNumberListResult} + */ +Binary.load32bitNumberList$SI = function (buffer, offset) { + return new LoadedNumberListResult$SI(buffer, offset); +}; + +var Binary$load32bitNumberList$SI = Binary.load32bitNumberList$SI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._countZero$ANI = function (array, offset) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] != 0) { + return (i - offset | 0); + } + } + return (array.length - offset | 0); +}; + +var Binary$_countZero$ANI = Binary._countZero$ANI; + +/** + * @param {!number} length + * @return {!string} + */ +Binary._zeroBlock$I = function (length) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + while (length > 0) { + if (length > 16384) { + result.push(Binary$dump16bitNumber$I(16383)); + length -= 16384; + } else { + result.push(Binary$dump16bitNumber$I(length - 1)); + length = 0; + } + } + return result.join(''); +}; + +var Binary$_zeroBlock$I = Binary._zeroBlock$I; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!boolean} + */ +Binary._shouldZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var change; + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + if (array.length - offset < 16) { + return true; + } + change = 0; + isLastZero = false; + for (i = offset; i < offset + 15; i++) { + if (array[i] == 0) { + if (! isLastZero) { + isLastZero = true; + change++; + } + } else { + if (isLastZero) { + isLastZero = false; + change++; + } + } + } + return change > 2; +}; + +var Binary$_shouldZebraCode$ANI = Binary._shouldZebraCode$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._searchDoubleZero$ANI = function (array, offset) { + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + isLastZero = false; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] == 0) { + if (isLastZero) { + return (i - offset - 1 | 0); + } + isLastZero = true; + } else { + isLastZero = false; + } + } + return (array.length - offset | 0); +}; + +var Binary$_searchDoubleZero$ANI = Binary._searchDoubleZero$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @param {!number} length + * @return {!string} + */ +Binary._nonZeroBlock$ANII = function (array, offset, length) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var blockLength; + /** @type {!number} */ + var i; + result = [ ]; + while (length > 0) { + if (length > 16384) { + blockLength = 16384; + length -= 16384; + } else { + blockLength = length; + length = 0; + } + result.push(Binary$dump16bitNumber$I(blockLength - 1 + 0x4000)); + for (i = offset; i < offset + blockLength; i++) { + result.push(Binary$dump32bitNumber$N(array[i])); + } + offset += blockLength; + } + return result.join(''); +}; + +var Binary$_nonZeroBlock$ANII = Binary._nonZeroBlock$ANII; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!string} + */ +Binary._createZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var last; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + value1$0 = offset + 15; + value2$0 = array.length; + last = (value1$0 <= value2$0 ? value1$0 : value2$0); + code = 0x8000; + result = [ ]; + for (i = offset; i < last; i++) { + if (array[i] != 0) { + result.push(Binary$dump32bitNumber$N(array[i])); + code = code + (0x1 << i - offset); + } + } + return String.fromCharCode(code) + result.join(''); +}; + +var Binary$_createZebraCode$ANI = Binary._createZebraCode$ANI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64encode$S = function (str) { + /** @type {Array.<undefined|!string>} */ + var out; + /** @type {Array.<undefined|!number>} */ + var source; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var len; + /** @type {!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {undefined|!number} */ + var c3; + out = [ ]; + source = [ ]; + for (i = 0; i < str.length; i++) { + code = str.charCodeAt(i); + source.push(code & 0x00ff, code >>> 8); + } + len = str.length * 2; + i = 0; + while (i < len) { + c1 = source[i++] & 0xff; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4)); + out.push("=="); + break; + } + c2 = source[i++]; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2)); + out.push("="); + break; + } + c3 = source[i++]; + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2 | (c3 & 0xC0) >> 6)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c3 & 0x3F)); + } + return out.join(''); +}; + +var Binary$base64encode$S = Binary.base64encode$S; + +/** + * @param {Array.<undefined|!number>} source + * @return {!string} + */ +Binary._mergeCharCode$AI = function (source) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ ]; + for (i = 0; i < source.length; i += 2) { + result.push(String.fromCharCode(source[i] + (source[i + 1] << 8))); + } + return result.join(''); +}; + +var Binary$_mergeCharCode$AI = Binary._mergeCharCode$AI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64decode$S = function (str) { + /** @type {!number} */ + var len; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var out; + /** @type {undefined|!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {!number} */ + var c3; + /** @type {!number} */ + var c4; + len = str.length; + i = 0; + out = [ ]; + while (i < len) { + do { + c1 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c1 == -1); + if (c1 == -1) { + break; + } + do { + c2 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c2 == -1); + if (c2 == -1) { + break; + } + out.push(c1 << 2 | (c2 & 0x30) >> 4); + do { + c3 = str.charCodeAt(i++) & 0xff; + if (c3 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c3 = Binary._base64DecodeChars[c3]; + } while (i < len && c3 === -1); + if (c3 === -1) { + break; + } + out.push((c2 & 0XF) << 4 | (c3 & 0x3C) >> 2); + do { + c4 = str.charCodeAt(i++) & 0xff; + if (c4 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c4 = (Binary._base64DecodeChars[c4] | 0); + } while (i < len && c4 === -1); + if (c4 === -1) { + break; + } + out.push((c3 & 0x03) << 6 | c4); + } + return Binary$_mergeCharCode$AI(out); +}; + +var Binary$base64decode$S = Binary.base64decode$S; + +/** + * class LoadedStringResult extends Object + * @constructor + */ +function LoadedStringResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringResult$SI(data, offset) { + /** @type {!number} */ + var strLength; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var offset$0; + this.result = ""; + this.offset = 0; + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (i = 0; i < strLength; i += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (i !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + this.result = bytes.join(''); + this.offset = offset; + } else { + this.result = data.slice(offset, offset + strLength); + this.offset = (offset + strLength | 0); + } +}; + +LoadedStringResult$SI.prototype = new LoadedStringResult; + +/** + * class LoadedStringListResult extends Object + * @constructor + */ +function LoadedStringListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var strLength; + /** @type {!string} */ + var resultStr; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var j; + /** @type {!number} */ + var code; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = [ ]; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (j = 0; j < strLength; j += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (j !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + resultStr = bytes.join(''); + } else { + resultStr = data.slice(offset, offset + strLength); + offset = (offset + strLength | 0); + } + this.result.push(resultStr); + } + this.offset = offset; +}; + +LoadedStringListResult$SI.prototype = new LoadedStringListResult; + +/** + * class LoadedStringListMapResult extends Object + * @constructor + */ +function LoadedStringListMapResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListMapResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {LoadedStringResult} */ + var keyResult; + /** @type {LoadedStringListResult} */ + var valueResult; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = ({ }); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + keyResult = new LoadedStringResult$SI(data, offset); + offset$0 = keyResult.offset; + valueResult = new LoadedStringListResult$SI(data, offset$0); + this.result[keyResult.result] = valueResult.result; + offset = valueResult.offset; + } + this.offset = offset; +}; + +LoadedStringListMapResult$SI.prototype = new LoadedStringListMapResult; + +/** + * class LoadedNumberListResult extends Object + * @constructor + */ +function LoadedNumberListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedNumberListResult$SI(data, offset) { + /** @type {!number} */ + var resultLength; + /** @type {!number} */ + var originalOffset; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!number} */ + var tag; + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var value1$0; + this.result = null; + this.offset = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + resultLength = result$0; + originalOffset = offset; + offset += 2; + result = [ ]; + while (result.length < resultLength) { + tag = data.charCodeAt(offset++); + if (tag >>> 15 === 1) { + value1$0 = resultLength - result.length; + length = (value1$0 <= 15 ? value1$0 : 15); + for (i = 0; i < length; i++) { + if (tag >>> i & 0x1) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } else { + result.push(0); + } + } + } else { + if (tag >>> 14 === 1) { + length = tag - 0x4000 + 1; + for (i = 0; i < length; i++) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } + } else { + length = tag + 1; + for (i = 0; i < length; i++) { + result.push(0); + } + } + } + } + this.result = result; + this.offset = offset; +}; + +LoadedNumberListResult$SI.prototype = new LoadedNumberListResult; + +/** + * class CompressionReport extends Object + * @constructor + */ +function CompressionReport() { +} + +/** + * @constructor + */ +function CompressionReport$() { + this.source = 0; + this.result = 0; +}; + +CompressionReport$.prototype = new CompressionReport; + +/** + * @param {CompressionReport} $this + * @param {!number} source + * @param {!number} result + */ +CompressionReport.add$LCompressionReport$II = function ($this, source, result) { + $this.source += source; + $this.result += result; +}; + +var CompressionReport$add$LCompressionReport$II = CompressionReport.add$LCompressionReport$II; + +/** + * @param {CompressionReport} $this + * @return {!number} + */ +CompressionReport.rate$LCompressionReport$ = function ($this) { + return (Math.round($this.result * 100.0 / $this.source) | 0); +}; + +var CompressionReport$rate$LCompressionReport$ = CompressionReport.rate$LCompressionReport$; + +/** + * class Query extends Object + * @constructor + */ +function Query() { +} + +/** + * @constructor + */ +function Query$() { + this.word = ''; + this.or = false; + this.not = false; + this.raw = false; +}; + +Query$.prototype = new Query; + +/** + * @return {!string} + */ +Query.prototype.toString = function () { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + if (this.or) { + result.push("OR "); + } + if (this.not) { + result.push("-"); + } + if (this.raw) { + result.push('"', this.word, '"'); + } else { + result.push(this.word); + } + return result.join(''); +}; + +/** + * class Proposal extends Object + * @constructor + */ +function Proposal() { +} + +/** + * @constructor + * @param {!number} omit + * @param {!number} expect + */ +function Proposal$II(omit, expect) { + this.omit = omit; + this.expect = expect; +}; + +Proposal$II.prototype = new Proposal; + +/** + * class Position extends Object + * @constructor + */ +function Position() { +} + +/** + * @constructor + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +function Position$SIB(word, position, stemmed) { + this.word = word; + this.position = position; + this.stemmed = stemmed; +}; + +Position$SIB.prototype = new Position; + +/** + * class SearchUnit extends Object + * @constructor + */ +function SearchUnit() { +} + +/** + * @constructor + * @param {!number} id + */ +function SearchUnit$I(id) { + this.positions = ({ }); + this.id = id; + this._size = 0; + this.score = 0; + this.startPosition = -1; +}; + +SearchUnit$I.prototype = new SearchUnit; + +/** + * @param {SearchUnit} $this + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +SearchUnit.addPosition$LSearchUnit$SIB = function ($this, word, position, stemmed) { + /** @type {Position} */ + var positionObj; + positionObj = $this.positions[position + ""]; + if (! positionObj) { + $this._size++; + $this.positions[position + ""] = ({word: word, position: position, stemmed: stemmed}); + } else { + if (positionObj.word.length < word.length) { + positionObj.word = word; + } + positionObj.stemmed = positionObj.stemmed && stemmed; + } +}; + +var SearchUnit$addPosition$LSearchUnit$SIB = SearchUnit.addPosition$LSearchUnit$SIB; + +/** + * @param {SearchUnit} $this + * @param {!number} position + * @return {Position} + */ +SearchUnit.get$LSearchUnit$I = function ($this, position) { + return $this.positions[position + ""]; +}; + +var SearchUnit$get$LSearchUnit$I = SearchUnit.get$LSearchUnit$I; + +/** + * @param {SearchUnit} $this + * @return {!number} + */ +SearchUnit.size$LSearchUnit$ = function ($this) { + return $this._size; +}; + +var SearchUnit$size$LSearchUnit$ = SearchUnit.size$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @param {SearchUnit} rhs + */ +SearchUnit.merge$LSearchUnit$LSearchUnit$ = function ($this, rhs) { + /** @type {!string} */ + var position; + /** @type {Position} */ + var pos; + for (position in rhs.positions) { + pos = rhs.positions[position]; + SearchUnit$addPosition$LSearchUnit$SIB($this, pos.word, pos.position, pos.stemmed); + } +}; + +var SearchUnit$merge$LSearchUnit$LSearchUnit$ = SearchUnit.merge$LSearchUnit$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @return {Array.<undefined|Position>} + */ +SearchUnit.getPositions$LSearchUnit$ = function ($this) { + /** @type {Array.<undefined|Position>} */ + var result; + /** @type {!string} */ + var pos; + result = [ ]; + for (pos in $this.positions) { + result.push($this.positions[pos]); + } + result.sort((function (a, b) { + return a.position - b.position; + })); + return result; +}; + +var SearchUnit$getPositions$LSearchUnit$ = SearchUnit.getPositions$LSearchUnit$; + +/** + * class SingleResult extends Object + * @constructor + */ +function SingleResult() { +} + +/** + * @constructor + */ +function SingleResult$() { + this.units = [ ]; + this.unitIds = [ ]; + this.or = false; + this.not = false; + this.searchWord = ''; +}; + +SingleResult$.prototype = new SingleResult; + +/** + * @constructor + * @param {!string} searchWord + * @param {!boolean} or + * @param {!boolean} not + */ +function SingleResult$SBB(searchWord, or, not) { + this.units = [ ]; + this.unitIds = [ ]; + this.or = or; + this.not = not; + this.searchWord = searchWord; +}; + +SingleResult$SBB.prototype = new SingleResult; + +/** + * @param {SingleResult} $this + * @param {!number} unitId + * @return {SearchUnit} + */ +SingleResult.getSearchUnit$LSingleResult$I = function ($this, unitId) { + /** @type {!number} */ + var existing; + /** @type {SearchUnit} */ + var result; + existing = $this.unitIds.indexOf(unitId); + if (existing === -1) { + result = ({positions: ({ }), id: unitId, _size: 0, score: 0, startPosition: -1}); + $this.units.push(result); + $this.unitIds.push(unitId); + } else { + result = $this.units[existing]; + } + return result; +}; + +var SingleResult$getSearchUnit$LSingleResult$I = SingleResult.getSearchUnit$LSingleResult$I; + +/** + * @param {SingleResult} $this + * @param {SingleResult} rhs + * @return {SingleResult} + */ +SingleResult.merge$LSingleResult$LSingleResult$ = function ($this, rhs) { + /** @type {SingleResult} */ + var result; + result = ({units: [ ], unitIds: [ ], or: false, not: false, searchWord: ''}); + if (rhs.or) { + SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + if (rhs.not) { + SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } + } + return result; +}; + +var SingleResult$merge$LSingleResult$LSingleResult$ = SingleResult.merge$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @return {!number} + */ +SingleResult.size$LSingleResult$ = function ($this) { + return ($this.units.length | 0); +}; + +var SingleResult$size$LSingleResult$ = SingleResult.size$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) !== -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var rhsSection; + /** @type {SearchUnit} */ + var lhsSection; + /** @type {Array.<undefined|!number>} */ + var unitIds$0; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result.unitIds = (unitIds$0 = $this.unitIds).slice(0, unitIds$0.length); + result.units = (units$0 = $this.units).slice(0, units$0.length); + for (i = 0; i < rhs.unitIds.length; i++) { + id = rhs.unitIds[i]; + rhsSection = rhs.units[i]; + if (result.unitIds.indexOf(id) !== -1) { + lhsSection = result.units[result.unitIds.indexOf(id)]; + SearchUnit$merge$LSearchUnit$LSearchUnit$(lhsSection, rhsSection); + } else { + result.unitIds.push(id); + result.units.push(rhsSection); + } + } +}; + +var SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) === -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * class SearchSummary extends Object + * @constructor + */ +function SearchSummary() { +} + +/** + * @constructor + */ +function SearchSummary$() { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = null; +}; + +SearchSummary$.prototype = new SearchSummary; + +/** + * @constructor + * @param {Oktavia} oktavia + */ +function SearchSummary$LOktavia$(oktavia) { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = oktavia; +}; + +SearchSummary$LOktavia$.prototype = new SearchSummary; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.addQuery$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$addQuery$LSearchSummary$LSingleResult$ = SearchSummary.addQuery$LSearchSummary$LSingleResult$; + +/** + * @param {SearchSummary} $this + */ +SearchSummary.mergeResult$LSearchSummary$ = function ($this) { + $this.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, $this.sourceResults); +}; + +var SearchSummary$mergeResult$LSearchSummary$ = SearchSummary.mergeResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {Array.<undefined|SingleResult>} results + * @return {SingleResult} + */ +SearchSummary.mergeResult$LSearchSummary$ALSingleResult$ = function ($this, results) { + /** @type {SingleResult} */ + var rhs; + /** @type {!number} */ + var i; + /** @type {!number} */ + var results$len$0; + rhs = results[0]; + for ((i = 1, results$len$0 = results.length); i < results$len$0; i++) { + rhs = SingleResult$merge$LSingleResult$LSingleResult$(rhs, results[i]); + } + return rhs; +}; + +var SearchSummary$mergeResult$LSearchSummary$ALSingleResult$ = SearchSummary.mergeResult$LSearchSummary$ALSingleResult$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|Proposal>} + */ +SearchSummary.getProposal$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|Proposal>} */ + var proposals; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|SingleResult>} */ + var tmpSource; + /** @type {!number} */ + var j; + /** @type {SingleResult} */ + var result; + proposals = [ ]; + for (i = 0; i < $this.sourceResults.length; i++) { + tmpSource = [ ]; + for (j = 0; j < $this.sourceResults.length; j++) { + if (i !== j) { + tmpSource.push($this.sourceResults[j]); + } + } + result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, tmpSource); + proposals.push(({omit: i, expect: result.units.length})); + } + proposals.sort((function (a, b) { + return b.expect - a.expect; + })); + return proposals; +}; + +var SearchSummary$getProposal$LSearchSummary$ = SearchSummary.getProposal$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|SearchUnit>} + */ +SearchSummary.getSortedResult$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|SearchUnit>} */ + var result; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result = (units$0 = $this.result.units).slice(0, units$0.length); + result.sort((function (a, b) { + return b.score - a.score; + })); + return result; +}; + +var SearchSummary$getSortedResult$LSearchSummary$ = SearchSummary.getSortedResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {!number} + */ +SearchSummary.size$LSearchSummary$ = function ($this) { + /** @type {SingleResult} */ + var this$0; + this$0 = $this.result; + return (this$0.units.length | 0); +}; + +var SearchSummary$size$LSearchSummary$ = SearchSummary.size$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.add$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$add$LSearchSummary$LSingleResult$ = SearchSummary.add$LSearchSummary$LSingleResult$; + +/** + * class Stemmer + * @constructor + */ +function Stemmer() { +} + +Stemmer.prototype.$__jsx_implements_Stemmer = true; + +/** + * @constructor + */ +function Stemmer$() { +}; + +Stemmer$.prototype = new Stemmer; + +/** + * class BitVector extends Object + * @constructor + */ +function BitVector() { +} + +/** + * @constructor + */ +function BitVector$() { + /** @type {Array.<undefined|!number>} */ + var _v$0; + /** @type {Array.<undefined|!number>} */ + var _r$0; + _r$0 = this._r = [ ]; + _v$0 = this._v = [ ]; + _v$0.length = 0; + _r$0.length = 0; + this._size = 0; + this._size1 = 0; +}; + +BitVector$.prototype = new BitVector; + +/** + */ +BitVector.prototype.build$ = function () { + /** @type {!number} */ + var i; + this._size1 = 0; + for (i = 0; i < this._v.length; i++) { + if (i % 8 === 0) { + this._r.push(true ? this._size1 : this._size - this._size1); + } + this._size1 += this._rank32$IIB(this._v[i], 32, true); + } +}; + +/** + */ +BitVector.prototype.clear$ = function () { + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; +}; + +/** + * @return {!number} + */ +BitVector.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.size$B = function (b) { + return (b ? this._size1 : this._size - this._size1); +}; + +/** + * @param {!number} value + */ +BitVector.prototype.set$I = function (value) { + this.set$IB(value, true); +}; + +/** + * @param {!number} value + * @param {!boolean} flag + */ +BitVector.prototype.set$IB = function (value, flag) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + this._size = (value + 1 | 0); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + while (q >= this._v.length) { + this._v.push(0); + } + m = 0x1 << r; + if (flag) { + this._v[q] |= m; + } else { + this._v[q] &= ~ m; + } +}; + +/** + * @param {!number} value + * @return {!boolean} + */ +BitVector.prototype.get$I = function (value) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + throw new Error("BitVector.get() : range error"); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + m = 0x1 << r; + return !! (this._v[q] & m); +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.rank$I = function (i) { + return this.rank$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.rank$IB = function (i, b) { + /** @type {!number} */ + var q_large; + /** @type {!number} */ + var q_small; + /** @type {!number} */ + var r; + /** @type {!number} */ + var rank; + /** @type {!number} */ + var begin; + /** @type {!number} */ + var j; + if (i > this._size) { + throw new Error("BitVector.rank() : range error"); + } + if (i === 0) { + return 0; + } + i--; + q_large = (Math.floor(i / 256) | 0); + q_small = (Math.floor(i / 32) | 0); + r = (Math.floor(i % 32) | 0); + rank = (this._r[q_large] | 0); + if (! b) { + rank = q_large * 256 - rank; + } + begin = q_large * 8; + for (j = begin; j < q_small; j++) { + rank += this._rank32$IIB(this._v[j], 32, b); + } + rank += this._rank32$IIB(this._v[q_small], r + 1, b); + return rank; +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.select$I = function (i) { + return this.select$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.select$IB = function (i, b) { + /** @type {!number} */ + var left; + /** @type {!number} */ + var right; + /** @type {!number} */ + var pivot; + /** @type {undefined|!number} */ + var rank; + /** @type {!number} */ + var j; + if (i >= (b ? this._size1 : this._size - this._size1)) { + throw new Error("BitVector.select() : range error"); + } + left = 0; + right = this._r.length; + while (left < right) { + pivot = Math.floor((left + right) / 2); + rank = this._r[pivot]; + if (! b) { + rank = pivot * 256 - rank; + } + if (i < rank) { + right = pivot; + } else { + left = pivot + 1; + } + } + right--; + if (b) { + i -= (this._r[right] | 0); + } else { + i -= (right * 256 - this._r[right] | 0); + } + j = right * 8; + while (1) { + rank = this._rank32$IIB(this._v[j], 32, b); + if (i < rank) { + break; + } + j++; + i -= (rank | 0); + } + return (j * 32 + this._select32$IIB(this._v[j], i, b) | 0); +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._rank32$IIB = function (x, i, b) { + if (! b) { + x = ~ x; + } + x <<= 32 - i; + x = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x = ((x & 0xcccccccc) >>> 2) + (x & 0x33333333); + x = ((x & 0xf0f0f0f0) >>> 4) + (x & 0x0f0f0f0f); + x = ((x & 0xff00ff00) >>> 8) + (x & 0x00ff00ff); + x = ((x & 0xffff0000) >>> 16) + (x & 0x0000ffff); + return x; +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._select32$IIB = function (x, i, b) { + /** @type {!number} */ + var x1; + /** @type {!number} */ + var x2; + /** @type {!number} */ + var x3; + /** @type {!number} */ + var x4; + /** @type {!number} */ + var x5; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var v5; + /** @type {!number} */ + var v4; + /** @type {!number} */ + var v3; + /** @type {!number} */ + var v2; + /** @type {!number} */ + var v1; + /** @type {!number} */ + var v0; + if (! b) { + x = ~ x; + } + x1 = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x2 = ((x1 & 0xcccccccc) >>> 2) + (x1 & 0x33333333); + x3 = ((x2 & 0xf0f0f0f0) >>> 4) + (x2 & 0x0f0f0f0f); + x4 = ((x3 & 0xff00ff00) >>> 8) + (x3 & 0x00ff00ff); + x5 = ((x4 & 0xffff0000) >>> 16) + (x4 & 0x0000ffff); + i++; + pos = 0; + v5 = x5 & 0xffffffff; + if (i > v5) { + i -= (v5 | 0); + pos += 32; + } + v4 = x4 >>> pos & 0x0000ffff; + if (i > v4) { + i -= (v4 | 0); + pos += 16; + } + v3 = x3 >>> pos & 0x000000ff; + if (i > v3) { + i -= (v3 | 0); + pos += 8; + } + v2 = x2 >>> pos & 0x0000000f; + if (i > v2) { + i -= (v2 | 0); + pos += 4; + } + v1 = x1 >>> pos & 0x00000003; + if (i > v1) { + i -= (v1 | 0); + pos += 2; + } + v0 = x >>> pos & 0x00000001; + if (i > v0) { + i -= (v0 | 0); + pos += 1; + } + return (pos | 0); +}; + +/** + * @return {!string} + */ +BitVector.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + contents.push(Binary$dump32bitNumberList$AN(this._v)); + return contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +BitVector.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumberList$ANLCompressionReport$(this._v, report)); + return contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +BitVector.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +BitVector.prototype.load$SI = function (data, offset) { + /** @type {LoadedNumberListResult} */ + var result; + /** @type {!number} */ + var result$0; + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + result = Binary$load32bitNumberList$SI(data, offset + 2); + this._v = result.result; + this.build$(); + return result.offset; +}; + +/** + * class BaseStemmer extends Object + * @constructor + */ +function BaseStemmer() { +} + +$__jsx_merge_interface(BaseStemmer, Stemmer); + +/** + * @constructor + */ +function BaseStemmer$() { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +BaseStemmer$.prototype = new BaseStemmer; + +/** + * @param {!string} value + */ +BaseStemmer.prototype.setCurrent$S = function (value) { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +/** + * @return {!string} + */ +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + +/** + * @param {BaseStemmer} other + */ +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + this.cursor++; + return true; + } + return false; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + this.cursor--; + return true; + } + return false; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.limit - this.cursor < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, cursor$0 + s_size) !== s) { + return false; + } + this.cursor += s_size; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.cursor - this.limit_backward < s_size) { + return false; + } + if (this.current.slice((cursor$0 = this.cursor) - s_size, cursor$0) !== s) { + return false; + } + this.cursor -= s_size; + return true; +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v$S = function (s) { + return this.eq_s$IS(s.length, s); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v_b$S = function (s) { + return this.eq_s_b$IS(s.length, s); +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var l; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var lb; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + * @return {!number} + */ +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += (adjustment | 0); + if (this.cursor >= c_ket) { + this.cursor += (adjustment | 0); + } else { + if (this.cursor > c_bra) { + this.cursor = c_bra; + } + } + return (adjustment | 0); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_check$ = function () { + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.slice_from$S = function (s) { + /** @type {!boolean} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + this.replace_s$IIS(this.bra, this.ket, s); + result = true; + } + return result; +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_del$ = function () { + return this.slice_from$S(""); +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + */ +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = this.replace_s$IIS(c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra += (adjustment | 0); + } + if (c_bra <= this.ket) { + this.ket += (adjustment | 0); + } +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.slice_to$S = function (s) { + /** @type {!string} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.stem$ = function () { + return false; +}; + +/** + * @param {!string} word + * @return {!string} + */ +BaseStemmer.prototype.stemWord$S = function (word) { + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +/** + * @param {Array.<undefined|!string>} words + * @return {Array.<undefined|!string>} + */ +BaseStemmer.prototype.stemWords$AS = function (words) { + /** @type {Array.<undefined|!string>} */ + var results; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +/** + * class EnglishStemmer extends BaseStemmer + * @constructor + */ +function EnglishStemmer() { +} + +EnglishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function EnglishStemmer$() { + BaseStemmer$.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +EnglishStemmer$.prototype = new EnglishStemmer; + +/** + * @param {EnglishStemmer} other + */ +EnglishStemmer.prototype.copy_from$LEnglishStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "'")) { + break lab0; + } + this.ket = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab1; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$2 = this.cursor = v_2; + v_3 = cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab6; + } + this.ket = this.cursor; + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + this.cursor++; + } + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + continue replab3; + } + this.cursor = v_4; + break replab3; + } + } + this.cursor = v_3; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var limit$0; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (this.find_among$ALAmong$I(EnglishStemmer.a_0, 3) === 0) { + break lab2; + } + break lab1; + } + this.cursor = v_2; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_p1 = this.cursor; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_shortv$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v_WXY, 89, 121)) { + break lab1; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (this.cursor > this.limit_backward) { + return false; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1a$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_1, 3); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_2, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ss")) { + return false; + } + break; + case 2: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + c = (this.cursor - 2 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! this.slice_from$S("i")) { + return false; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("ie")) { + return false; + } + } + break; + case 3: + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1b$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_4, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ee")) { + return false; + } + break; + case 2: + v_1 = this.limit - this.cursor; + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_3, 13); + if (among_var === 0) { + return false; + } + this.cursor = this.limit - v_3; + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + this.insert$IIS(cursor$0, cursor$0, "e"); + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = this.limit - this.cursor; + if (! this.r_shortv$()) { + return false; + } + cursor$2 = this.cursor = this.limit - v_4; + c = cursor$2; + this.insert$IIS(cursor$2, cursor$2, "e"); + this.cursor = cursor$2; + break; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1c$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "Y")) { + return false; + } + } + this.bra = this.cursor; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (this.cursor > this.limit_backward) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + return (! this.slice_from$S("i") ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_2$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_5, 24); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ence")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ance")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("able")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("ize")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("ous")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("ive")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("ble")) { + return false; + } + break; + case 13: + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("og")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("less")) { + return false; + } + break; + case 16: + if (! this.in_grouping_b$AIII(EnglishStemmer.g_valid_LI, 99, 116)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_3$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_6, 9); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_4$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_7, 18); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "t")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_5$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_8, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = this.limit - v_1; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_shortv$()) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception2$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(EnglishStemmer.a_9, 8) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (cursor$0 > this.limit_backward ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception1$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(EnglishStemmer.a_10, 18); + if (among_var === 0) { + return false; + } + this.ket = cursor$0 = this.cursor; + if (cursor$0 < this.limit) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ski")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("sky")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("die")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("lie")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("tie")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("idl")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("gentl")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("ugli")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("earli")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("onli")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("singl")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + if (! this.B_Y_found) { + return false; + } +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "Y")) { + break lab3; + } + this.ket = this.cursor; + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + if (! this.slice_from$S("y")) { + return false; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$8; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$9; + /** @type {!number} */ + var cursor$10; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_exception1$()) { + break lab1; + } + break lab0; + } + this.cursor = v_1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + c = (this.cursor + 3 | 0); + if (0 > c || c > this.limit) { + break lab3; + } + this.cursor = c; + break lab2; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_prelude$()) { + break lab4; + } + } + cursor$1 = this.cursor = v_3; + v_4 = cursor$1; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_mark_regions$()) { + break lab5; + } + } + cursor$2 = this.cursor = v_4; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$0 = this.limit; + v_5 = limit$0 - cursor$3; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_Step_1a$()) { + break lab6; + } + } + this.cursor = this.limit - v_5; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_exception2$()) { + break lab8; + } + break lab7; + } + cursor$4 = this.cursor = (limit$1 = this.limit) - v_6; + v_7 = limit$1 - cursor$4; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_Step_1b$()) { + break lab9; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_7; + v_8 = limit$2 - cursor$5; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.r_Step_1c$()) { + break lab10; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_8; + v_9 = limit$3 - cursor$6; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! this.r_Step_2$()) { + break lab11; + } + } + cursor$7 = this.cursor = (limit$4 = this.limit) - v_9; + v_10 = limit$4 - cursor$7; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.r_Step_3$()) { + break lab12; + } + } + cursor$8 = this.cursor = (limit$5 = this.limit) - v_10; + v_11 = limit$5 - cursor$8; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! this.r_Step_4$()) { + break lab13; + } + } + cursor$9 = this.cursor = (limit$6 = this.limit) - v_11; + v_12 = limit$6 - cursor$9; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.r_Step_5$()) { + break lab14; + } + } + this.cursor = this.limit - v_12; + } + cursor$10 = this.cursor = this.limit_backward; + v_13 = cursor$10; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.r_postlude$()) { + break lab15; + } + } + this.cursor = v_13; + } + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +EnglishStemmer.prototype.equals$X = function (o) { + return o instanceof EnglishStemmer; +}; + +/** + * @return {!number} + */ +EnglishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "EnglishStemmer"; + hash = 0; + if ("EnglishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class Among extends Object + * @constructor + */ +function Among() { +} + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + */ +function Among$SII(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +Among$SII.prototype = new Among; + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + * @param {*} method + * @param {BaseStemmer} instance + */ +function Among$SIIF$LBaseStemmer$B$LBaseStemmer$(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +Among$SIIF$LBaseStemmer$B$LBaseStemmer$.prototype = new Among; + +/** + * class WaveletMatrix extends Object + * @constructor + */ +function WaveletMatrix() { +} + +/** + * @constructor + */ +function WaveletMatrix$() { + /** @type {Array.<undefined|BitVector>} */ + var _bv$0; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + this._range = ({ }); + _bv$0 = this._bv = [ ]; + _seps$0 = this._seps = [ ]; + this._bitsize = 16; + _bv$0.length = 0; + _seps$0.length = 0; + this._size = 0; +}; + +WaveletMatrix$.prototype = new WaveletMatrix; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.bitsize$ = function () { + return this._bitsize; +}; + +/** + * @param {!number} charCode + */ +WaveletMatrix.prototype.setMaxCharCode$I = function (charCode) { + this._bitsize = (Math.ceil(Math.log(charCode) / 0.6931471805599453) | 0); +}; + +/** + */ +WaveletMatrix.prototype.clear$ = function () { + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; +}; + +/** + * @param {!string} v + */ +WaveletMatrix.prototype.build$S = function (v) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var bitsize; + /** @type {!number} */ + var i; + /** @type {!number} */ + var depth; + /** @type {Object.<string, undefined|!number>} */ + var range_tmp; + /** @type {!number} */ + var code; + /** @type {!boolean} */ + var bit; + /** @type {!number} */ + var key; + /** @type {Object.<string, undefined|!number>} */ + var range_rev; + /** @type {!string} */ + var range_key; + /** @type {!number} */ + var value; + /** @type {!number} */ + var pos0; + /** @type {undefined|!number} */ + var pos1; + /** @type {!string} */ + var range_rev_key; + /** @type {!number} */ + var begin; + /** @type {undefined|!number} */ + var end; + /** @type {!number} */ + var num0; + /** @type {!number} */ + var num1; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + size = v.length; + bitsize = this._bitsize; + for (i = 0; i < bitsize; i++) { + this._bv.push(new BitVector$()); + this._seps.push(0); + } + this._size = (size | 0); + for (i = 0; i < size; i++) { + this._bv[0].set$IB(i, this._uint2bit$II(v.charCodeAt(i), 0)); + } + this._bv[0].build$(); + this._seps[0] = this._bv[0].size$B(false); + this._range["0"] = 0; + this._range["1"] = this._seps[0]; + depth = 1; + while (depth < bitsize) { + range_tmp = WaveletMatrix$_shallow_copy$HI(this._range); + for (i = 0; i < size; i++) { + code = v.charCodeAt(i); + bit = this._uint2bit$II(code, depth); + key = code >>> bitsize - depth; + this._bv[depth].set$IB(range_tmp[key + ""], bit); + range_tmp[key + ""]++; + } + this._bv[depth].build$(); + this._seps[depth] = this._bv[depth].size$B(false); + range_rev = ({ }); + for (range_key in this._range) { + value = this._range[range_key]; + if (value != range_tmp[range_key]) { + range_rev[value + ""] = range_key | 0; + } + } + this._range = ({ }); + pos0 = 0; + pos1 = this._seps[depth]; + for (range_rev_key in range_rev) { + begin = range_rev_key | 0; + value = range_rev[range_rev_key]; + end = range_tmp[value + ""]; + num0 = this._bv[depth].rank$IB(end, false) - this._bv[depth].rank$IB(begin, false); + num1 = end - begin - num0; + if (num0 > 0) { + this._range[(value << 1) + ""] = (pos0 | 0); + pos0 += num0; + } + if (num1 > 0) { + this._range[(value << 1) + 1 + ""] = pos1; + pos1 += (num1 | 0); + } + } + depth++; + } +}; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.size$I = function (c) { + return this.rank$II(this._size, c); +}; + +/** + * @param {!number} i + * @return {!number} + */ +WaveletMatrix.prototype.get$I = function (i) { + /** @type {!number} */ + var value; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i >= this._size) { + throw new Error("WaveletMatrix.get() : range error"); + } + value = 0; + depth = 0; + while (depth < this._bitsize) { + bit = this._bv[depth].get$I(i); + i = this._bv[depth].rank$IB(i, bit); + value <<= 1; + if (bit) { + i += this._seps[depth]; + value += 1; + } + depth++; + } + return (value | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank$II = function (i, c) { + /** @type {undefined|!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i > this._size) { + throw new Error("WaveletMatrix.rank(): range error"); + } + if (i === 0) { + return 0; + } + begin = this._range[c + ""]; + if (begin == null) { + return 0; + } + end = i; + depth = 0; + while (depth < this._bitsize) { + bit = this._uint2bit$II(c, depth); + end = this._bv[depth].rank$IB(end, bit); + if (bit) { + end += this._seps[depth]; + } + depth++; + } + return (end - begin | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank_less_than$II = function (i, c) { + /** @type {!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!number} */ + var rlt; + /** @type {!number} */ + var rank0_begin; + /** @type {!number} */ + var rank0_end; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + if (i > this._size) { + throw new Error("WaveletMatrix.rank_less_than(): range error"); + } + if (i === 0) { + return 0; + } + begin = 0; + end = i; + depth = 0; + rlt = 0; + while (depth < this._bitsize) { + rank0_begin = this._bv[depth].rank$IB(begin, false); + rank0_end = this._bv[depth].rank$IB(end, false); + if (this._uint2bit$II(c, depth)) { + rlt += rank0_end - rank0_begin; + begin += (_seps$0 = this._seps)[depth] - rank0_begin; + end += _seps$0[depth] - rank0_end; + } else { + begin = rank0_begin; + end = rank0_end; + } + depth++; + } + return (rlt | 0); +}; + +/** + * @return {!string} + */ +WaveletMatrix.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$()); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + counter++; + } + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +WaveletMatrix.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + CompressionReport$add$LCompressionReport$II(report, 3, 3); + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$LCompressionReport$(report)); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + CompressionReport$add$LCompressionReport$II(report, 4, 4); + counter++; + } + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +WaveletMatrix.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +WaveletMatrix.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var i; + /** @type {BitVector} */ + var bit_vector; + /** @type {!number} */ + var range_size; + /** @type {!number} */ + var value; + /** @type {!number} */ + var offset$0; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + /** @type {!number} */ + var result$2; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + offset$0 = offset++; + this._bitsize = (data.charCodeAt(offset$0) | 0); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + offset += 2; + for (i = 0; i < this._bitsize; i++) { + bit_vector = new BitVector$(); + offset = bit_vector.load$SI(data, offset); + this._bv.push(bit_vector); + } + for (i = 0; i < this._bitsize; (i++, offset += 2)) { + this._seps.push(Binary$load32bitNumber$SI(data, offset)); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + range_size = result$1; + offset += 2; + for (i = 0; i < range_size; (i++, offset += 4)) { + result$2 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + value = Binary$load32bitNumber$SI(data, offset + 2); + this._range[result$2 + ""] = (value | 0); + } + return offset; +}; + +/** + * @param {Object.<string, undefined|!number>} input + * @return {Object.<string, undefined|!number>} + */ +WaveletMatrix._shallow_copy$HI = function (input) { + /** @type {Object.<string, undefined|!number>} */ + var result; + /** @type {!string} */ + var key; + result = ({ }); + for (key in input) { + result[key] = input[key]; + } + return result; +}; + +var WaveletMatrix$_shallow_copy$HI = WaveletMatrix._shallow_copy$HI; + +/** + * @param {!number} c + * @param {!number} i + * @return {!boolean} + */ +WaveletMatrix.prototype._uint2bit$II = function (c, i) { + return (c >>> this._bitsize - 1 - i & 0x1) === 0x1; +}; + +/** + * class BurrowsWheelerTransform extends Object + * @constructor + */ +function BurrowsWheelerTransform() { +} + +/** + * @constructor + */ +function BurrowsWheelerTransform$() { + this._str = ""; + this._size = 0; + this._head = 0; + this._suffixarray = [ ]; +}; + +BurrowsWheelerTransform$.prototype = new BurrowsWheelerTransform; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.size$LBurrowsWheelerTransform$ = function ($this) { + return $this._size; +}; + +var BurrowsWheelerTransform$size$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.size$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.head$LBurrowsWheelerTransform$ = function ($this) { + return $this._head; +}; + +var BurrowsWheelerTransform$head$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.head$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + */ +BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$ = function ($this) { + $this._str = ""; + $this._size = 0; + $this._head = 0; + $this._suffixarray.length = 0; +}; + +var BurrowsWheelerTransform$clear$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} str + */ +BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S = function ($this, str) { + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + _str$0 = $this._str = str; + $this._size = _str$0.length; + _suffixarray$0 = $this._suffixarray = SAIS$make$S(str); + $this._head = (_suffixarray$0.indexOf(0) | 0); +}; + +var BurrowsWheelerTransform$build$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!number} i + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I = function ($this, i) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var index; + size = $this._size; + if (i >= size) { + throw new Error("BurrowsWheelerTransform.get() : range error"); + } + index = ($this._suffixarray[i] + size - 1) % size; + return $this._str.charAt(index); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$ = function ($this) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + str = [ ]; + size = $this._size; + for (i = 0; i < size; i++) { + str.push(BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I($this, i)); + } + return str.join(""); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} replace + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S = function ($this, replace) { + /** @type {!string} */ + var result; + result = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$($this); + return result.replace(BurrowsWheelerTransform.END_MARKER, replace); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S; + +/** + * class OArray extends Object + * @constructor + */ +function OArray() { +} + +/** + * @constructor + * @param {Array.<undefined|!number>} array + */ +function OArray$AI(array) { + this.array = array; + this.offset = 0; +}; + +OArray$AI.prototype = new OArray; + +/** + * @constructor + * @param {Array.<undefined|!number>} array + * @param {!number} offset + */ +function OArray$AII(array, offset) { + this.array = array; + this.offset = offset; +}; + +OArray$AII.prototype = new OArray; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!number} + */ +OArray.get$LOArray$I = function ($this, index) { + return $this.array[index + $this.offset]; +}; + +var OArray$get$LOArray$I = OArray.get$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index + * @param {!number} value + */ +OArray.set$LOArray$II = function ($this, index, value) { + $this.array[index + $this.offset] = value; +}; + +var OArray$set$LOArray$II = OArray.set$LOArray$II; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!boolean} + */ +OArray.isS$LOArray$I = function ($this, index) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index + (offset$0 = $this.offset)] < array$0[index + offset$0 + 1]; +}; + +var OArray$isS$LOArray$I = OArray.isS$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index1 + * @param {!number} index2 + * @return {!boolean} + */ +OArray.compare$LOArray$II = function ($this, index1, index2) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index1 + (offset$0 = $this.offset)] == array$0[index2 + offset$0]; +}; + +var OArray$compare$LOArray$II = OArray.compare$LOArray$II; + +/** + * class SAIS extends Object + * @constructor + */ +function SAIS() { +} + +/** + * @constructor + */ +function SAIS$() { +}; + +SAIS$.prototype = new SAIS; + +/** + * @param {BitVector} t + * @param {!number} i + * @return {!boolean} + */ +SAIS._isLMS$LBitVector$I = function (t, i) { + return i > 0 && t.get$I(i) && ! t.get$I(i - 1); +}; + +var SAIS$_isLMS$LBitVector$I = SAIS._isLMS$LBitVector$I; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._getBuckets$LOArray$AIIIB = function (s, bkt, n, K, end) { + /** @type {!number} */ + var sum; + /** @type {!number} */ + var i; + sum = 0; + for (i = 0; i <= K; i++) { + bkt[i] = 0; + } + for (i = 0; i < n; i++) { + bkt[OArray$get$LOArray$I(s, i)]++; + } + for (i = 0; i <= K; i++) { + sum += bkt[i]; + bkt[i] = ((end ? sum : sum - bkt[i]) | 0); + } +}; + +var SAIS$_getBuckets$LOArray$AIIIB = SAIS._getBuckets$LOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAl$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = 0; i < n; i++) { + j = SA[i] - 1; + if (j >= 0 && ! t.get$I(j)) { + SA[bkt[OArray$get$LOArray$I(s, j)]++] = (j | 0); + } + } +}; + +var SAIS$_induceSAl$LBitVector$AILOArray$AIIIB = SAIS._induceSAl$LBitVector$AILOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAs$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = n - 1; i >= 0; i--) { + j = SA[i] - 1; + if (j >= 0 && t.get$I(j)) { + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + } +}; + +var SAIS$_induceSAs$LBitVector$AILOArray$AIIIB = SAIS._induceSAs$LBitVector$AILOArray$AIIIB; + +/** + * @param {!string} source + * @return {Array.<undefined|!number>} + */ +SAIS.make$S = function (source) { + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var maxCode; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!number>} */ + var SA; + /** @type {OArray} */ + var s; + charCodes = [ ]; + charCodes.length = source.length; + maxCode = 0; + for (i = 0; i < source.length; i++) { + code = source.charCodeAt(i); + charCodes[i] = (code | 0); + maxCode = (code > maxCode ? code : maxCode); + } + SA = [ ]; + SA.length = source.length; + s = ({offset: 0, array: charCodes}); + SAIS$_make$LOArray$AIII(s, SA, source.length, maxCode); + return SA; +}; + +var SAIS$make$S = SAIS.make$S; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} SA + * @param {!number} n + * @param {!number} K + */ +SAIS._make$LOArray$AIII = function (s, SA, n, K) { + /** @type {BitVector} */ + var t; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var bkt; + /** @type {!number} */ + var n1; + /** @type {!number} */ + var name; + /** @type {!number} */ + var prev; + /** @type {undefined|!number} */ + var pos; + /** @type {!boolean} */ + var diff; + /** @type {!number} */ + var d; + /** @type {!number} */ + var j; + /** @type {Array.<undefined|!number>} */ + var SA1; + /** @type {OArray} */ + var s1; + /** @type {!number} */ + var i$0; + /** @type {!number} */ + var index$0; + t = new BitVector$(); + t.set$IB(n - 2, false); + t.set$IB(n - 1, true); + for (i = n - 3; i >= 0; i--) { + t.set$IB(i, OArray$isS$LOArray$I(s, i) || OArray$compare$LOArray$II(s, i, i + 1) && t.get$I(i + 1)); + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for (i = 0; i < n; i++) { + SA[i] = -1; + } + for (i = 1; i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + SA[-- bkt[OArray$get$LOArray$I(s, i)]] = (i | 0); + } + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); + n1 = 0; + for (i = 0; i < n; i++) { + i$0 = SA[i]; + if (i$0 > 0 && t.get$I(i$0) && ! t.get$I(i$0 - 1)) { + SA[n1++] = SA[i]; + } + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + name = 0; + prev = -1; + for (i = 0; i < n1; i++) { + pos = SA[i]; + diff = false; + for (d = 0; d < n; d++) { + if (prev === -1 || ! OArray$compare$LOArray$II(s, pos + d, prev + d) || t.get$I(pos + d) !== t.get$I(prev + d)) { + diff = true; + break; + } else { + if (d > 0 && (SAIS$_isLMS$LBitVector$I(t, pos + d) || SAIS$_isLMS$LBitVector$I(t, prev + d))) { + break; + } + } + } + if (diff) { + name++; + prev = pos; + } + pos = ((pos % 2 === 0 ? pos / 2 : (pos - 1) / 2) | 0); + SA[n1 + pos] = (name - 1 | 0); + } + for ((i = n - 1, j = n - 1); i >= n1; i--) { + if (SA[i] >= 0) { + SA[j--] = SA[i]; + } + } + SA1 = SA; + s1 = ({offset: n - n1, array: SA}); + if (name < n1) { + SAIS$_make$LOArray$AIII(s1, SA1, n1, name - 1); + } else { + for (i = 0; i < n1; i++) { + SA1[OArray$get$LOArray$I(s1, i)] = (i | 0); + } + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for ((i = 1, j = 0); i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + OArray$set$LOArray$II(s1, j++, i); + } + } + for (i = 0; i < n1; i++) { + index$0 = SA1[i]; + SA1[i] = s1.array[index$0 + s1.offset]; + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + for (i = n1 - 1; i >= 0; i--) { + j = SA[i]; + SA[i] = -1; + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); +}; + +var SAIS$_make$LOArray$AIII = SAIS._make$LOArray$AIII; + +$__jsx_lazy_init(Oktavia, "eof", function () { + return String.fromCharCode(0); +}); +$__jsx_lazy_init(Oktavia, "eob", function () { + return String.fromCharCode(1); +}); +$__jsx_lazy_init(Oktavia, "unknown", function () { + return String.fromCharCode(3); +}); +Binary._base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +$__jsx_lazy_init(Binary, "_base64DecodeChars", function () { + return [ -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, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 ]; +}); +BitVector.SMALL_BLOCK_SIZE = 32; +BitVector.LARGE_BLOCK_SIZE = 256; +BitVector.BLOCK_RATE = 8; +EnglishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(EnglishStemmer, "methodObject", function () { + return new EnglishStemmer$(); +}); +$__jsx_lazy_init(EnglishStemmer, "a_0", function () { + return [ new Among$SII("arsen", -1, -1), new Among$SII("commun", -1, -1), new Among$SII("gener", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_1", function () { + return [ new Among$SII("'", -1, 1), new Among$SII("'s'", 0, 1), new Among$SII("'s", -1, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_2", function () { + return [ new Among$SII("ied", -1, 2), new Among$SII("s", -1, 3), new Among$SII("ies", 1, 2), new Among$SII("sses", 1, 1), new Among$SII("ss", 1, -1), new Among$SII("us", 1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_3", function () { + return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_4", function () { + return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2), new Among$SII("edly", -1, 2), new Among$SII("eedly", 3, 1), new Among$SII("ingly", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_5", function () { + return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("ogi", -1, 13), new Among$SII("li", -1, 16), new Among$SII("bli", 3, 12), new Among$SII("abli", 4, 4), new Among$SII("alli", 3, 8), new Among$SII("fulli", 3, 14), new Among$SII("lessli", 3, 15), new Among$SII("ousli", 3, 10), new Among$SII("entli", 3, 5), new Among$SII("aliti", -1, 8), new Among$SII("biliti", -1, 12), new Among$SII("iviti", -1, 11), new Among$SII("tional", -1, 1), new Among$SII("ational", 14, 7), new Among$SII("alism", -1, 8), new Among$SII("ation", -1, 7), new Among$SII("ization", 17, 6), new Among$SII("izer", -1, 6), new Among$SII("ator", -1, 7), new Among$SII("iveness", -1, 11), new Among$SII("fulness", -1, 9), new Among$SII("ousness", -1, 10) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_6", function () { + return [ new Among$SII("icate", -1, 4), new Among$SII("ative", -1, 6), new Among$SII("alize", -1, 3), new Among$SII("iciti", -1, 4), new Among$SII("ical", -1, 4), new Among$SII("tional", -1, 1), new Among$SII("ational", 5, 2), new Among$SII("ful", -1, 5), new Among$SII("ness", -1, 5) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_7", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_8", function () { + return [ new Among$SII("e", -1, 1), new Among$SII("l", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_9", function () { + return [ new Among$SII("succeed", -1, -1), new Among$SII("proceed", -1, -1), new Among$SII("exceed", -1, -1), new Among$SII("canning", -1, -1), new Among$SII("inning", -1, -1), new Among$SII("earring", -1, -1), new Among$SII("herring", -1, -1), new Among$SII("outing", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_10", function () { + return [ new Among$SII("andes", -1, -1), new Among$SII("atlas", -1, -1), new Among$SII("bias", -1, -1), new Among$SII("cosmos", -1, -1), new Among$SII("dying", -1, 3), new Among$SII("early", -1, 9), new Among$SII("gently", -1, 7), new Among$SII("howe", -1, -1), new Among$SII("idly", -1, 6), new Among$SII("lying", -1, 4), new Among$SII("news", -1, -1), new Among$SII("only", -1, 10), new Among$SII("singly", -1, 11), new Among$SII("skies", -1, 2), new Among$SII("skis", -1, 1), new Among$SII("sky", -1, -1), new Among$SII("tying", -1, 5), new Among$SII("ugly", -1, 8) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v", function () { + return [ 17, 65, 16, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v_WXY", function () { + return [ 1, 17, 65, 208, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_valid_LI", function () { + return [ 55, 141, 2 ]; +}); +$__jsx_lazy_init(BurrowsWheelerTransform, "END_MARKER", function () { + return String.fromCharCode(0); +}); +var $__jsx_classMap = { + "tool/httpstatus.jsx": { + HTTPStatus: HTTPStatus, + HTTPStatus$: HTTPStatus$, + _Main: _Main, + _Main$: _Main$ + }, + "src/oktavia.jsx": { + Oktavia: Oktavia, + Oktavia$: Oktavia$ + }, + "src/metadata.jsx": { + Metadata: Metadata, + Metadata$LOktavia$: Metadata$LOktavia$, + Section: Section, + Section$LOktavia$: Section$LOktavia$, + Splitter: Splitter, + Splitter$LOktavia$: Splitter$LOktavia$, + Splitter$LOktavia$S: Splitter$LOktavia$S, + Table: Table, + Table$LOktavia$AS: Table$LOktavia$AS, + Block: Block, + Block$LOktavia$: Block$LOktavia$ + }, + "src/query-parser.jsx": { + QueryParser: QueryParser, + QueryParser$: QueryParser$ + }, + "src/fm-index.jsx": { + FMIndex: FMIndex, + FMIndex$: FMIndex$ + }, + "src/binary-util.jsx": { + Binary: Binary, + Binary$: Binary$, + LoadedStringResult: LoadedStringResult, + LoadedStringResult$SI: LoadedStringResult$SI, + LoadedStringListResult: LoadedStringListResult, + LoadedStringListResult$SI: LoadedStringListResult$SI, + LoadedStringListMapResult: LoadedStringListMapResult, + LoadedStringListMapResult$SI: LoadedStringListMapResult$SI, + LoadedNumberListResult: LoadedNumberListResult, + LoadedNumberListResult$SI: LoadedNumberListResult$SI, + CompressionReport: CompressionReport, + CompressionReport$: CompressionReport$ + }, + "src/query.jsx": { + Query: Query, + Query$: Query$ + }, + "src/search-result.jsx": { + Proposal: Proposal, + Proposal$II: Proposal$II, + Position: Position, + Position$SIB: Position$SIB, + SearchUnit: SearchUnit, + SearchUnit$I: SearchUnit$I, + SingleResult: SingleResult, + SingleResult$: SingleResult$, + SingleResult$SBB: SingleResult$SBB, + SearchSummary: SearchSummary, + SearchSummary$: SearchSummary$, + SearchSummary$LOktavia$: SearchSummary$LOktavia$ + }, + "src/stemmer/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer$ + }, + "src/bit-vector.jsx": { + BitVector: BitVector, + BitVector$: BitVector$ + }, + "src/stemmer/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer$ + }, + "src/stemmer/english-stemmer.jsx": { + EnglishStemmer: EnglishStemmer, + EnglishStemmer$: EnglishStemmer$ + }, + "src/stemmer/among.jsx": { + Among: Among, + Among$SII: Among$SII, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$SIIF$LBaseStemmer$B$LBaseStemmer$ + }, + "src/wavelet-matrix.jsx": { + WaveletMatrix: WaveletMatrix, + WaveletMatrix$: WaveletMatrix$ + }, + "src/burrows-wheeler-transform.jsx": { + BurrowsWheelerTransform: BurrowsWheelerTransform, + BurrowsWheelerTransform$: BurrowsWheelerTransform$ + }, + "src/sais.jsx": { + OArray: OArray, + OArray$AI: OArray$AI, + OArray$AII: OArray$AII, + SAIS: SAIS, + SAIS$: SAIS$ + } +}; + + +/** + * launches _Main.main(:string[]):void invoked by jsx --run|--executable + */ +JSX.runMain = function (sourceFile, args) { + var module = JSX.require(sourceFile); + if (! module) { + throw new ReferenceError("entry point module not found in " + sourceFile); + } + if (! module._Main) { + throw new ReferenceError("entry point _Main not found in " + sourceFile); + } + if (! module._Main.main$AS) { + throw new ReferenceError("entry point _Main.main(:string[]):void not found in " + sourceFile); + } + module._Main.main$AS(args); +}; + +/** + * launches _Test#test*():void invoked by jsx --test + */ +JSX.runTests = function (sourceFile, tests) { + var module = JSX.require(sourceFile); + var testClass = module._Test$; + + if (!testClass) return; // skip if there's no test class + + if(tests.length === 0) { + var p = testClass.prototype; + for (var m in p) { + if (p[m] instanceof Function + && /^test.*[$]$/.test(m)) { + tests.push(m); + } + } + } + else { // set as process arguments + tests = tests.map(function (name) { + return name + "$"; // mangle for function test*():void + }); + } + + var testCase = new testClass(); + + if (testCase.beforeClass$AS != null) + testCase.beforeClass$AS(tests); + + for (var i = 0; i < tests.length; ++i) { + (function (method) { + if (method in testCase) { + testCase.run$SF$V$(method, function() { testCase[method](); }); + } + else { + throw new ReferenceError("No such test method: " + method); + } + }(tests[i])); + } + + if (testCase.afterClass$ != null) + testCase.afterClass$(); +}; +JSX.runMain("tool/httpstatus.jsx", process.argv.slice(2)) +})(JSX); diff --git a/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-mkindex b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-mkindex new file mode 100755 index 00000000..b0171b53 --- /dev/null +++ b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-mkindex @@ -0,0 +1,25034 @@ +#!/usr/bin/env node +// generatedy by JSX compiler 0.9.24 (2013-04-05 13:45:00 +0900; 1b229cc6a411f674f0f7cf7a79b7a8b3f8eb7414) +var JSX = {}; +(function (JSX) { +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +/** + * sideeffect().a /= b + */ +function $__jsx_div_assign(obj, prop, divisor) { + return obj[prop] = (obj[prop] / divisor) | 0; +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +var $__jsx_isNaN = isNaN; +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +/** + * class _Main extends Object + * @constructor + */ +function _Main() { +} + +/** + * @constructor + */ +function _Main$() { +}; + +_Main$.prototype = new _Main; + +/** + */ +_Main.usage$ = function () { + console.log([ "usage: oktavia_mkindex [options]", "", "Common Options:", " -i, --input [input folder/file ] : Target files to search. .html, .csv, .txt are available.", " -o, --output [outputfolder] : Directory that will store output files.", " : This is a relative path from root.", " : Default value is 'search'. ", " -t, --type [type] : Export type. 'index'(default), 'base64', 'cmd', 'js',", " : 'commonjs' are available.", " : 'index' is a just index file. 'cmd' is a base64 code with search program.", " : Others are base64 source code style output.", " -m, --mode [mode] : Mode type. 'html', 'csv', 'text' are available.", " -c, --cache-density [percent] : Cache data density. It effects file size and search speed.", " : 100% become four times of base index file size. Default value is 5%.", " : Valid value is 0.1% - 100%.", " -n, --name [function] : A variable name for 'js' output or property name", " : for 'js' and 'commonjs'. Default value is 'searchIndex'.", " -q, --quiet : Hide detail information.", " -h, --help : Display this message.", "", "HTML Mode Options:", " -r, --root [document root] : Document root folder. Default is current. ", " : Indexer creates result file path from this folder.", " -p, --prefix [directory prefix] : Directory prefix for a document root from a server root.", " : If your domain is example.com and 'manual' is passed,", " : document root become http://example.com/manual/.", " : It effects search result URL. Default value is '/'.", " -u, --unit [search unit] : 'file', 'h1'-'h6'. Default value is 'file'.", " -f, --filter [target tag] : Only contents inside this tag is indexed.", " : Default value is \"article,#content,#main,div.body\".", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -w, --word-splitter [splitter] : Use optional word splitter.", " : 'ts' (TinySegmenter for Japanese) is available", "", "Text Mode Options:", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -w, --word-splitter [splitter] : Use optional word splitter.", " : 'ts' (TinySegmenter for Japanese) is available", " -u, --unit [search unit] : file, block, line. Default value is 'file'.", "", "Supported Stemmer Algorithms:", " danish, dutch, english, finnish, french german, hungarian italian", " norwegian, porter, portuguese, romanian, russian, spanish, swedish, turkish" ].join('\n')); +}; + +var _Main$usage$ = _Main.usage$; + +/** + * @param {Array.<undefined|!string>} args + */ +_Main.main$AS = function (args) { + /** @type {Array.<undefined|!string>} */ + var inputs; + /** @type {!string} */ + var root; + /** @type {!string} */ + var prefix; + /** @type {!string} */ + var output; + /** @type {!boolean} */ + var showhelp; + /** @type {!boolean} */ + var notrun; + /** @type {!string} */ + var unit; + /** @type {!string} */ + var type; + /** @type {!string} */ + var mode; + /** @type {!boolean} */ + var verbose; + /** @type {Array.<undefined|!string>} */ + var filter; + /** @type {undefined|!string} */ + var algorithm; + /** @type {undefined|!string} */ + var wordsplitter; + /** @type {!number} */ + var cacheDensity; + /** @type {undefined|!string} */ + var name; + /** @type {Array.<undefined|!string>} */ + var validModes; + /** @type {Array.<undefined|!string>} */ + var validUnitsForHTML; + /** @type {Array.<undefined|!string>} */ + var validUnitsForText; + /** @type {Array.<undefined|!string>} */ + var validStemmers; + /** @type {Array.<undefined|!string>} */ + var validTypes; + /** @type {BasicParser} */ + var parser; + /** @type {CommandOption} */ + var opt; + /** @type {Array.<undefined|!string>} */ + var items; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var match; + /** @type {!number} */ + var tmpValue; + /** @type {Array.<undefined|!string>} */ + var inputTextFiles; + /** @type {Array.<undefined|!string>} */ + var inputHTMLFiles; + /** @type {Array.<undefined|!string>} */ + var inputCSVFiles; + /** @type {undefined|!string} */ + var input; + /** @type {Stats} */ + var stat; + /** @type {Stemmer} */ + var stemmer; + /** @type {undefined|!string} */ + var dump; + /** @type {!number} */ + var unitIndex; + /** @type {HTMLParser} */ + var htmlParser; + /** @type {!string} */ + var indexFilePath; + /** @type {!string} */ + var dirPath; + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!string} */ + var filepath$0; + /** @type {!string} */ + var filepath$1; + console.log("Search Engine Oktavia - Index Generator\n"); + inputs = [ ]; + root = process.cwd(); + prefix = '/'; + output = "search"; + showhelp = false; + notrun = false; + unit = 'file'; + type = 'js'; + mode = ''; + verbose = true; + filter = [ ]; + algorithm = null; + wordsplitter = null; + cacheDensity = 5.0; + name = null; + validModes = [ 'html', 'csv', 'text' ]; + validUnitsForHTML = [ 'file', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ]; + validUnitsForText = [ 'file', 'block', 'line' ]; + validStemmers = [ 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish', 'turkish' ]; + validTypes = [ 'index', 'base64', 'cmd', 'js', 'commonjs' ]; + parser = new BasicParser$SAS("n:(name)q(quiet)m:(mode)i:(input)r:(root)p:(prefix)o:(output)h(help)u:(unit)f:(filter)s:(stemmer)w:(word-splitter)t:(type)c:(cache-density)", args); + opt = parser.getopt$(); + while (opt) { + switch (opt.option) { + case "m": + if (validModes.indexOf(opt.optarg) === -1) { + console.error("Option m/mode should be 'html', 'csv', 'text'."); + notrun = true; + } + mode = opt.optarg; + break; + case "i": + inputs.push(opt.optarg); + break; + case "r": + root = node.path.resolve(opt.optarg); + break; + case "p": + prefix = opt.optarg; + break; + case "n": + name = opt.optarg; + break; + case "o": + output = opt.optarg; + if (output.slice(0, 1) === '/') { + output = output.slice(1); + } + break; + case "h": + showhelp = true; + break; + case "q": + verbose = false; + break; + case "u": + unit = opt.optarg; + break; + case "f": + items = opt.optarg.split(','); + for (i in items) { + filter.push(items[i]); + } + break; + case "t": + if (validTypes.indexOf(opt.optarg) === -1) { + console.error('Option -t/--type is invalid.'); + notrun = true; + } else { + type = opt.optarg; + } + break; + case "s": + if (validStemmers.indexOf(opt.optarg) === -1) { + console.error('Option -s/--stemmer is invalid.'); + notrun = true; + } else { + algorithm = opt.optarg; + } + break; + case "w": + break; + case "c": + match = /(\d+\.?\d*)/.exec(opt.optarg); + if (match) { + tmpValue = +match[1]; + if (0.1 <= tmpValue && tmpValue <= 100) { + cacheDensity = tmpValue; + } else { + console.error('Option -c/--cache-density should be in 0.1 - 100.'); + notrun = true; + } + } else { + console.error('Option -c/--cache-density is invalid.'); + notrun = true; + } + break; + case "?": + notrun = true; + break; + } + opt = parser.getopt$(); + } + inputTextFiles = [ ]; + inputHTMLFiles = [ ]; + inputCSVFiles = [ ]; + if (filter.length === 0) { + filter = [ 'article', '#content', '#main', 'div.body' ]; + } + for (i in inputs) { + input = inputs[i]; + if (! node.fs.existsSync(input)) { + console.error("Following input folder/file doesn't exist: " + input); + notrun = true; + } else { + stat = node.fs.statSync(input); + if (stat.isFile()) { + _Main$_checkFileType$SASASAS(node.path.resolve(input), inputTextFiles, inputHTMLFiles, inputCSVFiles); + } else { + if (stat.isDirectory()) { + _Main$_checkDirectory$SASASAS(input, inputTextFiles, inputHTMLFiles, inputCSVFiles); + } else { + console.error("Following input is not folder or file: " + input); + notrun = true; + } + } + } + } + if (inputTextFiles.length === 0 && inputHTMLFiles.length === 0 && inputCSVFiles.length === 0 || ! mode) { + showhelp = true; + } + if (showhelp) { + _Main$usage$(); + } else { + if (! notrun) { + stemmer = null; + if (algorithm) { + stemmer = _Main$_createStemmer$S(algorithm); + } + dump = null; + switch (mode) { + case 'html': + unitIndex = validUnitsForHTML.indexOf(unit); + if (unitIndex === -1) { + console.error('Option -u/--unit should be file, h1, h2, h3, h4, h5, h6. But ' + unit); + } else { + htmlParser = new HTMLParser$ISSASLStemmer$(unitIndex, root, prefix, filter, stemmer); + for (i = 0; i < inputHTMLFiles.length; i++) { + htmlParser.parse$S(inputHTMLFiles[i]); + } + console.log('generating index...'); + if (verbose) { + console.log(''); + } + dump = htmlParser.dump$IB(cacheDensity, verbose); + } + break; + case 'csv': + ({oktavia: new Oktavia$(), root: root, stemmer: stemmer}); + for (i in inputCSVFiles) { + filepath$0 = inputCSVFiles[i]; + } + break; + case 'text': + if (validUnitsForText.indexOf(unit) === -1) { + console.error('Option u/unit should be file, block, line. But ' + unit); + } else { + ({oktavia: new Oktavia$(), unit: unit, root: root, stemmer: stemmer}); + for (i in inputTextFiles) { + filepath$1 = inputTextFiles[i]; + node.fs.readFileSync(filepath$1, 'utf8'); + } + } + break; + } + if (dump) { + indexFilePath = ""; + switch (type) { + case 'index': + indexFilePath = node.path.resolve(root, output, 'searchindex.okt'); + dirPath = node.path.dirname(indexFilePath); + _Main$_mkdirP$S(dirPath); + node.fs.writeFileSync(indexFilePath, dump, "utf16le"); + break; + case 'base64': + indexFilePath = node.path.resolve(root, output, 'searchindex.okt.b64'); + dirPath = node.path.dirname(indexFilePath); + _Main$_mkdirP$S(dirPath); + node.fs.writeFileSync(indexFilePath, Binary$base64encode$S(dump), "utf8"); + break; + case 'cmd': + break; + case 'js': + indexFilePath = node.path.resolve(root, output, 'searchindex.js'); + dirPath = node.path.dirname(indexFilePath); + _Main$_mkdirP$S(dirPath); + if (name == null) { + name = 'searchIndex'; + } + contents = [ '// Oktavia Search Index', 'var ' + name + ' = "' + Binary$base64encode$S(dump) + '";', '' ]; + node.fs.writeFileSync(indexFilePath, contents.join('\n'), "utf8"); + break; + case 'commonjs': + indexFilePath = node.path.resolve(root, output, 'searchindex.js'); + dirPath = node.path.dirname(indexFilePath); + _Main$_mkdirP$S(dirPath); + if (name == null) { + name = 'searchIndex'; + } + contents = [ '// Oktavia Search Index', 'exports.' + name + ' = "' + Binary$base64encode$S(dump) + '";', '' ]; + node.fs.writeFileSync(indexFilePath, contents.join('\n'), "utf8"); + break; + } + if (indexFilePath) { + console.log("generated: " + indexFilePath); + } + } + } + } +}; + +var _Main$main$AS = _Main.main$AS; + +/** + * @param {!string} path + * @param {Array.<undefined|!string>} texts + * @param {Array.<undefined|!string>} HTMLs + * @param {Array.<undefined|!string>} CSVs + */ +_Main._checkFileType$SASASAS = function (path, texts, HTMLs, CSVs) { + /** @type {Array.<undefined|!string>} */ + var match; + match = path.match(/(.*)\.(.*)/); + if (match && match[1]) { + switch (match[2].toLowerCase()) { + case 'html': + case 'htm': + HTMLs.push(path); + break; + case 'csv': + CSVs.push(path); + break; + default: + texts.push(path); + } + } +}; + +var _Main$_checkFileType$SASASAS = _Main._checkFileType$SASASAS; + +/** + * @param {!string} path + * @param {Array.<undefined|!string>} texts + * @param {Array.<undefined|!string>} HTMLs + * @param {Array.<undefined|!string>} CSVs + */ +_Main._checkDirectory$SASASAS = function (path, texts, HTMLs, CSVs) { + /** @type {Array.<undefined|!string>} */ + var files; + /** @type {!number} */ + var j; + /** @type {!string} */ + var filepath; + /** @type {Stats} */ + var stat; + files = node.fs.readdirSync(path); + for (j in files) { + filepath = node.path.resolve(path, files[j]); + stat = node.fs.statSync(filepath); + if (stat.isFile()) { + _Main$_checkFileType$SASASAS(filepath, texts, HTMLs, CSVs); + } else { + if (stat.isDirectory()) { + _Main$_checkDirectory$SASASAS(filepath, texts, HTMLs, CSVs); + } + } + } +}; + +var _Main$_checkDirectory$SASASAS = _Main._checkDirectory$SASASAS; + +/** + * @param {!string} path + */ +_Main._mkdirP$S = function (path) { + if (node.fs.existsSync(path)) { + return; + } + _Main$_mkdirP$S(node.path.dirname(path)); + node.fs.mkdirSync(path); +}; + +var _Main$_mkdirP$S = _Main._mkdirP$S; + +/** + * @param {!string} algorithm + * @return {Stemmer} + */ +_Main._createStemmer$S = function (algorithm) { + /** @type {Stemmer} */ + var stemmer; + switch (algorithm.toLowerCase()) { + case "danish": + stemmer = new DanishStemmer$(); + break; + case "dutch": + stemmer = new DutchStemmer$(); + break; + case "english": + stemmer = new EnglishStemmer$(); + break; + case "finnish": + stemmer = new FinnishStemmer$(); + break; + case "french": + stemmer = new FrenchStemmer$(); + break; + case "german": + stemmer = new GermanStemmer$(); + break; + case "hungarian": + stemmer = new HungarianStemmer$(); + break; + case "italian": + stemmer = new ItalianStemmer$(); + break; + case "norwegian": + stemmer = new NorwegianStemmer$(); + break; + case "porter": + stemmer = new PorterStemmer$(); + break; + case "portuguese": + stemmer = new PortugueseStemmer$(); + break; + case "romanian": + stemmer = new RomanianStemmer$(); + break; + case "russian": + stemmer = new RussianStemmer$(); + break; + case "spanish": + stemmer = new SpanishStemmer$(); + break; + case "swedish": + stemmer = new SwedishStemmer$(); + break; + case "turkish": + stemmer = new TurkishStemmer$(); + break; + default: + stemmer = new EnglishStemmer$(); + break; + } + return stemmer; +}; + +var _Main$_createStemmer$S = _Main._createStemmer$S; + +/** + * class node extends Object + * @constructor + */ +function node() { +} + +/** + * @constructor + */ +function node$() { +}; + +node$.prototype = new node; + +/** + * @param {!string} source + * @return {*} + */ +node.require$S = function (source) { + /** @type {!string} */ + var src; + src = 'require(' + JSON.stringify(source) + ')'; + return eval(src); +}; + +var node$require$S = node.require$S; + +/** + * class Oktavia extends Object + * @constructor + */ +function Oktavia() { +} + +/** + * @constructor + */ +function Oktavia$() { + /** @type {Array.<undefined|!string>} */ + var _utf162compressCode$0; + this._compressCode2utf16 = null; + this._fmindex = new FMIndex$(); + this._metadatas = ({ }); + this._metadataLabels = [ ]; + this._stemmer = null; + this._stemmingResult = ({ }); + _utf162compressCode$0 = this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + _utf162compressCode$0.length = 65536; + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; +}; + +Oktavia$.prototype = new Oktavia; + +/** + * @param {Stemmer} stemmer + */ +Oktavia.prototype.setStemmer$LStemmer$ = function (stemmer) { + this._stemmer = stemmer; +}; + +/** + * @return {Metadata} + */ +Oktavia.prototype.getPrimaryMetadata$ = function () { + return this._metadatas[this._metadataLabels[0]]; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.addSection$S = function (key) { + /** @type {Section} */ + var section; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + section = new Section$LOktavia$(this); + this._metadatas[key] = section; + return section; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.getSection$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.addSplitter$S = function (key) { + /** @type {Splitter} */ + var splitter; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + splitter = new Splitter$LOktavia$(this); + this._metadatas[key] = splitter; + return splitter; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.getSplitter$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!string>} headers + * @return {Table} + */ +Oktavia.prototype.addTable$SAS = function (key, headers) { + /** @type {Table} */ + var table; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + table = new Table$LOktavia$AS(this, headers); + this._metadatas[key] = table; + return table; +}; + +/** + * @param {!string} key + * @return {Table} + */ +Oktavia.prototype.getTable$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.addBlock$S = function (key) { + /** @type {Block} */ + var block; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + block = new Block$LOktavia$(this); + this._metadatas[key] = block; + return block; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.getBlock$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + */ +Oktavia.prototype.addEndOfBlock$ = function () { + this._fmindex.push$S(Oktavia.eob); +}; + +/** + * @param {!string} words + */ +Oktavia.prototype.addWord$S = function (words) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {undefined|!string} */ + var newCharCode; + str = [ ]; + str.length = words.length; + for (i = 0; i < words.length; i++) { + charCode = words.charCodeAt(i); + newCharCode = this._utf162compressCode[charCode]; + if (newCharCode == null) { + newCharCode = String.fromCharCode(this._compressCode2utf16.length); + this._utf162compressCode[charCode] = newCharCode; + this._compressCode2utf16.push(String.fromCharCode(charCode)); + } + str.push(newCharCode); + } + this._fmindex.push$S(str.join('')); +}; + +/** + * @param {!string} words + * @param {!boolean} stemming + */ +Oktavia.prototype.addWord$SB = function (words, stemming) { + /** @type {Array.<undefined|!string>} */ + var wordList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var originalWord; + /** @type {!string} */ + var smallWord; + /** @type {undefined|!string} */ + var registerWord; + /** @type {!string} */ + var baseWord; + /** @type {!string} */ + var compressedCodeWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + this.addWord$S(words); + wordList = words.split(/\s+/); + for (i = 0; i < wordList.length; i++) { + originalWord = wordList[i]; + smallWord = originalWord.slice(0, 1).toLowerCase() + originalWord.slice(1); + registerWord = null; + if (stemming && this._stemmer) { + baseWord = this._stemmer.stemWord$S(originalWord.toLowerCase()); + if (originalWord.indexOf(baseWord) === -1) { + registerWord = baseWord; + } + } else { + if (originalWord != smallWord) { + registerWord = smallWord; + } + } + if (registerWord) { + compressedCodeWord = this._convertToCompressionCode$S(originalWord); + stemmedList = this._stemmingResult[registerWord]; + if (! stemmedList) { + stemmedList = [ compressedCodeWord ]; + this._stemmingResult[registerWord] = stemmedList; + } else { + if (stemmedList.indexOf(compressedCodeWord) === -1) { + stemmedList.push(compressedCodeWord); + } + } + } + } +}; + +/** + * @param {!string} keyword + * @return {!string} + */ +Oktavia.prototype._convertToCompressionCode$S = function (keyword) { + /** @type {Array.<undefined|!string>} */ + var resultChars; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var chr; + resultChars = [ ]; + for (i = 0; i < keyword.length; i++) { + chr = this._utf162compressCode[keyword.charCodeAt(i)]; + if (chr == null) { + resultChars.push(Oktavia.unknown); + } else { + resultChars.push(chr); + } + } + return resultChars.join(''); +}; + +/** + * @param {!string} keyword + * @param {!boolean} stemming + * @return {Array.<undefined|!number>} + */ +Oktavia.prototype.rawSearch$SB = function (keyword, stemming) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!string} */ + var baseWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + if (stemming) { + result = [ ]; + if (this._stemmer) { + baseWord = this._stemmer.stemWord$S(keyword.toLowerCase()); + stemmedList = this._stemmingResult[baseWord]; + if (stemmedList) { + for (i = 0; i < stemmedList.length; i++) { + word = stemmedList[i]; + result = result.concat(this._fmindex.search$S(word)); + } + } + } + } else { + result = this._fmindex.search$S(this._convertToCompressionCode$S(keyword)); + } + return result; +}; + +/** + * @param {Array.<undefined|Query>} queries + * @return {SearchSummary} + */ +Oktavia.prototype.search$ALQuery$ = function (queries) { + /** @type {SearchSummary} */ + var summary; + /** @type {!number} */ + var i; + /** @type {SingleResult} */ + var result$0; + summary = ({sourceResults: [ ], result: null, oktavia: this}); + for (i = 0; i < queries.length; i++) { + result$0 = this._searchQuery$LQuery$(queries[i]); + summary.sourceResults.push(result$0); + } + summary.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$(summary, summary.sourceResults); + return summary; +}; + +/** + * @param {Query} query + * @return {SingleResult} + */ +Oktavia.prototype._searchQuery$LQuery$ = function (query) { + /** @type {SingleResult} */ + var result; + /** @type {Array.<undefined|!number>} */ + var positions; + result = new SingleResult$SBB(query.word, query.or, query.not); + if (query.raw) { + positions = this.rawSearch$SB(query.word, false); + } else { + positions = this.rawSearch$SB(query.word, false).concat(this.rawSearch$SB(query.word, true)); + } + this._metadatas[this._metadataLabels[0]].grouping$LSingleResult$AISB(result, positions, query.word, ! query.raw); + return result; +}; + +/** + */ +Oktavia.prototype.build$ = function () { + this.build$IB(5, false); +}; + +/** + * @param {!number} cacheDensity + * @param {!boolean} verbose + */ +Oktavia.prototype.build$IB = function (cacheDensity, verbose) { + /** @type {!string} */ + var key; + /** @type {!number} */ + var cacheRange; + /** @type {!number} */ + var maxChar; + for (key in this._metadatas) { + this._metadatas[key]._build$(); + } + cacheRange = Math.round(Math.max(1, 100 / Math.min(100, Math.max(0.01, cacheDensity)))); + maxChar = this._compressCode2utf16.length; + this._fmindex.build$SIIB(Oktavia.eof, maxChar, cacheRange, verbose); +}; + +/** + * @return {!string} + */ +Oktavia.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +Oktavia.prototype.dump$B = function (verbose) { + /** @type {!string} */ + var header; + /** @type {!string} */ + var fmdata; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {CompressionReport} */ + var report; + /** @type {undefined|!string} */ + var name; + /** @type {!string} */ + var data; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (verbose) { + console.log("Source text size: " + (this._fmindex.size$() * 2 + "") + ' bytes'); + } + fmdata = this._fmindex.dump$B(verbose); + result = [ header, fmdata ]; + result.push(Binary$dump16bitNumber$I(this._compressCode2utf16.length)); + for (i = 3; i < this._compressCode2utf16.length; i++) { + result.push(this._compressCode2utf16[i]); + } + if (verbose) { + console.log('Char Code Map: ' + (this._compressCode2utf16.length * 2 - 2 + "") + ' bytes'); + } + report = ({source: 0, result: 0}); + result.push(Binary$dumpStringListMap$HASLCompressionReport$(this._stemmingResult, report)); + if (verbose) { + console.log('Stemmed Word Table: ' + (result[result.length - 1].length + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + result.push(Binary$dump16bitNumber$I(this._metadataLabels.length)); + for (i = 0; i < this._metadataLabels.length; i++) { + report = ({source: 0, result: 0}); + name = this._metadataLabels[i]; + data = this._metadatas[name]._dump$LCompressionReport$(report); + result.push(Binary$dumpString$SLCompressionReport$(name, report), data); + if (verbose) { + console.log('Meta Data ' + name + ': ' + (data.length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + } + return result.join(''); +}; + +/** + * @param {!string} data + */ +Oktavia.prototype.load$S = function (data) { + /** @type {!string} */ + var header; + /** @type {!number} */ + var offset; + /** @type {!number} */ + var charCodeCount; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {LoadedStringListMapResult} */ + var stemmedWords; + /** @type {!number} */ + var metadataCount; + /** @type {LoadedStringResult} */ + var nameResult; + /** @type {!string} */ + var name; + /** @type {!number} */ + var type; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (data.slice(0, 5) !== header) { + throw new Error('Invalid data file'); + } + this._metadatas = ({ }); + this._metadataLabels = [ ]; + offset = 5; + offset = this._fmindex.load$SI(data, offset); + charCodeCount = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + for (i = 3; i < charCodeCount; i++) { + charCode = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16.push(String.fromCharCode(charCode)); + this._utf162compressCode[charCode] = String.fromCharCode(i); + } + stemmedWords = Binary$loadStringListMap$SI(data, offset); + this._stemmingResult = stemmedWords.result; + offset = stemmedWords.offset; + metadataCount = Binary$load16bitNumber$SI(data, offset++); + for (i = 0; i < metadataCount; i++) { + nameResult = Binary$loadString$SI(data, offset); + name = nameResult.result; + offset = nameResult.offset; + type = Binary$load16bitNumber$SI(data, offset++); + switch (type) { + case 0: + offset = Section$_load$LOktavia$SSI(this, name, data, offset); + break; + case 1: + offset = Splitter$_load$LOktavia$SSI(this, name, data, offset); + break; + case 2: + offset = Table$_load$LOktavia$SSI(this, name, data, offset); + break; + case 3: + offset = Block$_load$LOktavia$SSI(this, name, data, offset); + break; + } + } +}; + +/** + * @return {!number} + */ +Oktavia.prototype.contentSize$ = function () { + /** @type {FMIndex} */ + var this$0; + this$0 = this._fmindex; + return this$0._substr.length; +}; + +/** + * @param {!number} position + * @return {!number} + */ +Oktavia.prototype.wordPositionType$I = function (position) { + /** @type {!number} */ + var result; + /** @type {!string} */ + var ahead; + result = 0; + if (position === 0) { + result = 4; + } else { + ahead = this._fmindex.getSubstring$II(position - 1, 1); + if (/\s/.test(ahead)) { + result = 2; + } else { + if (/\W/.test(ahead)) { + result = 1; + } else { + if (Oktavia.eob === ahead) { + result = 3; + } + } + } + } + return (result | 0); +}; + +/** + * @param {!number} position + * @param {!number} length + * @return {!string} + */ +Oktavia.prototype._getSubstring$II = function (position, length) { + /** @type {!string} */ + var result; + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + result = this._fmindex.getSubstring$II(position, length); + str = [ ]; + for (i = 0; i < result.length; i++) { + str.push(this._compressCode2utf16[result.charCodeAt(i)]); + } + return str.join(''); +}; + +/** + * class CommandOption extends Object + * @constructor + */ +function CommandOption() { +} + +/** + * @constructor + * @param {!string} option + */ +function CommandOption$S(option) { + this.option = option; + this.optarg = null; + this.error = false; +}; + +CommandOption$S.prototype = new CommandOption; + +/** + * @constructor + * @param {!string} option + * @param {!string} optarg + */ +function CommandOption$SS(option, optarg) { + this.option = option; + this.optarg = optarg; + this.error = false; +}; + +CommandOption$SS.prototype = new CommandOption; + +/** + * @constructor + * @param {!string} option + * @param {!string} optarg + * @param {!boolean} error + */ +function CommandOption$SSB(option, optarg, error) { + this.option = option; + this.optarg = optarg; + this.error = error; +}; + +CommandOption$SSB.prototype = new CommandOption; + +/** + * class BasicParser extends Object + * @constructor + */ +function BasicParser() { +} + +/** + * @constructor + * @param {!string} optstring + * @param {Array.<undefined|!string>} argv + */ +function BasicParser$SAS(optstring, argv) { + this._silent = false; + this._argv = argv; + this._options = ({ }); + this._aliases = ({ }); + this._optind = 0; + this._subind = 0; + this._extraoptions = false; + this._parseOptstr$S(optstring); +}; + +BasicParser$SAS.prototype = new BasicParser; + +/** + * @param {!string} msg + * @return {Error} + */ +BasicParser._makeError$S = function (msg) { + return new Error('getopt: ' + msg); +}; + +var BasicParser$_makeError$S = BasicParser._makeError$S; + +/** + * @param {!string} optstr + */ +BasicParser.prototype._parseOptstr$S = function (optstr) { + /** @type {!number} */ + var i; + /** @type {!string} */ + var chr; + /** @type {!boolean} */ + var arg; + /** @type {!number} */ + var cp; + /** @type {!string} */ + var alias; + i = 0; + if (optstr.length > 0 && optstr.slice(0, 1) === ':') { + this._silent = true; + i++; + } else { + this._silent = false; + } + while (i < optstr.length) { + chr = optstr.slice(i, i + 1); + arg = false; + if (! /^[\w\d]$/.test(chr)) { + throw new Error("invalid optstring: only alphanumeric characters may be used as options: " + chr); + } + if (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === ':') { + arg = true; + i++; + } + this._options[chr] = arg; + while (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === '(') { + i++; + cp = optstr.indexOf(')', i + 1); + if (cp === -1) { + throw new Error("invalid optstring: missing \")\" to match \"(\" at char " + (i + "")); + } + alias = optstr.substring(i + 1, cp); + this._aliases[alias] = chr; + i = cp; + } + i++; + } +}; + +/** + * @return {!number} + */ +BasicParser.prototype.optind$ = function () { + return this._optind; +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype.getopt$ = function () { + /** @type {undefined|!string} */ + var arg; + if (this._optind >= this._argv.length) { + return null; + } + arg = this._argv[this._optind]; + if (this._extraoptions) { + this._optind++; + return ({option: arg, optarg: null, error: false}); + } + if (this._subind === 0) { + if (arg == '-' || arg == '') { + return null; + } + if (arg.charAt(0) !== '-') { + this._extraoptions = true; + this._optind++; + return ({option: arg, optarg: null, error: false}); + } + if (arg == '--') { + this._optind++; + this._subind = 0; + return null; + } + if (arg.slice(1, 2) === '-') { + return this._getoptLong$(); + } + this._subind++; + } + return this._getoptShort$(); +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype._getoptShort$ = function () { + /** @type {undefined|!string} */ + var arg; + /** @type {!string} */ + var chr; + /** @type {!number} */ + var _subind$0; + arg = this._argv[this._optind]; + chr = arg.slice(_subind$0 = this._subind, _subind$0 + 1); + if (++ this._subind >= arg.length) { + this._optind++; + this._subind = 0; + } + return (! (chr in this._options) ? this._errInvalidOption$S(chr) : ! this._options[chr] ? ({option: chr, optarg: null, error: false}) : this._getoptArgument$S(chr)); +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype._getoptLong$ = function () { + /** @type {undefined|!string} */ + var arg; + /** @type {!number} */ + var eq; + /** @type {!string} */ + var alias; + /** @type {undefined|!string} */ + var chr; + arg = this._argv[this._optind]; + eq = arg.indexOf('='); + alias = arg.substring(2, eq === -1 ? arg.length : eq); + if (! (alias in this._aliases)) { + return this._errInvalidOption$S(alias); + } + chr = this._aliases[alias]; + if (! this._options[chr]) { + if (eq !== -1) { + return this._errExtraArg$S(alias); + } + this._optind++; + return ({option: chr, optarg: null, error: false}); + } + if (eq === -1) { + this._optind++; + } else { + this._subind = (eq + 1 | 0); + } + return this._getoptArgument$S(chr); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._getoptArgument$S = function (chr) { + /** @type {!string} */ + var arg; + if (this._optind >= this._argv.length) { + return this._errMissingArg$S(chr); + } + arg = this._argv[this._optind].substring(this._subind); + this._optind++; + this._subind = 0; + return ({option: chr, optarg: arg, error: false}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errMissingArg$S = function (chr) { + if (this._silent) { + return ({option: ':', optarg: chr, error: false}); + } + console.error('option requires an argument -- ' + chr + '\n'); + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errInvalidOption$S = function (chr) { + if (! this._silent) { + console.error('illegal option -- ' + chr + '\n'); + } + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errExtraArg$S = function (chr) { + if (! this._silent) { + console.error('option expects no argument -- ' + chr + '\n'); + } + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * class TagFilter extends Object + * @constructor + */ +function TagFilter() { +} + +/** + * @constructor + * @param {Array.<undefined|!string>} filters + */ +function TagFilter$AS(filters) { + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var filter; + this.tags = [ ]; + this.ids = [ ]; + this.classes = [ ]; + this.tagAndClasses = [ ]; + for (i = 0; i < filters.length; i++) { + filter = filters[i]; + switch (filter.charAt(0)) { + case '#': + this.ids.push(filter.slice(1)); + break; + case '.': + this.classes.push(filter.slice(1)); + break; + default: + if (filter.indexOf('.') !== -1) { + this.tags.push(filter); + } else { + this.tagAndClasses.push(filter); + } + } + } +}; + +TagFilter$AS.prototype = new TagFilter; + +/** + * @param {!string} tagname + * @param {Object.<string, undefined|!string>} attributes + * @return {!boolean} + */ +TagFilter.prototype.match$SHS = function (tagname, attributes) { + /** @type {!boolean} */ + var result; + /** @type {undefined|!string} */ + var classname; + result = false; + if (this.tags.indexOf(tagname) !== -1) { + result = true; + } else { + if (attributes.id && this.ids.indexOf(attributes.id) !== -1) { + result = true; + } else { + if (attributes.class) { + classname = attributes.class; + if (this.classes.indexOf(classname) !== -1 || this.tagAndClasses.indexOf(tagname + '.' + classname) !== -1) { + result = true; + } + } + } + } + return result; +}; + +/** + * class HTMLParser extends Object + * @constructor + */ +function HTMLParser() { +} + +/** + * @constructor + * @param {!number} unit + * @param {!string} root + * @param {!string} prefix + * @param {Array.<undefined|!string>} filter + * @param {Stemmer} stemmer + */ +function HTMLParser$ISSASLStemmer$(unit, root, prefix, filter, stemmer) { + /** @type {Oktavia} */ + var this$0; + /** @type {Oktavia} */ + var oktavia$0; + this.unit = unit; + this.root = root; + this.prefix = prefix; + this.filter = new TagFilter$AS(filter); + oktavia$0 = this.oktavia = new Oktavia$(); + oktavia$0.addSection$S('section'); + this.oktavia.addBlock$S('tag'); + if (stemmer) { + this$0 = this.oktavia; + this$0._stemmer = stemmer; + } +}; + +HTMLParser$ISSASLStemmer$.prototype = new HTMLParser; + +/** + * @param {!string} filepath + */ +HTMLParser.prototype.parse$S = function (filepath) { + /** @type {!string} */ + var relative; + /** @type {!string} */ + var lines; + /** @type {_HTMLHandler} */ + var handler; + /** @type {SAXParser} */ + var parser; + relative = this.prefix + node.path.relative(this.root, filepath); + console.log('reading: ' + relative); + lines = node.fs.readFileSync(filepath, 'utf8'); + handler = new _HTMLHandler$LOktavia$SILTagFilter$(this.oktavia, relative, this.unit, this.filter); + parser = new SAXParser$LSAXHandler$(handler); + parser.parse$S(lines); +}; + +/** + * @param {!number} cacheDensity + * @param {!boolean} verbose + * @return {!string} + */ +HTMLParser.prototype.dump$IB = function (cacheDensity, verbose) { + console.log('\nbuilding...\n'); + this.oktavia.build$IB(cacheDensity, verbose); + return this.oktavia.dump$B(verbose); +}; + +/** + * class CSVParser extends Object + * @constructor + */ +function CSVParser() { +} + +/** + * @constructor + * @param {!string} root + * @param {Stemmer} stemmer + */ +function CSVParser$SLStemmer$(root, stemmer) { + this.oktavia = new Oktavia$(); + this.root = root; + this.stemmer = stemmer; +}; + +CSVParser$SLStemmer$.prototype = new CSVParser; + +/** + * @param {CSVParser} $this + * @param {!string} filepath + */ +CSVParser.parse$LCSVParser$S = function ($this, filepath) { +}; + +var CSVParser$parse$LCSVParser$S = CSVParser.parse$LCSVParser$S; + +/** + * class TextParser extends Object + * @constructor + */ +function TextParser() { +} + +/** + * @constructor + * @param {!string} unit + * @param {!string} root + * @param {Stemmer} stemmer + */ +function TextParser$SSLStemmer$(unit, root, stemmer) { + this.oktavia = new Oktavia$(); + this.unit = unit; + this.root = root; + this.stemmer = stemmer; +}; + +TextParser$SSLStemmer$.prototype = new TextParser; + +/** + * @param {TextParser} $this + * @param {!string} filepath + */ +TextParser.parse$LTextParser$S = function ($this, filepath) { + node.fs.readFileSync(filepath, 'utf8'); +}; + +var TextParser$parse$LTextParser$S = TextParser.parse$LTextParser$S; + +/** + * class Binary extends Object + * @constructor + */ +function Binary() { +} + +/** + * @constructor + */ +function Binary$() { +}; + +Binary$.prototype = new Binary; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump32bitNumber$N = function (num) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ String.fromCharCode(Math.floor(num / 65536)) ]; + result.push(String.fromCharCode(num % 65536)); + return result.join(""); +}; + +var Binary$dump32bitNumber$N = Binary.dump32bitNumber$N; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load32bitNumber$SI = function (buffer, offset) { + /** @type {!number} */ + var result; + result = buffer.charCodeAt(offset) * 65536 + buffer.charCodeAt(offset + 1); + return result; +}; + +var Binary$load32bitNumber$SI = Binary.load32bitNumber$SI; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump16bitNumber$I = function (num) { + return String.fromCharCode(num % 65536); +}; + +var Binary$dump16bitNumber$I = Binary.dump16bitNumber$I; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load16bitNumber$SI = function (buffer, offset) { + return (buffer.charCodeAt(offset) | 0); +}; + +var Binary$load16bitNumber$SI = Binary.load16bitNumber$SI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.dumpString$S = function (str) { + return Binary$dumpString$SLCompressionReport$(str, null); +}; + +var Binary$dumpString$S = Binary.dumpString$S; + +/** + * @param {!string} str + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpString$SLCompressionReport$ = function (str, report) { + /** @type {!number} */ + var length; + /** @type {!boolean} */ + var compress; + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {undefined|!number} */ + var bytes; + if (str.length > 32768) { + str = str.slice(0, 32768); + } + length = str.length; + compress = true; + charCodes = [ ]; + for (i = 0; i < length; i++) { + charCode = str.charCodeAt(i); + if (charCode > 255) { + compress = false; + break; + } + charCodes.push(charCode); + } + if (compress) { + result = [ Binary$dump16bitNumber$I(length + 32768) ]; + for (i = 0; i < length; i += 2) { + bytes = charCodes[i]; + if (i !== length - 1) { + bytes += charCodes[i + 1] << 8; + } + result.push(String.fromCharCode(bytes % 65536)); + } + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, Math.ceil(length / 2)); + } + } else { + result = [ Binary$dump16bitNumber$I(length), str ]; + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, length); + } + } + return result.join(''); +}; + +var Binary$dumpString$SLCompressionReport$ = Binary.dumpString$SLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringResult} + */ +Binary.loadString$SI = function (buffer, offset) { + return new LoadedStringResult$SI(buffer, offset); +}; + +var Binary$loadString$SI = Binary.loadString$SI; + +/** + * @param {Array.<undefined|!string>} strList + * @return {!string} + */ +Binary.dumpStringList$AS = function (strList) { + return Binary$dumpStringList$ASLCompressionReport$(strList, null); +}; + +var Binary$dumpStringList$AS = Binary.dumpStringList$AS; + +/** + * @param {Array.<undefined|!string>} strList + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringList$ASLCompressionReport$ = function (strList, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ Binary$dump32bitNumber$N(strList.length) ]; + for (i = 0; i < strList.length; i++) { + result.push(Binary$dumpString$SLCompressionReport$(strList[i], report)); + } + return result.join(''); +}; + +var Binary$dumpStringList$ASLCompressionReport$ = Binary.dumpStringList$ASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListResult} + */ +Binary.loadStringList$SI = function (buffer, offset) { + return new LoadedStringListResult$SI(buffer, offset); +}; + +var Binary$loadStringList$SI = Binary.loadStringList$SI; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @return {!string} + */ +Binary.dumpStringListMap$HAS = function (strMap) { + return Binary$dumpStringListMap$HASLCompressionReport$(strMap, null); +}; + +var Binary$dumpStringListMap$HAS = Binary.dumpStringListMap$HAS; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringListMap$HASLCompressionReport$ = function (strMap, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + result = [ ]; + counter = 0; + for (key in strMap) { + result.push(Binary$dumpString$SLCompressionReport$(key, report)); + result.push(Binary$dumpStringList$ASLCompressionReport$(strMap[key], report)); + counter++; + } + return Binary$dump32bitNumber$N(counter) + result.join(''); +}; + +var Binary$dumpStringListMap$HASLCompressionReport$ = Binary.dumpStringListMap$HASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListMapResult} + */ +Binary.loadStringListMap$SI = function (buffer, offset) { + return new LoadedStringListMapResult$SI(buffer, offset); +}; + +var Binary$loadStringListMap$SI = Binary.loadStringListMap$SI; + +/** + * @param {Array.<undefined|!number>} array + * @return {!string} + */ +Binary.dump32bitNumberList$AN = function (array) { + return Binary$dump32bitNumberList$ANLCompressionReport$(array, null); +}; + +var Binary$dump32bitNumberList$AN = Binary.dump32bitNumberList$AN; + +/** + * @param {Array.<undefined|!number>} array + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dump32bitNumberList$ANLCompressionReport$ = function (array, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var index; + /** @type {!number} */ + var inputLength; + /** @type {!number} */ + var length; + /** @type {!string} */ + var resultString; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + result = [ Binary$dump32bitNumber$N(array.length) ]; + index = 0; + inputLength = array.length; + while (index < inputLength) { + if (array[index] == 0) { + length = Binary$_countZero$ANI(array, index); + result.push(Binary$_zeroBlock$I(length)); + index += length; + } else { + if (Binary$_shouldZebraCode$ANI(array, index)) { + result.push(Binary$_createZebraCode$ANI(array, index)); + value1$0 = array.length; + value2$0 = index + 15; + index = (value1$0 <= value2$0 ? value1$0 : value2$0); + } else { + length = Binary$_searchDoubleZero$ANI(array, index); + result.push(Binary$_nonZeroBlock$ANII(array, index, length)); + if (length === 0) { + throw new Error(''); + } + index += length; + } + } + } + resultString = result.join(''); + if (report) { + CompressionReport$add$LCompressionReport$II(report, array.length * 2 + 2, resultString.length); + } + return resultString; +}; + +var Binary$dump32bitNumberList$ANLCompressionReport$ = Binary.dump32bitNumberList$ANLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedNumberListResult} + */ +Binary.load32bitNumberList$SI = function (buffer, offset) { + return new LoadedNumberListResult$SI(buffer, offset); +}; + +var Binary$load32bitNumberList$SI = Binary.load32bitNumberList$SI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._countZero$ANI = function (array, offset) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] != 0) { + return (i - offset | 0); + } + } + return (array.length - offset | 0); +}; + +var Binary$_countZero$ANI = Binary._countZero$ANI; + +/** + * @param {!number} length + * @return {!string} + */ +Binary._zeroBlock$I = function (length) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + while (length > 0) { + if (length > 16384) { + result.push(Binary$dump16bitNumber$I(16383)); + length -= 16384; + } else { + result.push(Binary$dump16bitNumber$I(length - 1)); + length = 0; + } + } + return result.join(''); +}; + +var Binary$_zeroBlock$I = Binary._zeroBlock$I; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!boolean} + */ +Binary._shouldZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var change; + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + if (array.length - offset < 16) { + return true; + } + change = 0; + isLastZero = false; + for (i = offset; i < offset + 15; i++) { + if (array[i] == 0) { + if (! isLastZero) { + isLastZero = true; + change++; + } + } else { + if (isLastZero) { + isLastZero = false; + change++; + } + } + } + return change > 2; +}; + +var Binary$_shouldZebraCode$ANI = Binary._shouldZebraCode$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._searchDoubleZero$ANI = function (array, offset) { + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + isLastZero = false; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] == 0) { + if (isLastZero) { + return (i - offset - 1 | 0); + } + isLastZero = true; + } else { + isLastZero = false; + } + } + return (array.length - offset | 0); +}; + +var Binary$_searchDoubleZero$ANI = Binary._searchDoubleZero$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @param {!number} length + * @return {!string} + */ +Binary._nonZeroBlock$ANII = function (array, offset, length) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var blockLength; + /** @type {!number} */ + var i; + result = [ ]; + while (length > 0) { + if (length > 16384) { + blockLength = 16384; + length -= 16384; + } else { + blockLength = length; + length = 0; + } + result.push(Binary$dump16bitNumber$I(blockLength - 1 + 0x4000)); + for (i = offset; i < offset + blockLength; i++) { + result.push(Binary$dump32bitNumber$N(array[i])); + } + offset += blockLength; + } + return result.join(''); +}; + +var Binary$_nonZeroBlock$ANII = Binary._nonZeroBlock$ANII; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!string} + */ +Binary._createZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var last; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + value1$0 = offset + 15; + value2$0 = array.length; + last = (value1$0 <= value2$0 ? value1$0 : value2$0); + code = 0x8000; + result = [ ]; + for (i = offset; i < last; i++) { + if (array[i] != 0) { + result.push(Binary$dump32bitNumber$N(array[i])); + code = code + (0x1 << i - offset); + } + } + return String.fromCharCode(code) + result.join(''); +}; + +var Binary$_createZebraCode$ANI = Binary._createZebraCode$ANI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64encode$S = function (str) { + /** @type {Array.<undefined|!string>} */ + var out; + /** @type {Array.<undefined|!number>} */ + var source; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var len; + /** @type {!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {undefined|!number} */ + var c3; + out = [ ]; + source = [ ]; + for (i = 0; i < str.length; i++) { + code = str.charCodeAt(i); + source.push(code & 0x00ff, code >>> 8); + } + len = str.length * 2; + i = 0; + while (i < len) { + c1 = source[i++] & 0xff; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4)); + out.push("=="); + break; + } + c2 = source[i++]; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2)); + out.push("="); + break; + } + c3 = source[i++]; + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2 | (c3 & 0xC0) >> 6)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c3 & 0x3F)); + } + return out.join(''); +}; + +var Binary$base64encode$S = Binary.base64encode$S; + +/** + * @param {Array.<undefined|!number>} source + * @return {!string} + */ +Binary._mergeCharCode$AI = function (source) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ ]; + for (i = 0; i < source.length; i += 2) { + result.push(String.fromCharCode(source[i] + (source[i + 1] << 8))); + } + return result.join(''); +}; + +var Binary$_mergeCharCode$AI = Binary._mergeCharCode$AI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64decode$S = function (str) { + /** @type {!number} */ + var len; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var out; + /** @type {undefined|!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {!number} */ + var c3; + /** @type {!number} */ + var c4; + len = str.length; + i = 0; + out = [ ]; + while (i < len) { + do { + c1 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c1 == -1); + if (c1 == -1) { + break; + } + do { + c2 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c2 == -1); + if (c2 == -1) { + break; + } + out.push(c1 << 2 | (c2 & 0x30) >> 4); + do { + c3 = str.charCodeAt(i++) & 0xff; + if (c3 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c3 = Binary._base64DecodeChars[c3]; + } while (i < len && c3 === -1); + if (c3 === -1) { + break; + } + out.push((c2 & 0XF) << 4 | (c3 & 0x3C) >> 2); + do { + c4 = str.charCodeAt(i++) & 0xff; + if (c4 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c4 = (Binary._base64DecodeChars[c4] | 0); + } while (i < len && c4 === -1); + if (c4 === -1) { + break; + } + out.push((c3 & 0x03) << 6 | c4); + } + return Binary$_mergeCharCode$AI(out); +}; + +var Binary$base64decode$S = Binary.base64decode$S; + +/** + * class LoadedStringResult extends Object + * @constructor + */ +function LoadedStringResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringResult$SI(data, offset) { + /** @type {!number} */ + var strLength; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var offset$0; + this.result = ""; + this.offset = 0; + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (i = 0; i < strLength; i += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (i !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + this.result = bytes.join(''); + this.offset = offset; + } else { + this.result = data.slice(offset, offset + strLength); + this.offset = (offset + strLength | 0); + } +}; + +LoadedStringResult$SI.prototype = new LoadedStringResult; + +/** + * class LoadedStringListResult extends Object + * @constructor + */ +function LoadedStringListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var strLength; + /** @type {!string} */ + var resultStr; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var j; + /** @type {!number} */ + var code; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = [ ]; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (j = 0; j < strLength; j += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (j !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + resultStr = bytes.join(''); + } else { + resultStr = data.slice(offset, offset + strLength); + offset = (offset + strLength | 0); + } + this.result.push(resultStr); + } + this.offset = offset; +}; + +LoadedStringListResult$SI.prototype = new LoadedStringListResult; + +/** + * class LoadedStringListMapResult extends Object + * @constructor + */ +function LoadedStringListMapResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListMapResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {LoadedStringResult} */ + var keyResult; + /** @type {LoadedStringListResult} */ + var valueResult; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = ({ }); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + keyResult = new LoadedStringResult$SI(data, offset); + offset$0 = keyResult.offset; + valueResult = new LoadedStringListResult$SI(data, offset$0); + this.result[keyResult.result] = valueResult.result; + offset = valueResult.offset; + } + this.offset = offset; +}; + +LoadedStringListMapResult$SI.prototype = new LoadedStringListMapResult; + +/** + * class LoadedNumberListResult extends Object + * @constructor + */ +function LoadedNumberListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedNumberListResult$SI(data, offset) { + /** @type {!number} */ + var resultLength; + /** @type {!number} */ + var originalOffset; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!number} */ + var tag; + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var value1$0; + this.result = null; + this.offset = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + resultLength = result$0; + originalOffset = offset; + offset += 2; + result = [ ]; + while (result.length < resultLength) { + tag = data.charCodeAt(offset++); + if (tag >>> 15 === 1) { + value1$0 = resultLength - result.length; + length = (value1$0 <= 15 ? value1$0 : 15); + for (i = 0; i < length; i++) { + if (tag >>> i & 0x1) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } else { + result.push(0); + } + } + } else { + if (tag >>> 14 === 1) { + length = tag - 0x4000 + 1; + for (i = 0; i < length; i++) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } + } else { + length = tag + 1; + for (i = 0; i < length; i++) { + result.push(0); + } + } + } + } + this.result = result; + this.offset = offset; +}; + +LoadedNumberListResult$SI.prototype = new LoadedNumberListResult; + +/** + * class CompressionReport extends Object + * @constructor + */ +function CompressionReport() { +} + +/** + * @constructor + */ +function CompressionReport$() { + this.source = 0; + this.result = 0; +}; + +CompressionReport$.prototype = new CompressionReport; + +/** + * @param {CompressionReport} $this + * @param {!number} source + * @param {!number} result + */ +CompressionReport.add$LCompressionReport$II = function ($this, source, result) { + $this.source += source; + $this.result += result; +}; + +var CompressionReport$add$LCompressionReport$II = CompressionReport.add$LCompressionReport$II; + +/** + * @param {CompressionReport} $this + * @return {!number} + */ +CompressionReport.rate$LCompressionReport$ = function ($this) { + return (Math.round($this.result * 100.0 / $this.source) | 0); +}; + +var CompressionReport$rate$LCompressionReport$ = CompressionReport.rate$LCompressionReport$; + +/** + * class Stemmer + * @constructor + */ +function Stemmer() { +} + +Stemmer.prototype.$__jsx_implements_Stemmer = true; + +/** + * @constructor + */ +function Stemmer$() { +}; + +Stemmer$.prototype = new Stemmer; + +/** + * class js extends Object + * @constructor + */ +function js() { +} + +/** + * @constructor + */ +function js$() { +}; + +js$.prototype = new js; + +/** + * class Metadata extends Object + * @constructor + */ +function Metadata() { +} + +/** + * @constructor + * @param {Oktavia} parent + */ +function Metadata$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); +}; + +Metadata$LOktavia$.prototype = new Metadata; + +/** + * @return {!number} + */ +Metadata.prototype._size$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {!number} */ + var i$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0 = _bitVector$0 = this._bitVector; + i$0 = _bitVector$0._size; + return this$0.rank$IB(i$0, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getContent$I = function (index) { + /** @type {!number} */ + var startPosition; + /** @type {!number} */ + var length; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + length = this._bitVector.select$I(index) - startPosition + 1; + return this._parent._getSubstring$II(startPosition, length); +}; + +/** + * @param {!number} index + * @return {!number} + */ +Metadata.prototype.getStartPosition$I = function (index) { + /** @type {!number} */ + var startPosition; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + return (startPosition | 0); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Metadata.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Metadata.prototype._build$ = function () { + this._bitVector.build$(); +}; + +/** + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Metadata.prototype._load$SSI = function (name, data, offset) { + offset = this._bitVector.load$SI(data, offset); + this._parent._metadataLabels.push(name); + this._parent._metadatas[name] = this; + return offset; +}; + +/** + * @return {!string} + */ +Metadata.prototype._dump$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + contents$0.push(Binary$dump32bitNumberList$AN(this$0._v)); + return contents$0.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Metadata.prototype._dump$LCompressionReport$ = function (report) { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents$0.push(Binary$dump32bitNumberList$ANLCompressionReport$(this$0._v, report)); + return contents$0.join(''); +}; + +/** + * class Section extends Metadata + * @constructor + */ +function Section() { +} + +Section.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Section$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; +}; + +Section$LOktavia$.prototype = new Section; + +/** + * @param {!string} name + */ +Section.prototype.setTail$S = function (name) { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._names.push(name); + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!string} name + * @param {!number} index + */ +Section.prototype.setTail$SI = function (name, index) { + this._names.push(name); + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Section.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Section.prototype.getSectionIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getName$I = function (index) { + if (index < 0 || this._names.length <= index) { + throw new Error("Section.getName() : range error"); + } + return this._names[index]; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Section.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getSectionIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getInformation$I = function (index) { + return this.getName$I(index); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Section._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Section} */ + var section; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + section = new Section$LOktavia$(parent); + section._names = strs.result; + offset$0 = strs.offset; + offset$0 = section._bitVector.load$SI(data, offset$0); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset$0; +}; + +var Section$_load$LOktavia$SSI = Section._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Section.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Section.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Splitter extends Metadata + * @constructor + */ +function Splitter() { +} + +Splitter.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Splitter$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = null; +}; + +Splitter$LOktavia$.prototype = new Splitter; + +/** + * @constructor + * @param {Oktavia} parent + * @param {!string} name + */ +function Splitter$LOktavia$S(parent, name) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = name; +}; + +Splitter$LOktavia$S.prototype = new Splitter; + +/** + * @return {!number} + */ +Splitter.prototype.size$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + */ +Splitter.prototype.split$ = function () { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!number} index + */ +Splitter.prototype.split$I = function (index) { + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Splitter.prototype.getIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error"); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Splitter.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Splitter.prototype.getInformation$I = function (index) { + return (this.name != null ? this.name + (index + 1 + "") : ''); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Splitter._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {Splitter} */ + var section; + section = new Splitter$LOktavia$(parent); + offset = section._bitVector.load$SI(data, offset); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset; +}; + +var Splitter$_load$LOktavia$SSI = Splitter._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Splitter.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Splitter.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Table extends Metadata + * @constructor + */ +function Table() { +} + +Table.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + * @param {Array.<undefined|!string>} headers + */ +function Table$LOktavia$AS(parent, headers) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._headers = headers; + this._columnTails = new BitVector$(); +}; + +Table$LOktavia$AS.prototype = new Table; + +/** + * @return {!number} + */ +Table.prototype.rowSize$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + * @return {!number} + */ +Table.prototype.columnSize$ = function () { + return (this._headers.length | 0); +}; + +/** + */ +Table.prototype.setColumnTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + /** @type {Oktavia} */ + var _parent$0; + this$0 = _parent$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + _parent$0._fmindex.push$S(Oktavia.eob); + this._columnTails.set$I(index - 1); +}; + +/** + */ +Table.prototype.setRowTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {Array.<undefined|!number>} + */ +Table.prototype.getCell$I = function (position) { + /** @type {!number} */ + var row; + /** @type {!number} */ + var currentColumn; + /** @type {!number} */ + var lastRowColumn; + /** @type {!number} */ + var startPosition; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {BitVector} */ + var this$0; + /** @type {BitVector} */ + var this$1; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + row = this$0.rank$IB(position, true); + this$1 = this._columnTails; + currentColumn = this$1.rank$IB(position, true); + lastRowColumn = 0; + if (row > 0) { + startPosition = this._bitVector.select$I(row - 1) + 1; + lastRowColumn = this._columnTails.rank$I(startPosition); + } + result = [ row, currentColumn - lastRowColumn ]; + return result; +}; + +/** + * @param {!number} rowIndex + * @return {Object.<string, undefined|!string>} + */ +Table.prototype.getRowContent$I = function (rowIndex) { + /** @type {!string} */ + var content; + /** @type {Array.<undefined|!string>} */ + var values; + /** @type {Object.<string, undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + content = this.getContent$I(rowIndex); + values = content.split(Oktavia.eob, this._headers.length); + result = ({ }); + for (i in this._headers) { + if (i < values.length) { + result[this._headers[i]] = values[i]; + } else { + result[this._headers[i]] = ''; + } + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Table.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Table.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Table.prototype._build$ = function () { + this._bitVector.build$(); + this._columnTails.build$(); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Table._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Table} */ + var table; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + table = new Table$LOktavia$AS(parent, strs.result); + offset$0 = strs.offset; + offset$0 = table._bitVector.load$SI(data, offset$0); + table._parent._metadataLabels.push(name); + table._parent._metadatas[name] = table; + offset = offset$0; + return table._columnTails.load$SI(data, offset$0); +}; + +var Table$_load$LOktavia$SSI = Table._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Table.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$AS(this._headers), Metadata.prototype._dump$.call(this), this._columnTails.dump$() ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Table.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$ASLCompressionReport$(this._headers, report), Metadata.prototype._dump$LCompressionReport$.call(this, report), this._columnTails.dump$LCompressionReport$(report) ].join(''); +}; + +/** + * class Block extends Metadata + * @constructor + */ +function Block() { +} + +Block.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Block$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; + this._start = false; +}; + +Block$LOktavia$.prototype = new Block; + +/** + * @param {!string} blockName + */ +Block.prototype.startBlock$S = function (blockName) { + this.startBlock$SI(blockName, this._parent.contentSize$()); +}; + +/** + * @param {!string} blockName + * @param {!number} index + */ +Block.prototype.startBlock$SI = function (blockName, index) { + if (this._start) { + throw new Error('Splitter `' + this._names[this._names.length - 1] + '` is not closed'); + } + this._start = true; + this._names.push(blockName); + this._bitVector.set$I(index - 1); +}; + +/** + */ +Block.prototype.endBlock$ = function () { + this.endBlock$I(this._parent.contentSize$()); +}; + +/** + * @param {!number} index + */ +Block.prototype.endBlock$I = function (index) { + if (! this._start) { + throw new Error('Splitter is not started'); + } + this._start = false; + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Block.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Block.prototype.blockIndex$I = function (position) { + /** @type {!number} */ + var result; + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._parent._fmindex.size$() - 1 <= position) { + throw new Error("Block.blockIndex() : range error " + (position + "")); + } + if (position >= this._bitVector.size$()) { + position = (this._bitVector.size$() - 1 | 0); + result = (this._bitVector.rank$I(position) + 1 | 0); + } else { + this$0 = this._bitVector; + result = this$0.rank$IB(position, true); + } + return result; +}; + +/** + * @param {!number} position + * @return {!boolean} + */ +Block.prototype.inBlock$I = function (position) { + /** @type {!number} */ + var blockIndex; + blockIndex = this.blockIndex$I(position); + return blockIndex % 2 !== 0; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockContent$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this.getContent$I(blockIndex); + } else { + result = ''; + } + return result; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockName$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this._names[blockIndex >>> 1]; + } else { + result = ''; + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Block.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Block.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Block._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Block} */ + var block; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + block = new Block$LOktavia$(parent); + block._names = strs.result; + offset$0 = strs.offset; + offset$0 = block._bitVector.load$SI(data, offset$0); + block._parent._metadataLabels.push(name); + block._parent._metadatas[name] = block; + return offset$0; +}; + +var Block$_load$LOktavia$SSI = Block._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Block.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Block.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class FMIndex extends Object + * @constructor + */ +function FMIndex() { +} + +/** + * @constructor + */ +function FMIndex$() { + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + this._ssize = 0; + (this._ddic = 0, this._head = 0); + this._substr = ""; + this._sv = new WaveletMatrix$(); + this._posdic = [ ]; + this._idic = [ ]; + _rlt$0 = this._rlt = [ ]; + _rlt$0.length = 65536; +}; + +FMIndex$.prototype = new FMIndex; + +/** + */ +FMIndex.prototype.clear$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + this$0._bv.length = 0; + this$0._seps.length = 0; + this$0._size = 0; + this._posdic.length = 0; + this._idic.length = 0; + this._ddic = 0; + this._head = 0; + this._substr = ""; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.size$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + return this$0._size; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.contentSize$ = function () { + return this._substr.length; +}; + +/** + * @param {!string} key + * @return {!number} + */ +FMIndex.prototype.getRows$S = function (key) { + /** @type {Array.<undefined|!number>} */ + var pos; + pos = [ ]; + return this.getRows$SAI(key, pos); +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!number>} pos + * @return {!number} + */ +FMIndex.prototype.getRows$SAI = function (key, pos) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {!number} */ + var c; + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + i = key.length - 1; + code = key.charCodeAt(i); + first = (_rlt$0 = this._rlt)[code] + 1; + last = _rlt$0[code + 1]; + while (first <= last) { + if (i === 0) { + pos[0] = (-- first | 0); + pos[1] = -- last; + return (last - first + 1 | 0); + } + i--; + c = key.charCodeAt(i); + first = this._rlt[c] + this._sv.rank$II(first - 1, c) + 1; + last = this._rlt[c] + this._sv.rank$II(last, c); + } + return 0; +}; + +/** + * @param {!number} i + * @return {!number} + */ +FMIndex.prototype.getPosition$I = function (i) { + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + if (i >= this.size$()) { + throw new Error("FMIndex.getPosition() : range error"); + } + pos = 0; + while (i !== this._head) { + if (i % this._ddic === 0) { + pos += this._posdic[i / this._ddic] + 1; + break; + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos++; + } + return (pos % this.size$() | 0); +}; + +/** + * @param {!number} pos + * @param {!number} len + * @return {!string} + */ +FMIndex.prototype.getSubstring$II = function (pos, len) { + /** @type {!number} */ + var pos_end; + /** @type {!number} */ + var pos_tmp; + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos_idic; + /** @type {!string} */ + var substr; + /** @type {!number} */ + var c; + /** @type {!number} */ + var _ddic$0; + if (pos >= this.size$()) { + throw new Error("FMIndex.getSubstring() : range error"); + } + pos_end = Math.min(pos + len, this.size$()); + pos_tmp = this.size$() - 1; + i = this._head; + pos_idic = Math.floor((pos_end + (_ddic$0 = this._ddic) - 2) / _ddic$0); + if (pos_idic < this._idic.length) { + pos_tmp = pos_idic * this._ddic; + i = this._idic[pos_idic]; + } + substr = ""; + while (pos_tmp >= pos) { + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + if (pos_tmp < pos_end) { + substr = String.fromCharCode(c) + substr; + } + if (pos_tmp === 0) { + break; + } + pos_tmp--; + } + return substr; +}; + +/** + */ +FMIndex.prototype.build$ = function () { + this.build$SIIB(String.fromCharCode(0), 65535, 20, false); +}; + +/** + * @param {!string} end_marker + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIB = function (end_marker, ddic, verbose) { + this.build$SIIB(end_marker, 65535, ddic, verbose); +}; + +/** + * @param {!string} end_marker + * @param {!number} maxChar + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIIB = function (end_marker, maxChar, ddic, verbose) { + /** @type {BurrowsWheelerTransform} */ + var b; + /** @type {!string} */ + var s; + /** @type {!number} */ + var c; + /** @type {!string} */ + var str$0; + /** @type {WaveletMatrix} */ + var this$0; + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + if (verbose) { + console.time("building burrows-wheeler transform"); + } + this._substr += end_marker; + b = ({_str: "", _size: 0, _head: 0, _suffixarray: [ ]}); + str$0 = this._substr; + _str$0 = b._str = str$0; + b._size = _str$0.length; + _suffixarray$0 = b._suffixarray = SAIS$make$S(str$0); + b._head = (_suffixarray$0.indexOf(0) | 0); + s = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$(b); + this._ssize = s.length; + this._head = b._head; + b._str = ""; + b._size = 0; + b._head = 0; + b._suffixarray.length = 0; + this._substr = ""; + if (verbose) { + console.timeEnd("building burrows-wheeler transform"); + } + if (verbose) { + console.time("building wavelet matrix"); + } + this$0 = this._sv; + this$0._bitsize = (Math.ceil(Math.log(maxChar) / 0.6931471805599453) | 0); + if (verbose) { + console.log(" maxCharCode: ", maxChar); + console.log(" bitSize: ", this._sv.bitsize$()); + } + this._sv.build$S(s); + if (verbose) { + console.timeEnd("building wavelet matrix"); + } + if (verbose) { + console.time("caching rank less than"); + } + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + if (verbose) { + console.timeEnd("caching rank less than"); + } + this._ddic = ddic; + if (verbose) { + console.time("building dictionaries"); + } + this._buildDictionaries$(); + if (verbose) { + console.timeEnd("building dictionaries"); + console.log(''); + } +}; + +/** + */ +FMIndex.prototype._buildDictionaries$ = function () { + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + for (i = 0; i < this._ssize / this._ddic + 1; i++) { + this._posdic.push(0); + this._idic.push(0); + } + i = this._head; + pos = this.size$() - 1; + do { + if (i % this._ddic === 0) { + this._posdic[Math.floor(i / this._ddic)] = (pos | 0); + } + if (pos % this._ddic === 0) { + this._idic[Math.floor(pos / this._ddic)] = (i | 0); + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos--; + } while (i !== this._head); +}; + +/** + * @param {!string} doc + */ +FMIndex.prototype.push$S = function (doc) { + if (doc.length <= 0) { + throw new Error("FMIndex::push(): empty string"); + } + this._substr += doc; +}; + +/** + * @param {!string} keyword + * @return {Array.<undefined|!number>} + */ +FMIndex.prototype.search$S = function (keyword) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {Array.<undefined|!number>} */ + var position; + /** @type {!number} */ + var rows; + /** @type {undefined|!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {undefined|!number} */ + var i; + result = [ ]; + position = [ ]; + rows = this.getRows$SAI(keyword, position); + if (rows > 0) { + first = position[0]; + last = position[1]; + for (i = first; i <= last; i++) { + result.push(this.getPosition$I(i)); + } + } + return result; +}; + +/** + * @return {!string} + */ +FMIndex.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +FMIndex.prototype.dump$B = function (verbose) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {CompressionReport} */ + var report; + /** @type {!number} */ + var i; + contents = [ ]; + report = ({source: 0, result: 0}); + contents.push(Binary$dump32bitNumber$N(this._ddic)); + contents.push(Binary$dump32bitNumber$N(this._ssize)); + contents.push(Binary$dump32bitNumber$N(this._head)); + CompressionReport$add$LCompressionReport$II(report, 6, 6); + contents.push(this._sv.dump$LCompressionReport$(report)); + if (verbose) { + console.log("Serializing FM-index"); + console.log(' Wavelet Matrix: ' + (contents[3].length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + contents.push(Binary$dump32bitNumber$N(this._posdic.length)); + for (i in this._posdic) { + contents.push(Binary$dump32bitNumber$N(this._posdic[i])); + } + for (i in this._idic) { + contents.push(Binary$dump32bitNumber$N(this._idic[i])); + } + if (verbose) { + console.log(' Dictionary Cache: ' + (this._idic.length * 16 + "") + ' bytes'); + } + return contents.join(""); +}; + +/** + * @param {!string} data + * @return {!number} + */ +FMIndex.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +FMIndex.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var maxChar; + /** @type {!number} */ + var c; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._ddic = (result$0 | 0); + this._ssize = (Binary$load32bitNumber$SI(data, offset + 2) | 0); + this._head = (Binary$load32bitNumber$SI(data, offset + 4) | 0); + offset = this._sv.load$SI(data, offset + 6); + maxChar = Math.pow(2, this._sv.bitsize$()); + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + size = result$1; + offset += 2; + for (i = 0; i < size; (i++, offset += 2)) { + this._posdic.push(Binary$load32bitNumber$SI(data, offset)); + } + for (i = 0; i < size; (i++, offset += 2)) { + this._idic.push(Binary$load32bitNumber$SI(data, offset)); + } + return offset; +}; + +/** + * class Query extends Object + * @constructor + */ +function Query() { +} + +/** + * @constructor + */ +function Query$() { + this.word = ''; + this.or = false; + this.not = false; + this.raw = false; +}; + +Query$.prototype = new Query; + +/** + * @return {!string} + */ +Query.prototype.toString = function () { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + if (this.or) { + result.push("OR "); + } + if (this.not) { + result.push("-"); + } + if (this.raw) { + result.push('"', this.word, '"'); + } else { + result.push(this.word); + } + return result.join(''); +}; + +/** + * class Proposal extends Object + * @constructor + */ +function Proposal() { +} + +/** + * @constructor + * @param {!number} omit + * @param {!number} expect + */ +function Proposal$II(omit, expect) { + this.omit = omit; + this.expect = expect; +}; + +Proposal$II.prototype = new Proposal; + +/** + * class Position extends Object + * @constructor + */ +function Position() { +} + +/** + * @constructor + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +function Position$SIB(word, position, stemmed) { + this.word = word; + this.position = position; + this.stemmed = stemmed; +}; + +Position$SIB.prototype = new Position; + +/** + * class SearchUnit extends Object + * @constructor + */ +function SearchUnit() { +} + +/** + * @constructor + * @param {!number} id + */ +function SearchUnit$I(id) { + this.positions = ({ }); + this.id = id; + this._size = 0; + this.score = 0; + this.startPosition = -1; +}; + +SearchUnit$I.prototype = new SearchUnit; + +/** + * @param {SearchUnit} $this + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +SearchUnit.addPosition$LSearchUnit$SIB = function ($this, word, position, stemmed) { + /** @type {Position} */ + var positionObj; + positionObj = $this.positions[position + ""]; + if (! positionObj) { + $this._size++; + $this.positions[position + ""] = ({word: word, position: position, stemmed: stemmed}); + } else { + if (positionObj.word.length < word.length) { + positionObj.word = word; + } + positionObj.stemmed = positionObj.stemmed && stemmed; + } +}; + +var SearchUnit$addPosition$LSearchUnit$SIB = SearchUnit.addPosition$LSearchUnit$SIB; + +/** + * @param {SearchUnit} $this + * @param {!number} position + * @return {Position} + */ +SearchUnit.get$LSearchUnit$I = function ($this, position) { + return $this.positions[position + ""]; +}; + +var SearchUnit$get$LSearchUnit$I = SearchUnit.get$LSearchUnit$I; + +/** + * @param {SearchUnit} $this + * @return {!number} + */ +SearchUnit.size$LSearchUnit$ = function ($this) { + return $this._size; +}; + +var SearchUnit$size$LSearchUnit$ = SearchUnit.size$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @param {SearchUnit} rhs + */ +SearchUnit.merge$LSearchUnit$LSearchUnit$ = function ($this, rhs) { + /** @type {!string} */ + var position; + /** @type {Position} */ + var pos; + for (position in rhs.positions) { + pos = rhs.positions[position]; + SearchUnit$addPosition$LSearchUnit$SIB($this, pos.word, pos.position, pos.stemmed); + } +}; + +var SearchUnit$merge$LSearchUnit$LSearchUnit$ = SearchUnit.merge$LSearchUnit$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @return {Array.<undefined|Position>} + */ +SearchUnit.getPositions$LSearchUnit$ = function ($this) { + /** @type {Array.<undefined|Position>} */ + var result; + /** @type {!string} */ + var pos; + result = [ ]; + for (pos in $this.positions) { + result.push($this.positions[pos]); + } + result.sort((function (a, b) { + return a.position - b.position; + })); + return result; +}; + +var SearchUnit$getPositions$LSearchUnit$ = SearchUnit.getPositions$LSearchUnit$; + +/** + * class SingleResult extends Object + * @constructor + */ +function SingleResult() { +} + +/** + * @constructor + */ +function SingleResult$() { + this.units = [ ]; + this.unitIds = [ ]; + this.or = false; + this.not = false; + this.searchWord = ''; +}; + +SingleResult$.prototype = new SingleResult; + +/** + * @constructor + * @param {!string} searchWord + * @param {!boolean} or + * @param {!boolean} not + */ +function SingleResult$SBB(searchWord, or, not) { + this.units = [ ]; + this.unitIds = [ ]; + this.or = or; + this.not = not; + this.searchWord = searchWord; +}; + +SingleResult$SBB.prototype = new SingleResult; + +/** + * @param {SingleResult} $this + * @param {!number} unitId + * @return {SearchUnit} + */ +SingleResult.getSearchUnit$LSingleResult$I = function ($this, unitId) { + /** @type {!number} */ + var existing; + /** @type {SearchUnit} */ + var result; + existing = $this.unitIds.indexOf(unitId); + if (existing === -1) { + result = ({positions: ({ }), id: unitId, _size: 0, score: 0, startPosition: -1}); + $this.units.push(result); + $this.unitIds.push(unitId); + } else { + result = $this.units[existing]; + } + return result; +}; + +var SingleResult$getSearchUnit$LSingleResult$I = SingleResult.getSearchUnit$LSingleResult$I; + +/** + * @param {SingleResult} $this + * @param {SingleResult} rhs + * @return {SingleResult} + */ +SingleResult.merge$LSingleResult$LSingleResult$ = function ($this, rhs) { + /** @type {SingleResult} */ + var result; + result = ({units: [ ], unitIds: [ ], or: false, not: false, searchWord: ''}); + if (rhs.or) { + SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + if (rhs.not) { + SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } + } + return result; +}; + +var SingleResult$merge$LSingleResult$LSingleResult$ = SingleResult.merge$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @return {!number} + */ +SingleResult.size$LSingleResult$ = function ($this) { + return ($this.units.length | 0); +}; + +var SingleResult$size$LSingleResult$ = SingleResult.size$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) !== -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var rhsSection; + /** @type {SearchUnit} */ + var lhsSection; + /** @type {Array.<undefined|!number>} */ + var unitIds$0; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result.unitIds = (unitIds$0 = $this.unitIds).slice(0, unitIds$0.length); + result.units = (units$0 = $this.units).slice(0, units$0.length); + for (i = 0; i < rhs.unitIds.length; i++) { + id = rhs.unitIds[i]; + rhsSection = rhs.units[i]; + if (result.unitIds.indexOf(id) !== -1) { + lhsSection = result.units[result.unitIds.indexOf(id)]; + SearchUnit$merge$LSearchUnit$LSearchUnit$(lhsSection, rhsSection); + } else { + result.unitIds.push(id); + result.units.push(rhsSection); + } + } +}; + +var SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) === -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * class SearchSummary extends Object + * @constructor + */ +function SearchSummary() { +} + +/** + * @constructor + */ +function SearchSummary$() { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = null; +}; + +SearchSummary$.prototype = new SearchSummary; + +/** + * @constructor + * @param {Oktavia} oktavia + */ +function SearchSummary$LOktavia$(oktavia) { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = oktavia; +}; + +SearchSummary$LOktavia$.prototype = new SearchSummary; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.addQuery$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$addQuery$LSearchSummary$LSingleResult$ = SearchSummary.addQuery$LSearchSummary$LSingleResult$; + +/** + * @param {SearchSummary} $this + */ +SearchSummary.mergeResult$LSearchSummary$ = function ($this) { + $this.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, $this.sourceResults); +}; + +var SearchSummary$mergeResult$LSearchSummary$ = SearchSummary.mergeResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {Array.<undefined|SingleResult>} results + * @return {SingleResult} + */ +SearchSummary.mergeResult$LSearchSummary$ALSingleResult$ = function ($this, results) { + /** @type {SingleResult} */ + var rhs; + /** @type {!number} */ + var i; + /** @type {!number} */ + var results$len$0; + rhs = results[0]; + for ((i = 1, results$len$0 = results.length); i < results$len$0; i++) { + rhs = SingleResult$merge$LSingleResult$LSingleResult$(rhs, results[i]); + } + return rhs; +}; + +var SearchSummary$mergeResult$LSearchSummary$ALSingleResult$ = SearchSummary.mergeResult$LSearchSummary$ALSingleResult$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|Proposal>} + */ +SearchSummary.getProposal$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|Proposal>} */ + var proposals; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|SingleResult>} */ + var tmpSource; + /** @type {!number} */ + var j; + /** @type {SingleResult} */ + var result; + proposals = [ ]; + for (i = 0; i < $this.sourceResults.length; i++) { + tmpSource = [ ]; + for (j = 0; j < $this.sourceResults.length; j++) { + if (i !== j) { + tmpSource.push($this.sourceResults[j]); + } + } + result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, tmpSource); + proposals.push(({omit: i, expect: result.units.length})); + } + proposals.sort((function (a, b) { + return b.expect - a.expect; + })); + return proposals; +}; + +var SearchSummary$getProposal$LSearchSummary$ = SearchSummary.getProposal$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|SearchUnit>} + */ +SearchSummary.getSortedResult$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|SearchUnit>} */ + var result; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result = (units$0 = $this.result.units).slice(0, units$0.length); + result.sort((function (a, b) { + return b.score - a.score; + })); + return result; +}; + +var SearchSummary$getSortedResult$LSearchSummary$ = SearchSummary.getSortedResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {!number} + */ +SearchSummary.size$LSearchSummary$ = function ($this) { + /** @type {SingleResult} */ + var this$0; + this$0 = $this.result; + return (this$0.units.length | 0); +}; + +var SearchSummary$size$LSearchSummary$ = SearchSummary.size$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.add$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$add$LSearchSummary$LSingleResult$ = SearchSummary.add$LSearchSummary$LSingleResult$; + +/** + * class Tag extends Object + * @constructor + */ +function Tag() { +} + +/** + * @constructor + * @param {!string} name + */ +function Tag$S(name) { + this.name = name; + this.attributes = ({ }); + this.isSelfClosing = false; +}; + +Tag$S.prototype = new Tag; + +/** + * class _Common extends Object + * @constructor + */ +function _Common() { +} + +/** + * @constructor + */ +function _Common$() { +}; + +_Common$.prototype = new _Common; + +/** + * class _State extends Object + * @constructor + */ +function _State() { +} + +/** + * @constructor + */ +function _State$() { +}; + +_State$.prototype = new _State; + +/** + * class SAXHandler extends Object + * @constructor + */ +function SAXHandler() { +} + +/** + * @constructor + */ +function SAXHandler$() { + this.position = 0; + this.column = 0; + this.line = 0; +}; + +SAXHandler$.prototype = new SAXHandler; + +/** + * @param {Error} error + */ +SAXHandler.prototype.onerror$LError$ = function (error) { +}; + +/** + * @param {!string} text + */ +SAXHandler.prototype.ontext$S = function (text) { +}; + +/** + * @param {!string} doctype + */ +SAXHandler.prototype.ondoctype$S = function (doctype) { +}; + +/** + * @param {!string} name + * @param {!string} body + */ +SAXHandler.prototype.onprocessinginstruction$SS = function (name, body) { +}; + +/** + * @param {!string} sgmlDecl + */ +SAXHandler.prototype.onsgmldeclaration$S = function (sgmlDecl) { +}; + +/** + * @param {!string} tagname + * @param {Object.<string, undefined|!string>} attributes + */ +SAXHandler.prototype.onopentag$SHS = function (tagname, attributes) { +}; + +/** + * @param {!string} tagname + */ +SAXHandler.prototype.onclosetag$S = function (tagname) { +}; + +/** + * @param {!string} name + * @param {!string} value + */ +SAXHandler.prototype.onattribute$SS = function (name, value) { +}; + +/** + * @param {!string} comment + */ +SAXHandler.prototype.oncomment$S = function (comment) { +}; + +/** + */ +SAXHandler.prototype.onopencdata$ = function () { +}; + +/** + * @param {!string} cdata + */ +SAXHandler.prototype.oncdata$S = function (cdata) { +}; + +/** + */ +SAXHandler.prototype.onclosecdata$ = function () { +}; + +/** + */ +SAXHandler.prototype.onend$ = function () { +}; + +/** + */ +SAXHandler.prototype.onready$ = function () { +}; + +/** + * @param {!string} script + */ +SAXHandler.prototype.onscript$S = function (script) { +}; + +/** + * class _HTMLHandler extends SAXHandler + * @constructor + */ +function _HTMLHandler() { +} + +_HTMLHandler.prototype = new SAXHandler; +/** + * @constructor + * @param {Oktavia} oktavia + * @param {!string} filepath + * @param {!number} unit + * @param {TagFilter} filter + */ +function _HTMLHandler$LOktavia$SILTagFilter$(oktavia, filepath, unit, filter) { + /** @type {Oktavia} */ + var oktavia$0; + this.position = 0; + this.column = 0; + this.line = 0; + this.startTag = ""; + this.currentLink = ""; + this.sectionCount = 0; + this.inCode = false; + this.startParse = false; + this.stack = [ ]; + oktavia$0 = this.oktavia = oktavia; + this.section = oktavia$0.getSection$S('section'); + this.tag = this.oktavia.getBlock$S('tag'); + this.unit = unit; + this.filter = filter; + this.filepath = filepath; + this.currentTitle = ''; + this.lastId = ''; + this.waitTitle = false; + this.addText = false; +}; + +_HTMLHandler$LOktavia$SILTagFilter$.prototype = new _HTMLHandler; + +/** + */ +_HTMLHandler.prototype.onready$ = function () { + this.currentLink = this.filepath; + this.inCode = false; +}; + +/** + * @param {!string} tagname + * @param {Object.<string, undefined|!string>} attributes + */ +_HTMLHandler.prototype.onopentag$SHS = function (tagname, attributes) { + /** @type {Array.<undefined|!string>} */ + var headingId; + /** @type {Section} */ + var this$0; + /** @type {!string} */ + var name$0; + /** @type {!number} */ + var index$0$0; + /** @type {Oktavia} */ + var this$0$0; + /** @type {FMIndex} */ + var this$0$0$0; + /** @type {Oktavia} */ + var this$1; + /** @type {Block} */ + var this$2; + /** @type {Block} */ + var this$3; + /** @type {Oktavia} */ + var this$4; + /** @type {Oktavia} */ + var this$5; + headingId = [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ]; + if (this.startParse) { + this.stack.push(tagname); + if ('id' in attributes) { + this.lastId = attributes.id; + } + switch (tagname) { + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + if (headingId.indexOf(tagname) < this.unit) { + if (this.oktavia.contentSize$() > 0) { + this$0 = this.section; + name$0 = this.currentTitle + Oktavia.eob + this.currentLink; + this$0$0 = this$0._parent; + this$0$0$0 = this$0$0._fmindex; + index$0$0 = this$0$0$0._substr.length; + this$0._names.push(name$0); + this$0._bitVector.set$I(index$0$0 - 1); + } + this.currentLink = this.filepath + '#' + this.lastId; + this.currentTitle = ''; + this.waitTitle = true; + } + this$1 = this.oktavia; + this$1._fmindex.push$S(Oktavia.eob); + this$2 = this.tag; + this$2.startBlock$SI(tagname, this$2._parent.contentSize$()); + break; + case 'pre': + this$3 = this.tag; + this$3.startBlock$SI('pre', this$3._parent.contentSize$()); + this$4 = this.oktavia; + this$4._fmindex.push$S(Oktavia.eob); + this.inCode = true; + break; + case 'p': + case 'div': + case 'blockquote': + this$5 = this.oktavia; + this$5._fmindex.push$S(Oktavia.eob); + break; + } + } else { + if (this.filter.match$SHS(tagname, attributes)) { + this.startParse = true; + this.startTag = tagname; + this.stack.push(tagname); + } + } + if (tagname === 'title') { + this.waitTitle = true; + this.currentTitle = ''; + } +}; + +/** + * @param {!string} tagname + */ +_HTMLHandler.prototype.onclosetag$S = function (tagname) { + /** @type {Block} */ + var this$0; + /** @type {Block} */ + var this$1; + if (this.startParse) { + switch (tagname) { + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + this$0 = this.tag; + this$0.endBlock$I(this$0._parent.contentSize$()); + if (this.addText) { + this.oktavia.addWord$S('\n'); + this.addText = false; + } + this.waitTitle = false; + break; + case 'pre': + this.inCode = false; + this$1 = this.tag; + this$1.endBlock$I(this$1._parent.contentSize$()); + if (this.addText) { + this.oktavia.addWord$S('\n'); + this.addText = false; + } + break; + case 'div': + case 'p': + case 'blockquote': + if (this.addText) { + this.oktavia.addWord$S('\n'); + this.addText = false; + } + break; + } + if (this.stack.length === 0) { + this.startParse = false; + } + } + if (tagname === 'title') { + this.waitTitle = false; + } +}; + +/** + * @param {!string} text + */ +_HTMLHandler.prototype.ontext$S = function (text) { + if (this.startParse) { + this.oktavia.addWord$SB(text, ! this.inCode); + this.addText = true; + } + if (this.waitTitle) { + this.currentTitle += text; + } +}; + +/** + */ +_HTMLHandler.prototype.onend$ = function () { + /** @type {Section} */ + var this$0; + /** @type {!string} */ + var name$0; + /** @type {!number} */ + var index$0$0; + /** @type {Oktavia} */ + var this$0$0; + /** @type {FMIndex} */ + var this$0$0$0; + this$0 = this.section; + name$0 = this.currentTitle + Oktavia.eob + this.currentLink; + this$0$0 = this$0._parent; + this$0$0$0 = this$0$0._fmindex; + index$0$0 = this$0$0$0._substr.length; + this$0._names.push(name$0); + this$0._bitVector.set$I(index$0$0 - 1); +}; + +/** + * class SAXParser extends Object + * @constructor + */ +function SAXParser() { +} + +/** + * @constructor + * @param {SAXHandler} handler + */ +function SAXParser$LSAXHandler$(handler) { + this.q = ""; + this.c = ""; + this.bufferCheckPosition = 0; + this.looseCase = ""; + this.tags = [ ]; + this.closed = false; + this.closedRoot = false; + this.sawRoot = false; + this.tag = null; + this.error = null; + this.handler = null; + this.ENTITIES = null; + this.strict = false; + this.tagName = ""; + this.state = 0; + this.line = 0; + this.column = 0; + this.position = 0; + this.startTagPosition = 0; + this.attribName = ""; + this.attribValue = ""; + this.script = ""; + this.textNode = ""; + this.attribList = null; + this.noscript = false; + this.cdata = ""; + this.procInstBody = ""; + this.procInstName = ""; + this.doctype = ""; + this.entity = ""; + this.sgmlDecl = ""; + this.comment = ""; + this.preTags = 0; + this._init$LSAXHandler$B(handler, false); +}; + +SAXParser$LSAXHandler$.prototype = new SAXParser; + +/** + * @constructor + * @param {SAXHandler} handler + * @param {!boolean} strict + */ +function SAXParser$LSAXHandler$B(handler, strict) { + this.q = ""; + this.c = ""; + this.bufferCheckPosition = 0; + this.looseCase = ""; + this.tags = [ ]; + this.closed = false; + this.closedRoot = false; + this.sawRoot = false; + this.tag = null; + this.error = null; + this.handler = null; + this.ENTITIES = null; + this.strict = false; + this.tagName = ""; + this.state = 0; + this.line = 0; + this.column = 0; + this.position = 0; + this.startTagPosition = 0; + this.attribName = ""; + this.attribValue = ""; + this.script = ""; + this.textNode = ""; + this.attribList = null; + this.noscript = false; + this.cdata = ""; + this.procInstBody = ""; + this.procInstName = ""; + this.doctype = ""; + this.entity = ""; + this.sgmlDecl = ""; + this.comment = ""; + this.preTags = 0; + this._init$LSAXHandler$B(handler, strict); +}; + +SAXParser$LSAXHandler$B.prototype = new SAXParser; + +/** + * @param {SAXHandler} handler + * @param {!boolean} strict + */ +SAXParser.prototype._init$LSAXHandler$B = function (handler, strict) { + this.handler = handler; + this.clearBuffers$(); + this.q = ""; + this.bufferCheckPosition = 65536; + this.looseCase = 'toLowerCase'; + this.tags = [ ]; + this.closed = this.closedRoot = this.sawRoot = false; + this.tag = null; + this.error = null; + this.strict = strict; + this.noscript = strict; + this.state = 1; + this.ENTITIES = _Entities$entity_list$(); + this.attribList = [ ]; + this.noscript = false; + this.preTags = 0; + this.handler.onready$(); +}; + +/** + * @param {!boolean} flag + */ +SAXParser.prototype.set_noscript$B = function (flag) { + this.noscript = flag; +}; + +/** + * @return {SAXParser} + */ +SAXParser.prototype.resume$ = function () { + this.error = null; + return this; +}; + +/** + * @return {SAXParser} + */ +SAXParser.prototype.close$ = function () { + return this.parse$S(''); +}; + +/** + * @param {!string} chunk + * @return {SAXParser} + */ +SAXParser.prototype.parse$S = function (chunk) { + /** @type {Char} */ + var _; + /** @type {!number} */ + var i; + /** @type {!string} */ + var c; + /** @type {!number} */ + var starti; + /** @type {!number} */ + var pad; + /** @type {!number} */ + var returnState; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$0; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$1; + /** @type {RegExp} */ + var charclass$2; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$3; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$4; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$5; + /** @type {!string} */ + var text$0; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$6; + /** @type {RegExp} */ + var charclass$7; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$8; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$9; + /** @type {RegExp} */ + var charclass$10; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$11; + /** @type {RegExp} */ + var charclass$12; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$13; + /** @type {RegExp} */ + var charclass$14; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$15; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$16; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$17; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$18; + /** @type {RegExp} */ + var charclass$19; + /** @type {RegExp} */ + var charclass$20; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$21; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$22; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$23; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$24; + /** @type {!string} */ + var comment$0; + _ = new Char$(); + if (this.error) { + throw this.error; + } + if (this.closed) { + return this.emiterror$S("Cannot write after close. Assign an onready handler."); + } + (i = 0, c = ""); + while (this.c = c = chunk.charAt(i++)) { + this.position++; + if (c === "\n") { + this.handler.line++; + this.handler.column = 0; + } else { + this.handler.column++; + } + switch (this.state) { + case 1: + if (c === "<") { + this.state = 4; + this.startTagPosition = this.position; + } else { + charclass$0 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$0, c)) { + this.strictFail$S("Non-whitespace before first tag."); + this.textNode = c; + this.state = 2; + } + } + continue; + case 2: + if (this.sawRoot && ! this.closedRoot) { + starti = i - 1; + while (c && c !== "<" && c !== "&") { + c = chunk.charAt(i++); + if (c) { + this.position++; + if (c === "\n") { + this.handler.line++; + this.handler.column = 0; + } else { + this.handler.column++; + } + } + } + this.textNode += chunk.substring(starti, i - 1); + } + if (c === "<") { + this.state = 4; + this.startTagPosition = this.position; + } else { + if (_.not$HBS(_.whitespace, c) && (! this.sawRoot || this.closedRoot)) { + this.strictFail$S("Text data outside of root node."); + } + if (c === "&") { + this.state = 3; + } else { + this.textNode += c; + } + } + continue; + case 33: + if (c === "<") { + this.state = 34; + } else { + this.script += c; + } + continue; + case 34: + if (c === "/") { + this.state = 31; + } else { + this.script += "<" + c; + this.state = 33; + } + continue; + case 4: + if (c === "!") { + this.state = 5; + this.sgmlDecl = ""; + } else { + charclass$1 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$1, c)) { + } else { + charclass$2 = _.nameStart; + if (charclass$2.test(c)) { + this.state = 21; + this.tagName = c; + } else { + if (c === "/") { + this.state = 31; + this.tagName = ""; + } else { + if (c === "?") { + this.state = 18; + this.procInstName = this.procInstBody = ""; + } else { + this.strictFail$S("Unencoded <"); + if (this.startTagPosition + 1 < this.position) { + pad = this.position - this.startTagPosition; + for (i = 0; i < pad; i++) { + c = " " + c; + } + } + this.textNode += "<" + c; + this.state = 2; + } + } + } + } + } + continue; + case 5: + if ((this.sgmlDecl + c).toUpperCase() === _.CDATA) { + this.closetext_if_exist$(); + this.state = 15; + this.sgmlDecl = ""; + this.cdata = ""; + } else { + if (this.sgmlDecl + c === "--") { + this.state = 12; + this.comment = ""; + this.sgmlDecl = ""; + } else { + if ((this.sgmlDecl + c).toUpperCase() === _.DOCTYPE) { + this.state = 7; + if (this.doctype || this.sawRoot) { + this.strictFail$S("Inappropriately located doctype declaration"); + } + this.doctype = ""; + this.sgmlDecl = ""; + } else { + if (c === ">") { + this.closetext_if_exist$(); + this.sgmlDecl = ""; + this.state = 2; + } else { + charclass$3 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$3, c)) { + this.state = 6; + this.sgmlDecl += c; + } else { + this.sgmlDecl += c; + } + } + } + } + } + continue; + case 6: + if (c === this.q) { + this.state = 5; + this.q = ""; + } + this.sgmlDecl += c; + continue; + case 7: + if (c === ">") { + this.state = 2; + this.closetext_if_exist$(); + this.doctype.trim(); + } else { + this.doctype += c; + if (c === "[") { + this.state = 9; + } else { + charclass$4 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$4, c)) { + this.state = 8; + this.q = c; + } + } + } + continue; + case 8: + this.doctype += c; + if (c === this.q) { + this.q = ""; + this.state = 7; + } + continue; + case 9: + this.doctype += c; + if (c === "]") { + this.state = 7; + } else { + charclass$5 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$5, c)) { + this.state = 10; + this.q = c; + } + } + continue; + case 10: + this.doctype += c; + if (c === this.q) { + this.state = 9; + this.q = ""; + } + continue; + case 12: + if (c === "-") { + this.state = 13; + } else { + this.comment += c; + } + continue; + case 13: + if (c === "-") { + this.state = 14; + text$0 = this.comment; + text$0 = text$0.replace(/[\n\t]/g, ' '); + text$0 = text$0.replace(/\s\s+/g, " "); + comment$0 = this.comment = text$0; + if (comment$0) { + this.closetext_if_exist$(); + this.comment.trim(); + } + this.comment = ""; + } else { + this.comment += "-" + c; + this.state = 12; + } + continue; + case 14: + if (c !== ">") { + this.strictFail$S("Malformed comment"); + this.comment += "--" + c; + this.state = 12; + } else { + this.state = 2; + } + continue; + case 15: + if (c === "]") { + this.state = 16; + } else { + this.cdata += c; + } + continue; + case 16: + if (c === "]") { + this.state = 17; + } else { + this.cdata += "]" + c; + this.state = 15; + } + continue; + case 17: + if (c === ">") { + if (this.cdata) { + this.closetext_if_exist$(); + } + this.cdata = ""; + this.state = 2; + } else { + if (c === "]") { + this.cdata += "]"; + } else { + this.cdata += "]]" + c; + this.state = 15; + } + } + continue; + case 18: + if (c === "?") { + this.state = 20; + } else { + charclass$6 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$6, c)) { + this.state = 19; + } else { + this.procInstName += c; + } + } + continue; + case 19: + if (! this.procInstBody && _.is$HBS(_.whitespace, c)) { + continue; + } else { + if (c === "?") { + this.state = 20; + } else { + this.procInstBody += c; + } + } + continue; + case 20: + if (c === ">") { + this.closetext_if_exist$(); + this.procInstName = this.procInstBody = ""; + this.state = 2; + } else { + this.procInstBody += "?" + c; + this.state = 19; + } + continue; + case 21: + charclass$7 = _.nameBody; + if (charclass$7.test(c)) { + this.tagName += c; + } else { + this.newTag$(); + if (c === ">") { + this.openTag$B(false); + } else { + if (c === "/") { + this.state = 22; + } else { + charclass$8 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$8, c)) { + this.strictFail$S("Invalid character in tag name"); + } + this.state = 23; + } + } + } + continue; + case 22: + if (c === ">") { + this.openTag$B(true); + this.closeTag$(); + } else { + this.strictFail$S("Forward-slash in opening tag not followed by >"); + this.state = 23; + } + continue; + case 23: + charclass$9 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$9, c)) { + continue; + } else { + if (c === ">") { + this.openTag$B(false); + } else { + if (c === "/") { + this.state = 22; + } else { + charclass$10 = _.nameStart; + if (charclass$10.test(c)) { + this.attribName = c; + this.attribValue = ""; + this.state = 24; + } else { + this.strictFail$S("Invalid attribute name"); + } + } + } + } + continue; + case 24: + if (c === "=") { + this.state = 26; + } else { + if (c === ">") { + this.strictFail$S("Attribute without value"); + this.attribValue = this.attribName; + this.attrib$(); + this.openTag$B(false); + } else { + charclass$11 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$11, c)) { + this.state = 25; + } else { + charclass$12 = _.nameBody; + if (charclass$12.test(c)) { + this.attribName += c; + } else { + this.strictFail$S("Invalid attribute name"); + } + } + } + } + continue; + case 25: + if (c === "=") { + this.state = 26; + } else { + charclass$13 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$13, c)) { + continue; + } else { + this.strictFail$S("Attribute without value"); + this.tag.attributes[this.attribName] = ""; + this.attribValue = ""; + this.closetext_if_exist$(); + this.attribName = ""; + if (c === ">") { + this.openTag$B(false); + } else { + charclass$14 = _.nameStart; + if (charclass$14.test(c)) { + this.attribName = c; + this.state = 24; + } else { + this.strictFail$S("Invalid attribute name"); + this.state = 23; + } + } + } + } + continue; + case 26: + charclass$15 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$15, c)) { + continue; + } else { + charclass$16 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$16, c)) { + this.q = c; + this.state = 27; + } else { + this.strictFail$S("Unquoted attribute value"); + this.state = 28; + this.attribValue = c; + } + } + continue; + case 27: + if (c !== this.q) { + if (c === "&") { + this.state = 29; + } else { + this.attribValue += c; + } + continue; + } + this.attrib$(); + this.q = ""; + this.state = 23; + continue; + case 28: + charclass$17 = _.attribEnd; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$17, c)) { + if (c === "&") { + this.state = 30; + } else { + this.attribValue += c; + } + continue; + } + this.attrib$(); + if (c === ">") { + this.openTag$B(false); + } else { + this.state = 23; + } + continue; + case 31: + if (! this.tagName) { + charclass$18 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$18, c)) { + continue; + } else { + charclass$19 = _.nameStart; + if (! charclass$19.test(c)) { + if (this.script) { + this.script += "</" + c; + this.state = 33; + } else { + this.strictFail$S("Invalid tagname in closing tag."); + } + } else { + this.tagName = c; + } + } + } else { + if (c === ">") { + this.closeTag$(); + } else { + charclass$20 = _.nameBody; + if (charclass$20.test(c)) { + this.tagName += c; + } else { + if (this.script) { + this.script += "</" + this.tagName; + this.tagName = ""; + this.state = 33; + } else { + charclass$21 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$21, c)) { + this.strictFail$S("Invalid tagname in closing tag"); + } + this.state = 32; + } + } + } + } + continue; + case 32: + charclass$22 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$22, c)) { + continue; + } + if (c === ">") { + this.closeTag$(); + } else { + this.strictFail$S("Invalid characters in closing tag"); + } + continue; + case 3: + if (c === ";") { + this.textNode += this.parseEntity$(); + this.entity = ""; + this.state = 2; + } else { + charclass$23 = _.entity; + if ($__jsx_ObjectHasOwnProperty.call(charclass$23, c)) { + this.entity += c; + } else { + this.strictFail$S("Invalid character entity"); + this.textNode += "&" + this.entity + c; + this.entity = ""; + this.state = 2; + } + } + continue; + case 29: + case 30: + if (this.state === 29) { + returnState = 27; + } else { + returnState = 28; + } + if (c === ";") { + this.attribValue += this.parseEntity$(); + this.entity = ""; + this.state = (returnState | 0); + } else { + charclass$24 = _.entity; + if ($__jsx_ObjectHasOwnProperty.call(charclass$24, c)) { + this.entity += c; + } else { + this.strictFail$S("Invalid character entity"); + this.attribValue += "&" + this.entity + c; + this.entity = ""; + this.state = (returnState | 0); + } + } + continue; + default: + throw new Error("Unknown state: " + (this.state + "")); + } + } + this.end$(); + return this; +}; + +/** + */ +SAXParser.prototype.clearBuffers$ = function () { + this.comment = ''; + this.sgmlDecl = ''; + this.textNode = ''; + this.tagName = ''; + this.doctype = ''; + this.procInstName = ''; + this.procInstBody = ''; + this.entity = ''; + this.attribName = ''; + this.attribValue = ''; + this.cdata = ''; + this.script = ''; +}; + +/** + */ +SAXParser.prototype.closetext_if_exist$ = function () { + if (this.textNode !== '') { + this.closetext$(); + } +}; + +/** + */ +SAXParser.prototype.closetext$ = function () { + /** @type {!string} */ + var text; + /** @type {!string} */ + var text$0; + if (this.preTags === 0) { + text$0 = this.textNode; + text$0 = text$0.replace(/[\n\t]/g, ' '); + text$0 = text$0.replace(/\s\s+/g, " "); + text = text$0; + if (text$0) { + this.handler.ontext$S(text); + } + } else { + if (this.textNode) { + this.handler.ontext$S(this.textNode); + } + } + this.textNode = ""; +}; + +/** + * @param {!string} text + * @return {!string} + */ +SAXParser.prototype.textopts$S = function (text) { + text = text.replace(/[\n\t]/g, ' '); + text = text.replace(/\s\s+/g, " "); + return text; +}; + +/** + * @param {!string} er + * @return {SAXParser} + */ +SAXParser.prototype.emiterror$S = function (er) { + /** @type {Error} */ + var error; + this.closetext$(); + er += "\nLine: " + (this.line + "") + "\nColumn: " + (this.column + "") + "\nChar: " + this.c; + error = new Error(er); + this.error = error; + return this; +}; + +/** + */ +SAXParser.prototype.end$ = function () { + if (! this.closedRoot) { + this.strictFail$S("Unclosed root tag"); + } + if (this.state !== 2) { + this.emiterror$S("Unexpected end"); + } + this.closetext$(); + this.c = ""; + this.closed = true; + this.handler.onend$(); +}; + +/** + * @param {!string} message + */ +SAXParser.prototype.strictFail$S = function (message) { + if (this.strict) { + this.emiterror$S(message); + } +}; + +/** + */ +SAXParser.prototype.newTag$ = function () { + if (! this.strict) { + this.tagName = this.tagName.toLowerCase(); + } + this.tag = ({name: this.tagName, attributes: ({ }), isSelfClosing: false}); + this.attribList.length = 0; +}; + +/** + */ +SAXParser.prototype.attrib$ = function () { + if (! this.strict) { + this.attribName = this.attribName.toLowerCase(); + } + if ($__jsx_ObjectHasOwnProperty.call(this.tag.attributes, this.attribName)) { + this.attribName = this.attribValue = ""; + return; + } + this.tag.attributes[this.attribName] = this.attribValue; + this.closetext_if_exist$(); + this.attribName = this.attribValue = ""; +}; + +/** + */ +SAXParser.prototype.openTag$ = function () { + this.openTag$B(false); +}; + +/** + * @param {!boolean} selfClosing + */ +SAXParser.prototype.openTag$B = function (selfClosing) { + /** @type {Tag} */ + var tag$0; + /** @type {Tag} */ + var tag$1; + (tag$0 = this.tag).isSelfClosing = selfClosing; + this.sawRoot = true; + this.tags.push(tag$0); + this.closetext_if_exist$(); + this.handler.onopentag$SHS((tag$1 = this.tag).name, tag$1.attributes); + if (this.tag.name === 'pre') { + this.preTags++; + } + if (! selfClosing) { + if (! this.noscript && this.tagName.toLowerCase() === "script") { + this.state = 33; + } else { + this.state = 2; + } + this.tag = null; + this.tagName = ""; + } + this.attribName = this.attribValue = ""; + this.attribList.length = 0; +}; + +/** + */ +SAXParser.prototype.closeTag$ = function () { + /** @type {!number} */ + var t; + /** @type {!string} */ + var tagName; + /** @type {!string} */ + var closeTo; + /** @type {Tag} */ + var close; + /** @type {!number} */ + var s; + /** @type {Tag} */ + var tag$0; + if (! this.tagName) { + this.strictFail$S("Weird empty close tag."); + this.textNode += "</>"; + this.state = 2; + return; + } + if (this.script) { + if (this.tagName !== "script") { + this.script += "</" + this.tagName + ">"; + this.tagName = ""; + this.state = 33; + return; + } + this.closetext_if_exist$(); + this.script = ""; + } + t = this.tags.length; + tagName = this.tagName; + if (! this.strict) { + tagName = tagName.toLowerCase(); + } + closeTo = tagName; + while (t--) { + close = this.tags[t]; + if (close.name !== closeTo) { + this.strictFail$S("Unexpected close tag"); + } else { + break; + } + } + if (t < 0) { + this.strictFail$S("Unmatched closing tag: " + this.tagName); + this.textNode += "</" + this.tagName + ">"; + this.state = 2; + return; + } + this.tagName = tagName; + s = this.tags.length; + while (s-- > t) { + tag$0 = this.tag = this.tags.pop(); + this.tagName = tag$0.name; + this.closetext_if_exist$(); + this.handler.onclosetag$S(this.tagName); + if (this.tagName === 'pre') { + this.preTags--; + } + } + if (t === 0) { + this.closedRoot = true; + } + this.tagName = this.attribValue = this.attribName = ""; + this.attribList.length = 0; + this.state = 2; +}; + +/** + * @return {!string} + */ +SAXParser.prototype.parseEntity$ = function () { + /** @type {!string} */ + var entity; + /** @type {!string} */ + var entityLC; + /** @type {!number} */ + var num; + /** @type {!string} */ + var numStr; + entity = this.entity; + entityLC = entity.toLowerCase(); + num = 0; + numStr = ""; + if (this.ENTITIES[entity]) { + return this.ENTITIES[entity]; + } + if (this.ENTITIES[entityLC]) { + return this.ENTITIES[entityLC]; + } + entity = entityLC; + if (entityLC.charAt(0) === "#") { + if (entity.charAt(1) === "x") { + entity = entity.slice(2); + num = $__jsx_parseInt(entity, 16); + numStr = num.toString(16); + } else { + entity = entity.slice(1); + num = $__jsx_parseInt(entity, 10); + numStr = num.toString(10); + } + } + entity = entity.replace(/^0+/, ""); + if (numStr.toLowerCase() !== entity) { + this.strictFail$S("Invalid character entity"); + return "&" + this.entity + ";"; + } + return String.fromCharCode(num); +}; + +/** + * class Char extends Object + * @constructor + */ +function Char() { +} + +/** + * @constructor + */ +function Char$() { + this.CDATA = "[CDATA["; + this.DOCTYPE = "DOCTYPE"; + this.XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; + this.whitespace = this._charClass$S("\r\n\t "); + this.number = this._charClass$S("0124356789"); + this.letter = this._charClass$S("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); + this.quote = this._charClass$S("'\""); + this.entity = this._charClass$S("0124356789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#"); + this.attribEnd = this._charClass$S("\r\n\t >"); + this.nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/; + this.nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/; +}; + +Char$.prototype = new Char; + +/** + * @param {!string} str + * @return {Object.<string, undefined|!boolean>} + */ +Char.prototype._charClass$S = function (str) { + /** @type {Object.<string, undefined|!boolean>} */ + var result; + /** @type {!number} */ + var i; + result = ({ }); + for (i = 0; i < str.length; i++) { + result[str.slice(i, i + 1)] = true; + } + return result; +}; + +/** + * @param {RegExp} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.is$LRegExp$S = function (charclass, c) { + return charclass.test(c); +}; + +/** + * @param {Object.<string, undefined|!boolean>} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.is$HBS = function (charclass, c) { + return $__jsx_ObjectHasOwnProperty.call(charclass, c); +}; + +/** + * @param {RegExp} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.not$LRegExp$S = function (charclass, c) { + return ! charclass.test(c); +}; + +/** + * @param {Object.<string, undefined|!boolean>} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.not$HBS = function (charclass, c) { + return ! $__jsx_ObjectHasOwnProperty.call(charclass, c); +}; + +/** + * class _Entities extends Object + * @constructor + */ +function _Entities() { +} + +/** + * @constructor + */ +function _Entities$() { +}; + +_Entities$.prototype = new _Entities; + +/** + * @return {Object.<string, undefined|!string>} + */ +_Entities.entity_list$ = function () { + /** @type {Object.<string, undefined|!string>} */ + var result; + /** @type {!string} */ + var key; + /** @type {*} */ + var value; + result = ({ }); + for (key in _Entities._entities) { + value = _Entities._entities[key]; + if (typeof value === 'string') { + result[key] = value + ""; + } else { + if (typeof value === 'number') { + result[key] = String.fromCharCode(value | 0); + } + } + } + return result; +}; + +var _Entities$entity_list$ = _Entities.entity_list$; + +/** + * class BaseStemmer extends Object + * @constructor + */ +function BaseStemmer() { +} + +$__jsx_merge_interface(BaseStemmer, Stemmer); + +/** + * @constructor + */ +function BaseStemmer$() { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +BaseStemmer$.prototype = new BaseStemmer; + +/** + * @param {!string} value + */ +BaseStemmer.prototype.setCurrent$S = function (value) { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +/** + * @return {!string} + */ +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + +/** + * @param {BaseStemmer} other + */ +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + this.cursor++; + return true; + } + return false; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + this.cursor--; + return true; + } + return false; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.limit - this.cursor < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, cursor$0 + s_size) !== s) { + return false; + } + this.cursor += s_size; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.cursor - this.limit_backward < s_size) { + return false; + } + if (this.current.slice((cursor$0 = this.cursor) - s_size, cursor$0) !== s) { + return false; + } + this.cursor -= s_size; + return true; +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v$S = function (s) { + return this.eq_s$IS(s.length, s); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v_b$S = function (s) { + return this.eq_s_b$IS(s.length, s); +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var l; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var lb; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + * @return {!number} + */ +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += (adjustment | 0); + if (this.cursor >= c_ket) { + this.cursor += (adjustment | 0); + } else { + if (this.cursor > c_bra) { + this.cursor = c_bra; + } + } + return (adjustment | 0); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_check$ = function () { + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.slice_from$S = function (s) { + /** @type {!boolean} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + this.replace_s$IIS(this.bra, this.ket, s); + result = true; + } + return result; +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_del$ = function () { + return this.slice_from$S(""); +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + */ +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = this.replace_s$IIS(c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra += (adjustment | 0); + } + if (c_bra <= this.ket) { + this.ket += (adjustment | 0); + } +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.slice_to$S = function (s) { + /** @type {!string} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.stem$ = function () { + return false; +}; + +/** + * @param {!string} word + * @return {!string} + */ +BaseStemmer.prototype.stemWord$S = function (word) { + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +/** + * @param {Array.<undefined|!string>} words + * @return {Array.<undefined|!string>} + */ +BaseStemmer.prototype.stemWords$AS = function (words) { + /** @type {Array.<undefined|!string>} */ + var results; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +/** + * class TurkishStemmer extends BaseStemmer + * @constructor + */ +function TurkishStemmer() { +} + +TurkishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function TurkishStemmer$() { + BaseStemmer$.call(this); + this.B_continue_stemming_noun_suffixes = false; + this.I_strlen = 0; +}; + +TurkishStemmer$.prototype = new TurkishStemmer; + +/** + * @param {TurkishStemmer} other + */ +TurkishStemmer.prototype.copy_from$LTurkishStemmer$ = function (other) { + this.B_continue_stemming_noun_suffixes = other.B_continue_stemming_noun_suffixes; + this.I_strlen = other.I_strlen; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_check_vowel_harmony$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab25; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; +golab0: + while (true) { + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_2; + break golab0; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + } + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "a")) { + break lab3; + } + golab4: + while (true) { + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel1, 97, 305)) { + break lab5; + } + this.cursor = this.limit - v_4; + break golab4; + } + cursor$1 = this.cursor = this.limit - v_4; + if (cursor$1 <= this.limit_backward) { + break lab3; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab6; + } + golab7: + while (true) { + v_5 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel2, 101, 252)) { + break lab8; + } + this.cursor = this.limit - v_5; + break golab7; + } + cursor$2 = this.cursor = this.limit - v_5; + if (cursor$2 <= this.limit_backward) { + break lab6; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s_b$IS(1, "\u0131")) { + break lab9; + } + golab10: + while (true) { + v_6 = this.limit - this.cursor; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel3, 97, 305)) { + break lab11; + } + this.cursor = this.limit - v_6; + break golab10; + } + cursor$3 = this.cursor = this.limit - v_6; + if (cursor$3 <= this.limit_backward) { + break lab9; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.eq_s_b$IS(1, "i")) { + break lab12; + } + golab13: + while (true) { + v_7 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel4, 101, 105)) { + break lab14; + } + this.cursor = this.limit - v_7; + break golab13; + } + cursor$4 = this.cursor = this.limit - v_7; + if (cursor$4 <= this.limit_backward) { + break lab12; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab15; + } + golab16: + while (true) { + v_8 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) { + break lab17; + } + this.cursor = this.limit - v_8; + break golab16; + } + cursor$5 = this.cursor = this.limit - v_8; + if (cursor$5 <= this.limit_backward) { + break lab15; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! this.eq_s_b$IS(1, "\u00F6")) { + break lab18; + } + golab19: + while (true) { + v_9 = this.limit - this.cursor; + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) { + break lab20; + } + this.cursor = this.limit - v_9; + break golab19; + } + cursor$6 = this.cursor = this.limit - v_9; + if (cursor$6 <= this.limit_backward) { + break lab18; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.eq_s_b$IS(1, "u")) { + break lab21; + } + golab22: + while (true) { + v_10 = this.limit - this.cursor; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) { + break lab23; + } + this.cursor = this.limit - v_10; + break golab22; + } + cursor$7 = this.cursor = this.limit - v_10; + if (cursor$7 <= this.limit_backward) { + break lab21; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "\u00FC")) { + return false; + } + golab24: + while (true) { + v_11 = this.limit - this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) { + break lab25; + } + this.cursor = this.limit - v_11; + break golab24; + } + cursor$8 = this.cursor = this.limit - v_11; + if (cursor$8 <= this.limit_backward) { + return false; + } + this.cursor--; + } + } + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "n")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "n")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "y")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_possessives$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_lArI$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nUn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ndA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DAn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ndAn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ylA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ki$ = function () { + return (! this.eq_s_b$IS(2, "ki") ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ncA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yUm$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sUn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yUz$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sUnUz$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_lAr$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nUz$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DUr$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_cAsInA$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yDU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ysA$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ymUs_$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yken$ = function () { + return (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_nominal_verb_suffixes$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab24; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab26; + /** @type {!boolean} */ + var lab27; + /** @type {!boolean} */ + var lab28; + /** @type {!boolean} */ + var lab29; + /** @type {!boolean} */ + var lab30; + /** @type {!boolean} */ + var lab31; + /** @type {!boolean} */ + var lab32; + /** @type {!boolean} */ + var lab33; + /** @type {!boolean} */ + var lab34; + this.ket = this.cursor; + this.B_continue_stemming_noun_suffixes = true; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_2; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab4; + } + break lab2; + } + this.cursor = this.limit - v_2; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab5; + } + break lab2; + } + this.cursor = this.limit - v_2; + if (! (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab1; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true)) { + break lab6; + } + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_3 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab8; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab9; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab10; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab11; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab12; + } + break lab7; + } + this.cursor = this.limit - v_3; + } + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab6; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab13; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_5 = this.limit - this.cursor; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) { + break lab16; + } + break lab15; + } + this.cursor = this.limit - v_5; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab17; + } + break lab15; + } + this.cursor = this.limit - v_5; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab18; + } + break lab15; + } + this.cursor = this.limit - v_5; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_4; + break lab14; + } + } + } + this.B_continue_stemming_noun_suffixes = false; + break lab0; + } + this.cursor = this.limit - v_1; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true)) { + break lab19; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_6 = this.limit - this.cursor; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab21; + } + break lab20; + } + this.cursor = this.limit - v_6; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab19; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + v_7 = this.limit - this.cursor; + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab24; + } + break lab23; + } + this.cursor = this.limit - v_7; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab25; + } + break lab23; + } + this.cursor = this.limit - v_7; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab26; + } + break lab23; + } + this.cursor = this.limit - v_7; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab22; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_8; + break lab27; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + v_10 = this.limit - this.cursor; + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab30; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab31; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab32; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab33; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab34; + } + break lab29; + } + this.cursor = this.limit - v_10; + } + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_9; + break lab28; + } + } + } + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_suffix_chain_before_ki$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + this.ket = this.cursor; + if (! (! this.eq_s_b$IS(2, "ki") ? false : true)) { + return false; + } + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_4; + break lab5; + } + } + break lab3; + } + this.cursor = this.limit - v_3; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + this.cursor = this.limit - v_2; + break lab2; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_5; + break lab6; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_5; + break lab6; + } + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab7; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_7; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_8 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = this.limit - v_8; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab11; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_9; + break lab14; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_9; + break lab14; + } + } + break lab9; + } + this.cursor = this.limit - v_7; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_6; + break lab8; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) { + return false; + } + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_10 = this.limit - this.cursor; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab15; + } + this.cursor = this.limit - v_10; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab17; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_11 = this.limit - this.cursor; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_11; + break lab18; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_11; + break lab18; + } + } + break lab15; + } + this.cursor = this.limit - v_10; + if (! this.r_stem_suffix_chain_before_ki$()) { + return false; + } + } + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_noun_suffixes$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!number} */ + var v_16; + /** @type {!number} */ + var v_17; + /** @type {!number} */ + var v_18; + /** @type {!number} */ + var v_19; + /** @type {!number} */ + var v_20; + /** @type {!number} */ + var v_21; + /** @type {!number} */ + var v_22; + /** @type {!number} */ + var v_23; + /** @type {!number} */ + var v_24; + /** @type {!number} */ + var v_25; + /** @type {!number} */ + var v_26; + /** @type {!number} */ + var v_27; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab24; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab26; + /** @type {!boolean} */ + var lab27; + /** @type {!boolean} */ + var lab28; + /** @type {!boolean} */ + var lab29; + /** @type {!boolean} */ + var lab30; + /** @type {!boolean} */ + var lab31; + /** @type {!boolean} */ + var lab32; + /** @type {!boolean} */ + var lab33; + /** @type {!boolean} */ + var lab34; + /** @type {!boolean} */ + var lab35; + /** @type {!boolean} */ + var lab36; + /** @type {!boolean} */ + var lab37; + /** @type {!boolean} */ + var lab38; + /** @type {!boolean} */ + var lab39; + /** @type {!boolean} */ + var lab40; + /** @type {!boolean} */ + var lab41; + /** @type {!boolean} */ + var lab42; + /** @type {!boolean} */ + var lab43; + /** @type {!boolean} */ + var lab44; + /** @type {!boolean} */ + var lab45; + /** @type {!boolean} */ + var lab46; + /** @type {!boolean} */ + var lab47; + /** @type {!boolean} */ + var lab48; + /** @type {!boolean} */ + var lab49; + /** @type {!boolean} */ + var lab50; + /** @type {!boolean} */ + var lab51; + /** @type {!boolean} */ + var lab52; + /** @type {!boolean} */ + var lab53; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_2; + break lab2; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab3; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_4 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab6; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab5; + } + this.cursor = this.limit - v_4; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_5 = this.limit - this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab9; + } + break lab8; + } + this.cursor = this.limit - v_5; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab7; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_6 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_6; + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_6; + break lab10; + } + } + break lab5; + } + cursor$0 = this.cursor = this.limit - v_4; + this.ket = cursor$0; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_3; + break lab4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_3; + break lab4; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_7 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = this.limit - v_7; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true)) { + break lab11; + } + } + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_8 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab15; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab14; + } + this.cursor = this.limit - v_8; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_9; + break lab17; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_9; + break lab17; + } + } + break lab14; + } + this.cursor = this.limit - v_8; + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab11; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + v_10 = this.limit - this.cursor; + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true)) { + break lab20; + } + break lab19; + } + this.cursor = this.limit - v_10; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true)) { + break lab18; + } + } + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + v_11 = this.limit - this.cursor; + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab22; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_12 = this.limit - this.cursor; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_12; + break lab23; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_12; + break lab23; + } + } + break lab21; + } + this.cursor = this.limit - v_11; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab18; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true)) { + break lab24; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_13 = this.limit - this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + this.ket = this.cursor; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + v_14 = this.limit - this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab27; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_15 = this.limit - this.cursor; + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_15; + break lab28; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_15; + break lab28; + } + } + break lab26; + } + this.cursor = this.limit - v_14; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab29; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_16 = this.limit - this.cursor; + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_16; + break lab30; + } + } + break lab26; + } + this.cursor = this.limit - v_14; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_13; + break lab25; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + this.ket = this.cursor; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + v_17 = this.limit - this.cursor; + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab33; + } + break lab32; + } + this.cursor = this.limit - v_17; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab31; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_18 = this.limit - this.cursor; + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + lab35 = true; + lab35: + while (lab35 === true) { + lab35 = false; + v_19 = this.limit - this.cursor; + lab36 = true; + lab36: + while (lab36 === true) { + lab36 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab36; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab36; + } + break lab35; + } + this.cursor = this.limit - v_19; + lab37 = true; + lab37: + while (lab37 === true) { + lab37 = false; + this.ket = this.cursor; + lab38 = true; + lab38: + while (lab38 === true) { + lab38 = false; + v_20 = this.limit - this.cursor; + lab39 = true; + lab39: + while (lab39 === true) { + lab39 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab39; + } + break lab38; + } + this.cursor = this.limit - v_20; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab37; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_21 = this.limit - this.cursor; + lab40 = true; + lab40: + while (lab40 === true) { + lab40 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_21; + break lab40; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_21; + break lab40; + } + } + break lab35; + } + this.cursor = this.limit - v_19; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_18; + break lab34; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab41 = true; + lab41: + while (lab41 === true) { + lab41 = false; + this.ket = this.cursor; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab41; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab42 = true; + lab42: + while (lab42 === true) { + lab42 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab42; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab43 = true; + lab43: + while (lab43 === true) { + lab43 = false; + this.ket = this.cursor; + lab44 = true; + lab44: + while (lab44 === true) { + lab44 = false; + v_22 = this.limit - this.cursor; + lab45 = true; + lab45: + while (lab45 === true) { + lab45 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab45; + } + break lab44; + } + this.cursor = this.limit - v_22; + lab46 = true; + lab46: + while (lab46 === true) { + lab46 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab46; + } + break lab44; + } + this.cursor = this.limit - v_22; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab43; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_23 = this.limit - this.cursor; + lab47 = true; + lab47: + while (lab47 === true) { + lab47 = false; + this.ket = this.cursor; + lab48 = true; + lab48: + while (lab48 === true) { + lab48 = false; + v_24 = this.limit - this.cursor; + lab49 = true; + lab49: + while (lab49 === true) { + lab49 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab49; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_25 = this.limit - this.cursor; + lab50 = true; + lab50: + while (lab50 === true) { + lab50 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_25; + break lab50; + } + } + break lab48; + } + this.cursor = this.limit - v_24; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_23; + break lab47; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_23; + break lab47; + } + } + break lab0; + } + cursor$1 = this.cursor = this.limit - v_1; + this.ket = cursor$1; + lab51 = true; + lab51: + while (lab51 === true) { + lab51 = false; + v_26 = this.limit - this.cursor; + lab52 = true; + lab52: + while (lab52 === true) { + lab52 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab52; + } + break lab51; + } + this.cursor = this.limit - v_26; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + return false; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_27 = this.limit - this.cursor; + lab53 = true; + lab53: + while (lab53 === true) { + lab53 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_27; + break lab53; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_27; + break lab53; + } + } + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_post_process_last_consonants$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(TurkishStemmer.a_23, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("p")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00E7")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("t")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("k")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "d")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_2; + if (! this.eq_s_b$IS(1, "g")) { + return false; + } + } + this.cursor = this.limit - v_1; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + golab4: + while (true) { + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab5; + } + this.cursor = this.limit - v_5; + break golab4; + } + cursor$0 = this.cursor = this.limit - v_5; + if (cursor$0 <= this.limit_backward) { + break lab3; + } + this.cursor--; + } + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_6 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s_b$IS(1, "a")) { + break lab7; + } + break lab6; + } + this.cursor = this.limit - v_6; + if (! this.eq_s_b$IS(1, "\u0131")) { + break lab3; + } + } + cursor$1 = this.cursor = this.limit - v_4; + this.insert$IIS(cursor$1, cursor$1, "\u0131"); + this.cursor = cursor$1; + break lab2; + } + this.cursor = this.limit - v_3; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_7 = this.limit - this.cursor; + golab9: + while (true) { + v_8 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab10; + } + this.cursor = this.limit - v_8; + break golab9; + } + cursor$2 = this.cursor = this.limit - v_8; + if (cursor$2 <= this.limit_backward) { + break lab8; + } + this.cursor--; + } + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + v_9 = this.limit - this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab12; + } + break lab11; + } + this.cursor = this.limit - v_9; + if (! this.eq_s_b$IS(1, "i")) { + break lab8; + } + } + cursor$3 = this.cursor = this.limit - v_7; + this.insert$IIS(cursor$3, cursor$3, "i"); + this.cursor = cursor$3; + break lab2; + } + this.cursor = this.limit - v_3; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + v_10 = this.limit - this.cursor; + golab14: + while (true) { + v_11 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab15; + } + this.cursor = this.limit - v_11; + break golab14; + } + cursor$4 = this.cursor = this.limit - v_11; + if (cursor$4 <= this.limit_backward) { + break lab13; + } + this.cursor--; + } + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + v_12 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab17; + } + break lab16; + } + this.cursor = this.limit - v_12; + if (! this.eq_s_b$IS(1, "u")) { + break lab13; + } + } + cursor$5 = this.cursor = this.limit - v_10; + this.insert$IIS(cursor$5, cursor$5, "u"); + this.cursor = cursor$5; + break lab2; + } + cursor$7 = this.cursor = (limit$0 = this.limit) - v_3; + v_13 = limit$0 - cursor$7; + golab18: + while (true) { + v_14 = this.limit - this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab19; + } + this.cursor = this.limit - v_14; + break golab18; + } + cursor$6 = this.cursor = this.limit - v_14; + if (cursor$6 <= this.limit_backward) { + return false; + } + this.cursor--; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_15 = this.limit - this.cursor; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.eq_s_b$IS(1, "\u00F6")) { + break lab21; + } + break lab20; + } + this.cursor = this.limit - v_15; + if (! this.eq_s_b$IS(1, "\u00FC")) { + return false; + } + } + cursor$8 = this.cursor = this.limit - v_13; + this.insert$IIS(cursor$8, cursor$8, "\u00FC"); + this.cursor = cursor$8; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_more_than_one_syllable_word$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + v_1 = this.cursor; + v_2 = 2; +replab0: + while (true) { + v_3 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + } + v_2--; + continue replab0; + } + this.cursor = v_3; + break replab0; + } + if (v_2 > 0) { + return false; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_is_reserved_word$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!number} */ + var I_strlen$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var I_strlen$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s$IS(2, "ad")) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + } + I_strlen$0 = this.I_strlen = 2; + if (! (I_strlen$0 === this.limit)) { + break lab1; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_4 = cursor$0; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s$IS(5, "soyad")) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + I_strlen$1 = this.I_strlen = 5; + if (! (I_strlen$1 === this.limit)) { + return false; + } + this.cursor = v_4; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_is_reserved_word$()) { + break lab0; + } + return false; + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_append_U_to_stems_ending_with_d_or_g$()) { + break lab1; + } + } + this.cursor = this.limit - v_2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_post_process_last_consonants$()) { + break lab2; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + if (! this.r_more_than_one_syllable_word$()) { + return false; + } + this.limit_backward = this.cursor; + cursor$0 = this.cursor = limit$0 = this.limit; + v_1 = limit$0 - cursor$0; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_stem_nominal_verb_suffixes$()) { + break lab0; + } + } + this.cursor = this.limit - v_1; + if (! this.B_continue_stemming_noun_suffixes) { + return false; + } + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_stem_noun_suffixes$()) { + break lab1; + } + } + this.cursor = this.limit_backward; + return (! this.r_postlude$() ? false : true); +}; + +/** + * @param {*} o + * @return {!boolean} + */ +TurkishStemmer.prototype.equals$X = function (o) { + return o instanceof TurkishStemmer; +}; + +/** + * @return {!number} + */ +TurkishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "TurkishStemmer"; + hash = 0; + if ("TurkishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class SwedishStemmer extends BaseStemmer + * @constructor + */ +function SwedishStemmer() { +} + +SwedishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function SwedishStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +SwedishStemmer$.prototype = new SwedishStemmer; + +/** + * @param {SwedishStemmer} other + */ +SwedishStemmer.prototype.copy_from$LSwedishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(SwedishStemmer.g_v, 97, 246)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(SwedishStemmer.g_v, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_0, 37); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(SwedishStemmer.g_s_ending, 98, 121)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$2; + if (this.find_among_b$ALAmong$I(SwedishStemmer.a_1, 7) === 0) { + this.limit_backward = v_2; + return false; + } + cursor$3 = this.cursor = this.limit - v_3; + this.ket = cursor$3; + if (cursor$3 <= this.limit_backward) { + this.limit_backward = v_2; + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("l\u00F6s")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("full")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + this.cursor = this.limit - v_3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +SwedishStemmer.prototype.equals$X = function (o) { + return o instanceof SwedishStemmer; +}; + +/** + * @return {!number} + */ +SwedishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "SwedishStemmer"; + hash = 0; + if ("SwedishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class SpanishStemmer extends BaseStemmer + * @constructor + */ +function SpanishStemmer() { +} + +SpanishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function SpanishStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +SpanishStemmer$.prototype = new SpanishStemmer; + +/** + * @param {SpanishStemmer} other + */ +SpanishStemmer.prototype.copy_from$LSpanishStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(SpanishStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_attached_pronoun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(SpanishStemmer.a_1, 13) === 0) { + return false; + } + this.bra = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_2, 11); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + this.bra = this.cursor; + if (! this.slice_from$S("iendo")) { + return false; + } + break; + case 2: + this.bra = this.cursor; + if (! this.slice_from$S("ando")) { + return false; + } + break; + case 3: + this.bra = this.cursor; + if (! this.slice_from$S("ar")) { + return false; + } + break; + case 4: + this.bra = this.cursor; + if (! this.slice_from$S("er")) { + return false; + } + break; + case 5: + this.bra = this.cursor; + if (! this.slice_from$S("ir")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.eq_s_b$IS(1, "u")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_6, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_3, 4); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_4; + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_5; + break lab4; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = this.limit - v_5; + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_y_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_7, 12); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.eq_s_b$IS(1, "u")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_8, 96); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(1, "u")) { + this.cursor = this.limit - v_3; + break lab0; + } + v_4 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "g")) { + this.cursor = this.limit - v_3; + break lab0; + } + this.cursor = this.limit - v_4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_9, 8); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "u")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.eq_s_b$IS(1, "g")) { + this.cursor = this.limit - v_1; + break lab0; + } + cursor$1 = this.cursor = this.limit - v_2; + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_attached_pronoun$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_standard_suffix$()) { + break lab4; + } + break lab3; + } + this.cursor = this.limit - v_4; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_y_verb_suffix$()) { + break lab5; + } + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_verb_suffix$()) { + break lab2; + } + } + } + this.cursor = this.limit - v_3; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_residual_suffix$()) { + break lab6; + } + } + cursor$3 = this.cursor = this.limit_backward; + v_6 = cursor$3; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_postlude$()) { + break lab7; + } + } + this.cursor = v_6; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +SpanishStemmer.prototype.equals$X = function (o) { + return o instanceof SpanishStemmer; +}; + +/** + * @return {!number} + */ +SpanishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "SpanishStemmer"; + hash = 0; + if ("SpanishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class RussianStemmer extends BaseStemmer + * @constructor + */ +function RussianStemmer() { +} + +RussianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function RussianStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_pV = 0; +}; + +RussianStemmer$.prototype = new RussianStemmer; + +/** + * @param {RussianStemmer} other + */ +RussianStemmer.prototype.copy_from$LRussianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + this.I_pV = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + golab1: + while (true) { + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab2; + } + break golab1; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_pV = this.cursor; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_perfective_gerund$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_0, 9); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "\u044F")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_adjective$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_1, 26); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_adjectival$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + if (! this.r_adjective$()) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_2, 8); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.eq_s_b$IS(1, "\u044F")) { + this.cursor = this.limit - v_1; + break lab0; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_reflexive$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_verb$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_4, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "\u044F")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_noun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_5, 36); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_derivational$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_6, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_tidy_up$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_7, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit_backward$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + if (cursor$1 < this.I_pV) { + return false; + } + cursor$3 = this.cursor = this.I_pV; + v_3 = this.limit_backward; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = (limit$2 = this.limit) - v_2; + v_4 = limit$2 - cursor$4; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_perfective_gerund$()) { + break lab3; + } + break lab2; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_5; + v_6 = limit$1 - cursor$2; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_reflexive$()) { + this.cursor = this.limit - v_6; + break lab4; + } + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_7 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_adjectival$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_7; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_verb$()) { + break lab7; + } + break lab5; + } + this.cursor = this.limit - v_7; + if (! this.r_noun$()) { + break lab1; + } + } + } + } + cursor$5 = this.cursor = (limit$3 = this.limit) - v_4; + v_8 = limit$3 - cursor$5; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "\u0438")) { + this.cursor = this.limit - v_8; + break lab8; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + v_9 = this.limit - this.cursor; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_derivational$()) { + break lab9; + } + } + this.cursor = this.limit - v_9; + lab10 = true; +lab10: + while (lab10 === true) { + lab10 = false; + if (! this.r_tidy_up$()) { + break lab10; + } + } + limit_backward$0 = this.limit_backward = v_3; + this.cursor = limit_backward$0; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +RussianStemmer.prototype.equals$X = function (o) { + return o instanceof RussianStemmer; +}; + +/** + * @return {!number} + */ +RussianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "RussianStemmer"; + hash = 0; + if ("RussianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class RomanianStemmer extends BaseStemmer + * @constructor + */ +function RomanianStemmer() { +} + +RomanianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function RomanianStemmer$() { + BaseStemmer$.call(this); + this.B_standard_suffix_removed = false; + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +RomanianStemmer$.prototype = new RomanianStemmer; + +/** + * @param {RomanianStemmer} other + */ +RomanianStemmer.prototype.copy_from$LRomanianStemmer$ = function (other) { + this.B_standard_suffix_removed = other.B_standard_suffix_removed; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!number} */ + var cursor$0; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + this.bra = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s$IS(1, "u")) { + break lab5; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab5; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! this.eq_s$IS(1, "i")) { + break lab3; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + if (! this.slice_from$S("I")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(RomanianStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_step_0$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_1, 16); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 5: + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "ab")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("i")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("at")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("a\u0163i")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_combo_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.limit - (cursor$0 = this.cursor); + this.ket = cursor$0; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_2, 46); + if (among_var === 0) { + return false; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("abil")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ibil")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("iv")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("at")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("it")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.B_standard_suffix_removed = false; +replab0: + while (true) { + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_combo_suffix$()) { + break lab1; + } + continue replab0; + } + this.cursor = this.limit - v_1; + break replab0; + } + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_3, 62); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "\u0163")) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("t")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ist")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_4, 94); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "u")) { + this.limit_backward = v_2; + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_vowel_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_5, 5); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_step_0$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_standard_suffix$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_4; + v_5 = limit$2 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_standard_suffix_removed) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + } + this.cursor = this.limit - v_5; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_vowel_suffix$()) { + break lab7; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_8 = cursor$5; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_postlude$()) { + break lab8; + } + } + this.cursor = v_8; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +RomanianStemmer.prototype.equals$X = function (o) { + return o instanceof RomanianStemmer; +}; + +/** + * @return {!number} + */ +RomanianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "RomanianStemmer"; + hash = 0; + if ("RomanianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class PortugueseStemmer extends BaseStemmer + * @constructor + */ +function PortugueseStemmer() { +} + +PortugueseStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function PortugueseStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +PortugueseStemmer$.prototype = new PortugueseStemmer; + +/** + * @param {PortugueseStemmer} other + */ +PortugueseStemmer.prototype.copy_from$LPortugueseStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a~")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("o~")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("\u00E3")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00F5")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_5, 45); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 5: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_2, 4); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 9: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + if (! this.slice_from$S("ir")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_6, 120); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_7, 7); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_residual_form$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_8, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "u")) { + break lab1; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.eq_s_b$IS(1, "g")) { + break lab1; + } + this.cursor = this.limit - v_2; + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "i")) { + return false; + } + this.bra = cursor$1 = this.cursor; + v_3 = this.limit - cursor$1; + if (! this.eq_s_b$IS(1, "c")) { + return false; + } + this.cursor = this.limit - v_3; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("c")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$4 = this.cursor = v_2; + this.limit_backward = cursor$4; + cursor$5 = this.cursor = limit$1 = this.limit; + v_3 = limit$1 - cursor$5; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_standard_suffix$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + cursor$3 = this.cursor = (limit$0 = this.limit) - v_5; + v_7 = limit$0 - cursor$3; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "i")) { + break lab7; + } + this.bra = cursor$1 = this.cursor; + v_8 = this.limit - cursor$1; + if (! this.eq_s_b$IS(1, "c")) { + break lab7; + } + cursor$2 = this.cursor = this.limit - v_8; + if (! (! (this.I_pV <= cursor$2) ? false : true)) { + break lab7; + } + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_7; + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_residual_suffix$()) { + break lab2; + } + } + } + this.cursor = this.limit - v_3; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_residual_form$()) { + break lab8; + } + } + cursor$6 = this.cursor = this.limit_backward; + v_10 = cursor$6; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_postlude$()) { + break lab9; + } + } + this.cursor = v_10; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +PortugueseStemmer.prototype.equals$X = function (o) { + return o instanceof PortugueseStemmer; +}; + +/** + * @return {!number} + */ +PortugueseStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "PortugueseStemmer"; + hash = 0; + if ("PortugueseStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class PorterStemmer extends BaseStemmer + * @constructor + */ +function PorterStemmer() { +} + +PorterStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function PorterStemmer$() { + BaseStemmer$.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +PorterStemmer$.prototype = new PorterStemmer; + +/** + * @param {PorterStemmer} other + */ +PorterStemmer.prototype.copy_from$LPorterStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_shortv$ = function () { + return (! this.out_grouping_b$AIII(PorterStemmer.g_v_WXY, 89, 121) ? false : ! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : ! this.out_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1a$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_0, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ss")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1b$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_2, 3); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ee")) { + return false; + } + break; + case 2: + v_1 = this.limit - this.cursor; + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_1, 13); + if (among_var === 0) { + return false; + } + this.cursor = this.limit - v_3; + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + this.insert$IIS(cursor$0, cursor$0, "e"); + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = this.limit - this.cursor; + if (! this.r_shortv$()) { + return false; + } + cursor$2 = this.cursor = this.limit - v_4; + c = cursor$2; + this.insert$IIS(cursor$2, cursor$2, "e"); + this.cursor = cursor$2; + break; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1c$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "Y")) { + return false; + } + } + this.bra = this.cursor; +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) { + break lab3; + } + break golab2; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + return (! this.slice_from$S("i") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_2$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_3, 20); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ence")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ance")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("able")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("ize")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("ous")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("ive")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("ble")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_3$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_4, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_4$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_5, 19); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "t")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_5a$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + this.bra = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = this.limit - v_1; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_shortv$()) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_5b$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p2 <= cursor$0) ? false : true) ? false : ! this.eq_s_b$IS(1, "l") ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!number} */ + var v_16; + /** @type {!number} */ + var v_18; + /** @type {!number} */ + var v_19; + /** @type {!number} */ + var v_20; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab27; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$8; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$9; + /** @type {!number} */ + var limit$7; + /** @type {!number} */ + var cursor$10; + /** @type {!number} */ + var cursor$11; + /** @type {!number} */ + var cursor$12; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab0; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$1 = this.cursor = v_1; + v_2 = cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab5; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab5; + } + this.ket = this.cursor; + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + this.cursor++; + } + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + continue replab2; + } + this.cursor = v_3; + break replab2; + } + } + cursor$2 = this.cursor = v_2; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_5 = cursor$2; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + cursor$3 = this.cursor = v_5; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = limit$1 = this.limit; + v_10 = limit$1 - cursor$4; + lab15 = true; +lab15: + while (lab15 === true) { + lab15 = false; + if (! this.r_Step_1a$()) { + break lab15; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_10; + v_11 = limit$2 - cursor$5; + lab16 = true; +lab16: + while (lab16 === true) { + lab16 = false; + if (! this.r_Step_1b$()) { + break lab16; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_11; + v_12 = limit$3 - cursor$6; + lab17 = true; +lab17: + while (lab17 === true) { + lab17 = false; + if (! this.r_Step_1c$()) { + break lab17; + } + } + cursor$7 = this.cursor = (limit$4 = this.limit) - v_12; + v_13 = limit$4 - cursor$7; + lab18 = true; +lab18: + while (lab18 === true) { + lab18 = false; + if (! this.r_Step_2$()) { + break lab18; + } + } + cursor$8 = this.cursor = (limit$5 = this.limit) - v_13; + v_14 = limit$5 - cursor$8; + lab19 = true; +lab19: + while (lab19 === true) { + lab19 = false; + if (! this.r_Step_3$()) { + break lab19; + } + } + cursor$9 = this.cursor = (limit$6 = this.limit) - v_14; + v_15 = limit$6 - cursor$9; + lab20 = true; +lab20: + while (lab20 === true) { + lab20 = false; + if (! this.r_Step_4$()) { + break lab20; + } + } + cursor$10 = this.cursor = (limit$7 = this.limit) - v_15; + v_16 = limit$7 - cursor$10; + lab21 = true; +lab21: + while (lab21 === true) { + lab21 = false; + if (! this.r_Step_5a$()) { + break lab21; + } + } + this.cursor = this.limit - v_16; + lab22 = true; +lab22: + while (lab22 === true) { + lab22 = false; + if (! this.r_Step_5b$()) { + break lab22; + } + } + cursor$12 = this.cursor = this.limit_backward; + v_18 = cursor$12; + lab23 = true; +lab23: + while (lab23 === true) { + lab23 = false; + if (! this.B_Y_found) { + break lab23; + } + replab24: + while (true) { + v_19 = this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + golab26: + while (true) { + v_20 = this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "Y")) { + break lab27; + } + this.ket = this.cursor; + this.cursor = v_20; + break golab26; + } + cursor$11 = this.cursor = v_20; + if (cursor$11 >= this.limit) { + break lab25; + } + this.cursor++; + } + if (! this.slice_from$S("y")) { + return false; + } + continue replab24; + } + this.cursor = v_19; + break replab24; + } + } + this.cursor = v_18; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +PorterStemmer.prototype.equals$X = function (o) { + return o instanceof PorterStemmer; +}; + +/** + * @return {!number} + */ +PorterStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "PorterStemmer"; + hash = 0; + if ("PorterStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class NorwegianStemmer extends BaseStemmer + * @constructor + */ +function NorwegianStemmer() { +} + +NorwegianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function NorwegianStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +NorwegianStemmer$.prototype = new NorwegianStemmer; + +/** + * @param {NorwegianStemmer} other + */ +NorwegianStemmer.prototype.copy_from$LNorwegianStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_0, 29); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(NorwegianStemmer.g_s_ending, 98, 122)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "k")) { + return false; + } + if (! this.out_grouping_b$AIII(NorwegianStemmer.g_v, 97, 248)) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("er")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit_backward$0; + v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor); + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(NorwegianStemmer.a_1, 2) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = this.limit - v_1; + if (cursor$3 <= limit_backward$0) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_2, 11); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + this.cursor = this.limit - v_3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +NorwegianStemmer.prototype.equals$X = function (o) { + return o instanceof NorwegianStemmer; +}; + +/** + * @return {!number} + */ +NorwegianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "NorwegianStemmer"; + hash = 0; + if ("NorwegianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class ItalianStemmer extends BaseStemmer + * @constructor + */ +function ItalianStemmer() { +} + +ItalianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function ItalianStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +ItalianStemmer$.prototype = new ItalianStemmer; + +/** + * @param {ItalianStemmer} other + */ +ItalianStemmer.prototype.copy_from$LItalianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(ItalianStemmer.a_0, 7); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("\u00E0")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00E8")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("\u00EC")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("\u00F2")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("\u00F9")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("qU")) { + return false; + } + break; + case 7: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s$IS(1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab7; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab6; + } + this.cursor = v_5; + if (! this.eq_s$IS(1, "i")) { + break lab5; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + if (! this.slice_from$S("I")) { + return false; + } + } + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + this.cursor++; + } + continue replab2; + } + this.cursor = v_3; + break replab2; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(ItalianStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_attached_pronoun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(ItalianStemmer.a_2, 37) === 0) { + return false; + } + this.bra = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_3, 5); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_6, 51); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_4, 4); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$4 = this.cursor; + if (! (! (this.I_p2 <= cursor$4) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_7, 87); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_vowel_suffix$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.in_grouping_b$AIII(ItalianStemmer.g_AEIO, 97, 242)) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "i")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + v_2 = this.limit - this.cursor; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "h")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + if (! this.in_grouping_b$AIII(ItalianStemmer.g_CG, 99, 103)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_7; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_attached_pronoun$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_standard_suffix$()) { + break lab5; + } + break lab4; + } + this.cursor = this.limit - v_5; + if (! this.r_verb_suffix$()) { + break lab3; + } + } + } + this.cursor = this.limit - v_4; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_vowel_suffix$()) { + break lab6; + } + } + cursor$4 = this.cursor = this.limit_backward; + v_7 = cursor$4; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_postlude$()) { + break lab7; + } + } + this.cursor = v_7; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +ItalianStemmer.prototype.equals$X = function (o) { + return o instanceof ItalianStemmer; +}; + +/** + * @return {!number} + */ +ItalianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "ItalianStemmer"; + hash = 0; + if ("ItalianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class HungarianStemmer extends BaseStemmer + * @constructor + */ +function HungarianStemmer() { +} + +HungarianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function HungarianStemmer$() { + BaseStemmer$.call(this); + this.I_p1 = 0; +}; + +HungarianStemmer$.prototype = new HungarianStemmer; + +/** + * @param {HungarianStemmer} other + */ +HungarianStemmer.prototype.copy_from$LHungarianStemmer$ = function (other) { + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = this.limit; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab1; + } + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab3; + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (this.find_among$ALAmong$I(HungarianStemmer.a_0, 8) === 0) { + break lab5; + } + break lab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + break lab1; + } + this.cursor++; + } + this.I_p1 = this.cursor; + break lab0; + } + this.cursor = v_1; + if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + return false; + } + golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_v_ending$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_1, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_double$ = function () { + /** @type {!number} */ + var v_1; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(HungarianStemmer.a_2, 23) === 0) { + return false; + } + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + this.ket = cursor$0 = this.cursor; + c = (cursor$0 - 1 | 0); + if (this.limit_backward > c || c > this.limit) { + return false; + } + cursor$1 = this.cursor = c; + this.bra = cursor$1; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_instrum$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.r_double$()) { + return false; + } + break; + case 2: + if (! this.r_double$()) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(HungarianStemmer.a_4, 44) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p1 <= cursor$0) ? false : true) ? false : ! this.slice_from$S("") ? false : ! this.r_v_ending$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case_special$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_5, 3); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case_other$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_6, 6); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_factive$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_7, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.r_double$()) { + return false; + } + break; + case 2: + if (! this.r_double$()) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_plural$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_8, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_owned$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_9, 12); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_sing_owner$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_10, 31); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 16: + if (! this.slice_from$S("")) { + return false; + } + break; + case 17: + if (! this.slice_from$S("")) { + return false; + } + break; + case 18: + if (! this.slice_from$S("")) { + return false; + } + break; + case 19: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 20: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_plur_owner$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_11, 42); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("")) { + return false; + } + break; + case 16: + if (! this.slice_from$S("")) { + return false; + } + break; + case 17: + if (! this.slice_from$S("")) { + return false; + } + break; + case 18: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 19: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 20: + if (! this.slice_from$S("")) { + return false; + } + break; + case 21: + if (! this.slice_from$S("")) { + return false; + } + break; + case 22: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 23: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 24: + if (! this.slice_from$S("")) { + return false; + } + break; + case 25: + if (! this.slice_from$S("")) { + return false; + } + break; + case 26: + if (! this.slice_from$S("")) { + return false; + } + break; + case 27: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 28: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 29: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_instrum$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_case$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_case_special$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$3 = this.limit) - v_4; + v_5 = limit$3 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_case_other$()) { + break lab4; + } + } + cursor$5 = this.cursor = (limit$4 = this.limit) - v_5; + v_6 = limit$4 - cursor$5; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_factive$()) { + break lab5; + } + } + cursor$6 = this.cursor = (limit$5 = this.limit) - v_6; + v_7 = limit$5 - cursor$6; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_owned$()) { + break lab6; + } + } + cursor$7 = this.cursor = (limit$6 = this.limit) - v_7; + v_8 = limit$6 - cursor$7; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_sing_owner$()) { + break lab7; + } + } + cursor$8 = this.cursor = (limit$7 = this.limit) - v_8; + v_9 = limit$7 - cursor$8; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_plur_owner$()) { + break lab8; + } + } + this.cursor = this.limit - v_9; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_plural$()) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +HungarianStemmer.prototype.equals$X = function (o) { + return o instanceof HungarianStemmer; +}; + +/** + * @return {!number} + */ +HungarianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "HungarianStemmer"; + hash = 0; + if ("HungarianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class GermanStemmer extends BaseStemmer + * @constructor + */ +function GermanStemmer() { +} + +GermanStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function GermanStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +GermanStemmer$.prototype = new GermanStemmer; + +/** + * @param {GermanStemmer} other + */ +GermanStemmer.prototype.copy_from$LGermanStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "\u00DF")) { + break lab3; + } + this.ket = this.cursor; + if (! this.slice_from$S("ss")) { + return false; + } + break lab2; + } + cursor$0 = this.cursor = v_3; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + golab6: + while (true) { + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab7; + } + this.bra = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_6 = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s$IS(1, "u")) { + break lab9; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab9; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab8; + } + this.cursor = v_6; + if (! this.eq_s$IS(1, "y")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab7; + } + if (! this.slice_from$S("Y")) { + return false; + } + } + this.cursor = v_5; + break golab6; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab5; + } + this.cursor++; + } + continue replab4; + } + this.cursor = v_4; + break replab4; + } + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$1 = this.cursor = c; + this.I_x = cursor$1; + this.cursor = v_1; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(GermanStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_1, 7); + if (among_var === 0) { + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + break lab0; + } + switch (among_var) { + case 0: + break lab0; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(3, "nis")) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! this.in_grouping_b$AIII(GermanStemmer.g_s_ending, 98, 116)) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$2 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_2, 4); + if (among_var === 0) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + break lab2; + } + switch (among_var) { + case 0: + break lab2; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(GermanStemmer.g_st_ending, 98, 116)) { + break lab2; + } + c = (this.cursor - 3 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$8 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$8; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_4, 8); + if (among_var === 0) { + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab3; + } + switch (among_var) { + case 0: + break lab3; + case 1: + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + this.cursor = this.limit - v_5; + break lab4; + } + this.bra = cursor$4 = this.cursor; + v_6 = this.limit - cursor$4; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab5; + } + this.cursor = this.limit - v_5; + break lab4; + } + cursor$5 = this.cursor = this.limit - v_6; + if (! (! (this.I_p2 <= cursor$5) ? false : true)) { + this.cursor = this.limit - v_5; + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 2: + v_7 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab6; + } + break lab3; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_9 = this.limit - this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s_b$IS(2, "er")) { + break lab9; + } + break lab8; + } + this.cursor = this.limit - v_9; + if (! this.eq_s_b$IS(2, "en")) { + this.cursor = this.limit - v_8; + break lab7; + } + } + this.bra = cursor$6 = this.cursor; + if (! (! (this.I_p1 <= cursor$6) ? false : true)) { + this.cursor = this.limit - v_8; + break lab7; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + v_10 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_3, 2); + if (among_var === 0) { + this.cursor = this.limit - v_10; + break lab10; + } + this.bra = cursor$7 = this.cursor; + if (! (! (this.I_p2 <= cursor$7) ? false : true)) { + this.cursor = this.limit - v_10; + break lab10; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_10; + break lab10; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + } + } + this.cursor = this.limit - v_4; + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_standard_suffix$()) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_postlude$()) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +GermanStemmer.prototype.equals$X = function (o) { + return o instanceof GermanStemmer; +}; + +/** + * @return {!number} + */ +GermanStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "GermanStemmer"; + hash = 0; + if ("GermanStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class FrenchStemmer extends BaseStemmer + * @constructor + */ +function FrenchStemmer() { +} + +FrenchStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function FrenchStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +FrenchStemmer$.prototype = new FrenchStemmer; + +/** + * @param {FrenchStemmer} other + */ +FrenchStemmer.prototype.copy_from$LFrenchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s$IS(1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab6; + } + this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s$IS(1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! this.slice_from$S("I")) { + return false; + } + break lab6; + } + this.cursor = v_4; + if (! this.eq_s$IS(1, "y")) { + break lab5; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } + break lab4; + } + this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab9; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! this.slice_from$S("Y")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! this.eq_s$IS(1, "q")) { + break lab3; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "u")) { + break lab3; + } + this.ket = this.cursor; + if (! this.slice_from$S("U")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + break lab1; + } + this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (this.find_among$ALAmong$I(FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab0; + } + this.cursor++; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$1 = this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_4; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 4: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_2, 6); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_3; + break lab3; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab5; + } + if (! this.slice_from$S("")) { + return false; + } + break lab4; + } + cursor$1 = this.cursor = this.limit - v_4; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("eux")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = this.limit - v_5; + break lab6; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_5; + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab8; + } + if (! this.slice_from$S("")) { + return false; + } + break lab7; + } + this.cursor = this.limit - v_6; + if (! this.slice_from$S("abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab10; + } + if (! this.slice_from$S("")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("iqU")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_5; + break lab6; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_8; + break lab11; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_8; + break lab11; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_8; + break lab11; + } + this.bra = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab13; + } + if (! this.slice_from$S("")) { + return false; + } + break lab12; + } + this.cursor = this.limit - v_9; + if (! this.slice_from$S("iqU")) { + return false; + } + } + } + break; + case 9: + if (! this.slice_from$S("eau")) { + return false; + } + break; + case 10: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab15; + } + if (! this.slice_from$S("")) { + return false; + } + break lab14; + } + cursor$3 = this.cursor = this.limit - v_10; + if (! (! (this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! this.slice_from$S("eux")) { + return false; + } + } + break; + case 12: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 13: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ant")) { + return false; + } + return false; + case 14: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ent")) { + return false; + } + return false; + case 15: + v_11 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + this.cursor = this.limit - v_11; + if (! this.slice_from$S("")) { + return false; + } + return false; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_i_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_5, 35); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + this.limit_backward = v_2; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_6, 38); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_2; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + this.cursor = this.limit - v_3; + break lab0; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.out_grouping_b$AIII(FrenchStemmer.g_keep_with_s, 97, 232)) { + this.cursor = this.limit - v_1; + break lab0; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("")) { + return false; + } + } + v_3 = this.limit - (cursor$1 = this.cursor); + if (cursor$1 < this.I_pV) { + return false; + } + cursor$2 = this.cursor = this.I_pV; + v_4 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = this.limit - v_3; + this.ket = cursor$3; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_7, 7); + if (among_var === 0) { + this.limit_backward = v_4; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_4; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_5; + if (! this.eq_s_b$IS(1, "t")) { + this.limit_backward = v_4; + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! this.eq_s_b$IS(2, "gu")) { + this.limit_backward = v_4; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_4; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_un_double$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = this.cursor = this.limit - v_1; + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_un_accent$ = function () { + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + this.ket = this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "\u00E9")) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "\u00E8")) { + return false; + } + } + this.bra = this.cursor; + return (! this.slice_from$S("e") ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$2 = this.cursor = v_2; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$1 = this.limit; + v_3 = limit$1 - cursor$3; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_standard_suffix$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_i_verb_suffix$()) { + break lab7; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_5; + v_7 = limit$0 - cursor$1; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_8 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.eq_s_b$IS(1, "Y")) { + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("i")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_8; + if (! this.eq_s_b$IS(1, "\u00E7")) { + this.cursor = this.limit - v_7; + break lab8; + } + this.bra = this.cursor; + if (! this.slice_from$S("c")) { + return false; + } + } + } + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_residual_suffix$()) { + break lab2; + } + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_3; + v_9 = limit$2 - cursor$4; + lab11 = true; +lab11: + while (lab11 === true) { + lab11 = false; + if (! this.r_un_double$()) { + break lab11; + } + } + this.cursor = this.limit - v_9; + lab12 = true; +lab12: + while (lab12 === true) { + lab12 = false; + if (! this.r_un_accent$()) { + break lab12; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_11 = cursor$5; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + if (! this.r_postlude$()) { + break lab13; + } + } + this.cursor = v_11; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +FrenchStemmer.prototype.equals$X = function (o) { + return o instanceof FrenchStemmer; +}; + +/** + * @return {!number} + */ +FrenchStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "FrenchStemmer"; + hash = 0; + if ("FrenchStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class FinnishStemmer extends BaseStemmer + * @constructor + */ +function FinnishStemmer() { +} + +FinnishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function FinnishStemmer$() { + BaseStemmer$.call(this); + this.B_ending_removed = false; + this.S_x = ""; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +FinnishStemmer$.prototype = new FinnishStemmer; + +/** + * @param {FinnishStemmer} other + */ +FinnishStemmer.prototype.copy_from$LFinnishStemmer$ = function (other) { + this.B_ending_removed = other.B_ending_removed; + this.S_x = other.S_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + this.cursor = v_1; + break golab0; + } + cursor$0 = this.cursor = v_1; + if (cursor$0 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; +golab4: + while (true) { + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab5; + } + this.cursor = v_3; + break golab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_particle_etc$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_0, 10); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.in_grouping_b$AIII(FinnishStemmer.g_particle_end, 97, 246)) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_possessive$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_4, 9); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(1, "k")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_3; + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(3, "kse")) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("ksi")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_1, 6) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_2, 6) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_3, 2) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_LONG$ = function () { + return (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_VI$ = function () { + return (! this.eq_s_b$IS(1, "i") ? false : ! this.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_case_ending$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_6, 30); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.eq_s_b$IS(1, "a")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + break; + case 3: + if (! this.eq_s_b$IS(1, "i")) { + return false; + } + break; + case 4: + if (! this.eq_s_b$IS(1, "o")) { + return false; + } + break; + case 5: + if (! this.eq_s_b$IS(1, "\u00E4")) { + return false; + } + break; + case 6: + if (! this.eq_s_b$IS(1, "\u00F6")) { + return false; + } + break; + case 7: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_4 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_5; + if (! this.eq_s_b$IS(2, "ie")) { + this.cursor = this.limit - v_3; + break lab0; + } + } + cursor$3 = this.cursor = this.limit - v_4; + if (cursor$3 <= this.limit_backward) { + this.cursor = this.limit - v_3; + break lab0; + } + this.cursor--; + this.bra = this.cursor; + } + break; + case 8: + if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + return false; + } + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + return false; + } + break; + case 9: + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + break; + } + if (! this.slice_from$S("")) { + return false; + } + this.B_ending_removed = true; + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_other_endings$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p2) { + return false; + } + cursor$1 = this.cursor = this.I_p2; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_7, 14); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "po")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_3; + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_i_plural$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_8, 2) === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_t_plural$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (! this.eq_s_b$IS(1, "t")) { + this.limit_backward = v_2; + return false; + } + this.bra = cursor$3 = this.cursor; + v_3 = this.limit - cursor$3; + if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + this.limit_backward = v_2; + return false; + } + this.cursor = this.limit - v_3; + if (! this.slice_from$S("")) { + return false; + } + this.limit_backward = v_2; + v_4 = this.limit - (cursor$4 = this.cursor); + if (cursor$4 < this.I_p2) { + return false; + } + cursor$5 = this.cursor = this.I_p2; + v_5 = this.limit_backward; + this.limit_backward = cursor$5; + cursor$6 = this.cursor = this.limit - v_4; + this.ket = cursor$6; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_9, 2); + if (among_var === 0) { + this.limit_backward = v_5; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_5; + switch (among_var) { + case 0: + return false; + case 1: + v_6 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "po")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_6; + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_tidy$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + /** @type {!string} */ + var S_x$0; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$2 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$3; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_4 = this.limit - this.cursor; + if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab0; + } + cursor$1 = this.cursor = this.limit - v_4; + this.ket = cursor$1; + if (cursor$1 <= this.limit_backward) { + break lab0; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + cursor$4 = this.cursor = (limit$1 = this.limit) - v_3; + v_5 = limit$1 - cursor$4; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.in_grouping_b$AIII(FinnishStemmer.g_AEI, 97, 228)) { + break lab1; + } + this.bra = this.cursor; + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_5; + v_6 = limit$2 - cursor$5; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "j")) { + break lab2; + } + this.bra = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_7 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab4; + } + break lab3; + } + this.cursor = this.limit - v_7; + if (! this.eq_s_b$IS(1, "u")) { + break lab2; + } + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_6; + v_8 = limit$3 - cursor$6; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "o")) { + break lab5; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(1, "j")) { + break lab5; + } + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_8; + this.limit_backward = v_2; +golab6: + while (true) { + v_9 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + this.cursor = this.limit - v_9; + break golab6; + } + cursor$7 = this.cursor = this.limit - v_9; + if (cursor$7 <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.ket = cursor$8 = this.cursor; + if (cursor$8 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + S_x$0 = this.S_x = this.slice_to$S(this.S_x); + return (S_x$0 === '' ? false : ! this.eq_v_b$S(this.S_x) ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.B_ending_removed = false; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_particle_etc$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_possessive$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_case_ending$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$3 = this.limit) - v_4; + v_5 = limit$3 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_other_endings$()) { + break lab4; + } + } + this.cursor = this.limit - v_5; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_ending_removed) { + break lab6; + } + v_7 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_i_plural$()) { + break lab7; + } + } + this.cursor = this.limit - v_7; + break lab5; + } + cursor$5 = this.cursor = (limit$4 = this.limit) - v_6; + v_8 = limit$4 - cursor$5; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_t_plural$()) { + break lab8; + } + } + this.cursor = this.limit - v_8; + } + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_tidy$()) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +FinnishStemmer.prototype.equals$X = function (o) { + return o instanceof FinnishStemmer; +}; + +/** + * @return {!number} + */ +FinnishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "FinnishStemmer"; + hash = 0; + if ("FinnishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class EnglishStemmer extends BaseStemmer + * @constructor + */ +function EnglishStemmer() { +} + +EnglishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function EnglishStemmer$() { + BaseStemmer$.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +EnglishStemmer$.prototype = new EnglishStemmer; + +/** + * @param {EnglishStemmer} other + */ +EnglishStemmer.prototype.copy_from$LEnglishStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "'")) { + break lab0; + } + this.ket = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab1; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$2 = this.cursor = v_2; + v_3 = cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab6; + } + this.ket = this.cursor; + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + this.cursor++; + } + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + continue replab3; + } + this.cursor = v_4; + break replab3; + } + } + this.cursor = v_3; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var limit$0; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (this.find_among$ALAmong$I(EnglishStemmer.a_0, 3) === 0) { + break lab2; + } + break lab1; + } + this.cursor = v_2; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_p1 = this.cursor; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_shortv$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v_WXY, 89, 121)) { + break lab1; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (this.cursor > this.limit_backward) { + return false; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1a$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_1, 3); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_2, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ss")) { + return false; + } + break; + case 2: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + c = (this.cursor - 2 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! this.slice_from$S("i")) { + return false; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("ie")) { + return false; + } + } + break; + case 3: + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1b$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_4, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ee")) { + return false; + } + break; + case 2: + v_1 = this.limit - this.cursor; + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_3, 13); + if (among_var === 0) { + return false; + } + this.cursor = this.limit - v_3; + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + this.insert$IIS(cursor$0, cursor$0, "e"); + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = this.limit - this.cursor; + if (! this.r_shortv$()) { + return false; + } + cursor$2 = this.cursor = this.limit - v_4; + c = cursor$2; + this.insert$IIS(cursor$2, cursor$2, "e"); + this.cursor = cursor$2; + break; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1c$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "Y")) { + return false; + } + } + this.bra = this.cursor; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (this.cursor > this.limit_backward) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + return (! this.slice_from$S("i") ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_2$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_5, 24); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ence")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ance")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("able")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("ize")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("ous")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("ive")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("ble")) { + return false; + } + break; + case 13: + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("og")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("less")) { + return false; + } + break; + case 16: + if (! this.in_grouping_b$AIII(EnglishStemmer.g_valid_LI, 99, 116)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_3$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_6, 9); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_4$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_7, 18); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "t")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_5$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_8, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = this.limit - v_1; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_shortv$()) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception2$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(EnglishStemmer.a_9, 8) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (cursor$0 > this.limit_backward ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception1$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(EnglishStemmer.a_10, 18); + if (among_var === 0) { + return false; + } + this.ket = cursor$0 = this.cursor; + if (cursor$0 < this.limit) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ski")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("sky")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("die")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("lie")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("tie")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("idl")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("gentl")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("ugli")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("earli")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("onli")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("singl")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + if (! this.B_Y_found) { + return false; + } +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "Y")) { + break lab3; + } + this.ket = this.cursor; + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + if (! this.slice_from$S("y")) { + return false; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$8; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$9; + /** @type {!number} */ + var cursor$10; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_exception1$()) { + break lab1; + } + break lab0; + } + this.cursor = v_1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + c = (this.cursor + 3 | 0); + if (0 > c || c > this.limit) { + break lab3; + } + this.cursor = c; + break lab2; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_prelude$()) { + break lab4; + } + } + cursor$1 = this.cursor = v_3; + v_4 = cursor$1; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_mark_regions$()) { + break lab5; + } + } + cursor$2 = this.cursor = v_4; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$0 = this.limit; + v_5 = limit$0 - cursor$3; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_Step_1a$()) { + break lab6; + } + } + this.cursor = this.limit - v_5; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_exception2$()) { + break lab8; + } + break lab7; + } + cursor$4 = this.cursor = (limit$1 = this.limit) - v_6; + v_7 = limit$1 - cursor$4; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_Step_1b$()) { + break lab9; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_7; + v_8 = limit$2 - cursor$5; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.r_Step_1c$()) { + break lab10; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_8; + v_9 = limit$3 - cursor$6; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! this.r_Step_2$()) { + break lab11; + } + } + cursor$7 = this.cursor = (limit$4 = this.limit) - v_9; + v_10 = limit$4 - cursor$7; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.r_Step_3$()) { + break lab12; + } + } + cursor$8 = this.cursor = (limit$5 = this.limit) - v_10; + v_11 = limit$5 - cursor$8; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! this.r_Step_4$()) { + break lab13; + } + } + cursor$9 = this.cursor = (limit$6 = this.limit) - v_11; + v_12 = limit$6 - cursor$9; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.r_Step_5$()) { + break lab14; + } + } + this.cursor = this.limit - v_12; + } + cursor$10 = this.cursor = this.limit_backward; + v_13 = cursor$10; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.r_postlude$()) { + break lab15; + } + } + this.cursor = v_13; + } + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +EnglishStemmer.prototype.equals$X = function (o) { + return o instanceof EnglishStemmer; +}; + +/** + * @return {!number} + */ +EnglishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "EnglishStemmer"; + hash = 0; + if ("EnglishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class DutchStemmer extends BaseStemmer + * @constructor + */ +function DutchStemmer() { +} + +DutchStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function DutchStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.B_e_found = false; +}; + +DutchStemmer$.prototype = new DutchStemmer; + +/** + * @param {DutchStemmer} other + */ +DutchStemmer.prototype.copy_from$LDutchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.B_e_found = other.B_e_found; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(DutchStemmer.a_0, 11); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + this.cursor = v_3; + break lab2; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } +replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab6; + } + this.bra = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s$IS(1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab8; + } + if (! this.slice_from$S("I")) { + return false; + } + break lab7; + } + this.cursor = v_6; + if (! this.eq_s$IS(1, "y")) { + break lab6; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + this.cursor++; + } + continue replab3; + } + this.cursor = v_4; + break replab3; + } + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_mark_regions$ = function () { + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < 3)) { + break lab4; + } + this.I_p1 = 3; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(DutchStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(DutchStemmer.a_2, 3) === 0) { + return false; + } + cursor$0 = this.cursor = this.limit - v_1; + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_e_ending$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + this.B_e_found = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_1 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + return false; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + this.B_e_found = true; + return (! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_en_ending$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + v_1 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + return false; + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(3, "gem")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_2; + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_3, 5); + if (among_var === 0) { + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab0; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! this.slice_from$S("heid")) { + return false; + } + break; + case 2: + if (! this.r_en_ending$()) { + break lab0; + } + break; + case 3: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! this.out_grouping_b$AIII(DutchStemmer.g_v_j, 97, 232)) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_e_ending$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(4, "heid")) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + break lab2; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "c")) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_4; + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "en")) { + break lab2; + } + this.bra = this.cursor; + if (! this.r_en_ending$()) { + break lab2; + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_3; + v_5 = limit$2 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_4, 6); + if (among_var === 0) { + break lab4; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab4; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + break lab6; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab6; + } + v_7 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab7; + } + break lab6; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("")) { + return false; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_undouble$()) { + break lab4; + } + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + v_8 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab8; + } + break lab4; + } + this.cursor = this.limit - v_8; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_e_ending$()) { + break lab4; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.B_e_found) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_5; + v_9 = limit$3 - cursor$6; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v_I, 73, 232)) { + break lab9; + } + v_10 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(DutchStemmer.a_5, 4) === 0) { + break lab9; + } + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + break lab9; + } + cursor$5 = this.cursor = this.limit - v_10; + this.ket = cursor$5; + if (cursor$5 <= this.limit_backward) { + break lab9; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_9; + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_standard_suffix$()) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_postlude$()) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +DutchStemmer.prototype.equals$X = function (o) { + return o instanceof DutchStemmer; +}; + +/** + * @return {!number} + */ +DutchStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "DutchStemmer"; + hash = 0; + if ("DutchStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class DanishStemmer extends BaseStemmer + * @constructor + */ +function DanishStemmer() { +} + +DanishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function DanishStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; + this.S_ch = ""; +}; + +DanishStemmer$.prototype = new DanishStemmer; + +/** + * @param {DanishStemmer} other + */ +DanishStemmer.prototype.copy_from$LDanishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + this.S_ch = other.S_ch; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(DanishStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(DanishStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_0, 32); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(DanishStemmer.g_s_ending, 97, 229)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit_backward$0; + v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor); + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(DanishStemmer.a_1, 4) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = this.limit - v_1; + if (cursor$3 <= limit_backward$0) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "st")) { + break lab0; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_3; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_consonant_pair$()) { + break lab1; + } + } + this.cursor = this.limit - v_4; + break; + case 2: + if (! this.slice_from$S("l\u00F8s")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!string} */ + var S_ch$0; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (! this.out_grouping_b$AIII(DanishStemmer.g_v, 97, 248)) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + S_ch$0 = this.S_ch = this.slice_to$S(this.S_ch); + if (S_ch$0 === '') { + return false; + } + this.limit_backward = v_2; + return (! this.eq_v_b$S(this.S_ch) ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit - v_4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_undouble$()) { + break lab4; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +DanishStemmer.prototype.equals$X = function (o) { + return o instanceof DanishStemmer; +}; + +/** + * @return {!number} + */ +DanishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "DanishStemmer"; + hash = 0; + if ("DanishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class Among extends Object + * @constructor + */ +function Among() { +} + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + */ +function Among$SII(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +Among$SII.prototype = new Among; + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + * @param {*} method + * @param {BaseStemmer} instance + */ +function Among$SIIF$LBaseStemmer$B$LBaseStemmer$(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +Among$SIIF$LBaseStemmer$B$LBaseStemmer$.prototype = new Among; + +/** + * class BitVector extends Object + * @constructor + */ +function BitVector() { +} + +/** + * @constructor + */ +function BitVector$() { + /** @type {Array.<undefined|!number>} */ + var _v$0; + /** @type {Array.<undefined|!number>} */ + var _r$0; + _r$0 = this._r = [ ]; + _v$0 = this._v = [ ]; + _v$0.length = 0; + _r$0.length = 0; + this._size = 0; + this._size1 = 0; +}; + +BitVector$.prototype = new BitVector; + +/** + */ +BitVector.prototype.build$ = function () { + /** @type {!number} */ + var i; + this._size1 = 0; + for (i = 0; i < this._v.length; i++) { + if (i % 8 === 0) { + this._r.push(true ? this._size1 : this._size - this._size1); + } + this._size1 += this._rank32$IIB(this._v[i], 32, true); + } +}; + +/** + */ +BitVector.prototype.clear$ = function () { + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; +}; + +/** + * @return {!number} + */ +BitVector.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.size$B = function (b) { + return (b ? this._size1 : this._size - this._size1); +}; + +/** + * @param {!number} value + */ +BitVector.prototype.set$I = function (value) { + this.set$IB(value, true); +}; + +/** + * @param {!number} value + * @param {!boolean} flag + */ +BitVector.prototype.set$IB = function (value, flag) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + this._size = (value + 1 | 0); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + while (q >= this._v.length) { + this._v.push(0); + } + m = 0x1 << r; + if (flag) { + this._v[q] |= m; + } else { + this._v[q] &= ~ m; + } +}; + +/** + * @param {!number} value + * @return {!boolean} + */ +BitVector.prototype.get$I = function (value) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + throw new Error("BitVector.get() : range error"); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + m = 0x1 << r; + return !! (this._v[q] & m); +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.rank$I = function (i) { + return this.rank$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.rank$IB = function (i, b) { + /** @type {!number} */ + var q_large; + /** @type {!number} */ + var q_small; + /** @type {!number} */ + var r; + /** @type {!number} */ + var rank; + /** @type {!number} */ + var begin; + /** @type {!number} */ + var j; + if (i > this._size) { + throw new Error("BitVector.rank() : range error"); + } + if (i === 0) { + return 0; + } + i--; + q_large = (Math.floor(i / 256) | 0); + q_small = (Math.floor(i / 32) | 0); + r = (Math.floor(i % 32) | 0); + rank = (this._r[q_large] | 0); + if (! b) { + rank = q_large * 256 - rank; + } + begin = q_large * 8; + for (j = begin; j < q_small; j++) { + rank += this._rank32$IIB(this._v[j], 32, b); + } + rank += this._rank32$IIB(this._v[q_small], r + 1, b); + return rank; +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.select$I = function (i) { + return this.select$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.select$IB = function (i, b) { + /** @type {!number} */ + var left; + /** @type {!number} */ + var right; + /** @type {!number} */ + var pivot; + /** @type {undefined|!number} */ + var rank; + /** @type {!number} */ + var j; + if (i >= (b ? this._size1 : this._size - this._size1)) { + throw new Error("BitVector.select() : range error"); + } + left = 0; + right = this._r.length; + while (left < right) { + pivot = Math.floor((left + right) / 2); + rank = this._r[pivot]; + if (! b) { + rank = pivot * 256 - rank; + } + if (i < rank) { + right = pivot; + } else { + left = pivot + 1; + } + } + right--; + if (b) { + i -= (this._r[right] | 0); + } else { + i -= (right * 256 - this._r[right] | 0); + } + j = right * 8; + while (1) { + rank = this._rank32$IIB(this._v[j], 32, b); + if (i < rank) { + break; + } + j++; + i -= (rank | 0); + } + return (j * 32 + this._select32$IIB(this._v[j], i, b) | 0); +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._rank32$IIB = function (x, i, b) { + if (! b) { + x = ~ x; + } + x <<= 32 - i; + x = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x = ((x & 0xcccccccc) >>> 2) + (x & 0x33333333); + x = ((x & 0xf0f0f0f0) >>> 4) + (x & 0x0f0f0f0f); + x = ((x & 0xff00ff00) >>> 8) + (x & 0x00ff00ff); + x = ((x & 0xffff0000) >>> 16) + (x & 0x0000ffff); + return x; +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._select32$IIB = function (x, i, b) { + /** @type {!number} */ + var x1; + /** @type {!number} */ + var x2; + /** @type {!number} */ + var x3; + /** @type {!number} */ + var x4; + /** @type {!number} */ + var x5; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var v5; + /** @type {!number} */ + var v4; + /** @type {!number} */ + var v3; + /** @type {!number} */ + var v2; + /** @type {!number} */ + var v1; + /** @type {!number} */ + var v0; + if (! b) { + x = ~ x; + } + x1 = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x2 = ((x1 & 0xcccccccc) >>> 2) + (x1 & 0x33333333); + x3 = ((x2 & 0xf0f0f0f0) >>> 4) + (x2 & 0x0f0f0f0f); + x4 = ((x3 & 0xff00ff00) >>> 8) + (x3 & 0x00ff00ff); + x5 = ((x4 & 0xffff0000) >>> 16) + (x4 & 0x0000ffff); + i++; + pos = 0; + v5 = x5 & 0xffffffff; + if (i > v5) { + i -= (v5 | 0); + pos += 32; + } + v4 = x4 >>> pos & 0x0000ffff; + if (i > v4) { + i -= (v4 | 0); + pos += 16; + } + v3 = x3 >>> pos & 0x000000ff; + if (i > v3) { + i -= (v3 | 0); + pos += 8; + } + v2 = x2 >>> pos & 0x0000000f; + if (i > v2) { + i -= (v2 | 0); + pos += 4; + } + v1 = x1 >>> pos & 0x00000003; + if (i > v1) { + i -= (v1 | 0); + pos += 2; + } + v0 = x >>> pos & 0x00000001; + if (i > v0) { + i -= (v0 | 0); + pos += 1; + } + return (pos | 0); +}; + +/** + * @return {!string} + */ +BitVector.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + contents.push(Binary$dump32bitNumberList$AN(this._v)); + return contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +BitVector.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumberList$ANLCompressionReport$(this._v, report)); + return contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +BitVector.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +BitVector.prototype.load$SI = function (data, offset) { + /** @type {LoadedNumberListResult} */ + var result; + /** @type {!number} */ + var result$0; + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + result = Binary$load32bitNumberList$SI(data, offset + 2); + this._v = result.result; + this.build$(); + return result.offset; +}; + +/** + * class WaveletMatrix extends Object + * @constructor + */ +function WaveletMatrix() { +} + +/** + * @constructor + */ +function WaveletMatrix$() { + /** @type {Array.<undefined|BitVector>} */ + var _bv$0; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + this._range = ({ }); + _bv$0 = this._bv = [ ]; + _seps$0 = this._seps = [ ]; + this._bitsize = 16; + _bv$0.length = 0; + _seps$0.length = 0; + this._size = 0; +}; + +WaveletMatrix$.prototype = new WaveletMatrix; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.bitsize$ = function () { + return this._bitsize; +}; + +/** + * @param {!number} charCode + */ +WaveletMatrix.prototype.setMaxCharCode$I = function (charCode) { + this._bitsize = (Math.ceil(Math.log(charCode) / 0.6931471805599453) | 0); +}; + +/** + */ +WaveletMatrix.prototype.clear$ = function () { + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; +}; + +/** + * @param {!string} v + */ +WaveletMatrix.prototype.build$S = function (v) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var bitsize; + /** @type {!number} */ + var i; + /** @type {!number} */ + var depth; + /** @type {Object.<string, undefined|!number>} */ + var range_tmp; + /** @type {!number} */ + var code; + /** @type {!boolean} */ + var bit; + /** @type {!number} */ + var key; + /** @type {Object.<string, undefined|!number>} */ + var range_rev; + /** @type {!string} */ + var range_key; + /** @type {!number} */ + var value; + /** @type {!number} */ + var pos0; + /** @type {undefined|!number} */ + var pos1; + /** @type {!string} */ + var range_rev_key; + /** @type {!number} */ + var begin; + /** @type {undefined|!number} */ + var end; + /** @type {!number} */ + var num0; + /** @type {!number} */ + var num1; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + size = v.length; + bitsize = this._bitsize; + for (i = 0; i < bitsize; i++) { + this._bv.push(new BitVector$()); + this._seps.push(0); + } + this._size = (size | 0); + for (i = 0; i < size; i++) { + this._bv[0].set$IB(i, this._uint2bit$II(v.charCodeAt(i), 0)); + } + this._bv[0].build$(); + this._seps[0] = this._bv[0].size$B(false); + this._range["0"] = 0; + this._range["1"] = this._seps[0]; + depth = 1; + while (depth < bitsize) { + range_tmp = WaveletMatrix$_shallow_copy$HI(this._range); + for (i = 0; i < size; i++) { + code = v.charCodeAt(i); + bit = this._uint2bit$II(code, depth); + key = code >>> bitsize - depth; + this._bv[depth].set$IB(range_tmp[key + ""], bit); + range_tmp[key + ""]++; + } + this._bv[depth].build$(); + this._seps[depth] = this._bv[depth].size$B(false); + range_rev = ({ }); + for (range_key in this._range) { + value = this._range[range_key]; + if (value != range_tmp[range_key]) { + range_rev[value + ""] = range_key | 0; + } + } + this._range = ({ }); + pos0 = 0; + pos1 = this._seps[depth]; + for (range_rev_key in range_rev) { + begin = range_rev_key | 0; + value = range_rev[range_rev_key]; + end = range_tmp[value + ""]; + num0 = this._bv[depth].rank$IB(end, false) - this._bv[depth].rank$IB(begin, false); + num1 = end - begin - num0; + if (num0 > 0) { + this._range[(value << 1) + ""] = (pos0 | 0); + pos0 += num0; + } + if (num1 > 0) { + this._range[(value << 1) + 1 + ""] = pos1; + pos1 += (num1 | 0); + } + } + depth++; + } +}; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.size$I = function (c) { + return this.rank$II(this._size, c); +}; + +/** + * @param {!number} i + * @return {!number} + */ +WaveletMatrix.prototype.get$I = function (i) { + /** @type {!number} */ + var value; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i >= this._size) { + throw new Error("WaveletMatrix.get() : range error"); + } + value = 0; + depth = 0; + while (depth < this._bitsize) { + bit = this._bv[depth].get$I(i); + i = this._bv[depth].rank$IB(i, bit); + value <<= 1; + if (bit) { + i += this._seps[depth]; + value += 1; + } + depth++; + } + return (value | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank$II = function (i, c) { + /** @type {undefined|!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i > this._size) { + throw new Error("WaveletMatrix.rank(): range error"); + } + if (i === 0) { + return 0; + } + begin = this._range[c + ""]; + if (begin == null) { + return 0; + } + end = i; + depth = 0; + while (depth < this._bitsize) { + bit = this._uint2bit$II(c, depth); + end = this._bv[depth].rank$IB(end, bit); + if (bit) { + end += this._seps[depth]; + } + depth++; + } + return (end - begin | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank_less_than$II = function (i, c) { + /** @type {!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!number} */ + var rlt; + /** @type {!number} */ + var rank0_begin; + /** @type {!number} */ + var rank0_end; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + if (i > this._size) { + throw new Error("WaveletMatrix.rank_less_than(): range error"); + } + if (i === 0) { + return 0; + } + begin = 0; + end = i; + depth = 0; + rlt = 0; + while (depth < this._bitsize) { + rank0_begin = this._bv[depth].rank$IB(begin, false); + rank0_end = this._bv[depth].rank$IB(end, false); + if (this._uint2bit$II(c, depth)) { + rlt += rank0_end - rank0_begin; + begin += (_seps$0 = this._seps)[depth] - rank0_begin; + end += _seps$0[depth] - rank0_end; + } else { + begin = rank0_begin; + end = rank0_end; + } + depth++; + } + return (rlt | 0); +}; + +/** + * @return {!string} + */ +WaveletMatrix.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$()); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + counter++; + } + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +WaveletMatrix.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + CompressionReport$add$LCompressionReport$II(report, 3, 3); + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$LCompressionReport$(report)); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + CompressionReport$add$LCompressionReport$II(report, 4, 4); + counter++; + } + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +WaveletMatrix.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +WaveletMatrix.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var i; + /** @type {BitVector} */ + var bit_vector; + /** @type {!number} */ + var range_size; + /** @type {!number} */ + var value; + /** @type {!number} */ + var offset$0; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + /** @type {!number} */ + var result$2; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + offset$0 = offset++; + this._bitsize = (data.charCodeAt(offset$0) | 0); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + offset += 2; + for (i = 0; i < this._bitsize; i++) { + bit_vector = new BitVector$(); + offset = bit_vector.load$SI(data, offset); + this._bv.push(bit_vector); + } + for (i = 0; i < this._bitsize; (i++, offset += 2)) { + this._seps.push(Binary$load32bitNumber$SI(data, offset)); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + range_size = result$1; + offset += 2; + for (i = 0; i < range_size; (i++, offset += 4)) { + result$2 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + value = Binary$load32bitNumber$SI(data, offset + 2); + this._range[result$2 + ""] = (value | 0); + } + return offset; +}; + +/** + * @param {Object.<string, undefined|!number>} input + * @return {Object.<string, undefined|!number>} + */ +WaveletMatrix._shallow_copy$HI = function (input) { + /** @type {Object.<string, undefined|!number>} */ + var result; + /** @type {!string} */ + var key; + result = ({ }); + for (key in input) { + result[key] = input[key]; + } + return result; +}; + +var WaveletMatrix$_shallow_copy$HI = WaveletMatrix._shallow_copy$HI; + +/** + * @param {!number} c + * @param {!number} i + * @return {!boolean} + */ +WaveletMatrix.prototype._uint2bit$II = function (c, i) { + return (c >>> this._bitsize - 1 - i & 0x1) === 0x1; +}; + +/** + * class BurrowsWheelerTransform extends Object + * @constructor + */ +function BurrowsWheelerTransform() { +} + +/** + * @constructor + */ +function BurrowsWheelerTransform$() { + this._str = ""; + this._size = 0; + this._head = 0; + this._suffixarray = [ ]; +}; + +BurrowsWheelerTransform$.prototype = new BurrowsWheelerTransform; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.size$LBurrowsWheelerTransform$ = function ($this) { + return $this._size; +}; + +var BurrowsWheelerTransform$size$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.size$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.head$LBurrowsWheelerTransform$ = function ($this) { + return $this._head; +}; + +var BurrowsWheelerTransform$head$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.head$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + */ +BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$ = function ($this) { + $this._str = ""; + $this._size = 0; + $this._head = 0; + $this._suffixarray.length = 0; +}; + +var BurrowsWheelerTransform$clear$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} str + */ +BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S = function ($this, str) { + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + _str$0 = $this._str = str; + $this._size = _str$0.length; + _suffixarray$0 = $this._suffixarray = SAIS$make$S(str); + $this._head = (_suffixarray$0.indexOf(0) | 0); +}; + +var BurrowsWheelerTransform$build$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!number} i + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I = function ($this, i) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var index; + size = $this._size; + if (i >= size) { + throw new Error("BurrowsWheelerTransform.get() : range error"); + } + index = ($this._suffixarray[i] + size - 1) % size; + return $this._str.charAt(index); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$ = function ($this) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + str = [ ]; + size = $this._size; + for (i = 0; i < size; i++) { + str.push(BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I($this, i)); + } + return str.join(""); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} replace + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S = function ($this, replace) { + /** @type {!string} */ + var result; + result = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$($this); + return result.replace(BurrowsWheelerTransform.END_MARKER, replace); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S; + +/** + * class OArray extends Object + * @constructor + */ +function OArray() { +} + +/** + * @constructor + * @param {Array.<undefined|!number>} array + */ +function OArray$AI(array) { + this.array = array; + this.offset = 0; +}; + +OArray$AI.prototype = new OArray; + +/** + * @constructor + * @param {Array.<undefined|!number>} array + * @param {!number} offset + */ +function OArray$AII(array, offset) { + this.array = array; + this.offset = offset; +}; + +OArray$AII.prototype = new OArray; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!number} + */ +OArray.get$LOArray$I = function ($this, index) { + return $this.array[index + $this.offset]; +}; + +var OArray$get$LOArray$I = OArray.get$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index + * @param {!number} value + */ +OArray.set$LOArray$II = function ($this, index, value) { + $this.array[index + $this.offset] = value; +}; + +var OArray$set$LOArray$II = OArray.set$LOArray$II; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!boolean} + */ +OArray.isS$LOArray$I = function ($this, index) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index + (offset$0 = $this.offset)] < array$0[index + offset$0 + 1]; +}; + +var OArray$isS$LOArray$I = OArray.isS$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index1 + * @param {!number} index2 + * @return {!boolean} + */ +OArray.compare$LOArray$II = function ($this, index1, index2) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index1 + (offset$0 = $this.offset)] == array$0[index2 + offset$0]; +}; + +var OArray$compare$LOArray$II = OArray.compare$LOArray$II; + +/** + * class SAIS extends Object + * @constructor + */ +function SAIS() { +} + +/** + * @constructor + */ +function SAIS$() { +}; + +SAIS$.prototype = new SAIS; + +/** + * @param {BitVector} t + * @param {!number} i + * @return {!boolean} + */ +SAIS._isLMS$LBitVector$I = function (t, i) { + return i > 0 && t.get$I(i) && ! t.get$I(i - 1); +}; + +var SAIS$_isLMS$LBitVector$I = SAIS._isLMS$LBitVector$I; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._getBuckets$LOArray$AIIIB = function (s, bkt, n, K, end) { + /** @type {!number} */ + var sum; + /** @type {!number} */ + var i; + sum = 0; + for (i = 0; i <= K; i++) { + bkt[i] = 0; + } + for (i = 0; i < n; i++) { + bkt[OArray$get$LOArray$I(s, i)]++; + } + for (i = 0; i <= K; i++) { + sum += bkt[i]; + bkt[i] = ((end ? sum : sum - bkt[i]) | 0); + } +}; + +var SAIS$_getBuckets$LOArray$AIIIB = SAIS._getBuckets$LOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAl$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = 0; i < n; i++) { + j = SA[i] - 1; + if (j >= 0 && ! t.get$I(j)) { + SA[bkt[OArray$get$LOArray$I(s, j)]++] = (j | 0); + } + } +}; + +var SAIS$_induceSAl$LBitVector$AILOArray$AIIIB = SAIS._induceSAl$LBitVector$AILOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAs$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = n - 1; i >= 0; i--) { + j = SA[i] - 1; + if (j >= 0 && t.get$I(j)) { + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + } +}; + +var SAIS$_induceSAs$LBitVector$AILOArray$AIIIB = SAIS._induceSAs$LBitVector$AILOArray$AIIIB; + +/** + * @param {!string} source + * @return {Array.<undefined|!number>} + */ +SAIS.make$S = function (source) { + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var maxCode; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!number>} */ + var SA; + /** @type {OArray} */ + var s; + charCodes = [ ]; + charCodes.length = source.length; + maxCode = 0; + for (i = 0; i < source.length; i++) { + code = source.charCodeAt(i); + charCodes[i] = (code | 0); + maxCode = (code > maxCode ? code : maxCode); + } + SA = [ ]; + SA.length = source.length; + s = ({offset: 0, array: charCodes}); + SAIS$_make$LOArray$AIII(s, SA, source.length, maxCode); + return SA; +}; + +var SAIS$make$S = SAIS.make$S; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} SA + * @param {!number} n + * @param {!number} K + */ +SAIS._make$LOArray$AIII = function (s, SA, n, K) { + /** @type {BitVector} */ + var t; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var bkt; + /** @type {!number} */ + var n1; + /** @type {!number} */ + var name; + /** @type {!number} */ + var prev; + /** @type {undefined|!number} */ + var pos; + /** @type {!boolean} */ + var diff; + /** @type {!number} */ + var d; + /** @type {!number} */ + var j; + /** @type {Array.<undefined|!number>} */ + var SA1; + /** @type {OArray} */ + var s1; + /** @type {!number} */ + var i$0; + /** @type {!number} */ + var index$0; + t = new BitVector$(); + t.set$IB(n - 2, false); + t.set$IB(n - 1, true); + for (i = n - 3; i >= 0; i--) { + t.set$IB(i, OArray$isS$LOArray$I(s, i) || OArray$compare$LOArray$II(s, i, i + 1) && t.get$I(i + 1)); + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for (i = 0; i < n; i++) { + SA[i] = -1; + } + for (i = 1; i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + SA[-- bkt[OArray$get$LOArray$I(s, i)]] = (i | 0); + } + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); + n1 = 0; + for (i = 0; i < n; i++) { + i$0 = SA[i]; + if (i$0 > 0 && t.get$I(i$0) && ! t.get$I(i$0 - 1)) { + SA[n1++] = SA[i]; + } + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + name = 0; + prev = -1; + for (i = 0; i < n1; i++) { + pos = SA[i]; + diff = false; + for (d = 0; d < n; d++) { + if (prev === -1 || ! OArray$compare$LOArray$II(s, pos + d, prev + d) || t.get$I(pos + d) !== t.get$I(prev + d)) { + diff = true; + break; + } else { + if (d > 0 && (SAIS$_isLMS$LBitVector$I(t, pos + d) || SAIS$_isLMS$LBitVector$I(t, prev + d))) { + break; + } + } + } + if (diff) { + name++; + prev = pos; + } + pos = ((pos % 2 === 0 ? pos / 2 : (pos - 1) / 2) | 0); + SA[n1 + pos] = (name - 1 | 0); + } + for ((i = n - 1, j = n - 1); i >= n1; i--) { + if (SA[i] >= 0) { + SA[j--] = SA[i]; + } + } + SA1 = SA; + s1 = ({offset: n - n1, array: SA}); + if (name < n1) { + SAIS$_make$LOArray$AIII(s1, SA1, n1, name - 1); + } else { + for (i = 0; i < n1; i++) { + SA1[OArray$get$LOArray$I(s1, i)] = (i | 0); + } + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for ((i = 1, j = 0); i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + OArray$set$LOArray$II(s1, j++, i); + } + } + for (i = 0; i < n1; i++) { + index$0 = SA1[i]; + SA1[i] = s1.array[index$0 + s1.offset]; + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + for (i = n1 - 1; i >= 0; i--) { + j = SA[i]; + SA[i] = -1; + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); +}; + +var SAIS$_make$LOArray$AIII = SAIS._make$LOArray$AIII; + +$__jsx_lazy_init(node, "__dirname", function () { + return eval("__dirname") + ""; +}); +$__jsx_lazy_init(node, "__filename", function () { + return eval("__filename") + ""; +}); +$__jsx_lazy_init(node, "fs", function () { + return node$require$S('fs'); +}); +$__jsx_lazy_init(node, "path", function () { + return node$require$S('path'); +}); +$__jsx_lazy_init(node, "child_process", function () { + return node$require$S('child_process'); +}); +$__jsx_lazy_init(node, "url", function () { + return node$require$S('url'); +}); +$__jsx_lazy_init(node, "http", function () { + return node$require$S('http'); +}); +$__jsx_lazy_init(node, "https", function () { + return node$require$S('https'); +}); +$__jsx_lazy_init(node, "net", function () { + return node$require$S('net'); +}); +$__jsx_lazy_init(Oktavia, "eof", function () { + return String.fromCharCode(0); +}); +$__jsx_lazy_init(Oktavia, "eob", function () { + return String.fromCharCode(1); +}); +$__jsx_lazy_init(Oktavia, "unknown", function () { + return String.fromCharCode(3); +}); +Binary._base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +$__jsx_lazy_init(Binary, "_base64DecodeChars", function () { + return [ -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, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 ]; +}); +js.global = (function () { return this; })(); +$__jsx_lazy_init(_Common, "buffers", function () { + return [ "comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script" ]; +}); +$__jsx_lazy_init(_Common, "EVENTS", function () { + return [ "text", "processinginstruction", "sgmldeclaration", "doctype", "comment", "attribute", "opentag", "closetag", "opencdata", "cdata", "clo_State.CDATA", "error", "end", "ready", "script", "opennamespace", "closenamespace" ]; +}); +_Common.MAX_BUFFER_LENGTH = 65536; +_State.BEGIN = 1; +_State.TEXT = 2; +_State.TEXT_ENTITY = 3; +_State.OPEN_WAKA = 4; +_State.SGML_DECL = 5; +_State.SGML_DECL_QUOTED = 6; +_State.DOCTYPE = 7; +_State.DOCTYPE_QUOTED = 8; +_State.DOCTYPE_DTD = 9; +_State.DOCTYPE_DTD_QUOTED = 10; +_State.COMMENT_STARTING = 11; +_State.COMMENT = 12; +_State.COMMENT_ENDING = 13; +_State.COMMENT_ENDED = 14; +_State.CDATA = 15; +_State.CDATA_ENDING = 16; +_State.CDATA_ENDING_2 = 17; +_State.PROC_INST = 18; +_State.PROC_INST_BODY = 19; +_State.PROC_INST_ENDING = 20; +_State.OPEN_TAG = 21; +_State.OPEN_TAG_SLASH = 22; +_State.ATTRIB = 23; +_State.ATTRIB_NAME = 24; +_State.ATTRIB_NAME_SAW_WHITE = 25; +_State.ATTRIB_VALUE = 26; +_State.ATTRIB_VALUE_QUOTED = 27; +_State.ATTRIB_VALUE_UNQUOTED = 28; +_State.ATTRIB_VALUE_ENTITY_Q = 29; +_State.ATTRIB_VALUE_ENTITY_U = 30; +_State.CLOSE_TAG = 31; +_State.CLOSE_TAG_SAW_WHITE = 32; +_State.SCRIPT = 33; +_State.SCRIPT_ENDING = 34; +$__jsx_lazy_init(_Entities, "_entities", function () { + return ({ "amp": "&", "gt": ">", "lt": "<", "quot": "\"", "apos": "'", "AElig": 198, "Aacute": 193, "Acirc": 194, "Agrave": 192, "Aring": 197, "Atilde": 195, "Auml": 196, "Ccedil": 199, "ETH": 208, "Eacute": 201, "Ecirc": 202, "Egrave": 200, "Euml": 203, "Iacute": 205, "Icirc": 206, "Igrave": 204, "Iuml": 207, "Ntilde": 209, "Oacute": 211, "Ocirc": 212, "Ograve": 210, "Oslash": 216, "Otilde": 213, "Ouml": 214, "THORN": 222, "Uacute": 218, "Ucirc": 219, "Ugrave": 217, "Uuml": 220, "Yacute": 221, "aacute": 225, "acirc": 226, "aelig": 230, "agrave": 224, "aring": 229, "atilde": 227, "auml": 228, "ccedil": 231, "eacute": 233, "ecirc": 234, "egrave": 232, "eth": 240, "euml": 235, "iacute": 237, "icirc": 238, "igrave": 236, "iuml": 239, "ntilde": 241, "oacute": 243, "ocirc": 244, "ograve": 242, "oslash": 248, "otilde": 245, "ouml": 246, "szlig": 223, "thorn": 254, "uacute": 250, "ucirc": 251, "ugrave": 249, "uuml": 252, "yacute": 253, "yuml": 255, "copy": 169, "reg": 174, "nbsp": 160, "iexcl": 161, "cent": 162, "pound": 163, "curren": 164, "yen": 165, "brvbar": 166, "sect": 167, "uml": 168, "ordf": 170, "laquo": 171, "not": 172, "shy": 173, "macr": 175, "deg": 176, "plusmn": 177, "sup1": 185, "sup2": 178, "sup3": 179, "acute": 180, "micro": 181, "para": 182, "middot": 183, "cedil": 184, "ordm": 186, "raquo": 187, "frac14": 188, "frac12": 189, "frac34": 190, "iquest": 191, "times": 215, "divide": 247, "OElig": 338, "oelig": 339, "Scaron": 352, "scaron": 353, "Yuml": 376, "fnof": 402, "circ": 710, "tilde": 732, "Alpha": 913, "Beta": 914, "Gamma": 915, "Delta": 916, "Epsilon": 917, "Zeta": 918, "Eta": 919, "Theta": 920, "Iota": 921, "Kappa": 922, "Lambda": 923, "Mu": 924, "Nu": 925, "Xi": 926, "Omicron": 927, "Pi": 928, "Rho": 929, "Sigma": 931, "Tau": 932, "Upsilon": 933, "Phi": 934, "Chi": 935, "Psi": 936, "Omega": 937, "alpha": 945, "beta": 946, "gamma": 947, "delta": 948, "epsilon": 949, "zeta": 950, "eta": 951, "theta": 952, "iota": 953, "kappa": 954, "lambda": 955, "mu": 956, "nu": 957, "xi": 958, "omicron": 959, "pi": 960, "rho": 961, "sigmaf": 962, "sigma": 963, "tau": 964, "upsilon": 965, "phi": 966, "chi": 967, "psi": 968, "omega": 969, "thetasym": 977, "upsih": 978, "piv": 982, "ensp": 8194, "emsp": 8195, "thinsp": 8201, "zwnj": 8204, "zwj": 8205, "lrm": 8206, "rlm": 8207, "ndash": 8211, "mdash": 8212, "lsquo": 8216, "rsquo": 8217, "sbquo": 8218, "ldquo": 8220, "rdquo": 8221, "bdquo": 8222, "dagger": 8224, "Dagger": 8225, "bull": 8226, "hellip": 8230, "permil": 8240, "prime": 8242, "Prime": 8243, "lsaquo": 8249, "rsaquo": 8250, "oline": 8254, "frasl": 8260, "euro": 8364, "image": 8465, "weierp": 8472, "real": 8476, "trade": 8482, "alefsym": 8501, "larr": 8592, "uarr": 8593, "rarr": 8594, "darr": 8595, "harr": 8596, "crarr": 8629, "lArr": 8656, "uArr": 8657, "rArr": 8658, "dArr": 8659, "hArr": 8660, "forall": 8704, "part": 8706, "exist": 8707, "empty": 8709, "nabla": 8711, "isin": 8712, "notin": 8713, "ni": 8715, "prod": 8719, "sum": 8721, "minus": 8722, "lowast": 8727, "radic": 8730, "prop": 8733, "infin": 8734, "ang": 8736, "and": 8743, "or": 8744, "cap": 8745, "cup": 8746, "int": 8747, "there4": 8756, "sim": 8764, "cong": 8773, "asymp": 8776, "ne": 8800, "equiv": 8801, "le": 8804, "ge": 8805, "sub": 8834, "sup": 8835, "nsub": 8836, "sube": 8838, "supe": 8839, "oplus": 8853, "otimes": 8855, "perp": 8869, "sdot": 8901, "lceil": 8968, "rceil": 8969, "lfloor": 8970, "rfloor": 8971, "lang": 9001, "rang": 9002, "loz": 9674, "spades": 9824, "clubs": 9827, "hearts": 9829, "diams": 9830 }); +}); +TurkishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(TurkishStemmer, "methodObject", function () { + return new TurkishStemmer$(); +}); +$__jsx_lazy_init(TurkishStemmer, "a_0", function () { + return [ new Among$SII("m", -1, -1), new Among$SII("n", -1, -1), new Among$SII("miz", -1, -1), new Among$SII("niz", -1, -1), new Among$SII("muz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("m\u00FCz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("m\u0131z", -1, -1), new Among$SII("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_1", function () { + return [ new Among$SII("leri", -1, -1), new Among$SII("lar\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_2", function () { + return [ new Among$SII("ni", -1, -1), new Among$SII("nu", -1, -1), new Among$SII("n\u00FC", -1, -1), new Among$SII("n\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_3", function () { + return [ new Among$SII("in", -1, -1), new Among$SII("un", -1, -1), new Among$SII("\u00FCn", -1, -1), new Among$SII("\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_4", function () { + return [ new Among$SII("a", -1, -1), new Among$SII("e", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_5", function () { + return [ new Among$SII("na", -1, -1), new Among$SII("ne", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_6", function () { + return [ new Among$SII("da", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("de", -1, -1), new Among$SII("te", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_7", function () { + return [ new Among$SII("nda", -1, -1), new Among$SII("nde", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_8", function () { + return [ new Among$SII("dan", -1, -1), new Among$SII("tan", -1, -1), new Among$SII("den", -1, -1), new Among$SII("ten", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_9", function () { + return [ new Among$SII("ndan", -1, -1), new Among$SII("nden", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_10", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("le", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_11", function () { + return [ new Among$SII("ca", -1, -1), new Among$SII("ce", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_12", function () { + return [ new Among$SII("im", -1, -1), new Among$SII("um", -1, -1), new Among$SII("\u00FCm", -1, -1), new Among$SII("\u0131m", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_13", function () { + return [ new Among$SII("sin", -1, -1), new Among$SII("sun", -1, -1), new Among$SII("s\u00FCn", -1, -1), new Among$SII("s\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_14", function () { + return [ new Among$SII("iz", -1, -1), new Among$SII("uz", -1, -1), new Among$SII("\u00FCz", -1, -1), new Among$SII("\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_15", function () { + return [ new Among$SII("siniz", -1, -1), new Among$SII("sunuz", -1, -1), new Among$SII("s\u00FCn\u00FCz", -1, -1), new Among$SII("s\u0131n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_16", function () { + return [ new Among$SII("lar", -1, -1), new Among$SII("ler", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_17", function () { + return [ new Among$SII("niz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_18", function () { + return [ new Among$SII("dir", -1, -1), new Among$SII("tir", -1, -1), new Among$SII("dur", -1, -1), new Among$SII("tur", -1, -1), new Among$SII("d\u00FCr", -1, -1), new Among$SII("t\u00FCr", -1, -1), new Among$SII("d\u0131r", -1, -1), new Among$SII("t\u0131r", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_19", function () { + return [ new Among$SII("cas\u0131na", -1, -1), new Among$SII("cesine", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_20", function () { + return [ new Among$SII("di", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("dik", -1, -1), new Among$SII("tik", -1, -1), new Among$SII("duk", -1, -1), new Among$SII("tuk", -1, -1), new Among$SII("d\u00FCk", -1, -1), new Among$SII("t\u00FCk", -1, -1), new Among$SII("d\u0131k", -1, -1), new Among$SII("t\u0131k", -1, -1), new Among$SII("dim", -1, -1), new Among$SII("tim", -1, -1), new Among$SII("dum", -1, -1), new Among$SII("tum", -1, -1), new Among$SII("d\u00FCm", -1, -1), new Among$SII("t\u00FCm", -1, -1), new Among$SII("d\u0131m", -1, -1), new Among$SII("t\u0131m", -1, -1), new Among$SII("din", -1, -1), new Among$SII("tin", -1, -1), new Among$SII("dun", -1, -1), new Among$SII("tun", -1, -1), new Among$SII("d\u00FCn", -1, -1), new Among$SII("t\u00FCn", -1, -1), new Among$SII("d\u0131n", -1, -1), new Among$SII("t\u0131n", -1, -1), new Among$SII("du", -1, -1), new Among$SII("tu", -1, -1), new Among$SII("d\u00FC", -1, -1), new Among$SII("t\u00FC", -1, -1), new Among$SII("d\u0131", -1, -1), new Among$SII("t\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_21", function () { + return [ new Among$SII("sa", -1, -1), new Among$SII("se", -1, -1), new Among$SII("sak", -1, -1), new Among$SII("sek", -1, -1), new Among$SII("sam", -1, -1), new Among$SII("sem", -1, -1), new Among$SII("san", -1, -1), new Among$SII("sen", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_22", function () { + return [ new Among$SII("mi\u015F", -1, -1), new Among$SII("mu\u015F", -1, -1), new Among$SII("m\u00FC\u015F", -1, -1), new Among$SII("m\u0131\u015F", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_23", function () { + return [ new Among$SII("b", -1, 1), new Among$SII("c", -1, 2), new Among$SII("d", -1, 3), new Among$SII("\u011F", -1, 4) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_U", function () { + return [ 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel1", function () { + return [ 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel2", function () { + return [ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel3", function () { + return [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel4", function () { + return [ 17 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel5", function () { + return [ 65 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel6", function () { + return [ 65 ]; +}); +SwedishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SwedishStemmer, "methodObject", function () { + return new SwedishStemmer$(); +}); +$__jsx_lazy_init(SwedishStemmer, "a_0", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("arna", 0, 1), new Among$SII("erna", 0, 1), new Among$SII("heterna", 2, 1), new Among$SII("orna", 0, 1), new Among$SII("ad", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ade", 6, 1), new Among$SII("ande", 6, 1), new Among$SII("arne", 6, 1), new Among$SII("are", 6, 1), new Among$SII("aste", 6, 1), new Among$SII("en", -1, 1), new Among$SII("anden", 12, 1), new Among$SII("aren", 12, 1), new Among$SII("heten", 12, 1), new Among$SII("ern", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 18, 1), new Among$SII("or", -1, 1), new Among$SII("s", -1, 2), new Among$SII("as", 21, 1), new Among$SII("arnas", 22, 1), new Among$SII("ernas", 22, 1), new Among$SII("ornas", 22, 1), new Among$SII("es", 21, 1), new Among$SII("ades", 26, 1), new Among$SII("andes", 26, 1), new Among$SII("ens", 21, 1), new Among$SII("arens", 29, 1), new Among$SII("hetens", 29, 1), new Among$SII("erns", 21, 1), new Among$SII("at", -1, 1), new Among$SII("andet", -1, 1), new Among$SII("het", -1, 1), new Among$SII("ast", -1, 1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_1", function () { + return [ new Among$SII("dd", -1, -1), new Among$SII("gd", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1), new Among$SII("tt", -1, -1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_2", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("els", -1, 1), new Among$SII("fullt", -1, 3), new Among$SII("l\u00F6st", -1, 2) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 ]; +}); +$__jsx_lazy_init(SwedishStemmer, "g_s_ending", function () { + return [ 119, 127, 149 ]; +}); +SpanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SpanishStemmer, "methodObject", function () { + return new SpanishStemmer$(); +}); +$__jsx_lazy_init(SpanishStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_1", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("sela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("me", -1, -1), new Among$SII("se", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("selo", 5, -1), new Among$SII("las", -1, -1), new Among$SII("selas", 7, -1), new Among$SII("les", -1, -1), new Among$SII("los", -1, -1), new Among$SII("selos", 10, -1), new Among$SII("nos", -1, -1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_2", function () { + return [ new Among$SII("ando", -1, 6), new Among$SII("iendo", -1, 6), new Among$SII("yendo", -1, 7), new Among$SII("\u00E1ndo", -1, 2), new Among$SII("i\u00E9ndo", -1, 1), new Among$SII("ar", -1, 6), new Among$SII("er", -1, 6), new Among$SII("ir", -1, 6), new Among$SII("\u00E1r", -1, 3), new Among$SII("\u00E9r", -1, 4), new Among$SII("\u00EDr", -1, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_3", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_4", function () { + return [ new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_6", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("ancia", -1, 2), new Among$SII("encia", -1, 5), new Among$SII("adora", -1, 2), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("log\u00EDa", -1, 3), new Among$SII("idad", -1, 8), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 2), new Among$SII("mente", -1, 7), new Among$SII("amente", 13, 6), new Among$SII("aci\u00F3n", -1, 2), new Among$SII("uci\u00F3n", -1, 4), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amiento", -1, 1), new Among$SII("imiento", -1, 1), new Among$SII("ivo", -1, 9), new Among$SII("ador", -1, 2), new Among$SII("icas", -1, 1), new Among$SII("ancias", -1, 2), new Among$SII("encias", -1, 5), new Among$SII("adoras", -1, 2), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 9), new Among$SII("anzas", -1, 1), new Among$SII("log\u00EDas", -1, 3), new Among$SII("idades", -1, 8), new Among$SII("ables", -1, 1), new Among$SII("ibles", -1, 1), new Among$SII("aciones", -1, 2), new Among$SII("uciones", -1, 4), new Among$SII("adores", -1, 2), new Among$SII("antes", -1, 2), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amientos", -1, 1), new Among$SII("imientos", -1, 1), new Among$SII("ivos", -1, 9) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_7", function () { + return [ new Among$SII("ya", -1, 1), new Among$SII("ye", -1, 1), new Among$SII("yan", -1, 1), new Among$SII("yen", -1, 1), new Among$SII("yeron", -1, 1), new Among$SII("yendo", -1, 1), new Among$SII("yo", -1, 1), new Among$SII("yas", -1, 1), new Among$SII("yes", -1, 1), new Among$SII("yais", -1, 1), new Among$SII("yamos", -1, 1), new Among$SII("y\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_8", function () { + return [ new Among$SII("aba", -1, 2), new Among$SII("ada", -1, 2), new Among$SII("ida", -1, 2), new Among$SII("ara", -1, 2), new Among$SII("iera", -1, 2), new Among$SII("\u00EDa", -1, 2), new Among$SII("ar\u00EDa", 5, 2), new Among$SII("er\u00EDa", 5, 2), new Among$SII("ir\u00EDa", 5, 2), new Among$SII("ad", -1, 2), new Among$SII("ed", -1, 2), new Among$SII("id", -1, 2), new Among$SII("ase", -1, 2), new Among$SII("iese", -1, 2), new Among$SII("aste", -1, 2), new Among$SII("iste", -1, 2), new Among$SII("an", -1, 2), new Among$SII("aban", 16, 2), new Among$SII("aran", 16, 2), new Among$SII("ieran", 16, 2), new Among$SII("\u00EDan", 16, 2), new Among$SII("ar\u00EDan", 20, 2), new Among$SII("er\u00EDan", 20, 2), new Among$SII("ir\u00EDan", 20, 2), new Among$SII("en", -1, 1), new Among$SII("asen", 24, 2), new Among$SII("iesen", 24, 2), new Among$SII("aron", -1, 2), new Among$SII("ieron", -1, 2), new Among$SII("ar\u00E1n", -1, 2), new Among$SII("er\u00E1n", -1, 2), new Among$SII("ir\u00E1n", -1, 2), new Among$SII("ado", -1, 2), new Among$SII("ido", -1, 2), new Among$SII("ando", -1, 2), new Among$SII("iendo", -1, 2), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2), new Among$SII("as", -1, 2), new Among$SII("abas", 39, 2), new Among$SII("adas", 39, 2), new Among$SII("idas", 39, 2), new Among$SII("aras", 39, 2), new Among$SII("ieras", 39, 2), new Among$SII("\u00EDas", 39, 2), new Among$SII("ar\u00EDas", 45, 2), new Among$SII("er\u00EDas", 45, 2), new Among$SII("ir\u00EDas", 45, 2), new Among$SII("es", -1, 1), new Among$SII("ases", 49, 2), new Among$SII("ieses", 49, 2), new Among$SII("abais", -1, 2), new Among$SII("arais", -1, 2), new Among$SII("ierais", -1, 2), new Among$SII("\u00EDais", -1, 2), new Among$SII("ar\u00EDais", 55, 2), new Among$SII("er\u00EDais", 55, 2), new Among$SII("ir\u00EDais", 55, 2), new Among$SII("aseis", -1, 2), new Among$SII("ieseis", -1, 2), new Among$SII("asteis", -1, 2), new Among$SII("isteis", -1, 2), new Among$SII("\u00E1is", -1, 2), new Among$SII("\u00E9is", -1, 1), new Among$SII("ar\u00E9is", 64, 2), new Among$SII("er\u00E9is", 64, 2), new Among$SII("ir\u00E9is", 64, 2), new Among$SII("ados", -1, 2), new Among$SII("idos", -1, 2), new Among$SII("amos", -1, 2), new Among$SII("\u00E1bamos", 70, 2), new Among$SII("\u00E1ramos", 70, 2), new Among$SII("i\u00E9ramos", 70, 2), new Among$SII("\u00EDamos", 70, 2), new Among$SII("ar\u00EDamos", 74, 2), new Among$SII("er\u00EDamos", 74, 2), new Among$SII("ir\u00EDamos", 74, 2), new Among$SII("emos", -1, 1), new Among$SII("aremos", 78, 2), new Among$SII("eremos", 78, 2), new Among$SII("iremos", 78, 2), new Among$SII("\u00E1semos", 78, 2), new Among$SII("i\u00E9semos", 78, 2), new Among$SII("imos", -1, 2), new Among$SII("ar\u00E1s", -1, 2), new Among$SII("er\u00E1s", -1, 2), new Among$SII("ir\u00E1s", -1, 2), new Among$SII("\u00EDs", -1, 2), new Among$SII("ar\u00E1", -1, 2), new Among$SII("er\u00E1", -1, 2), new Among$SII("ir\u00E1", -1, 2), new Among$SII("ar\u00E9", -1, 2), new Among$SII("er\u00E9", -1, 2), new Among$SII("ir\u00E9", -1, 2), new Among$SII("i\u00F3", -1, 2) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_9", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 2), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 ]; +}); +RussianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RussianStemmer, "methodObject", function () { + return new RussianStemmer$(); +}); +$__jsx_lazy_init(RussianStemmer, "a_0", function () { + return [ new Among$SII("\u0432", -1, 1), new Among$SII("\u0438\u0432", 0, 2), new Among$SII("\u044B\u0432", 0, 2), new Among$SII("\u0432\u0448\u0438", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438", 3, 2), new Among$SII("\u044B\u0432\u0448\u0438", 3, 2), new Among$SII("\u0432\u0448\u0438\u0441\u044C", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), new Among$SII("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_1", function () { + return [ new Among$SII("\u0435\u0435", -1, 1), new Among$SII("\u0438\u0435", -1, 1), new Among$SII("\u043E\u0435", -1, 1), new Among$SII("\u044B\u0435", -1, 1), new Among$SII("\u0438\u043C\u0438", -1, 1), new Among$SII("\u044B\u043C\u0438", -1, 1), new Among$SII("\u0435\u0439", -1, 1), new Among$SII("\u0438\u0439", -1, 1), new Among$SII("\u043E\u0439", -1, 1), new Among$SII("\u044B\u0439", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044B\u043C", -1, 1), new Among$SII("\u0435\u0433\u043E", -1, 1), new Among$SII("\u043E\u0433\u043E", -1, 1), new Among$SII("\u0435\u043C\u0443", -1, 1), new Among$SII("\u043E\u043C\u0443", -1, 1), new Among$SII("\u0438\u0445", -1, 1), new Among$SII("\u044B\u0445", -1, 1), new Among$SII("\u0435\u044E", -1, 1), new Among$SII("\u043E\u044E", -1, 1), new Among$SII("\u0443\u044E", -1, 1), new Among$SII("\u044E\u044E", -1, 1), new Among$SII("\u0430\u044F", -1, 1), new Among$SII("\u044F\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_2", function () { + return [ new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u043D\u043D", -1, 1), new Among$SII("\u0432\u0448", -1, 1), new Among$SII("\u0438\u0432\u0448", 2, 2), new Among$SII("\u044B\u0432\u0448", 2, 2), new Among$SII("\u0449", -1, 1), new Among$SII("\u044E\u0449", 5, 1), new Among$SII("\u0443\u044E\u0449", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_3", function () { + return [ new Among$SII("\u0441\u044C", -1, 1), new Among$SII("\u0441\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_4", function () { + return [ new Among$SII("\u043B\u0430", -1, 1), new Among$SII("\u0438\u043B\u0430", 0, 2), new Among$SII("\u044B\u043B\u0430", 0, 2), new Among$SII("\u043D\u0430", -1, 1), new Among$SII("\u0435\u043D\u0430", 3, 2), new Among$SII("\u0435\u0442\u0435", -1, 1), new Among$SII("\u0438\u0442\u0435", -1, 2), new Among$SII("\u0439\u0442\u0435", -1, 1), new Among$SII("\u0435\u0439\u0442\u0435", 7, 2), new Among$SII("\u0443\u0439\u0442\u0435", 7, 2), new Among$SII("\u043B\u0438", -1, 1), new Among$SII("\u0438\u043B\u0438", 10, 2), new Among$SII("\u044B\u043B\u0438", 10, 2), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 13, 2), new Among$SII("\u0443\u0439", 13, 2), new Among$SII("\u043B", -1, 1), new Among$SII("\u0438\u043B", 16, 2), new Among$SII("\u044B\u043B", 16, 2), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 2), new Among$SII("\u044B\u043C", -1, 2), new Among$SII("\u043D", -1, 1), new Among$SII("\u0435\u043D", 22, 2), new Among$SII("\u043B\u043E", -1, 1), new Among$SII("\u0438\u043B\u043E", 24, 2), new Among$SII("\u044B\u043B\u043E", 24, 2), new Among$SII("\u043D\u043E", -1, 1), new Among$SII("\u0435\u043D\u043E", 27, 2), new Among$SII("\u043D\u043D\u043E", 27, 1), new Among$SII("\u0435\u0442", -1, 1), new Among$SII("\u0443\u0435\u0442", 30, 2), new Among$SII("\u0438\u0442", -1, 2), new Among$SII("\u044B\u0442", -1, 2), new Among$SII("\u044E\u0442", -1, 1), new Among$SII("\u0443\u044E\u0442", 34, 2), new Among$SII("\u044F\u0442", -1, 2), new Among$SII("\u043D\u044B", -1, 1), new Among$SII("\u0435\u043D\u044B", 37, 2), new Among$SII("\u0442\u044C", -1, 1), new Among$SII("\u0438\u0442\u044C", 39, 2), new Among$SII("\u044B\u0442\u044C", 39, 2), new Among$SII("\u0435\u0448\u044C", -1, 1), new Among$SII("\u0438\u0448\u044C", -1, 2), new Among$SII("\u044E", -1, 2), new Among$SII("\u0443\u044E", 44, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_5", function () { + return [ new Among$SII("\u0430", -1, 1), new Among$SII("\u0435\u0432", -1, 1), new Among$SII("\u043E\u0432", -1, 1), new Among$SII("\u0435", -1, 1), new Among$SII("\u0438\u0435", 3, 1), new Among$SII("\u044C\u0435", 3, 1), new Among$SII("\u0438", -1, 1), new Among$SII("\u0435\u0438", 6, 1), new Among$SII("\u0438\u0438", 6, 1), new Among$SII("\u0430\u043C\u0438", 6, 1), new Among$SII("\u044F\u043C\u0438", 6, 1), new Among$SII("\u0438\u044F\u043C\u0438", 10, 1), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 12, 1), new Among$SII("\u0438\u0435\u0439", 13, 1), new Among$SII("\u0438\u0439", 12, 1), new Among$SII("\u043E\u0439", 12, 1), new Among$SII("\u0430\u043C", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u0435\u043C", 18, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044F\u043C", -1, 1), new Among$SII("\u0438\u044F\u043C", 21, 1), new Among$SII("\u043E", -1, 1), new Among$SII("\u0443", -1, 1), new Among$SII("\u0430\u0445", -1, 1), new Among$SII("\u044F\u0445", -1, 1), new Among$SII("\u0438\u044F\u0445", 26, 1), new Among$SII("\u044B", -1, 1), new Among$SII("\u044C", -1, 1), new Among$SII("\u044E", -1, 1), new Among$SII("\u0438\u044E", 30, 1), new Among$SII("\u044C\u044E", 30, 1), new Among$SII("\u044F", -1, 1), new Among$SII("\u0438\u044F", 33, 1), new Among$SII("\u044C\u044F", 33, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_6", function () { + return [ new Among$SII("\u043E\u0441\u0442", -1, 1), new Among$SII("\u043E\u0441\u0442\u044C", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_7", function () { + return [ new Among$SII("\u0435\u0439\u0448\u0435", -1, 1), new Among$SII("\u043D", -1, 2), new Among$SII("\u0435\u0439\u0448", -1, 1), new Among$SII("\u044C", -1, 3) ]; +}); +$__jsx_lazy_init(RussianStemmer, "g_v", function () { + return [ 33, 65, 8, 232 ]; +}); +RomanianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RomanianStemmer, "methodObject", function () { + return new RomanianStemmer$(); +}); +$__jsx_lazy_init(RomanianStemmer, "a_0", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_1", function () { + return [ new Among$SII("ea", -1, 3), new Among$SII("a\u0163ia", -1, 7), new Among$SII("aua", -1, 2), new Among$SII("iua", -1, 4), new Among$SII("a\u0163ie", -1, 7), new Among$SII("ele", -1, 3), new Among$SII("ile", -1, 5), new Among$SII("iile", 6, 4), new Among$SII("iei", -1, 4), new Among$SII("atei", -1, 6), new Among$SII("ii", -1, 4), new Among$SII("ului", -1, 1), new Among$SII("ul", -1, 1), new Among$SII("elor", -1, 3), new Among$SII("ilor", -1, 4), new Among$SII("iilor", 14, 4) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_2", function () { + return [ new Among$SII("icala", -1, 4), new Among$SII("iciva", -1, 4), new Among$SII("ativa", -1, 5), new Among$SII("itiva", -1, 6), new Among$SII("icale", -1, 4), new Among$SII("a\u0163iune", -1, 5), new Among$SII("i\u0163iune", -1, 6), new Among$SII("atoare", -1, 5), new Among$SII("itoare", -1, 6), new Among$SII("\u0103toare", -1, 5), new Among$SII("icitate", -1, 4), new Among$SII("abilitate", -1, 1), new Among$SII("ibilitate", -1, 2), new Among$SII("ivitate", -1, 3), new Among$SII("icive", -1, 4), new Among$SII("ative", -1, 5), new Among$SII("itive", -1, 6), new Among$SII("icali", -1, 4), new Among$SII("atori", -1, 5), new Among$SII("icatori", 18, 4), new Among$SII("itori", -1, 6), new Among$SII("\u0103tori", -1, 5), new Among$SII("icitati", -1, 4), new Among$SII("abilitati", -1, 1), new Among$SII("ivitati", -1, 3), new Among$SII("icivi", -1, 4), new Among$SII("ativi", -1, 5), new Among$SII("itivi", -1, 6), new Among$SII("icit\u0103i", -1, 4), new Among$SII("abilit\u0103i", -1, 1), new Among$SII("ivit\u0103i", -1, 3), new Among$SII("icit\u0103\u0163i", -1, 4), new Among$SII("abilit\u0103\u0163i", -1, 1), new Among$SII("ivit\u0103\u0163i", -1, 3), new Among$SII("ical", -1, 4), new Among$SII("ator", -1, 5), new Among$SII("icator", 35, 4), new Among$SII("itor", -1, 6), new Among$SII("\u0103tor", -1, 5), new Among$SII("iciv", -1, 4), new Among$SII("ativ", -1, 5), new Among$SII("itiv", -1, 6), new Among$SII("ical\u0103", -1, 4), new Among$SII("iciv\u0103", -1, 4), new Among$SII("ativ\u0103", -1, 5), new Among$SII("itiv\u0103", -1, 6) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_3", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("abila", -1, 1), new Among$SII("ibila", -1, 1), new Among$SII("oasa", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("anta", -1, 1), new Among$SII("ista", -1, 3), new Among$SII("uta", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("ic", -1, 1), new Among$SII("ice", -1, 1), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("isme", -1, 3), new Among$SII("iune", -1, 2), new Among$SII("oase", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("itate", 17, 1), new Among$SII("ite", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("iste", -1, 3), new Among$SII("ute", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ici", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("iuni", -1, 2), new Among$SII("atori", -1, 1), new Among$SII("osi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("itati", 30, 1), new Among$SII("iti", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("isti", -1, 3), new Among$SII("uti", -1, 1), new Among$SII("i\u015Fti", -1, 3), new Among$SII("ivi", -1, 1), new Among$SII("it\u0103i", -1, 1), new Among$SII("o\u015Fi", -1, 1), new Among$SII("it\u0103\u0163i", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("ibil", -1, 1), new Among$SII("ism", -1, 3), new Among$SII("ator", -1, 1), new Among$SII("os", -1, 1), new Among$SII("at", -1, 1), new Among$SII("it", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ist", -1, 3), new Among$SII("ut", -1, 1), new Among$SII("iv", -1, 1), new Among$SII("ic\u0103", -1, 1), new Among$SII("abil\u0103", -1, 1), new Among$SII("ibil\u0103", -1, 1), new Among$SII("oas\u0103", -1, 1), new Among$SII("at\u0103", -1, 1), new Among$SII("it\u0103", -1, 1), new Among$SII("ant\u0103", -1, 1), new Among$SII("ist\u0103", -1, 3), new Among$SII("ut\u0103", -1, 1), new Among$SII("iv\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_4", function () { + return [ new Among$SII("ea", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("esc", -1, 1), new Among$SII("\u0103sc", -1, 1), new Among$SII("ind", -1, 1), new Among$SII("\u00E2nd", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("\u00E2re", -1, 1), new Among$SII("se", -1, 2), new Among$SII("ase", 10, 1), new Among$SII("sese", 10, 2), new Among$SII("ise", 10, 1), new Among$SII("use", 10, 1), new Among$SII("\u00E2se", 10, 1), new Among$SII("e\u015Fte", -1, 1), new Among$SII("\u0103\u015Fte", -1, 1), new Among$SII("eze", -1, 1), new Among$SII("ai", -1, 1), new Among$SII("eai", 19, 1), new Among$SII("iai", 19, 1), new Among$SII("sei", -1, 2), new Among$SII("e\u015Fti", -1, 1), new Among$SII("\u0103\u015Fti", -1, 1), new Among$SII("ui", -1, 1), new Among$SII("ezi", -1, 1), new Among$SII("\u00E2i", -1, 1), new Among$SII("a\u015Fi", -1, 1), new Among$SII("se\u015Fi", -1, 2), new Among$SII("ase\u015Fi", 29, 1), new Among$SII("sese\u015Fi", 29, 2), new Among$SII("ise\u015Fi", 29, 1), new Among$SII("use\u015Fi", 29, 1), new Among$SII("\u00E2se\u015Fi", 29, 1), new Among$SII("i\u015Fi", -1, 1), new Among$SII("u\u015Fi", -1, 1), new Among$SII("\u00E2\u015Fi", -1, 1), new Among$SII("a\u0163i", -1, 2), new Among$SII("ea\u0163i", 38, 1), new Among$SII("ia\u0163i", 38, 1), new Among$SII("e\u0163i", -1, 2), new Among$SII("i\u0163i", -1, 2), new Among$SII("\u00E2\u0163i", -1, 2), new Among$SII("ar\u0103\u0163i", -1, 1), new Among$SII("ser\u0103\u0163i", -1, 2), new Among$SII("aser\u0103\u0163i", 45, 1), new Among$SII("seser\u0103\u0163i", 45, 2), new Among$SII("iser\u0103\u0163i", 45, 1), new Among$SII("user\u0103\u0163i", 45, 1), new Among$SII("\u00E2ser\u0103\u0163i", 45, 1), new Among$SII("ir\u0103\u0163i", -1, 1), new Among$SII("ur\u0103\u0163i", -1, 1), new Among$SII("\u00E2r\u0103\u0163i", -1, 1), new Among$SII("am", -1, 1), new Among$SII("eam", 54, 1), new Among$SII("iam", 54, 1), new Among$SII("em", -1, 2), new Among$SII("asem", 57, 1), new Among$SII("sesem", 57, 2), new Among$SII("isem", 57, 1), new Among$SII("usem", 57, 1), new Among$SII("\u00E2sem", 57, 1), new Among$SII("im", -1, 2), new Among$SII("\u00E2m", -1, 2), new Among$SII("\u0103m", -1, 2), new Among$SII("ar\u0103m", 65, 1), new Among$SII("ser\u0103m", 65, 2), new Among$SII("aser\u0103m", 67, 1), new Among$SII("seser\u0103m", 67, 2), new Among$SII("iser\u0103m", 67, 1), new Among$SII("user\u0103m", 67, 1), new Among$SII("\u00E2ser\u0103m", 67, 1), new Among$SII("ir\u0103m", 65, 1), new Among$SII("ur\u0103m", 65, 1), new Among$SII("\u00E2r\u0103m", 65, 1), new Among$SII("au", -1, 1), new Among$SII("eau", 76, 1), new Among$SII("iau", 76, 1), new Among$SII("indu", -1, 1), new Among$SII("\u00E2ndu", -1, 1), new Among$SII("ez", -1, 1), new Among$SII("easc\u0103", -1, 1), new Among$SII("ar\u0103", -1, 1), new Among$SII("ser\u0103", -1, 2), new Among$SII("aser\u0103", 84, 1), new Among$SII("seser\u0103", 84, 2), new Among$SII("iser\u0103", 84, 1), new Among$SII("user\u0103", 84, 1), new Among$SII("\u00E2ser\u0103", 84, 1), new Among$SII("ir\u0103", -1, 1), new Among$SII("ur\u0103", -1, 1), new Among$SII("\u00E2r\u0103", -1, 1), new Among$SII("eaz\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_5", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ie", 1, 1), new Among$SII("i", -1, 1), new Among$SII("\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 ]; +}); +PortugueseStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PortugueseStemmer, "methodObject", function () { + return new PortugueseStemmer$(); +}); +$__jsx_lazy_init(PortugueseStemmer, "a_0", function () { + return [ new Among$SII("", -1, 3), new Among$SII("\u00E3", 0, 1), new Among$SII("\u00F5", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("a~", 0, 1), new Among$SII("o~", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_2", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_3", function () { + return [ new Among$SII("ante", -1, 1), new Among$SII("avel", -1, 1), new Among$SII("\u00EDvel", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_4", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_5", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("\u00E2ncia", -1, 1), new Among$SII("\u00EAncia", -1, 4), new Among$SII("ira", -1, 9), new Among$SII("adora", -1, 1), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 8), new Among$SII("eza", -1, 1), new Among$SII("log\u00EDa", -1, 2), new Among$SII("idade", -1, 7), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 6), new Among$SII("amente", 12, 5), new Among$SII("\u00E1vel", -1, 1), new Among$SII("\u00EDvel", -1, 1), new Among$SII("uci\u00F3n", -1, 3), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 1), new Among$SII("imento", -1, 1), new Among$SII("ivo", -1, 8), new Among$SII("a\u00E7a~o", -1, 1), new Among$SII("ador", -1, 1), new Among$SII("icas", -1, 1), new Among$SII("\u00EAncias", -1, 4), new Among$SII("iras", -1, 9), new Among$SII("adoras", -1, 1), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 8), new Among$SII("ezas", -1, 1), new Among$SII("log\u00EDas", -1, 2), new Among$SII("idades", -1, 7), new Among$SII("uciones", -1, 3), new Among$SII("adores", -1, 1), new Among$SII("antes", -1, 1), new Among$SII("a\u00E7o~es", -1, 1), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amentos", -1, 1), new Among$SII("imentos", -1, 1), new Among$SII("ivos", -1, 8) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_6", function () { + return [ new Among$SII("ada", -1, 1), new Among$SII("ida", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("aria", 2, 1), new Among$SII("eria", 2, 1), new Among$SII("iria", 2, 1), new Among$SII("ara", -1, 1), new Among$SII("era", -1, 1), new Among$SII("ira", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("esse", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("aste", -1, 1), new Among$SII("este", -1, 1), new Among$SII("iste", -1, 1), new Among$SII("ei", -1, 1), new Among$SII("arei", 16, 1), new Among$SII("erei", 16, 1), new Among$SII("irei", 16, 1), new Among$SII("am", -1, 1), new Among$SII("iam", 20, 1), new Among$SII("ariam", 21, 1), new Among$SII("eriam", 21, 1), new Among$SII("iriam", 21, 1), new Among$SII("aram", 20, 1), new Among$SII("eram", 20, 1), new Among$SII("iram", 20, 1), new Among$SII("avam", 20, 1), new Among$SII("em", -1, 1), new Among$SII("arem", 29, 1), new Among$SII("erem", 29, 1), new Among$SII("irem", 29, 1), new Among$SII("assem", 29, 1), new Among$SII("essem", 29, 1), new Among$SII("issem", 29, 1), new Among$SII("ado", -1, 1), new Among$SII("ido", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("indo", -1, 1), new Among$SII("ara~o", -1, 1), new Among$SII("era~o", -1, 1), new Among$SII("ira~o", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("as", -1, 1), new Among$SII("adas", 47, 1), new Among$SII("idas", 47, 1), new Among$SII("ias", 47, 1), new Among$SII("arias", 50, 1), new Among$SII("erias", 50, 1), new Among$SII("irias", 50, 1), new Among$SII("aras", 47, 1), new Among$SII("eras", 47, 1), new Among$SII("iras", 47, 1), new Among$SII("avas", 47, 1), new Among$SII("es", -1, 1), new Among$SII("ardes", 58, 1), new Among$SII("erdes", 58, 1), new Among$SII("irdes", 58, 1), new Among$SII("ares", 58, 1), new Among$SII("eres", 58, 1), new Among$SII("ires", 58, 1), new Among$SII("asses", 58, 1), new Among$SII("esses", 58, 1), new Among$SII("isses", 58, 1), new Among$SII("astes", 58, 1), new Among$SII("estes", 58, 1), new Among$SII("istes", 58, 1), new Among$SII("is", -1, 1), new Among$SII("ais", 71, 1), new Among$SII("eis", 71, 1), new Among$SII("areis", 73, 1), new Among$SII("ereis", 73, 1), new Among$SII("ireis", 73, 1), new Among$SII("\u00E1reis", 73, 1), new Among$SII("\u00E9reis", 73, 1), new Among$SII("\u00EDreis", 73, 1), new Among$SII("\u00E1sseis", 73, 1), new Among$SII("\u00E9sseis", 73, 1), new Among$SII("\u00EDsseis", 73, 1), new Among$SII("\u00E1veis", 73, 1), new Among$SII("\u00EDeis", 73, 1), new Among$SII("ar\u00EDeis", 84, 1), new Among$SII("er\u00EDeis", 84, 1), new Among$SII("ir\u00EDeis", 84, 1), new Among$SII("ados", -1, 1), new Among$SII("idos", -1, 1), new Among$SII("amos", -1, 1), new Among$SII("\u00E1ramos", 90, 1), new Among$SII("\u00E9ramos", 90, 1), new Among$SII("\u00EDramos", 90, 1), new Among$SII("\u00E1vamos", 90, 1), new Among$SII("\u00EDamos", 90, 1), new Among$SII("ar\u00EDamos", 95, 1), new Among$SII("er\u00EDamos", 95, 1), new Among$SII("ir\u00EDamos", 95, 1), new Among$SII("emos", -1, 1), new Among$SII("aremos", 99, 1), new Among$SII("eremos", 99, 1), new Among$SII("iremos", 99, 1), new Among$SII("\u00E1ssemos", 99, 1), new Among$SII("\u00EAssemos", 99, 1), new Among$SII("\u00EDssemos", 99, 1), new Among$SII("imos", -1, 1), new Among$SII("armos", -1, 1), new Among$SII("ermos", -1, 1), new Among$SII("irmos", -1, 1), new Among$SII("\u00E1mos", -1, 1), new Among$SII("ar\u00E1s", -1, 1), new Among$SII("er\u00E1s", -1, 1), new Among$SII("ir\u00E1s", -1, 1), new Among$SII("eu", -1, 1), new Among$SII("iu", -1, 1), new Among$SII("ou", -1, 1), new Among$SII("ar\u00E1", -1, 1), new Among$SII("er\u00E1", -1, 1), new Among$SII("ir\u00E1", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_7", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("i", -1, 1), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_8", function () { + return [ new Among$SII("e", -1, 1), new Among$SII("\u00E7", -1, 2), new Among$SII("\u00E9", -1, 1), new Among$SII("\u00EA", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 ]; +}); +PorterStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PorterStemmer, "methodObject", function () { + return new PorterStemmer$(); +}); +$__jsx_lazy_init(PorterStemmer, "a_0", function () { + return [ new Among$SII("s", -1, 3), new Among$SII("ies", 0, 2), new Among$SII("sses", 0, 1), new Among$SII("ss", 0, -1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_2", function () { + return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_3", function () { + return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("abli", -1, 4), new Among$SII("eli", -1, 6), new Among$SII("alli", -1, 9), new Among$SII("ousli", -1, 12), new Among$SII("entli", -1, 5), new Among$SII("aliti", -1, 10), new Among$SII("biliti", -1, 14), new Among$SII("iviti", -1, 13), new Among$SII("tional", -1, 1), new Among$SII("ational", 10, 8), new Among$SII("alism", -1, 10), new Among$SII("ation", -1, 8), new Among$SII("ization", 13, 7), new Among$SII("izer", -1, 7), new Among$SII("ator", -1, 8), new Among$SII("iveness", -1, 13), new Among$SII("fulness", -1, 11), new Among$SII("ousness", -1, 12) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_4", function () { + return [ new Among$SII("icate", -1, 2), new Among$SII("ative", -1, 3), new Among$SII("alize", -1, 1), new Among$SII("iciti", -1, 2), new Among$SII("ical", -1, 2), new Among$SII("ful", -1, 3), new Among$SII("ness", -1, 3) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1), new Among$SII("ou", -1, 1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "g_v", function () { + return [ 17, 65, 16, 1 ]; +}); +$__jsx_lazy_init(PorterStemmer, "g_v_WXY", function () { + return [ 1, 17, 65, 208, 1 ]; +}); +NorwegianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(NorwegianStemmer, "methodObject", function () { + return new NorwegianStemmer$(); +}); +$__jsx_lazy_init(NorwegianStemmer, "a_0", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ede", 1, 1), new Among$SII("ande", 1, 1), new Among$SII("ende", 1, 1), new Among$SII("ane", 1, 1), new Among$SII("ene", 1, 1), new Among$SII("hetene", 6, 1), new Among$SII("erte", 1, 3), new Among$SII("en", -1, 1), new Among$SII("heten", 9, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 12, 1), new Among$SII("s", -1, 2), new Among$SII("as", 14, 1), new Among$SII("es", 14, 1), new Among$SII("edes", 16, 1), new Among$SII("endes", 16, 1), new Among$SII("enes", 16, 1), new Among$SII("hetenes", 19, 1), new Among$SII("ens", 14, 1), new Among$SII("hetens", 21, 1), new Among$SII("ers", 14, 1), new Among$SII("ets", 14, 1), new Among$SII("et", -1, 1), new Among$SII("het", 25, 1), new Among$SII("ert", -1, 3), new Among$SII("ast", -1, 1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_1", function () { + return [ new Among$SII("dt", -1, -1), new Among$SII("vt", -1, -1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_2", function () { + return [ new Among$SII("leg", -1, 1), new Among$SII("eleg", 0, 1), new Among$SII("ig", -1, 1), new Among$SII("eig", 2, 1), new Among$SII("lig", 2, 1), new Among$SII("elig", 4, 1), new Among$SII("els", -1, 1), new Among$SII("lov", -1, 1), new Among$SII("elov", 7, 1), new Among$SII("slov", 7, 1), new Among$SII("hetslov", 9, 1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "g_s_ending", function () { + return [ 119, 125, 149, 1 ]; +}); +ItalianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(ItalianStemmer, "methodObject", function () { + return new ItalianStemmer$(); +}); +$__jsx_lazy_init(ItalianStemmer, "a_0", function () { + return [ new Among$SII("", -1, 7), new Among$SII("qu", 0, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_2", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("cela", 0, -1), new Among$SII("gliela", 0, -1), new Among$SII("mela", 0, -1), new Among$SII("tela", 0, -1), new Among$SII("vela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("cele", 6, -1), new Among$SII("gliele", 6, -1), new Among$SII("mele", 6, -1), new Among$SII("tele", 6, -1), new Among$SII("vele", 6, -1), new Among$SII("ne", -1, -1), new Among$SII("cene", 12, -1), new Among$SII("gliene", 12, -1), new Among$SII("mene", 12, -1), new Among$SII("sene", 12, -1), new Among$SII("tene", 12, -1), new Among$SII("vene", 12, -1), new Among$SII("ci", -1, -1), new Among$SII("li", -1, -1), new Among$SII("celi", 20, -1), new Among$SII("glieli", 20, -1), new Among$SII("meli", 20, -1), new Among$SII("teli", 20, -1), new Among$SII("veli", 20, -1), new Among$SII("gli", 20, -1), new Among$SII("mi", -1, -1), new Among$SII("si", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("vi", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("celo", 31, -1), new Among$SII("glielo", 31, -1), new Among$SII("melo", 31, -1), new Among$SII("telo", 31, -1), new Among$SII("velo", 31, -1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_3", function () { + return [ new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_4", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("abil", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_6", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("logia", -1, 3), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("enza", -1, 5), new Among$SII("ice", -1, 1), new Among$SII("atrice", 7, 1), new Among$SII("iche", -1, 1), new Among$SII("logie", -1, 3), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("usione", -1, 4), new Among$SII("azione", -1, 2), new Among$SII("uzione", -1, 4), new Among$SII("atore", -1, 2), new Among$SII("ose", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 1), new Among$SII("amente", 19, 7), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 9), new Among$SII("anze", -1, 1), new Among$SII("enze", -1, 5), new Among$SII("ici", -1, 1), new Among$SII("atrici", 25, 1), new Among$SII("ichi", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("ismi", -1, 1), new Among$SII("usioni", -1, 4), new Among$SII("azioni", -1, 2), new Among$SII("uzioni", -1, 4), new Among$SII("atori", -1, 2), new Among$SII("osi", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("amenti", -1, 6), new Among$SII("imenti", -1, 6), new Among$SII("isti", -1, 1), new Among$SII("ivi", -1, 9), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 6), new Among$SII("imento", -1, 6), new Among$SII("ivo", -1, 9), new Among$SII("it\u00E0", -1, 8), new Among$SII("ist\u00E0", -1, 1), new Among$SII("ist\u00E8", -1, 1), new Among$SII("ist\u00EC", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_7", function () { + return [ new Among$SII("isca", -1, 1), new Among$SII("enda", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("uta", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("eva", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("erebbe", -1, 1), new Among$SII("irebbe", -1, 1), new Among$SII("isce", -1, 1), new Among$SII("ende", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("avate", 16, 1), new Among$SII("evate", 16, 1), new Among$SII("ivate", 16, 1), new Among$SII("ete", -1, 1), new Among$SII("erete", 20, 1), new Among$SII("irete", 20, 1), new Among$SII("ite", -1, 1), new Among$SII("ereste", -1, 1), new Among$SII("ireste", -1, 1), new Among$SII("ute", -1, 1), new Among$SII("erai", -1, 1), new Among$SII("irai", -1, 1), new Among$SII("isci", -1, 1), new Among$SII("endi", -1, 1), new Among$SII("erei", -1, 1), new Among$SII("irei", -1, 1), new Among$SII("assi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("eresti", -1, 1), new Among$SII("iresti", -1, 1), new Among$SII("uti", -1, 1), new Among$SII("avi", -1, 1), new Among$SII("evi", -1, 1), new Among$SII("ivi", -1, 1), new Among$SII("isco", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("Yamo", -1, 1), new Among$SII("iamo", -1, 1), new Among$SII("avamo", -1, 1), new Among$SII("evamo", -1, 1), new Among$SII("ivamo", -1, 1), new Among$SII("eremo", -1, 1), new Among$SII("iremo", -1, 1), new Among$SII("assimo", -1, 1), new Among$SII("ammo", -1, 1), new Among$SII("emmo", -1, 1), new Among$SII("eremmo", 54, 1), new Among$SII("iremmo", 54, 1), new Among$SII("immo", -1, 1), new Among$SII("ano", -1, 1), new Among$SII("iscano", 58, 1), new Among$SII("avano", 58, 1), new Among$SII("evano", 58, 1), new Among$SII("ivano", 58, 1), new Among$SII("eranno", -1, 1), new Among$SII("iranno", -1, 1), new Among$SII("ono", -1, 1), new Among$SII("iscono", 65, 1), new Among$SII("arono", 65, 1), new Among$SII("erono", 65, 1), new Among$SII("irono", 65, 1), new Among$SII("erebbero", -1, 1), new Among$SII("irebbero", -1, 1), new Among$SII("assero", -1, 1), new Among$SII("essero", -1, 1), new Among$SII("issero", -1, 1), new Among$SII("ato", -1, 1), new Among$SII("ito", -1, 1), new Among$SII("uto", -1, 1), new Among$SII("avo", -1, 1), new Among$SII("evo", -1, 1), new Among$SII("ivo", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("er\u00E0", -1, 1), new Among$SII("ir\u00E0", -1, 1), new Among$SII("er\u00F2", -1, 1), new Among$SII("ir\u00F2", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_AEIO", function () { + return [ 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_CG", function () { + return [ 17 ]; +}); +HungarianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(HungarianStemmer, "methodObject", function () { + return new HungarianStemmer$(); +}); +$__jsx_lazy_init(HungarianStemmer, "a_0", function () { + return [ new Among$SII("cs", -1, -1), new Among$SII("dzs", -1, -1), new Among$SII("gy", -1, -1), new Among$SII("ly", -1, -1), new Among$SII("ny", -1, -1), new Among$SII("sz", -1, -1), new Among$SII("ty", -1, -1), new Among$SII("zs", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_1", function () { + return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_2", function () { + return [ new Among$SII("bb", -1, -1), new Among$SII("cc", -1, -1), new Among$SII("dd", -1, -1), new Among$SII("ff", -1, -1), new Among$SII("gg", -1, -1), new Among$SII("jj", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("ll", -1, -1), new Among$SII("mm", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("pp", -1, -1), new Among$SII("rr", -1, -1), new Among$SII("ccs", -1, -1), new Among$SII("ss", -1, -1), new Among$SII("zzs", -1, -1), new Among$SII("tt", -1, -1), new Among$SII("vv", -1, -1), new Among$SII("ggy", -1, -1), new Among$SII("lly", -1, -1), new Among$SII("nny", -1, -1), new Among$SII("tty", -1, -1), new Among$SII("ssz", -1, -1), new Among$SII("zz", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_3", function () { + return [ new Among$SII("al", -1, 1), new Among$SII("el", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_4", function () { + return [ new Among$SII("ba", -1, -1), new Among$SII("ra", -1, -1), new Among$SII("be", -1, -1), new Among$SII("re", -1, -1), new Among$SII("ig", -1, -1), new Among$SII("nak", -1, -1), new Among$SII("nek", -1, -1), new Among$SII("val", -1, -1), new Among$SII("vel", -1, -1), new Among$SII("ul", -1, -1), new Among$SII("n\u00E1l", -1, -1), new Among$SII("n\u00E9l", -1, -1), new Among$SII("b\u00F3l", -1, -1), new Among$SII("r\u00F3l", -1, -1), new Among$SII("t\u00F3l", -1, -1), new Among$SII("b\u00F5l", -1, -1), new Among$SII("r\u00F5l", -1, -1), new Among$SII("t\u00F5l", -1, -1), new Among$SII("\u00FCl", -1, -1), new Among$SII("n", -1, -1), new Among$SII("an", 19, -1), new Among$SII("ban", 20, -1), new Among$SII("en", 19, -1), new Among$SII("ben", 22, -1), new Among$SII("k\u00E9ppen", 22, -1), new Among$SII("on", 19, -1), new Among$SII("\u00F6n", 19, -1), new Among$SII("k\u00E9pp", -1, -1), new Among$SII("kor", -1, -1), new Among$SII("t", -1, -1), new Among$SII("at", 29, -1), new Among$SII("et", 29, -1), new Among$SII("k\u00E9nt", 29, -1), new Among$SII("ank\u00E9nt", 32, -1), new Among$SII("enk\u00E9nt", 32, -1), new Among$SII("onk\u00E9nt", 32, -1), new Among$SII("ot", 29, -1), new Among$SII("\u00E9rt", 29, -1), new Among$SII("\u00F6t", 29, -1), new Among$SII("hez", -1, -1), new Among$SII("hoz", -1, -1), new Among$SII("h\u00F6z", -1, -1), new Among$SII("v\u00E1", -1, -1), new Among$SII("v\u00E9", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_5", function () { + return [ new Among$SII("\u00E1n", -1, 2), new Among$SII("\u00E9n", -1, 1), new Among$SII("\u00E1nk\u00E9nt", -1, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_6", function () { + return [ new Among$SII("stul", -1, 2), new Among$SII("astul", 0, 1), new Among$SII("\u00E1stul", 0, 3), new Among$SII("st\u00FCl", -1, 2), new Among$SII("est\u00FCl", 3, 1), new Among$SII("\u00E9st\u00FCl", 3, 4) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_7", function () { + return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_8", function () { + return [ new Among$SII("k", -1, 7), new Among$SII("ak", 0, 4), new Among$SII("ek", 0, 6), new Among$SII("ok", 0, 5), new Among$SII("\u00E1k", 0, 1), new Among$SII("\u00E9k", 0, 2), new Among$SII("\u00F6k", 0, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_9", function () { + return [ new Among$SII("\u00E9i", -1, 7), new Among$SII("\u00E1\u00E9i", 0, 6), new Among$SII("\u00E9\u00E9i", 0, 5), new Among$SII("\u00E9", -1, 9), new Among$SII("k\u00E9", 3, 4), new Among$SII("ak\u00E9", 4, 1), new Among$SII("ek\u00E9", 4, 1), new Among$SII("ok\u00E9", 4, 1), new Among$SII("\u00E1k\u00E9", 4, 3), new Among$SII("\u00E9k\u00E9", 4, 2), new Among$SII("\u00F6k\u00E9", 4, 1), new Among$SII("\u00E9\u00E9", 3, 8) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_10", function () { + return [ new Among$SII("a", -1, 18), new Among$SII("ja", 0, 17), new Among$SII("d", -1, 16), new Among$SII("ad", 2, 13), new Among$SII("ed", 2, 13), new Among$SII("od", 2, 13), new Among$SII("\u00E1d", 2, 14), new Among$SII("\u00E9d", 2, 15), new Among$SII("\u00F6d", 2, 13), new Among$SII("e", -1, 18), new Among$SII("je", 9, 17), new Among$SII("nk", -1, 4), new Among$SII("unk", 11, 1), new Among$SII("\u00E1nk", 11, 2), new Among$SII("\u00E9nk", 11, 3), new Among$SII("\u00FCnk", 11, 1), new Among$SII("uk", -1, 8), new Among$SII("juk", 16, 7), new Among$SII("\u00E1juk", 17, 5), new Among$SII("\u00FCk", -1, 8), new Among$SII("j\u00FCk", 19, 7), new Among$SII("\u00E9j\u00FCk", 20, 6), new Among$SII("m", -1, 12), new Among$SII("am", 22, 9), new Among$SII("em", 22, 9), new Among$SII("om", 22, 9), new Among$SII("\u00E1m", 22, 10), new Among$SII("\u00E9m", 22, 11), new Among$SII("o", -1, 18), new Among$SII("\u00E1", -1, 19), new Among$SII("\u00E9", -1, 20) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_11", function () { + return [ new Among$SII("id", -1, 10), new Among$SII("aid", 0, 9), new Among$SII("jaid", 1, 6), new Among$SII("eid", 0, 9), new Among$SII("jeid", 3, 6), new Among$SII("\u00E1id", 0, 7), new Among$SII("\u00E9id", 0, 8), new Among$SII("i", -1, 15), new Among$SII("ai", 7, 14), new Among$SII("jai", 8, 11), new Among$SII("ei", 7, 14), new Among$SII("jei", 10, 11), new Among$SII("\u00E1i", 7, 12), new Among$SII("\u00E9i", 7, 13), new Among$SII("itek", -1, 24), new Among$SII("eitek", 14, 21), new Among$SII("jeitek", 15, 20), new Among$SII("\u00E9itek", 14, 23), new Among$SII("ik", -1, 29), new Among$SII("aik", 18, 26), new Among$SII("jaik", 19, 25), new Among$SII("eik", 18, 26), new Among$SII("jeik", 21, 25), new Among$SII("\u00E1ik", 18, 27), new Among$SII("\u00E9ik", 18, 28), new Among$SII("ink", -1, 20), new Among$SII("aink", 25, 17), new Among$SII("jaink", 26, 16), new Among$SII("eink", 25, 17), new Among$SII("jeink", 28, 16), new Among$SII("\u00E1ink", 25, 18), new Among$SII("\u00E9ink", 25, 19), new Among$SII("aitok", -1, 21), new Among$SII("jaitok", 32, 20), new Among$SII("\u00E1itok", -1, 22), new Among$SII("im", -1, 5), new Among$SII("aim", 35, 4), new Among$SII("jaim", 36, 1), new Among$SII("eim", 35, 4), new Among$SII("jeim", 38, 1), new Among$SII("\u00E1im", 35, 2), new Among$SII("\u00E9im", 35, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 ]; +}); +GermanStemmer.serialVersionUID = 1; +$__jsx_lazy_init(GermanStemmer, "methodObject", function () { + return new GermanStemmer$(); +}); +$__jsx_lazy_init(GermanStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 1), new Among$SII("\u00E4", 0, 3), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_1", function () { + return [ new Among$SII("e", -1, 2), new Among$SII("em", -1, 1), new Among$SII("en", -1, 2), new Among$SII("ern", -1, 1), new Among$SII("er", -1, 1), new Among$SII("s", -1, 3), new Among$SII("es", 5, 2) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_2", function () { + return [ new Among$SII("en", -1, 1), new Among$SII("er", -1, 1), new Among$SII("st", -1, 2), new Among$SII("est", 2, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_3", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lich", -1, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_4", function () { + return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ung", -1, 1), new Among$SII("lich", -1, 3), new Among$SII("isch", -1, 2), new Among$SII("ik", -1, 2), new Among$SII("heit", -1, 3), new Among$SII("keit", -1, 4) ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_s_ending", function () { + return [ 117, 30, 5 ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_st_ending", function () { + return [ 117, 30, 4 ]; +}); +FrenchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FrenchStemmer, "methodObject", function () { + return new FrenchStemmer$(); +}); +$__jsx_lazy_init(FrenchStemmer, "a_0", function () { + return [ new Among$SII("col", -1, -1), new Among$SII("par", -1, -1), new Among$SII("tap", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_1", function () { + return [ new Among$SII("", -1, 4), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_2", function () { + return [ new Among$SII("iqU", -1, 3), new Among$SII("abl", -1, 3), new Among$SII("I\u00E8r", -1, 4), new Among$SII("i\u00E8r", -1, 4), new Among$SII("eus", -1, 2), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_3", function () { + return [ new Among$SII("ic", -1, 2), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_4", function () { + return [ new Among$SII("iqUe", -1, 1), new Among$SII("atrice", -1, 2), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 5), new Among$SII("logie", -1, 3), new Among$SII("able", -1, 1), new Among$SII("isme", -1, 1), new Among$SII("euse", -1, 11), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 8), new Among$SII("if", -1, 8), new Among$SII("usion", -1, 4), new Among$SII("ation", -1, 2), new Among$SII("ution", -1, 4), new Among$SII("ateur", -1, 2), new Among$SII("iqUes", -1, 1), new Among$SII("atrices", -1, 2), new Among$SII("ances", -1, 1), new Among$SII("ences", -1, 5), new Among$SII("logies", -1, 3), new Among$SII("ables", -1, 1), new Among$SII("ismes", -1, 1), new Among$SII("euses", -1, 11), new Among$SII("istes", -1, 1), new Among$SII("ives", -1, 8), new Among$SII("ifs", -1, 8), new Among$SII("usions", -1, 4), new Among$SII("ations", -1, 2), new Among$SII("utions", -1, 4), new Among$SII("ateurs", -1, 2), new Among$SII("ments", -1, 15), new Among$SII("ements", 30, 6), new Among$SII("issements", 31, 12), new Among$SII("it\u00E9s", -1, 7), new Among$SII("ment", -1, 15), new Among$SII("ement", 34, 6), new Among$SII("issement", 35, 12), new Among$SII("amment", 34, 13), new Among$SII("emment", 34, 14), new Among$SII("aux", -1, 10), new Among$SII("eaux", 39, 9), new Among$SII("eux", -1, 1), new Among$SII("it\u00E9", -1, 7) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_5", function () { + return [ new Among$SII("ira", -1, 1), new Among$SII("ie", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("issante", -1, 1), new Among$SII("i", -1, 1), new Among$SII("irai", 4, 1), new Among$SII("ir", -1, 1), new Among$SII("iras", -1, 1), new Among$SII("ies", -1, 1), new Among$SII("\u00EEmes", -1, 1), new Among$SII("isses", -1, 1), new Among$SII("issantes", -1, 1), new Among$SII("\u00EEtes", -1, 1), new Among$SII("is", -1, 1), new Among$SII("irais", 13, 1), new Among$SII("issais", 13, 1), new Among$SII("irions", -1, 1), new Among$SII("issions", -1, 1), new Among$SII("irons", -1, 1), new Among$SII("issons", -1, 1), new Among$SII("issants", -1, 1), new Among$SII("it", -1, 1), new Among$SII("irait", 21, 1), new Among$SII("issait", 21, 1), new Among$SII("issant", -1, 1), new Among$SII("iraIent", -1, 1), new Among$SII("issaIent", -1, 1), new Among$SII("irent", -1, 1), new Among$SII("issent", -1, 1), new Among$SII("iront", -1, 1), new Among$SII("\u00EEt", -1, 1), new Among$SII("iriez", -1, 1), new Among$SII("issiez", -1, 1), new Among$SII("irez", -1, 1), new Among$SII("issez", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_6", function () { + return [ new Among$SII("a", -1, 3), new Among$SII("era", 0, 2), new Among$SII("asse", -1, 3), new Among$SII("ante", -1, 3), new Among$SII("\u00E9e", -1, 2), new Among$SII("ai", -1, 3), new Among$SII("erai", 5, 2), new Among$SII("er", -1, 2), new Among$SII("as", -1, 3), new Among$SII("eras", 8, 2), new Among$SII("\u00E2mes", -1, 3), new Among$SII("asses", -1, 3), new Among$SII("antes", -1, 3), new Among$SII("\u00E2tes", -1, 3), new Among$SII("\u00E9es", -1, 2), new Among$SII("ais", -1, 3), new Among$SII("erais", 15, 2), new Among$SII("ions", -1, 1), new Among$SII("erions", 17, 2), new Among$SII("assions", 17, 3), new Among$SII("erons", -1, 2), new Among$SII("ants", -1, 3), new Among$SII("\u00E9s", -1, 2), new Among$SII("ait", -1, 3), new Among$SII("erait", 23, 2), new Among$SII("ant", -1, 3), new Among$SII("aIent", -1, 3), new Among$SII("eraIent", 26, 2), new Among$SII("\u00E8rent", -1, 2), new Among$SII("assent", -1, 3), new Among$SII("eront", -1, 2), new Among$SII("\u00E2t", -1, 3), new Among$SII("ez", -1, 2), new Among$SII("iez", 32, 2), new Among$SII("eriez", 33, 2), new Among$SII("assiez", 33, 3), new Among$SII("erez", 32, 2), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_7", function () { + return [ new Among$SII("e", -1, 3), new Among$SII("I\u00E8re", 0, 2), new Among$SII("i\u00E8re", 0, 2), new Among$SII("ion", -1, 1), new Among$SII("Ier", -1, 2), new Among$SII("ier", -1, 2), new Among$SII("\u00EB", -1, 4) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_8", function () { + return [ new Among$SII("ell", -1, -1), new Among$SII("eill", -1, -1), new Among$SII("enn", -1, -1), new Among$SII("onn", -1, -1), new Among$SII("ett", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 ]; +}); +$__jsx_lazy_init(FrenchStemmer, "g_keep_with_s", function () { + return [ 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +FinnishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FinnishStemmer, "methodObject", function () { + return new FinnishStemmer$(); +}); +$__jsx_lazy_init(FinnishStemmer, "a_0", function () { + return [ new Among$SII("pa", -1, 1), new Among$SII("sti", -1, 2), new Among$SII("kaan", -1, 1), new Among$SII("han", -1, 1), new Among$SII("kin", -1, 1), new Among$SII("h\u00E4n", -1, 1), new Among$SII("k\u00E4\u00E4n", -1, 1), new Among$SII("ko", -1, 1), new Among$SII("p\u00E4", -1, 1), new Among$SII("k\u00F6", -1, 1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_1", function () { + return [ new Among$SII("lla", -1, -1), new Among$SII("na", -1, -1), new Among$SII("ssa", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("lta", 3, -1), new Among$SII("sta", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_2", function () { + return [ new Among$SII("ll\u00E4", -1, -1), new Among$SII("n\u00E4", -1, -1), new Among$SII("ss\u00E4", -1, -1), new Among$SII("t\u00E4", -1, -1), new Among$SII("lt\u00E4", 3, -1), new Among$SII("st\u00E4", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_3", function () { + return [ new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_4", function () { + return [ new Among$SII("nsa", -1, 3), new Among$SII("mme", -1, 3), new Among$SII("nne", -1, 3), new Among$SII("ni", -1, 2), new Among$SII("si", -1, 1), new Among$SII("an", -1, 4), new Among$SII("en", -1, 6), new Among$SII("\u00E4n", -1, 5), new Among$SII("ns\u00E4", -1, 3) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_5", function () { + return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("ii", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1), new Among$SII("\u00E4\u00E4", -1, -1), new Among$SII("\u00F6\u00F6", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_6", function () { + return [ new Among$SII("a", -1, 8), new Among$SII("lla", 0, -1), new Among$SII("na", 0, -1), new Among$SII("ssa", 0, -1), new Among$SII("ta", 0, -1), new Among$SII("lta", 4, -1), new Among$SII("sta", 4, -1), new Among$SII("tta", 4, 9), new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1), new Among$SII("ksi", -1, -1), new Among$SII("n", -1, 7), new Among$SII("han", 11, 1), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("den", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("seen", 11, -1, (function (instance) { + return instance.r_LONG$(); + }), FinnishStemmer.methodObject), new Among$SII("hen", 11, 2), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("tten", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SII("hin", 11, 3), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("siin", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SII("hon", 11, 4), new Among$SII("h\u00E4n", 11, 5), new Among$SII("h\u00F6n", 11, 6), new Among$SII("\u00E4", -1, 8), new Among$SII("ll\u00E4", 22, -1), new Among$SII("n\u00E4", 22, -1), new Among$SII("ss\u00E4", 22, -1), new Among$SII("t\u00E4", 22, -1), new Among$SII("lt\u00E4", 26, -1), new Among$SII("st\u00E4", 26, -1), new Among$SII("tt\u00E4", 26, 9) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_7", function () { + return [ new Among$SII("eja", -1, -1), new Among$SII("mma", -1, 1), new Among$SII("imma", 1, -1), new Among$SII("mpa", -1, 1), new Among$SII("impa", 3, -1), new Among$SII("mmi", -1, 1), new Among$SII("immi", 5, -1), new Among$SII("mpi", -1, 1), new Among$SII("impi", 7, -1), new Among$SII("ej\u00E4", -1, -1), new Among$SII("mm\u00E4", -1, 1), new Among$SII("imm\u00E4", 10, -1), new Among$SII("mp\u00E4", -1, 1), new Among$SII("imp\u00E4", 12, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_8", function () { + return [ new Among$SII("i", -1, -1), new Among$SII("j", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_9", function () { + return [ new Among$SII("mma", -1, 1), new Among$SII("imma", 0, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_AEI", function () { + return [ 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_V1", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_V2", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_particle_end", function () { + return [ 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +EnglishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(EnglishStemmer, "methodObject", function () { + return new EnglishStemmer$(); +}); +$__jsx_lazy_init(EnglishStemmer, "a_0", function () { + return [ new Among$SII("arsen", -1, -1), new Among$SII("commun", -1, -1), new Among$SII("gener", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_1", function () { + return [ new Among$SII("'", -1, 1), new Among$SII("'s'", 0, 1), new Among$SII("'s", -1, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_2", function () { + return [ new Among$SII("ied", -1, 2), new Among$SII("s", -1, 3), new Among$SII("ies", 1, 2), new Among$SII("sses", 1, 1), new Among$SII("ss", 1, -1), new Among$SII("us", 1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_3", function () { + return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_4", function () { + return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2), new Among$SII("edly", -1, 2), new Among$SII("eedly", 3, 1), new Among$SII("ingly", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_5", function () { + return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("ogi", -1, 13), new Among$SII("li", -1, 16), new Among$SII("bli", 3, 12), new Among$SII("abli", 4, 4), new Among$SII("alli", 3, 8), new Among$SII("fulli", 3, 14), new Among$SII("lessli", 3, 15), new Among$SII("ousli", 3, 10), new Among$SII("entli", 3, 5), new Among$SII("aliti", -1, 8), new Among$SII("biliti", -1, 12), new Among$SII("iviti", -1, 11), new Among$SII("tional", -1, 1), new Among$SII("ational", 14, 7), new Among$SII("alism", -1, 8), new Among$SII("ation", -1, 7), new Among$SII("ization", 17, 6), new Among$SII("izer", -1, 6), new Among$SII("ator", -1, 7), new Among$SII("iveness", -1, 11), new Among$SII("fulness", -1, 9), new Among$SII("ousness", -1, 10) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_6", function () { + return [ new Among$SII("icate", -1, 4), new Among$SII("ative", -1, 6), new Among$SII("alize", -1, 3), new Among$SII("iciti", -1, 4), new Among$SII("ical", -1, 4), new Among$SII("tional", -1, 1), new Among$SII("ational", 5, 2), new Among$SII("ful", -1, 5), new Among$SII("ness", -1, 5) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_7", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_8", function () { + return [ new Among$SII("e", -1, 1), new Among$SII("l", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_9", function () { + return [ new Among$SII("succeed", -1, -1), new Among$SII("proceed", -1, -1), new Among$SII("exceed", -1, -1), new Among$SII("canning", -1, -1), new Among$SII("inning", -1, -1), new Among$SII("earring", -1, -1), new Among$SII("herring", -1, -1), new Among$SII("outing", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_10", function () { + return [ new Among$SII("andes", -1, -1), new Among$SII("atlas", -1, -1), new Among$SII("bias", -1, -1), new Among$SII("cosmos", -1, -1), new Among$SII("dying", -1, 3), new Among$SII("early", -1, 9), new Among$SII("gently", -1, 7), new Among$SII("howe", -1, -1), new Among$SII("idly", -1, 6), new Among$SII("lying", -1, 4), new Among$SII("news", -1, -1), new Among$SII("only", -1, 10), new Among$SII("singly", -1, 11), new Among$SII("skies", -1, 2), new Among$SII("skis", -1, 1), new Among$SII("sky", -1, -1), new Among$SII("tying", -1, 5), new Among$SII("ugly", -1, 8) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v", function () { + return [ 17, 65, 16, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v_WXY", function () { + return [ 1, 17, 65, 208, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_valid_LI", function () { + return [ 55, 141, 2 ]; +}); +DutchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DutchStemmer, "methodObject", function () { + return new DutchStemmer$(); +}); +$__jsx_lazy_init(DutchStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E4", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00EB", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00EF", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FA", 0, 5), new Among$SII("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 2), new Among$SII("Y", 0, 1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_2", function () { + return [ new Among$SII("dd", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("tt", -1, -1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_3", function () { + return [ new Among$SII("ene", -1, 2), new Among$SII("se", -1, 3), new Among$SII("en", -1, 2), new Among$SII("heden", 2, 1), new Among$SII("s", -1, 3) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_4", function () { + return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ing", -1, 1), new Among$SII("lijk", -1, 3), new Among$SII("baar", -1, 4), new Among$SII("bar", -1, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_5", function () { + return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v_I", function () { + return [ 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v_j", function () { + return [ 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +DanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DanishStemmer, "methodObject", function () { + return new DanishStemmer$(); +}); +$__jsx_lazy_init(DanishStemmer, "a_0", function () { + return [ new Among$SII("hed", -1, 1), new Among$SII("ethed", 0, 1), new Among$SII("ered", -1, 1), new Among$SII("e", -1, 1), new Among$SII("erede", 3, 1), new Among$SII("ende", 3, 1), new Among$SII("erende", 5, 1), new Among$SII("ene", 3, 1), new Among$SII("erne", 3, 1), new Among$SII("ere", 3, 1), new Among$SII("en", -1, 1), new Among$SII("heden", 10, 1), new Among$SII("eren", 10, 1), new Among$SII("er", -1, 1), new Among$SII("heder", 13, 1), new Among$SII("erer", 13, 1), new Among$SII("s", -1, 2), new Among$SII("heds", 16, 1), new Among$SII("es", 16, 1), new Among$SII("endes", 18, 1), new Among$SII("erendes", 19, 1), new Among$SII("enes", 18, 1), new Among$SII("ernes", 18, 1), new Among$SII("eres", 18, 1), new Among$SII("ens", 16, 1), new Among$SII("hedens", 24, 1), new Among$SII("erens", 24, 1), new Among$SII("ers", 16, 1), new Among$SII("ets", 16, 1), new Among$SII("erets", 28, 1), new Among$SII("et", -1, 1), new Among$SII("eret", 30, 1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_1", function () { + return [ new Among$SII("gd", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_2", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("elig", 1, 1), new Among$SII("els", -1, 1), new Among$SII("l\u00F8st", -1, 2) ]; +}); +$__jsx_lazy_init(DanishStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +}); +$__jsx_lazy_init(DanishStemmer, "g_s_ending", function () { + return [ 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 ]; +}); +BitVector.SMALL_BLOCK_SIZE = 32; +BitVector.LARGE_BLOCK_SIZE = 256; +BitVector.BLOCK_RATE = 8; +$__jsx_lazy_init(BurrowsWheelerTransform, "END_MARKER", function () { + return String.fromCharCode(0); +}); +var $__jsx_classMap = { + "tool/oktavia-mkindex.jsx": { + _Main: _Main, + _Main$: _Main$ + }, + "system:lib/js/js/nodejs.jsx": { + node: node, + node$: node$ + }, + "src/oktavia.jsx": { + Oktavia: Oktavia, + Oktavia$: Oktavia$ + }, + "src/getopt.jsx": { + CommandOption: CommandOption, + CommandOption$S: CommandOption$S, + CommandOption$SS: CommandOption$SS, + CommandOption$SSB: CommandOption$SSB, + BasicParser: BasicParser, + BasicParser$SAS: BasicParser$SAS + }, + "src/htmlparser.jsx": { + TagFilter: TagFilter, + TagFilter$AS: TagFilter$AS, + HTMLParser: HTMLParser, + HTMLParser$ISSASLStemmer$: HTMLParser$ISSASLStemmer$, + _HTMLHandler: _HTMLHandler, + _HTMLHandler$LOktavia$SILTagFilter$: _HTMLHandler$LOktavia$SILTagFilter$ + }, + "src/csvparser.jsx": { + CSVParser: CSVParser, + CSVParser$SLStemmer$: CSVParser$SLStemmer$ + }, + "src/textparser.jsx": { + TextParser: TextParser, + TextParser$SSLStemmer$: TextParser$SSLStemmer$ + }, + "src/binary-util.jsx": { + Binary: Binary, + Binary$: Binary$, + LoadedStringResult: LoadedStringResult, + LoadedStringResult$SI: LoadedStringResult$SI, + LoadedStringListResult: LoadedStringListResult, + LoadedStringListResult$SI: LoadedStringListResult$SI, + LoadedStringListMapResult: LoadedStringListMapResult, + LoadedStringListMapResult$SI: LoadedStringListMapResult$SI, + LoadedNumberListResult: LoadedNumberListResult, + LoadedNumberListResult$SI: LoadedNumberListResult$SI, + CompressionReport: CompressionReport, + CompressionReport$: CompressionReport$ + }, + "src/stemmer/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer$ + }, + "system:lib/js/js.jsx": { + js: js, + js$: js$ + }, + "src/metadata.jsx": { + Metadata: Metadata, + Metadata$LOktavia$: Metadata$LOktavia$, + Section: Section, + Section$LOktavia$: Section$LOktavia$, + Splitter: Splitter, + Splitter$LOktavia$: Splitter$LOktavia$, + Splitter$LOktavia$S: Splitter$LOktavia$S, + Table: Table, + Table$LOktavia$AS: Table$LOktavia$AS, + Block: Block, + Block$LOktavia$: Block$LOktavia$ + }, + "src/fm-index.jsx": { + FMIndex: FMIndex, + FMIndex$: FMIndex$ + }, + "src/query.jsx": { + Query: Query, + Query$: Query$ + }, + "src/search-result.jsx": { + Proposal: Proposal, + Proposal$II: Proposal$II, + Position: Position, + Position$SIB: Position$SIB, + SearchUnit: SearchUnit, + SearchUnit$I: SearchUnit$I, + SingleResult: SingleResult, + SingleResult$: SingleResult$, + SingleResult$SBB: SingleResult$SBB, + SearchSummary: SearchSummary, + SearchSummary$: SearchSummary$, + SearchSummary$LOktavia$: SearchSummary$LOktavia$ + }, + "src/sax.jsx": { + Tag: Tag, + Tag$S: Tag$S, + _Common: _Common, + _Common$: _Common$, + _State: _State, + _State$: _State$, + SAXHandler: SAXHandler, + SAXHandler$: SAXHandler$, + SAXParser: SAXParser, + SAXParser$LSAXHandler$: SAXParser$LSAXHandler$, + SAXParser$LSAXHandler$B: SAXParser$LSAXHandler$B, + Char: Char, + Char$: Char$, + _Entities: _Entities, + _Entities$: _Entities$ + }, + "src/stemmer/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer$ + }, + "src/stemmer/turkish-stemmer.jsx": { + TurkishStemmer: TurkishStemmer, + TurkishStemmer$: TurkishStemmer$ + }, + "src/stemmer/swedish-stemmer.jsx": { + SwedishStemmer: SwedishStemmer, + SwedishStemmer$: SwedishStemmer$ + }, + "src/stemmer/spanish-stemmer.jsx": { + SpanishStemmer: SpanishStemmer, + SpanishStemmer$: SpanishStemmer$ + }, + "src/stemmer/russian-stemmer.jsx": { + RussianStemmer: RussianStemmer, + RussianStemmer$: RussianStemmer$ + }, + "src/stemmer/romanian-stemmer.jsx": { + RomanianStemmer: RomanianStemmer, + RomanianStemmer$: RomanianStemmer$ + }, + "src/stemmer/portuguese-stemmer.jsx": { + PortugueseStemmer: PortugueseStemmer, + PortugueseStemmer$: PortugueseStemmer$ + }, + "src/stemmer/porter-stemmer.jsx": { + PorterStemmer: PorterStemmer, + PorterStemmer$: PorterStemmer$ + }, + "src/stemmer/norwegian-stemmer.jsx": { + NorwegianStemmer: NorwegianStemmer, + NorwegianStemmer$: NorwegianStemmer$ + }, + "src/stemmer/italian-stemmer.jsx": { + ItalianStemmer: ItalianStemmer, + ItalianStemmer$: ItalianStemmer$ + }, + "src/stemmer/hungarian-stemmer.jsx": { + HungarianStemmer: HungarianStemmer, + HungarianStemmer$: HungarianStemmer$ + }, + "src/stemmer/german-stemmer.jsx": { + GermanStemmer: GermanStemmer, + GermanStemmer$: GermanStemmer$ + }, + "src/stemmer/french-stemmer.jsx": { + FrenchStemmer: FrenchStemmer, + FrenchStemmer$: FrenchStemmer$ + }, + "src/stemmer/finnish-stemmer.jsx": { + FinnishStemmer: FinnishStemmer, + FinnishStemmer$: FinnishStemmer$ + }, + "src/stemmer/english-stemmer.jsx": { + EnglishStemmer: EnglishStemmer, + EnglishStemmer$: EnglishStemmer$ + }, + "src/stemmer/dutch-stemmer.jsx": { + DutchStemmer: DutchStemmer, + DutchStemmer$: DutchStemmer$ + }, + "src/stemmer/danish-stemmer.jsx": { + DanishStemmer: DanishStemmer, + DanishStemmer$: DanishStemmer$ + }, + "src/stemmer/among.jsx": { + Among: Among, + Among$SII: Among$SII, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$SIIF$LBaseStemmer$B$LBaseStemmer$ + }, + "src/bit-vector.jsx": { + BitVector: BitVector, + BitVector$: BitVector$ + }, + "src/wavelet-matrix.jsx": { + WaveletMatrix: WaveletMatrix, + WaveletMatrix$: WaveletMatrix$ + }, + "src/burrows-wheeler-transform.jsx": { + BurrowsWheelerTransform: BurrowsWheelerTransform, + BurrowsWheelerTransform$: BurrowsWheelerTransform$ + }, + "src/sais.jsx": { + OArray: OArray, + OArray$AI: OArray$AI, + OArray$AII: OArray$AII, + SAIS: SAIS, + SAIS$: SAIS$ + } +}; + + +/** + * launches _Main.main(:string[]):void invoked by jsx --run|--executable + */ +JSX.runMain = function (sourceFile, args) { + var module = JSX.require(sourceFile); + if (! module) { + throw new ReferenceError("entry point module not found in " + sourceFile); + } + if (! module._Main) { + throw new ReferenceError("entry point _Main not found in " + sourceFile); + } + if (! module._Main.main$AS) { + throw new ReferenceError("entry point _Main.main(:string[]):void not found in " + sourceFile); + } + module._Main.main$AS(args); +}; + +/** + * launches _Test#test*():void invoked by jsx --test + */ +JSX.runTests = function (sourceFile, tests) { + var module = JSX.require(sourceFile); + var testClass = module._Test$; + + if (!testClass) return; // skip if there's no test class + + if(tests.length === 0) { + var p = testClass.prototype; + for (var m in p) { + if (p[m] instanceof Function + && /^test.*[$]$/.test(m)) { + tests.push(m); + } + } + } + else { // set as process arguments + tests = tests.map(function (name) { + return name + "$"; // mangle for function test*():void + }); + } + + var testCase = new testClass(); + + if (testCase.beforeClass$AS != null) + testCase.beforeClass$AS(tests); + + for (var i = 0; i < tests.length; ++i) { + (function (method) { + if (method in testCase) { + testCase.run$SF$V$(method, function() { testCase[method](); }); + } + else { + throw new ReferenceError("No such test method: " + method); + } + }(tests[i])); + } + + if (testCase.afterClass$ != null) + testCase.afterClass$(); +}; +JSX.runMain("tool/oktavia-mkindex.jsx", process.argv.slice(2)) +})(JSX); diff --git a/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search new file mode 100755 index 00000000..33edd769 --- /dev/null +++ b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search @@ -0,0 +1,24779 @@ +#!/usr/bin/env node +// generatedy by JSX compiler 0.9.24 (2013-04-05 13:45:00 +0900; 1b229cc6a411f674f0f7cf7a79b7a8b3f8eb7414) +var JSX = {}; +(function (JSX) { +/** + * copies the implementations from source interface to target + */ +function $__jsx_merge_interface(target, source) { + for (var k in source.prototype) + if (source.prototype.hasOwnProperty(k)) + target.prototype[k] = source.prototype[k]; +} + +/** + * defers the initialization of the property + */ +function $__jsx_lazy_init(obj, prop, func) { + function reset(obj, prop, value) { + delete obj[prop]; + obj[prop] = value; + return value; + } + + Object.defineProperty(obj, prop, { + get: function () { + return reset(obj, prop, func()); + }, + set: function (v) { + reset(obj, prop, v); + }, + enumerable: true, + configurable: true + }); +} + +/** + * sideeffect().a /= b + */ +function $__jsx_div_assign(obj, prop, divisor) { + return obj[prop] = (obj[prop] / divisor) | 0; +} + +/* + * global functions, renamed to avoid conflict with local variable names + */ +var $__jsx_parseInt = parseInt; +var $__jsx_parseFloat = parseFloat; +var $__jsx_isNaN = isNaN; +var $__jsx_isFinite = isFinite; + +var $__jsx_encodeURIComponent = encodeURIComponent; +var $__jsx_decodeURIComponent = decodeURIComponent; +var $__jsx_encodeURI = encodeURI; +var $__jsx_decodeURI = decodeURI; + +var $__jsx_ObjectToString = Object.prototype.toString; +var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty; + +/* + * profiler object, initialized afterwards + */ +function $__jsx_profiler() { +} + +/* + * public interface to JSX code + */ +JSX.require = function (path) { + var m = $__jsx_classMap[path]; + return m !== undefined ? m : null; +}; + +JSX.profilerIsRunning = function () { + return $__jsx_profiler.getResults != null; +}; + +JSX.getProfileResults = function () { + return ($__jsx_profiler.getResults || function () { return {}; })(); +}; + +JSX.postProfileResults = function (url, cb) { + if ($__jsx_profiler.postResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.postResults(url, cb); +}; + +JSX.resetProfileResults = function () { + if ($__jsx_profiler.resetResults == null) + throw new Error("profiler has not been turned on"); + return $__jsx_profiler.resetResults(); +}; +JSX.DEBUG = false; +/** + * class Search extends Object + * @constructor + */ +function Search() { +} + +/** + * @constructor + */ +function Search$() { + this.style = null; +}; + +Search$.prototype = new Search; + +/** + * @param {Search} $this + * @param {!string} indexFile + * @param {Array.<undefined|!string>} queryStrings + * @param {!number} num + * @param {Style} style + * @param {undefined|!string} algorithm + */ +Search.search$LSearch$SASILStyle$US = function ($this, indexFile, queryStrings, num, style, algorithm) { + /** @type {Oktavia} */ + var oktavia; + /** @type {QueryParser} */ + var queryParser; + /** @type {SearchSummary} */ + var summary; + /** @type {Stemmer} */ + var stemmer$0; + $this.style = style; + oktavia = new Oktavia$(); + if (algorithm != null) { + stemmer$0 = Search$createStemmer$LSearch$S($this, algorithm); + oktavia._stemmer = stemmer$0; + } + if (! Search$loadIndex$LSearch$LOktavia$S($this, oktavia, indexFile)) { + return; + } + console.time('searching'); + queryParser = ({queries: [ ]}); + QueryParser$parse$LQueryParser$AS(queryParser, queryStrings); + summary = oktavia.search$ALQuery$(queryParser.queries); + console.timeEnd('searching'); + if (SearchSummary$size$LSearchSummary$(summary) === 0) { + Search$notFound$LSearch$LSearchSummary$AS($this, summary, queryStrings); + } else { + Search$showResult$LSearch$LOktavia$LSearchSummary$I($this, oktavia, summary, num); + } +}; + +var Search$search$LSearch$SASILStyle$US = Search.search$LSearch$SASILStyle$US; + +/** + * @param {Search} $this + * @param {Oktavia} oktavia + * @param {!string} filepath + * @return {!boolean} + */ +Search.loadIndex$LSearch$LOktavia$S = function ($this, oktavia, filepath) { + /** @type {!string} */ + var ext; + /** @type {!string} */ + var content; + /** @type {!boolean} */ + var result; + /** @type {!number} */ + var index; + /** @type {!number} */ + var lastIndex; + ext = node.path.extname(filepath); + result = true; + switch (ext) { + case ".okt": + content = node.fs.readFileSync(filepath, "utf16le"); + oktavia.load$S(content); + break; + case ".b64": + content = node.fs.readFileSync(filepath, "utf8"); + oktavia.load$S(Binary$base64decode$S(content)); + break; + case ".js": + content = node.fs.readFileSync(filepath, "utf8"); + index = content.indexOf('"'); + lastIndex = content.lastIndexOf('"'); + oktavia.load$S(Binary$base64decode$S(content.slice(index, lastIndex))); + break; + default: + console.log("unknown file extension: " + ext); + result = false; + break; + } + return result; +}; + +var Search$loadIndex$LSearch$LOktavia$S = Search.loadIndex$LSearch$LOktavia$S; + +/** + * @param {Search} $this + * @param {Oktavia} oktavia + * @param {SearchSummary} summary + * @return {Array.<undefined|SearchUnit>} + */ +Search.sortResult$LSearch$LOktavia$LSearchSummary$ = function ($this, oktavia, summary) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var score; + /** @type {SearchUnit} */ + var unit; + /** @type {!string} */ + var pos; + /** @type {Position} */ + var position; + for (i = 0; i < summary.result.units.length; i++) { + score = 0; + unit = summary.result.units[i]; + for (pos in unit.positions) { + position = unit.positions[pos]; + if (oktavia.wordPositionType$I(position.position)) { + score += 10; + } else { + score += 1; + } + if (! position.stemmed) { + score += 2; + } + } + unit.score = (score | 0); + } + return SearchSummary$getSortedResult$LSearchSummary$(summary); +}; + +var Search$sortResult$LSearch$LOktavia$LSearchSummary$ = Search.sortResult$LSearch$LOktavia$LSearchSummary$; + +/** + * @param {Search} $this + * @param {Oktavia} oktavia + * @param {SearchSummary} summary + * @param {!number} num + */ +Search.showResult$LSearch$LOktavia$LSearchSummary$I = function ($this, oktavia, summary, num) { + /** @type {Array.<undefined|SearchUnit>} */ + var results; + /** @type {Style} */ + var style; + /** @type {Metadata} */ + var metadata; + /** @type {!number} */ + var i; + /** @type {SearchUnit} */ + var unit; + /** @type {Array.<undefined|!string>} */ + var info; + /** @type {!string} */ + var content; + /** @type {!number} */ + var start; + /** @type {Array.<undefined|Position>} */ + var positions; + /** @type {!number} */ + var end; + /** @type {!boolean} */ + var split; + /** @type {!number} */ + var j; + /** @type {Position} */ + var pos; + /** @type {!string} */ + var text; + /** @type {!number} */ + var position$0; + results = Search$sortResult$LSearch$LOktavia$LSearchSummary$($this, oktavia, summary); + style = $this.style; + metadata = oktavia._metadatas[oktavia._metadataLabels[0]]; + for (i = 0; i < results.length; i++) { + unit = results[i]; + info = metadata.getInformation$I(unit.id).split(Oktavia.eob); + console.log(style.convert$S('<title>' + info[0] + '</title>') + ' ' + style.convert$S('<url>' + info[1] + '</url>')); + content = metadata.getContent$I(unit.id); + start = 0; + positions = SearchUnit$getPositions$LSearchUnit$(unit); + if (content.indexOf(info[0]) === 1) { + content = content.slice(info[0].length + 2, content.length); + start += info[0].length + 2; + } + end = start + num; + split = false; + if (positions[0].position > end - positions[0].word.length) { + end = positions[0].position + Math.floor(num / 2); + split = true; + } + for (j = positions.length - 1; j > -1; j--) { + pos = positions[j]; + if (pos.position + pos.word.length < end) { + content = [ content.slice(0, pos.position - start), style.convert$S('<hit>*</hit>').replace('*', content.slice((position$0 = pos.position) - start, position$0 + pos.word.length - start)), content.slice(pos.position + pos.word.length - start, content.length) ].join(''); + } + } + if (split) { + text = [ content.slice(0, Math.floor(num / 2)) + ' ...', content.slice(- Math.floor(num / 2), end - start) ].join('\n'); + } else { + text = content.slice(0, end - start) + ' ...\n'; + } + text = text.replace(Oktavia.eob, ' ').replace(/\n\n+/, '\n\n'); + console.log(text); + } + console.log(style.convert$S('<summary>' + (SearchSummary$size$LSearchSummary$(summary) + "") + " results.</summary>\n")); +}; + +var Search$showResult$LSearch$LOktavia$LSearchSummary$I = Search.showResult$LSearch$LOktavia$LSearchSummary$I; + +/** + * @param {Search} $this + * @param {SearchSummary} summary + * @param {Array.<undefined|!string>} query + */ +Search.notFound$LSearch$LSearchSummary$AS = function ($this, summary, query) { + /** @type {Style} */ + var style; + /** @type {Array.<undefined|Proposal>} */ + var proposals; + /** @type {!number} */ + var i; + /** @type {Proposal} */ + var proposal; + /** @type {Array.<undefined|!string>} */ + var querywords; + /** @type {!number} */ + var j; + style = $this.style; + if (query.length > 1) { + console.log("Suggestions:"); + proposals = SearchSummary$getProposal$LSearchSummary$(summary); + for (i = 0; i < proposals.length; i++) { + proposal = proposals[i]; + querywords = [ ]; + for (j = 0; j < query.length; j++) { + if (j !== proposal.omit) { + querywords.push(style.convert$S('<hit>' + query[j] + '</hit>')); + } + } + console.log("* Expected result: " + querywords.join(" ") + " - " + (proposal.expect + "") + " hit"); + } + } else { + console.log(style.convert$S("Your search - <hit>" + query[0] + "</hit> - didn't match any documents.")); + } +}; + +var Search$notFound$LSearch$LSearchSummary$AS = Search.notFound$LSearch$LSearchSummary$AS; + +/** + * @param {Search} $this + * @param {!string} algorithm + * @return {Stemmer} + */ +Search.createStemmer$LSearch$S = function ($this, algorithm) { + /** @type {Stemmer} */ + var stemmer; + switch (algorithm.toLowerCase()) { + case "danish": + stemmer = new DanishStemmer$(); + break; + case "dutch": + stemmer = new DutchStemmer$(); + break; + case "english": + stemmer = new EnglishStemmer$(); + break; + case "finnish": + stemmer = new FinnishStemmer$(); + break; + case "french": + stemmer = new FrenchStemmer$(); + break; + case "german": + stemmer = new GermanStemmer$(); + break; + case "hungarian": + stemmer = new HungarianStemmer$(); + break; + case "italian": + stemmer = new ItalianStemmer$(); + break; + case "norwegian": + stemmer = new NorwegianStemmer$(); + break; + case "porter": + stemmer = new PorterStemmer$(); + break; + case "portuguese": + stemmer = new PortugueseStemmer$(); + break; + case "romanian": + stemmer = new RomanianStemmer$(); + break; + case "russian": + stemmer = new RussianStemmer$(); + break; + case "spanish": + stemmer = new SpanishStemmer$(); + break; + case "swedish": + stemmer = new SwedishStemmer$(); + break; + case "turkish": + stemmer = new TurkishStemmer$(); + break; + default: + stemmer = new EnglishStemmer$(); + break; + } + return stemmer; +}; + +var Search$createStemmer$LSearch$S = Search.createStemmer$LSearch$S; + +/** + * class _Main extends Object + * @constructor + */ +function _Main() { +} + +/** + * @constructor + */ +function _Main$() { +}; + +_Main$.prototype = new _Main; + +/** + */ +_Main.usage$ = function () { + console.log([ "usage: oktavia_search index_file [options] query...", "", "Options:", " -m, --mono : Don't use color.", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -n, --number [char number] : Result display number. Default value = 250", " -h, --help : Display this message.", "", "Search Query Syntax:", " word1 word2 : All words.", ' "word1 word2" : Exact words or phrase.', " word1 OR word2 : Any of these words.", " word1 -word2 : None of these words." ].join('\n')); +}; + +var _Main$usage$ = _Main.usage$; + +/** + * @param {Array.<undefined|!string>} args + */ +_Main.main$AS = function (args) { + /** @type {undefined|!string} */ + var indexFile; + /** @type {!boolean} */ + var showhelp; + /** @type {!boolean} */ + var notrun; + /** @type {!string} */ + var styleType; + /** @type {!number} */ + var num; + /** @type {Array.<undefined|!string>} */ + var queryStrings; + /** @type {undefined|!string} */ + var algorithm; + /** @type {Array.<undefined|!string>} */ + var validStemmers; + /** @type {BasicParser} */ + var parser; + /** @type {CommandOption} */ + var opt; + /** @type {Style} */ + var style; + /** @type {Search} */ + var search; + console.log("Search Engine Oktavia - Command-line Search Client\n"); + indexFile = null; + showhelp = false; + notrun = false; + styleType = 'console'; + num = 250; + queryStrings = [ ]; + algorithm = null; + validStemmers = [ 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish', 'turkish' ]; + if (args.length === 0) { + showhelp = true; + } else { + if (! node.fs.existsSync(args[0])) { + console.error("Index file '" + args[0] + "' doesn't exist."); + notrun = true; + } else { + indexFile = args[0]; + } + } + parser = new BasicParser$SAS("m(mono)s:(stemmer)n:(number)h(help)", args.slice(1)); + opt = parser.getopt$(); + while (opt) { + switch (opt.option) { + case "s": + if (validStemmers.indexOf(opt.optarg) === -1) { + console.error('Option s/stemmer is invalid.'); + notrun = true; + } else { + algorithm = opt.optarg; + } + break; + case "m": + styleType = 'ignore'; + break; + case "n": + num = opt.optarg | 0; + break; + case "h": + showhelp = true; + break; + default: + queryStrings.push(opt.option); + break; + } + opt = parser.getopt$(); + } + if (showhelp || queryStrings.length === 0) { + console.log([ "usage: oktavia_search index_file [options] query...", "", "Options:", " -m, --mono : Don't use color.", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -n, --number [char number] : Result display number. Default value = 250", " -h, --help : Display this message.", "", "Search Query Syntax:", " word1 word2 : All words.", ' "word1 word2" : Exact words or phrase.', " word1 OR word2 : Any of these words.", " word1 -word2 : None of these words." ].join('\n')); + } else { + if (! notrun) { + style = new Style$S(styleType); + search = ({style: null}); + Search$search$LSearch$SASILStyle$US(search, indexFile, queryStrings, num, style, algorithm); + } + } +}; + +var _Main$main$AS = _Main.main$AS; + +/** + * class node extends Object + * @constructor + */ +function node() { +} + +/** + * @constructor + */ +function node$() { +}; + +node$.prototype = new node; + +/** + * @param {!string} source + * @return {*} + */ +node.require$S = function (source) { + /** @type {!string} */ + var src; + src = 'require(' + JSON.stringify(source) + ')'; + return eval(src); +}; + +var node$require$S = node.require$S; + +/** + * class Oktavia extends Object + * @constructor + */ +function Oktavia() { +} + +/** + * @constructor + */ +function Oktavia$() { + /** @type {Array.<undefined|!string>} */ + var _utf162compressCode$0; + this._compressCode2utf16 = null; + this._fmindex = new FMIndex$(); + this._metadatas = ({ }); + this._metadataLabels = [ ]; + this._stemmer = null; + this._stemmingResult = ({ }); + _utf162compressCode$0 = this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + _utf162compressCode$0.length = 65536; + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; +}; + +Oktavia$.prototype = new Oktavia; + +/** + * @param {Stemmer} stemmer + */ +Oktavia.prototype.setStemmer$LStemmer$ = function (stemmer) { + this._stemmer = stemmer; +}; + +/** + * @return {Metadata} + */ +Oktavia.prototype.getPrimaryMetadata$ = function () { + return this._metadatas[this._metadataLabels[0]]; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.addSection$S = function (key) { + /** @type {Section} */ + var section; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + section = new Section$LOktavia$(this); + this._metadatas[key] = section; + return section; +}; + +/** + * @param {!string} key + * @return {Section} + */ +Oktavia.prototype.getSection$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.addSplitter$S = function (key) { + /** @type {Splitter} */ + var splitter; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + splitter = new Splitter$LOktavia$(this); + this._metadatas[key] = splitter; + return splitter; +}; + +/** + * @param {!string} key + * @return {Splitter} + */ +Oktavia.prototype.getSplitter$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!string>} headers + * @return {Table} + */ +Oktavia.prototype.addTable$SAS = function (key, headers) { + /** @type {Table} */ + var table; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + table = new Table$LOktavia$AS(this, headers); + this._metadatas[key] = table; + return table; +}; + +/** + * @param {!string} key + * @return {Table} + */ +Oktavia.prototype.getTable$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.addBlock$S = function (key) { + /** @type {Block} */ + var block; + if (this._metadataLabels.indexOf(key) !== -1) { + throw new Error('Metadata name ' + key + ' is already exists'); + } + this._metadataLabels.push(key); + block = new Block$LOktavia$(this); + this._metadatas[key] = block; + return block; +}; + +/** + * @param {!string} key + * @return {Block} + */ +Oktavia.prototype.getBlock$S = function (key) { + if (this._metadataLabels.indexOf(key) === -1) { + throw new Error('Metadata name ' + key + " does't exists"); + } + return this._metadatas[key]; +}; + +/** + */ +Oktavia.prototype.addEndOfBlock$ = function () { + this._fmindex.push$S(Oktavia.eob); +}; + +/** + * @param {!string} words + */ +Oktavia.prototype.addWord$S = function (words) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {undefined|!string} */ + var newCharCode; + str = [ ]; + str.length = words.length; + for (i = 0; i < words.length; i++) { + charCode = words.charCodeAt(i); + newCharCode = this._utf162compressCode[charCode]; + if (newCharCode == null) { + newCharCode = String.fromCharCode(this._compressCode2utf16.length); + this._utf162compressCode[charCode] = newCharCode; + this._compressCode2utf16.push(String.fromCharCode(charCode)); + } + str.push(newCharCode); + } + this._fmindex.push$S(str.join('')); +}; + +/** + * @param {!string} words + * @param {!boolean} stemming + */ +Oktavia.prototype.addWord$SB = function (words, stemming) { + /** @type {Array.<undefined|!string>} */ + var wordList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var originalWord; + /** @type {!string} */ + var smallWord; + /** @type {undefined|!string} */ + var registerWord; + /** @type {!string} */ + var baseWord; + /** @type {!string} */ + var compressedCodeWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + this.addWord$S(words); + wordList = words.split(/\s+/); + for (i = 0; i < wordList.length; i++) { + originalWord = wordList[i]; + smallWord = originalWord.slice(0, 1).toLowerCase() + originalWord.slice(1); + registerWord = null; + if (stemming && this._stemmer) { + baseWord = this._stemmer.stemWord$S(originalWord.toLowerCase()); + if (originalWord.indexOf(baseWord) === -1) { + registerWord = baseWord; + } + } else { + if (originalWord != smallWord) { + registerWord = smallWord; + } + } + if (registerWord) { + compressedCodeWord = this._convertToCompressionCode$S(originalWord); + stemmedList = this._stemmingResult[registerWord]; + if (! stemmedList) { + stemmedList = [ compressedCodeWord ]; + this._stemmingResult[registerWord] = stemmedList; + } else { + if (stemmedList.indexOf(compressedCodeWord) === -1) { + stemmedList.push(compressedCodeWord); + } + } + } + } +}; + +/** + * @param {!string} keyword + * @return {!string} + */ +Oktavia.prototype._convertToCompressionCode$S = function (keyword) { + /** @type {Array.<undefined|!string>} */ + var resultChars; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var chr; + resultChars = [ ]; + for (i = 0; i < keyword.length; i++) { + chr = this._utf162compressCode[keyword.charCodeAt(i)]; + if (chr == null) { + resultChars.push(Oktavia.unknown); + } else { + resultChars.push(chr); + } + } + return resultChars.join(''); +}; + +/** + * @param {!string} keyword + * @param {!boolean} stemming + * @return {Array.<undefined|!number>} + */ +Oktavia.prototype.rawSearch$SB = function (keyword, stemming) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!string} */ + var baseWord; + /** @type {Array.<undefined|!string>} */ + var stemmedList; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + if (stemming) { + result = [ ]; + if (this._stemmer) { + baseWord = this._stemmer.stemWord$S(keyword.toLowerCase()); + stemmedList = this._stemmingResult[baseWord]; + if (stemmedList) { + for (i = 0; i < stemmedList.length; i++) { + word = stemmedList[i]; + result = result.concat(this._fmindex.search$S(word)); + } + } + } + } else { + result = this._fmindex.search$S(this._convertToCompressionCode$S(keyword)); + } + return result; +}; + +/** + * @param {Array.<undefined|Query>} queries + * @return {SearchSummary} + */ +Oktavia.prototype.search$ALQuery$ = function (queries) { + /** @type {SearchSummary} */ + var summary; + /** @type {!number} */ + var i; + /** @type {SingleResult} */ + var result$0; + summary = ({sourceResults: [ ], result: null, oktavia: this}); + for (i = 0; i < queries.length; i++) { + result$0 = this._searchQuery$LQuery$(queries[i]); + summary.sourceResults.push(result$0); + } + summary.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$(summary, summary.sourceResults); + return summary; +}; + +/** + * @param {Query} query + * @return {SingleResult} + */ +Oktavia.prototype._searchQuery$LQuery$ = function (query) { + /** @type {SingleResult} */ + var result; + /** @type {Array.<undefined|!number>} */ + var positions; + result = new SingleResult$SBB(query.word, query.or, query.not); + if (query.raw) { + positions = this.rawSearch$SB(query.word, false); + } else { + positions = this.rawSearch$SB(query.word, false).concat(this.rawSearch$SB(query.word, true)); + } + this._metadatas[this._metadataLabels[0]].grouping$LSingleResult$AISB(result, positions, query.word, ! query.raw); + return result; +}; + +/** + */ +Oktavia.prototype.build$ = function () { + this.build$IB(5, false); +}; + +/** + * @param {!number} cacheDensity + * @param {!boolean} verbose + */ +Oktavia.prototype.build$IB = function (cacheDensity, verbose) { + /** @type {!string} */ + var key; + /** @type {!number} */ + var cacheRange; + /** @type {!number} */ + var maxChar; + for (key in this._metadatas) { + this._metadatas[key]._build$(); + } + cacheRange = Math.round(Math.max(1, 100 / Math.min(100, Math.max(0.01, cacheDensity)))); + maxChar = this._compressCode2utf16.length; + this._fmindex.build$SIIB(Oktavia.eof, maxChar, cacheRange, verbose); +}; + +/** + * @return {!string} + */ +Oktavia.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +Oktavia.prototype.dump$B = function (verbose) { + /** @type {!string} */ + var header; + /** @type {!string} */ + var fmdata; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {CompressionReport} */ + var report; + /** @type {undefined|!string} */ + var name; + /** @type {!string} */ + var data; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (verbose) { + console.log("Source text size: " + (this._fmindex.size$() * 2 + "") + ' bytes'); + } + fmdata = this._fmindex.dump$B(verbose); + result = [ header, fmdata ]; + result.push(Binary$dump16bitNumber$I(this._compressCode2utf16.length)); + for (i = 3; i < this._compressCode2utf16.length; i++) { + result.push(this._compressCode2utf16[i]); + } + if (verbose) { + console.log('Char Code Map: ' + (this._compressCode2utf16.length * 2 - 2 + "") + ' bytes'); + } + report = ({source: 0, result: 0}); + result.push(Binary$dumpStringListMap$HASLCompressionReport$(this._stemmingResult, report)); + if (verbose) { + console.log('Stemmed Word Table: ' + (result[result.length - 1].length + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + result.push(Binary$dump16bitNumber$I(this._metadataLabels.length)); + for (i = 0; i < this._metadataLabels.length; i++) { + report = ({source: 0, result: 0}); + name = this._metadataLabels[i]; + data = this._metadatas[name]._dump$LCompressionReport$(report); + result.push(Binary$dumpString$SLCompressionReport$(name, report), data); + if (verbose) { + console.log('Meta Data ' + name + ': ' + (data.length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + } + return result.join(''); +}; + +/** + * @param {!string} data + */ +Oktavia.prototype.load$S = function (data) { + /** @type {!string} */ + var header; + /** @type {!number} */ + var offset; + /** @type {!number} */ + var charCodeCount; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {LoadedStringListMapResult} */ + var stemmedWords; + /** @type {!number} */ + var metadataCount; + /** @type {LoadedStringResult} */ + var nameResult; + /** @type {!string} */ + var name; + /** @type {!number} */ + var type; + header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1); + if (data.slice(0, 5) !== header) { + throw new Error('Invalid data file'); + } + this._metadatas = ({ }); + this._metadataLabels = [ ]; + offset = 5; + offset = this._fmindex.load$SI(data, offset); + charCodeCount = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ]; + for (i = 3; i < charCodeCount; i++) { + charCode = Binary$load16bitNumber$SI(data, offset++); + this._compressCode2utf16.push(String.fromCharCode(charCode)); + this._utf162compressCode[charCode] = String.fromCharCode(i); + } + stemmedWords = Binary$loadStringListMap$SI(data, offset); + this._stemmingResult = stemmedWords.result; + offset = stemmedWords.offset; + metadataCount = Binary$load16bitNumber$SI(data, offset++); + for (i = 0; i < metadataCount; i++) { + nameResult = Binary$loadString$SI(data, offset); + name = nameResult.result; + offset = nameResult.offset; + type = Binary$load16bitNumber$SI(data, offset++); + switch (type) { + case 0: + offset = Section$_load$LOktavia$SSI(this, name, data, offset); + break; + case 1: + offset = Splitter$_load$LOktavia$SSI(this, name, data, offset); + break; + case 2: + offset = Table$_load$LOktavia$SSI(this, name, data, offset); + break; + case 3: + offset = Block$_load$LOktavia$SSI(this, name, data, offset); + break; + } + } +}; + +/** + * @return {!number} + */ +Oktavia.prototype.contentSize$ = function () { + /** @type {FMIndex} */ + var this$0; + this$0 = this._fmindex; + return this$0._substr.length; +}; + +/** + * @param {!number} position + * @return {!number} + */ +Oktavia.prototype.wordPositionType$I = function (position) { + /** @type {!number} */ + var result; + /** @type {!string} */ + var ahead; + result = 0; + if (position === 0) { + result = 4; + } else { + ahead = this._fmindex.getSubstring$II(position - 1, 1); + if (/\s/.test(ahead)) { + result = 2; + } else { + if (/\W/.test(ahead)) { + result = 1; + } else { + if (Oktavia.eob === ahead) { + result = 3; + } + } + } + } + return (result | 0); +}; + +/** + * @param {!number} position + * @param {!number} length + * @return {!string} + */ +Oktavia.prototype._getSubstring$II = function (position, length) { + /** @type {!string} */ + var result; + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var i; + result = this._fmindex.getSubstring$II(position, length); + str = [ ]; + for (i = 0; i < result.length; i++) { + str.push(this._compressCode2utf16[result.charCodeAt(i)]); + } + return str.join(''); +}; + +/** + * class CommandOption extends Object + * @constructor + */ +function CommandOption() { +} + +/** + * @constructor + * @param {!string} option + */ +function CommandOption$S(option) { + this.option = option; + this.optarg = null; + this.error = false; +}; + +CommandOption$S.prototype = new CommandOption; + +/** + * @constructor + * @param {!string} option + * @param {!string} optarg + */ +function CommandOption$SS(option, optarg) { + this.option = option; + this.optarg = optarg; + this.error = false; +}; + +CommandOption$SS.prototype = new CommandOption; + +/** + * @constructor + * @param {!string} option + * @param {!string} optarg + * @param {!boolean} error + */ +function CommandOption$SSB(option, optarg, error) { + this.option = option; + this.optarg = optarg; + this.error = error; +}; + +CommandOption$SSB.prototype = new CommandOption; + +/** + * class BasicParser extends Object + * @constructor + */ +function BasicParser() { +} + +/** + * @constructor + * @param {!string} optstring + * @param {Array.<undefined|!string>} argv + */ +function BasicParser$SAS(optstring, argv) { + this._silent = false; + this._argv = argv; + this._options = ({ }); + this._aliases = ({ }); + this._optind = 0; + this._subind = 0; + this._extraoptions = false; + this._parseOptstr$S(optstring); +}; + +BasicParser$SAS.prototype = new BasicParser; + +/** + * @param {!string} msg + * @return {Error} + */ +BasicParser._makeError$S = function (msg) { + return new Error('getopt: ' + msg); +}; + +var BasicParser$_makeError$S = BasicParser._makeError$S; + +/** + * @param {!string} optstr + */ +BasicParser.prototype._parseOptstr$S = function (optstr) { + /** @type {!number} */ + var i; + /** @type {!string} */ + var chr; + /** @type {!boolean} */ + var arg; + /** @type {!number} */ + var cp; + /** @type {!string} */ + var alias; + i = 0; + if (optstr.length > 0 && optstr.slice(0, 1) === ':') { + this._silent = true; + i++; + } else { + this._silent = false; + } + while (i < optstr.length) { + chr = optstr.slice(i, i + 1); + arg = false; + if (! /^[\w\d]$/.test(chr)) { + throw new Error("invalid optstring: only alphanumeric characters may be used as options: " + chr); + } + if (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === ':') { + arg = true; + i++; + } + this._options[chr] = arg; + while (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === '(') { + i++; + cp = optstr.indexOf(')', i + 1); + if (cp === -1) { + throw new Error("invalid optstring: missing \")\" to match \"(\" at char " + (i + "")); + } + alias = optstr.substring(i + 1, cp); + this._aliases[alias] = chr; + i = cp; + } + i++; + } +}; + +/** + * @return {!number} + */ +BasicParser.prototype.optind$ = function () { + return this._optind; +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype.getopt$ = function () { + /** @type {undefined|!string} */ + var arg; + if (this._optind >= this._argv.length) { + return null; + } + arg = this._argv[this._optind]; + if (this._extraoptions) { + this._optind++; + return ({option: arg, optarg: null, error: false}); + } + if (this._subind === 0) { + if (arg == '-' || arg == '') { + return null; + } + if (arg.charAt(0) !== '-') { + this._extraoptions = true; + this._optind++; + return ({option: arg, optarg: null, error: false}); + } + if (arg == '--') { + this._optind++; + this._subind = 0; + return null; + } + if (arg.slice(1, 2) === '-') { + return this._getoptLong$(); + } + this._subind++; + } + return this._getoptShort$(); +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype._getoptShort$ = function () { + /** @type {undefined|!string} */ + var arg; + /** @type {!string} */ + var chr; + /** @type {!number} */ + var _subind$0; + arg = this._argv[this._optind]; + chr = arg.slice(_subind$0 = this._subind, _subind$0 + 1); + if (++ this._subind >= arg.length) { + this._optind++; + this._subind = 0; + } + return (! (chr in this._options) ? this._errInvalidOption$S(chr) : ! this._options[chr] ? ({option: chr, optarg: null, error: false}) : this._getoptArgument$S(chr)); +}; + +/** + * @return {CommandOption} + */ +BasicParser.prototype._getoptLong$ = function () { + /** @type {undefined|!string} */ + var arg; + /** @type {!number} */ + var eq; + /** @type {!string} */ + var alias; + /** @type {undefined|!string} */ + var chr; + arg = this._argv[this._optind]; + eq = arg.indexOf('='); + alias = arg.substring(2, eq === -1 ? arg.length : eq); + if (! (alias in this._aliases)) { + return this._errInvalidOption$S(alias); + } + chr = this._aliases[alias]; + if (! this._options[chr]) { + if (eq !== -1) { + return this._errExtraArg$S(alias); + } + this._optind++; + return ({option: chr, optarg: null, error: false}); + } + if (eq === -1) { + this._optind++; + } else { + this._subind = (eq + 1 | 0); + } + return this._getoptArgument$S(chr); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._getoptArgument$S = function (chr) { + /** @type {!string} */ + var arg; + if (this._optind >= this._argv.length) { + return this._errMissingArg$S(chr); + } + arg = this._argv[this._optind].substring(this._subind); + this._optind++; + this._subind = 0; + return ({option: chr, optarg: arg, error: false}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errMissingArg$S = function (chr) { + if (this._silent) { + return ({option: ':', optarg: chr, error: false}); + } + console.error('option requires an argument -- ' + chr + '\n'); + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errInvalidOption$S = function (chr) { + if (! this._silent) { + console.error('illegal option -- ' + chr + '\n'); + } + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * @param {!string} chr + * @return {CommandOption} + */ +BasicParser.prototype._errExtraArg$S = function (chr) { + if (! this._silent) { + console.error('option expects no argument -- ' + chr + '\n'); + } + return ({option: '?', optarg: chr, error: true}); +}; + +/** + * class QueryParser extends Object + * @constructor + */ +function QueryParser() { +} + +/** + * @constructor + */ +function QueryParser$() { + this.queries = [ ]; +}; + +QueryParser$.prototype = new QueryParser; + +/** + * @param {QueryParser} $this + * @param {Array.<undefined|!string>} queryStrings + * @return {Array.<undefined|Query>} + */ +QueryParser.parse$LQueryParser$AS = function ($this, queryStrings) { + /** @type {!boolean} */ + var nextOr; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + /** @type {Query} */ + var query; + nextOr = false; + for (i = 0; i < queryStrings.length; i++) { + word = queryStrings[i]; + if (word == 'OR') { + nextOr = true; + } else { + query = new Query$(); + if (nextOr) { + query.or = true; + nextOr = false; + } + if (word.slice(0, 1) === '-') { + query.not = true; + word = word.slice(1); + } + if (word.slice(0, 1) === '"' && word.slice(word.length - 1) === '"') { + query.raw = true; + word = word.slice(1, word.length - 1); + } + query.word = word; + $this.queries.push(query); + } + } + return $this.queries; +}; + +var QueryParser$parse$LQueryParser$AS = QueryParser.parse$LQueryParser$AS; + +/** + * @param {QueryParser} $this + * @return {!string} + */ +QueryParser.highlight$LQueryParser$ = function ($this) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {Query} */ + var query; + result = [ ]; + for (i = 0; i < $this.queries.length; i++) { + query = $this.queries[i]; + if (! query.not) { + result.push("highlight=" + $__jsx_encodeURIComponent(query.word)); + } + } + return '?' + result.join('&'); +}; + +var QueryParser$highlight$LQueryParser$ = QueryParser.highlight$LQueryParser$; + +/** + * class Proposal extends Object + * @constructor + */ +function Proposal() { +} + +/** + * @constructor + * @param {!number} omit + * @param {!number} expect + */ +function Proposal$II(omit, expect) { + this.omit = omit; + this.expect = expect; +}; + +Proposal$II.prototype = new Proposal; + +/** + * class Position extends Object + * @constructor + */ +function Position() { +} + +/** + * @constructor + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +function Position$SIB(word, position, stemmed) { + this.word = word; + this.position = position; + this.stemmed = stemmed; +}; + +Position$SIB.prototype = new Position; + +/** + * class SearchUnit extends Object + * @constructor + */ +function SearchUnit() { +} + +/** + * @constructor + * @param {!number} id + */ +function SearchUnit$I(id) { + this.positions = ({ }); + this.id = id; + this._size = 0; + this.score = 0; + this.startPosition = -1; +}; + +SearchUnit$I.prototype = new SearchUnit; + +/** + * @param {SearchUnit} $this + * @param {!string} word + * @param {!number} position + * @param {!boolean} stemmed + */ +SearchUnit.addPosition$LSearchUnit$SIB = function ($this, word, position, stemmed) { + /** @type {Position} */ + var positionObj; + positionObj = $this.positions[position + ""]; + if (! positionObj) { + $this._size++; + $this.positions[position + ""] = ({word: word, position: position, stemmed: stemmed}); + } else { + if (positionObj.word.length < word.length) { + positionObj.word = word; + } + positionObj.stemmed = positionObj.stemmed && stemmed; + } +}; + +var SearchUnit$addPosition$LSearchUnit$SIB = SearchUnit.addPosition$LSearchUnit$SIB; + +/** + * @param {SearchUnit} $this + * @param {!number} position + * @return {Position} + */ +SearchUnit.get$LSearchUnit$I = function ($this, position) { + return $this.positions[position + ""]; +}; + +var SearchUnit$get$LSearchUnit$I = SearchUnit.get$LSearchUnit$I; + +/** + * @param {SearchUnit} $this + * @return {!number} + */ +SearchUnit.size$LSearchUnit$ = function ($this) { + return $this._size; +}; + +var SearchUnit$size$LSearchUnit$ = SearchUnit.size$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @param {SearchUnit} rhs + */ +SearchUnit.merge$LSearchUnit$LSearchUnit$ = function ($this, rhs) { + /** @type {!string} */ + var position; + /** @type {Position} */ + var pos; + for (position in rhs.positions) { + pos = rhs.positions[position]; + SearchUnit$addPosition$LSearchUnit$SIB($this, pos.word, pos.position, pos.stemmed); + } +}; + +var SearchUnit$merge$LSearchUnit$LSearchUnit$ = SearchUnit.merge$LSearchUnit$LSearchUnit$; + +/** + * @param {SearchUnit} $this + * @return {Array.<undefined|Position>} + */ +SearchUnit.getPositions$LSearchUnit$ = function ($this) { + /** @type {Array.<undefined|Position>} */ + var result; + /** @type {!string} */ + var pos; + result = [ ]; + for (pos in $this.positions) { + result.push($this.positions[pos]); + } + result.sort((function (a, b) { + return a.position - b.position; + })); + return result; +}; + +var SearchUnit$getPositions$LSearchUnit$ = SearchUnit.getPositions$LSearchUnit$; + +/** + * class SingleResult extends Object + * @constructor + */ +function SingleResult() { +} + +/** + * @constructor + */ +function SingleResult$() { + this.units = [ ]; + this.unitIds = [ ]; + this.or = false; + this.not = false; + this.searchWord = ''; +}; + +SingleResult$.prototype = new SingleResult; + +/** + * @constructor + * @param {!string} searchWord + * @param {!boolean} or + * @param {!boolean} not + */ +function SingleResult$SBB(searchWord, or, not) { + this.units = [ ]; + this.unitIds = [ ]; + this.or = or; + this.not = not; + this.searchWord = searchWord; +}; + +SingleResult$SBB.prototype = new SingleResult; + +/** + * @param {SingleResult} $this + * @param {!number} unitId + * @return {SearchUnit} + */ +SingleResult.getSearchUnit$LSingleResult$I = function ($this, unitId) { + /** @type {!number} */ + var existing; + /** @type {SearchUnit} */ + var result; + existing = $this.unitIds.indexOf(unitId); + if (existing === -1) { + result = ({positions: ({ }), id: unitId, _size: 0, score: 0, startPosition: -1}); + $this.units.push(result); + $this.unitIds.push(unitId); + } else { + result = $this.units[existing]; + } + return result; +}; + +var SingleResult$getSearchUnit$LSingleResult$I = SingleResult.getSearchUnit$LSingleResult$I; + +/** + * @param {SingleResult} $this + * @param {SingleResult} rhs + * @return {SingleResult} + */ +SingleResult.merge$LSingleResult$LSingleResult$ = function ($this, rhs) { + /** @type {SingleResult} */ + var result; + result = ({units: [ ], unitIds: [ ], or: false, not: false, searchWord: ''}); + if (rhs.or) { + SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + if (rhs.not) { + SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } else { + SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs); + } + } + return result; +}; + +var SingleResult$merge$LSingleResult$LSingleResult$ = SingleResult.merge$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @return {!number} + */ +SingleResult.size$LSingleResult$ = function ($this) { + return ($this.units.length | 0); +}; + +var SingleResult$size$LSingleResult$ = SingleResult.size$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) !== -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var rhsSection; + /** @type {SearchUnit} */ + var lhsSection; + /** @type {Array.<undefined|!number>} */ + var unitIds$0; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result.unitIds = (unitIds$0 = $this.unitIds).slice(0, unitIds$0.length); + result.units = (units$0 = $this.units).slice(0, units$0.length); + for (i = 0; i < rhs.unitIds.length; i++) { + id = rhs.unitIds[i]; + rhsSection = rhs.units[i]; + if (result.unitIds.indexOf(id) !== -1) { + lhsSection = result.units[result.unitIds.indexOf(id)]; + SearchUnit$merge$LSearchUnit$LSearchUnit$(lhsSection, rhsSection); + } else { + result.unitIds.push(id); + result.units.push(rhsSection); + } + } +}; + +var SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * @param {SingleResult} $this + * @param {SingleResult} result + * @param {SingleResult} rhs + */ +SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var id; + /** @type {SearchUnit} */ + var lhsSection; + for (i = 0; i < $this.unitIds.length; i++) { + id = $this.unitIds[i]; + if (rhs.unitIds.indexOf(id) === -1) { + lhsSection = $this.units[i]; + result.unitIds.push(id); + result.units.push(lhsSection); + } + } +}; + +var SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$; + +/** + * class SearchSummary extends Object + * @constructor + */ +function SearchSummary() { +} + +/** + * @constructor + */ +function SearchSummary$() { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = null; +}; + +SearchSummary$.prototype = new SearchSummary; + +/** + * @constructor + * @param {Oktavia} oktavia + */ +function SearchSummary$LOktavia$(oktavia) { + this.sourceResults = [ ]; + this.result = null; + this.oktavia = oktavia; +}; + +SearchSummary$LOktavia$.prototype = new SearchSummary; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.addQuery$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$addQuery$LSearchSummary$LSingleResult$ = SearchSummary.addQuery$LSearchSummary$LSingleResult$; + +/** + * @param {SearchSummary} $this + */ +SearchSummary.mergeResult$LSearchSummary$ = function ($this) { + $this.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, $this.sourceResults); +}; + +var SearchSummary$mergeResult$LSearchSummary$ = SearchSummary.mergeResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {Array.<undefined|SingleResult>} results + * @return {SingleResult} + */ +SearchSummary.mergeResult$LSearchSummary$ALSingleResult$ = function ($this, results) { + /** @type {SingleResult} */ + var rhs; + /** @type {!number} */ + var i; + /** @type {!number} */ + var results$len$0; + rhs = results[0]; + for ((i = 1, results$len$0 = results.length); i < results$len$0; i++) { + rhs = SingleResult$merge$LSingleResult$LSingleResult$(rhs, results[i]); + } + return rhs; +}; + +var SearchSummary$mergeResult$LSearchSummary$ALSingleResult$ = SearchSummary.mergeResult$LSearchSummary$ALSingleResult$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|Proposal>} + */ +SearchSummary.getProposal$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|Proposal>} */ + var proposals; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|SingleResult>} */ + var tmpSource; + /** @type {!number} */ + var j; + /** @type {SingleResult} */ + var result; + proposals = [ ]; + for (i = 0; i < $this.sourceResults.length; i++) { + tmpSource = [ ]; + for (j = 0; j < $this.sourceResults.length; j++) { + if (i !== j) { + tmpSource.push($this.sourceResults[j]); + } + } + result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, tmpSource); + proposals.push(({omit: i, expect: result.units.length})); + } + proposals.sort((function (a, b) { + return b.expect - a.expect; + })); + return proposals; +}; + +var SearchSummary$getProposal$LSearchSummary$ = SearchSummary.getProposal$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {Array.<undefined|SearchUnit>} + */ +SearchSummary.getSortedResult$LSearchSummary$ = function ($this) { + /** @type {Array.<undefined|SearchUnit>} */ + var result; + /** @type {Array.<undefined|SearchUnit>} */ + var units$0; + result = (units$0 = $this.result.units).slice(0, units$0.length); + result.sort((function (a, b) { + return b.score - a.score; + })); + return result; +}; + +var SearchSummary$getSortedResult$LSearchSummary$ = SearchSummary.getSortedResult$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @return {!number} + */ +SearchSummary.size$LSearchSummary$ = function ($this) { + /** @type {SingleResult} */ + var this$0; + this$0 = $this.result; + return (this$0.units.length | 0); +}; + +var SearchSummary$size$LSearchSummary$ = SearchSummary.size$LSearchSummary$; + +/** + * @param {SearchSummary} $this + * @param {SingleResult} result + */ +SearchSummary.add$LSearchSummary$LSingleResult$ = function ($this, result) { + $this.sourceResults.push(result); +}; + +var SearchSummary$add$LSearchSummary$LSingleResult$ = SearchSummary.add$LSearchSummary$LSingleResult$; + +/** + * class Style extends Object + * @constructor + */ +function Style() { +} + +/** + * @constructor + * @param {!string} mode + */ +function Style$S(mode) { + this.styles = null; + this.escapeHTML = false; + switch (mode) { + case 'console': + this.styles = Style.console; + break; + case 'html': + this.styles = Style.html; + break; + case 'ignore': + this.styles = Style.ignore; + break; + default: + this.styles = Style.ignore; + break; + } + this.escapeHTML = mode === 'html'; +}; + +Style$S.prototype = new Style; + +/** + * @param {!string} source + * @return {!string} + */ +Style.prototype.convert$S = function (source) { + /** @type {_HTMLHandler} */ + var handler; + /** @type {SAXParser} */ + var parser; + handler = new _HTMLHandler$HASB(this.styles, this.escapeHTML); + parser = new SAXParser$LSAXHandler$(handler); + parser.parse$S(source); + return handler.text.join(''); +}; + +/** + * class Binary extends Object + * @constructor + */ +function Binary() { +} + +/** + * @constructor + */ +function Binary$() { +}; + +Binary$.prototype = new Binary; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump32bitNumber$N = function (num) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ String.fromCharCode(Math.floor(num / 65536)) ]; + result.push(String.fromCharCode(num % 65536)); + return result.join(""); +}; + +var Binary$dump32bitNumber$N = Binary.dump32bitNumber$N; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load32bitNumber$SI = function (buffer, offset) { + /** @type {!number} */ + var result; + result = buffer.charCodeAt(offset) * 65536 + buffer.charCodeAt(offset + 1); + return result; +}; + +var Binary$load32bitNumber$SI = Binary.load32bitNumber$SI; + +/** + * @param {!number} num + * @return {!string} + */ +Binary.dump16bitNumber$I = function (num) { + return String.fromCharCode(num % 65536); +}; + +var Binary$dump16bitNumber$I = Binary.dump16bitNumber$I; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {!number} + */ +Binary.load16bitNumber$SI = function (buffer, offset) { + return (buffer.charCodeAt(offset) | 0); +}; + +var Binary$load16bitNumber$SI = Binary.load16bitNumber$SI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.dumpString$S = function (str) { + return Binary$dumpString$SLCompressionReport$(str, null); +}; + +var Binary$dumpString$S = Binary.dumpString$S; + +/** + * @param {!string} str + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpString$SLCompressionReport$ = function (str, report) { + /** @type {!number} */ + var length; + /** @type {!boolean} */ + var compress; + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var charCode; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {undefined|!number} */ + var bytes; + if (str.length > 32768) { + str = str.slice(0, 32768); + } + length = str.length; + compress = true; + charCodes = [ ]; + for (i = 0; i < length; i++) { + charCode = str.charCodeAt(i); + if (charCode > 255) { + compress = false; + break; + } + charCodes.push(charCode); + } + if (compress) { + result = [ Binary$dump16bitNumber$I(length + 32768) ]; + for (i = 0; i < length; i += 2) { + bytes = charCodes[i]; + if (i !== length - 1) { + bytes += charCodes[i + 1] << 8; + } + result.push(String.fromCharCode(bytes % 65536)); + } + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, Math.ceil(length / 2)); + } + } else { + result = [ Binary$dump16bitNumber$I(length), str ]; + if (report) { + CompressionReport$add$LCompressionReport$II(report, length, length); + } + } + return result.join(''); +}; + +var Binary$dumpString$SLCompressionReport$ = Binary.dumpString$SLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringResult} + */ +Binary.loadString$SI = function (buffer, offset) { + return new LoadedStringResult$SI(buffer, offset); +}; + +var Binary$loadString$SI = Binary.loadString$SI; + +/** + * @param {Array.<undefined|!string>} strList + * @return {!string} + */ +Binary.dumpStringList$AS = function (strList) { + return Binary$dumpStringList$ASLCompressionReport$(strList, null); +}; + +var Binary$dumpStringList$AS = Binary.dumpStringList$AS; + +/** + * @param {Array.<undefined|!string>} strList + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringList$ASLCompressionReport$ = function (strList, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ Binary$dump32bitNumber$N(strList.length) ]; + for (i = 0; i < strList.length; i++) { + result.push(Binary$dumpString$SLCompressionReport$(strList[i], report)); + } + return result.join(''); +}; + +var Binary$dumpStringList$ASLCompressionReport$ = Binary.dumpStringList$ASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListResult} + */ +Binary.loadStringList$SI = function (buffer, offset) { + return new LoadedStringListResult$SI(buffer, offset); +}; + +var Binary$loadStringList$SI = Binary.loadStringList$SI; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @return {!string} + */ +Binary.dumpStringListMap$HAS = function (strMap) { + return Binary$dumpStringListMap$HASLCompressionReport$(strMap, null); +}; + +var Binary$dumpStringListMap$HAS = Binary.dumpStringListMap$HAS; + +/** + * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dumpStringListMap$HASLCompressionReport$ = function (strMap, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + result = [ ]; + counter = 0; + for (key in strMap) { + result.push(Binary$dumpString$SLCompressionReport$(key, report)); + result.push(Binary$dumpStringList$ASLCompressionReport$(strMap[key], report)); + counter++; + } + return Binary$dump32bitNumber$N(counter) + result.join(''); +}; + +var Binary$dumpStringListMap$HASLCompressionReport$ = Binary.dumpStringListMap$HASLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedStringListMapResult} + */ +Binary.loadStringListMap$SI = function (buffer, offset) { + return new LoadedStringListMapResult$SI(buffer, offset); +}; + +var Binary$loadStringListMap$SI = Binary.loadStringListMap$SI; + +/** + * @param {Array.<undefined|!number>} array + * @return {!string} + */ +Binary.dump32bitNumberList$AN = function (array) { + return Binary$dump32bitNumberList$ANLCompressionReport$(array, null); +}; + +var Binary$dump32bitNumberList$AN = Binary.dump32bitNumberList$AN; + +/** + * @param {Array.<undefined|!number>} array + * @param {CompressionReport} report + * @return {!string} + */ +Binary.dump32bitNumberList$ANLCompressionReport$ = function (array, report) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var index; + /** @type {!number} */ + var inputLength; + /** @type {!number} */ + var length; + /** @type {!string} */ + var resultString; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + result = [ Binary$dump32bitNumber$N(array.length) ]; + index = 0; + inputLength = array.length; + while (index < inputLength) { + if (array[index] == 0) { + length = Binary$_countZero$ANI(array, index); + result.push(Binary$_zeroBlock$I(length)); + index += length; + } else { + if (Binary$_shouldZebraCode$ANI(array, index)) { + result.push(Binary$_createZebraCode$ANI(array, index)); + value1$0 = array.length; + value2$0 = index + 15; + index = (value1$0 <= value2$0 ? value1$0 : value2$0); + } else { + length = Binary$_searchDoubleZero$ANI(array, index); + result.push(Binary$_nonZeroBlock$ANII(array, index, length)); + if (length === 0) { + throw new Error(''); + } + index += length; + } + } + } + resultString = result.join(''); + if (report) { + CompressionReport$add$LCompressionReport$II(report, array.length * 2 + 2, resultString.length); + } + return resultString; +}; + +var Binary$dump32bitNumberList$ANLCompressionReport$ = Binary.dump32bitNumberList$ANLCompressionReport$; + +/** + * @param {!string} buffer + * @param {!number} offset + * @return {LoadedNumberListResult} + */ +Binary.load32bitNumberList$SI = function (buffer, offset) { + return new LoadedNumberListResult$SI(buffer, offset); +}; + +var Binary$load32bitNumberList$SI = Binary.load32bitNumberList$SI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._countZero$ANI = function (array, offset) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] != 0) { + return (i - offset | 0); + } + } + return (array.length - offset | 0); +}; + +var Binary$_countZero$ANI = Binary._countZero$ANI; + +/** + * @param {!number} length + * @return {!string} + */ +Binary._zeroBlock$I = function (length) { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + while (length > 0) { + if (length > 16384) { + result.push(Binary$dump16bitNumber$I(16383)); + length -= 16384; + } else { + result.push(Binary$dump16bitNumber$I(length - 1)); + length = 0; + } + } + return result.join(''); +}; + +var Binary$_zeroBlock$I = Binary._zeroBlock$I; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!boolean} + */ +Binary._shouldZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var change; + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + if (array.length - offset < 16) { + return true; + } + change = 0; + isLastZero = false; + for (i = offset; i < offset + 15; i++) { + if (array[i] == 0) { + if (! isLastZero) { + isLastZero = true; + change++; + } + } else { + if (isLastZero) { + isLastZero = false; + change++; + } + } + } + return change > 2; +}; + +var Binary$_shouldZebraCode$ANI = Binary._shouldZebraCode$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!number} + */ +Binary._searchDoubleZero$ANI = function (array, offset) { + /** @type {!boolean} */ + var isLastZero; + /** @type {!number} */ + var i; + /** @type {!number} */ + var array$len$0; + isLastZero = false; + for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) { + if (array[i] == 0) { + if (isLastZero) { + return (i - offset - 1 | 0); + } + isLastZero = true; + } else { + isLastZero = false; + } + } + return (array.length - offset | 0); +}; + +var Binary$_searchDoubleZero$ANI = Binary._searchDoubleZero$ANI; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @param {!number} length + * @return {!string} + */ +Binary._nonZeroBlock$ANII = function (array, offset, length) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var blockLength; + /** @type {!number} */ + var i; + result = [ ]; + while (length > 0) { + if (length > 16384) { + blockLength = 16384; + length -= 16384; + } else { + blockLength = length; + length = 0; + } + result.push(Binary$dump16bitNumber$I(blockLength - 1 + 0x4000)); + for (i = offset; i < offset + blockLength; i++) { + result.push(Binary$dump32bitNumber$N(array[i])); + } + offset += blockLength; + } + return result.join(''); +}; + +var Binary$_nonZeroBlock$ANII = Binary._nonZeroBlock$ANII; + +/** + * @param {Array.<undefined|!number>} array + * @param {!number} offset + * @return {!string} + */ +Binary._createZebraCode$ANI = function (array, offset) { + /** @type {!number} */ + var last; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + /** @type {!number} */ + var value1$0; + /** @type {!number} */ + var value2$0; + value1$0 = offset + 15; + value2$0 = array.length; + last = (value1$0 <= value2$0 ? value1$0 : value2$0); + code = 0x8000; + result = [ ]; + for (i = offset; i < last; i++) { + if (array[i] != 0) { + result.push(Binary$dump32bitNumber$N(array[i])); + code = code + (0x1 << i - offset); + } + } + return String.fromCharCode(code) + result.join(''); +}; + +var Binary$_createZebraCode$ANI = Binary._createZebraCode$ANI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64encode$S = function (str) { + /** @type {Array.<undefined|!string>} */ + var out; + /** @type {Array.<undefined|!number>} */ + var source; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var len; + /** @type {!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {undefined|!number} */ + var c3; + out = [ ]; + source = [ ]; + for (i = 0; i < str.length; i++) { + code = str.charCodeAt(i); + source.push(code & 0x00ff, code >>> 8); + } + len = str.length * 2; + i = 0; + while (i < len) { + c1 = source[i++] & 0xff; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4)); + out.push("=="); + break; + } + c2 = source[i++]; + if (i === len) { + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2)); + out.push("="); + break; + } + c3 = source[i++]; + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2 | (c3 & 0xC0) >> 6)); + out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c3 & 0x3F)); + } + return out.join(''); +}; + +var Binary$base64encode$S = Binary.base64encode$S; + +/** + * @param {Array.<undefined|!number>} source + * @return {!string} + */ +Binary._mergeCharCode$AI = function (source) { + /** @type {Array.<undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + result = [ ]; + for (i = 0; i < source.length; i += 2) { + result.push(String.fromCharCode(source[i] + (source[i + 1] << 8))); + } + return result.join(''); +}; + +var Binary$_mergeCharCode$AI = Binary._mergeCharCode$AI; + +/** + * @param {!string} str + * @return {!string} + */ +Binary.base64decode$S = function (str) { + /** @type {!number} */ + var len; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var out; + /** @type {undefined|!number} */ + var c1; + /** @type {undefined|!number} */ + var c2; + /** @type {!number} */ + var c3; + /** @type {!number} */ + var c4; + len = str.length; + i = 0; + out = [ ]; + while (i < len) { + do { + c1 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c1 == -1); + if (c1 == -1) { + break; + } + do { + c2 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c2 == -1); + if (c2 == -1) { + break; + } + out.push(c1 << 2 | (c2 & 0x30) >> 4); + do { + c3 = str.charCodeAt(i++) & 0xff; + if (c3 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c3 = Binary._base64DecodeChars[c3]; + } while (i < len && c3 === -1); + if (c3 === -1) { + break; + } + out.push((c2 & 0XF) << 4 | (c3 & 0x3C) >> 2); + do { + c4 = str.charCodeAt(i++) & 0xff; + if (c4 === 61) { + return Binary$_mergeCharCode$AI(out); + } + c4 = (Binary._base64DecodeChars[c4] | 0); + } while (i < len && c4 === -1); + if (c4 === -1) { + break; + } + out.push((c3 & 0x03) << 6 | c4); + } + return Binary$_mergeCharCode$AI(out); +}; + +var Binary$base64decode$S = Binary.base64decode$S; + +/** + * class LoadedStringResult extends Object + * @constructor + */ +function LoadedStringResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringResult$SI(data, offset) { + /** @type {!number} */ + var strLength; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var offset$0; + this.result = ""; + this.offset = 0; + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (i = 0; i < strLength; i += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (i !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + this.result = bytes.join(''); + this.offset = offset; + } else { + this.result = data.slice(offset, offset + strLength); + this.offset = (offset + strLength | 0); + } +}; + +LoadedStringResult$SI.prototype = new LoadedStringResult; + +/** + * class LoadedStringListResult extends Object + * @constructor + */ +function LoadedStringListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var strLength; + /** @type {!string} */ + var resultStr; + /** @type {Array.<undefined|!string>} */ + var bytes; + /** @type {!number} */ + var j; + /** @type {!number} */ + var code; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = [ ]; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + offset$0 = offset++; + strLength = data.charCodeAt(offset$0); + if (strLength > 32767) { + strLength = strLength - 32768; + bytes = [ ]; + for (j = 0; j < strLength; j += 2) { + code = data.charCodeAt(offset); + bytes.push(String.fromCharCode(code & 0x00ff)); + if (j !== strLength - 1) { + bytes.push(String.fromCharCode(code >>> 8)); + } + offset++; + } + resultStr = bytes.join(''); + } else { + resultStr = data.slice(offset, offset + strLength); + offset = (offset + strLength | 0); + } + this.result.push(resultStr); + } + this.offset = offset; +}; + +LoadedStringListResult$SI.prototype = new LoadedStringListResult; + +/** + * class LoadedStringListMapResult extends Object + * @constructor + */ +function LoadedStringListMapResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedStringListMapResult$SI(data, offset) { + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {LoadedStringResult} */ + var keyResult; + /** @type {LoadedStringListResult} */ + var valueResult; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var offset$0; + this.offset = 0; + this.result = ({ }); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + length = result$0; + offset += 2; + for (i = 0; i < length; i++) { + keyResult = new LoadedStringResult$SI(data, offset); + offset$0 = keyResult.offset; + valueResult = new LoadedStringListResult$SI(data, offset$0); + this.result[keyResult.result] = valueResult.result; + offset = valueResult.offset; + } + this.offset = offset; +}; + +LoadedStringListMapResult$SI.prototype = new LoadedStringListMapResult; + +/** + * class LoadedNumberListResult extends Object + * @constructor + */ +function LoadedNumberListResult() { +} + +/** + * @constructor + * @param {!string} data + * @param {!number} offset + */ +function LoadedNumberListResult$SI(data, offset) { + /** @type {!number} */ + var resultLength; + /** @type {!number} */ + var originalOffset; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {!number} */ + var tag; + /** @type {!number} */ + var length; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var value1$0; + this.result = null; + this.offset = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + resultLength = result$0; + originalOffset = offset; + offset += 2; + result = [ ]; + while (result.length < resultLength) { + tag = data.charCodeAt(offset++); + if (tag >>> 15 === 1) { + value1$0 = resultLength - result.length; + length = (value1$0 <= 15 ? value1$0 : 15); + for (i = 0; i < length; i++) { + if (tag >>> i & 0x1) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } else { + result.push(0); + } + } + } else { + if (tag >>> 14 === 1) { + length = tag - 0x4000 + 1; + for (i = 0; i < length; i++) { + result.push(Binary$load32bitNumber$SI(data, offset)); + offset += 2; + } + } else { + length = tag + 1; + for (i = 0; i < length; i++) { + result.push(0); + } + } + } + } + this.result = result; + this.offset = offset; +}; + +LoadedNumberListResult$SI.prototype = new LoadedNumberListResult; + +/** + * class CompressionReport extends Object + * @constructor + */ +function CompressionReport() { +} + +/** + * @constructor + */ +function CompressionReport$() { + this.source = 0; + this.result = 0; +}; + +CompressionReport$.prototype = new CompressionReport; + +/** + * @param {CompressionReport} $this + * @param {!number} source + * @param {!number} result + */ +CompressionReport.add$LCompressionReport$II = function ($this, source, result) { + $this.source += source; + $this.result += result; +}; + +var CompressionReport$add$LCompressionReport$II = CompressionReport.add$LCompressionReport$II; + +/** + * @param {CompressionReport} $this + * @return {!number} + */ +CompressionReport.rate$LCompressionReport$ = function ($this) { + return (Math.round($this.result * 100.0 / $this.source) | 0); +}; + +var CompressionReport$rate$LCompressionReport$ = CompressionReport.rate$LCompressionReport$; + +/** + * class Stemmer + * @constructor + */ +function Stemmer() { +} + +Stemmer.prototype.$__jsx_implements_Stemmer = true; + +/** + * @constructor + */ +function Stemmer$() { +}; + +Stemmer$.prototype = new Stemmer; + +/** + * class js extends Object + * @constructor + */ +function js() { +} + +/** + * @constructor + */ +function js$() { +}; + +js$.prototype = new js; + +/** + * class Metadata extends Object + * @constructor + */ +function Metadata() { +} + +/** + * @constructor + * @param {Oktavia} parent + */ +function Metadata$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); +}; + +Metadata$LOktavia$.prototype = new Metadata; + +/** + * @return {!number} + */ +Metadata.prototype._size$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {!number} */ + var i$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0 = _bitVector$0 = this._bitVector; + i$0 = _bitVector$0._size; + return this$0.rank$IB(i$0, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getContent$I = function (index) { + /** @type {!number} */ + var startPosition; + /** @type {!number} */ + var length; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + length = this._bitVector.select$I(index) - startPosition + 1; + return this._parent._getSubstring$II(startPosition, length); +}; + +/** + * @param {!number} index + * @return {!number} + */ +Metadata.prototype.getStartPosition$I = function (index) { + /** @type {!number} */ + var startPosition; + if (index < 0 || this._size$() <= index) { + throw new Error("Section.getContent() : range error " + (index + "")); + } + startPosition = 0; + if (index > 0) { + startPosition = this._bitVector.select$I(index - 1) + 1; + } + return (startPosition | 0); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Metadata.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Metadata.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Metadata.prototype._build$ = function () { + this._bitVector.build$(); +}; + +/** + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Metadata.prototype._load$SSI = function (name, data, offset) { + offset = this._bitVector.load$SI(data, offset); + this._parent._metadataLabels.push(name); + this._parent._metadatas[name] = this; + return offset; +}; + +/** + * @return {!string} + */ +Metadata.prototype._dump$ = function () { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + contents$0.push(Binary$dump32bitNumberList$AN(this$0._v)); + return contents$0.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Metadata.prototype._dump$LCompressionReport$ = function (report) { + /** @type {BitVector} */ + var this$0; + /** @type {Array.<undefined|!string>} */ + var contents$0; + this$0 = this._bitVector; + contents$0 = [ ]; + contents$0.push(Binary$dump32bitNumber$N(this$0._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents$0.push(Binary$dump32bitNumberList$ANLCompressionReport$(this$0._v, report)); + return contents$0.join(''); +}; + +/** + * class Section extends Metadata + * @constructor + */ +function Section() { +} + +Section.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Section$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; +}; + +Section$LOktavia$.prototype = new Section; + +/** + * @param {!string} name + */ +Section.prototype.setTail$S = function (name) { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._names.push(name); + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!string} name + * @param {!number} index + */ +Section.prototype.setTail$SI = function (name, index) { + this._names.push(name); + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Section.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Section.prototype.getSectionIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getName$I = function (index) { + if (index < 0 || this._names.length <= index) { + throw new Error("Section.getName() : range error"); + } + return this._names[index]; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Section.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getSectionIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Section.prototype.getInformation$I = function (index) { + return this.getName$I(index); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Section._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Section} */ + var section; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + section = new Section$LOktavia$(parent); + section._names = strs.result; + offset$0 = strs.offset; + offset$0 = section._bitVector.load$SI(data, offset$0); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset$0; +}; + +var Section$_load$LOktavia$SSI = Section._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Section.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Section.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Splitter extends Metadata + * @constructor + */ +function Splitter() { +} + +Splitter.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Splitter$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = null; +}; + +Splitter$LOktavia$.prototype = new Splitter; + +/** + * @constructor + * @param {Oktavia} parent + * @param {!string} name + */ +function Splitter$LOktavia$S(parent, name) { + this._parent = parent; + this._bitVector = new BitVector$(); + this.name = name; +}; + +Splitter$LOktavia$S.prototype = new Splitter; + +/** + * @return {!number} + */ +Splitter.prototype.size$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + */ +Splitter.prototype.split$ = function () { + /** @type {!number} */ + var index$0; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index$0 = this$0$0._substr.length; + this._bitVector.set$I(index$0 - 1); +}; + +/** + * @param {!number} index + */ +Splitter.prototype.split$I = function (index) { + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Splitter.prototype.getIndex$I = function (position) { + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error"); + } + this$0 = this._bitVector; + return this$0.rank$IB(position, true); +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Splitter.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { + /** @type {!number} */ + var i; + /** @type {undefined|!number} */ + var position; + /** @type {!number} */ + var index; + /** @type {SearchUnit} */ + var unit; + for (i = 0; i < positions.length; i++) { + position = positions[i]; + index = this.getIndex$I(position); + unit = SingleResult$getSearchUnit$LSingleResult$I(result, index); + if (unit.startPosition < 0) { + unit.startPosition = this.getStartPosition$I(index); + } + SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed); + } +}; + +/** + * @param {!number} index + * @return {!string} + */ +Splitter.prototype.getInformation$I = function (index) { + return (this.name != null ? this.name + (index + 1 + "") : ''); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Splitter._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {Splitter} */ + var section; + section = new Splitter$LOktavia$(parent); + offset = section._bitVector.load$SI(data, offset); + section._parent._metadataLabels.push(name); + section._parent._metadatas[name] = section; + return offset; +}; + +var Splitter$_load$LOktavia$SSI = Splitter._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Splitter.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Splitter.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class Table extends Metadata + * @constructor + */ +function Table() { +} + +Table.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + * @param {Array.<undefined|!string>} headers + */ +function Table$LOktavia$AS(parent, headers) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._headers = headers; + this._columnTails = new BitVector$(); +}; + +Table$LOktavia$AS.prototype = new Table; + +/** + * @return {!number} + */ +Table.prototype.rowSize$ = function () { + /** @type {BitVector} */ + var this$0$0; + /** @type {!number} */ + var i$0$0; + /** @type {BitVector} */ + var _bitVector$0; + this$0$0 = _bitVector$0 = this._bitVector; + i$0$0 = _bitVector$0._size; + return this$0$0.rank$IB(i$0$0, true); +}; + +/** + * @return {!number} + */ +Table.prototype.columnSize$ = function () { + return (this._headers.length | 0); +}; + +/** + */ +Table.prototype.setColumnTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + /** @type {Oktavia} */ + var _parent$0; + this$0 = _parent$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + _parent$0._fmindex.push$S(Oktavia.eob); + this._columnTails.set$I(index - 1); +}; + +/** + */ +Table.prototype.setRowTail$ = function () { + /** @type {!number} */ + var index; + /** @type {Oktavia} */ + var this$0; + /** @type {FMIndex} */ + var this$0$0; + this$0 = this._parent; + this$0$0 = this$0._fmindex; + index = this$0$0._substr.length; + this._bitVector.set$I(index - 1); +}; + +/** + * @param {!number} position + * @return {Array.<undefined|!number>} + */ +Table.prototype.getCell$I = function (position) { + /** @type {!number} */ + var row; + /** @type {!number} */ + var currentColumn; + /** @type {!number} */ + var lastRowColumn; + /** @type {!number} */ + var startPosition; + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {BitVector} */ + var this$0; + /** @type {BitVector} */ + var this$1; + if (position < 0 || this._bitVector.size$() <= position) { + throw new Error("Section.getSectionIndex() : range error " + (position + "")); + } + this$0 = this._bitVector; + row = this$0.rank$IB(position, true); + this$1 = this._columnTails; + currentColumn = this$1.rank$IB(position, true); + lastRowColumn = 0; + if (row > 0) { + startPosition = this._bitVector.select$I(row - 1) + 1; + lastRowColumn = this._columnTails.rank$I(startPosition); + } + result = [ row, currentColumn - lastRowColumn ]; + return result; +}; + +/** + * @param {!number} rowIndex + * @return {Object.<string, undefined|!string>} + */ +Table.prototype.getRowContent$I = function (rowIndex) { + /** @type {!string} */ + var content; + /** @type {Array.<undefined|!string>} */ + var values; + /** @type {Object.<string, undefined|!string>} */ + var result; + /** @type {!number} */ + var i; + content = this.getContent$I(rowIndex); + values = content.split(Oktavia.eob, this._headers.length); + result = ({ }); + for (i in this._headers) { + if (i < values.length) { + result[this._headers[i]] = values[i]; + } else { + result[this._headers[i]] = ''; + } + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Table.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Table.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + */ +Table.prototype._build$ = function () { + this._bitVector.build$(); + this._columnTails.build$(); +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Table._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Table} */ + var table; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + table = new Table$LOktavia$AS(parent, strs.result); + offset$0 = strs.offset; + offset$0 = table._bitVector.load$SI(data, offset$0); + table._parent._metadataLabels.push(name); + table._parent._metadatas[name] = table; + offset = offset$0; + return table._columnTails.load$SI(data, offset$0); +}; + +var Table$_load$LOktavia$SSI = Table._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Table.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$AS(this._headers), Metadata.prototype._dump$.call(this), this._columnTails.dump$() ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Table.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$ASLCompressionReport$(this._headers, report), Metadata.prototype._dump$LCompressionReport$.call(this, report), this._columnTails.dump$LCompressionReport$(report) ].join(''); +}; + +/** + * class Block extends Metadata + * @constructor + */ +function Block() { +} + +Block.prototype = new Metadata; +/** + * @constructor + * @param {Oktavia} parent + */ +function Block$LOktavia$(parent) { + this._parent = parent; + this._bitVector = new BitVector$(); + this._names = [ ]; + this._start = false; +}; + +Block$LOktavia$.prototype = new Block; + +/** + * @param {!string} blockName + */ +Block.prototype.startBlock$S = function (blockName) { + this.startBlock$SI(blockName, this._parent.contentSize$()); +}; + +/** + * @param {!string} blockName + * @param {!number} index + */ +Block.prototype.startBlock$SI = function (blockName, index) { + if (this._start) { + throw new Error('Splitter `' + this._names[this._names.length - 1] + '` is not closed'); + } + this._start = true; + this._names.push(blockName); + this._bitVector.set$I(index - 1); +}; + +/** + */ +Block.prototype.endBlock$ = function () { + this.endBlock$I(this._parent.contentSize$()); +}; + +/** + * @param {!number} index + */ +Block.prototype.endBlock$I = function (index) { + if (! this._start) { + throw new Error('Splitter is not started'); + } + this._start = false; + this._bitVector.set$I(index - 1); +}; + +/** + * @return {!number} + */ +Block.prototype.size$ = function () { + return (this._names.length | 0); +}; + +/** + * @param {!number} position + * @return {!number} + */ +Block.prototype.blockIndex$I = function (position) { + /** @type {!number} */ + var result; + /** @type {BitVector} */ + var this$0; + if (position < 0 || this._parent._fmindex.size$() - 1 <= position) { + throw new Error("Block.blockIndex() : range error " + (position + "")); + } + if (position >= this._bitVector.size$()) { + position = (this._bitVector.size$() - 1 | 0); + result = (this._bitVector.rank$I(position) + 1 | 0); + } else { + this$0 = this._bitVector; + result = this$0.rank$IB(position, true); + } + return result; +}; + +/** + * @param {!number} position + * @return {!boolean} + */ +Block.prototype.inBlock$I = function (position) { + /** @type {!number} */ + var blockIndex; + blockIndex = this.blockIndex$I(position); + return blockIndex % 2 !== 0; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockContent$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this.getContent$I(blockIndex); + } else { + result = ''; + } + return result; +}; + +/** + * @param {!number} position + * @return {!string} + */ +Block.prototype.getBlockName$I = function (position) { + /** @type {!number} */ + var blockIndex; + /** @type {!string} */ + var result; + blockIndex = this.blockIndex$I(position); + if (blockIndex % 2 !== 0) { + result = this._names[blockIndex >>> 1]; + } else { + result = ''; + } + return result; +}; + +/** + * @param {SingleResult} result + * @param {Array.<undefined|!number>} positions + * @param {!string} word + * @param {!boolean} stemmed + */ +Block.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) { +}; + +/** + * @param {!number} index + * @return {!string} + */ +Block.prototype.getInformation$I = function (index) { + return ''; +}; + +/** + * @param {Oktavia} parent + * @param {!string} name + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +Block._load$LOktavia$SSI = function (parent, name, data, offset) { + /** @type {LoadedStringListResult} */ + var strs; + /** @type {Block} */ + var block; + /** @type {!number} */ + var offset$0; + strs = new LoadedStringListResult$SI(data, offset); + block = new Block$LOktavia$(parent); + block._names = strs.result; + offset$0 = strs.offset; + offset$0 = block._bitVector.load$SI(data, offset$0); + block._parent._metadataLabels.push(name); + block._parent._metadatas[name] = block; + return offset$0; +}; + +var Block$_load$LOktavia$SSI = Block._load$LOktavia$SSI; + +/** + * @return {!string} + */ +Block.prototype._dump$ = function () { + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +Block.prototype._dump$LCompressionReport$ = function (report) { + CompressionReport$add$LCompressionReport$II(report, 1, 1); + return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join(''); +}; + +/** + * class FMIndex extends Object + * @constructor + */ +function FMIndex() { +} + +/** + * @constructor + */ +function FMIndex$() { + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + this._ssize = 0; + (this._ddic = 0, this._head = 0); + this._substr = ""; + this._sv = new WaveletMatrix$(); + this._posdic = [ ]; + this._idic = [ ]; + _rlt$0 = this._rlt = [ ]; + _rlt$0.length = 65536; +}; + +FMIndex$.prototype = new FMIndex; + +/** + */ +FMIndex.prototype.clear$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + this$0._bv.length = 0; + this$0._seps.length = 0; + this$0._size = 0; + this._posdic.length = 0; + this._idic.length = 0; + this._ddic = 0; + this._head = 0; + this._substr = ""; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.size$ = function () { + /** @type {WaveletMatrix} */ + var this$0; + this$0 = this._sv; + return this$0._size; +}; + +/** + * @return {!number} + */ +FMIndex.prototype.contentSize$ = function () { + return this._substr.length; +}; + +/** + * @param {!string} key + * @return {!number} + */ +FMIndex.prototype.getRows$S = function (key) { + /** @type {Array.<undefined|!number>} */ + var pos; + pos = [ ]; + return this.getRows$SAI(key, pos); +}; + +/** + * @param {!string} key + * @param {Array.<undefined|!number>} pos + * @return {!number} + */ +FMIndex.prototype.getRows$SAI = function (key, pos) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {!number} */ + var c; + /** @type {Array.<undefined|!number>} */ + var _rlt$0; + i = key.length - 1; + code = key.charCodeAt(i); + first = (_rlt$0 = this._rlt)[code] + 1; + last = _rlt$0[code + 1]; + while (first <= last) { + if (i === 0) { + pos[0] = (-- first | 0); + pos[1] = -- last; + return (last - first + 1 | 0); + } + i--; + c = key.charCodeAt(i); + first = this._rlt[c] + this._sv.rank$II(first - 1, c) + 1; + last = this._rlt[c] + this._sv.rank$II(last, c); + } + return 0; +}; + +/** + * @param {!number} i + * @return {!number} + */ +FMIndex.prototype.getPosition$I = function (i) { + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + if (i >= this.size$()) { + throw new Error("FMIndex.getPosition() : range error"); + } + pos = 0; + while (i !== this._head) { + if (i % this._ddic === 0) { + pos += this._posdic[i / this._ddic] + 1; + break; + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos++; + } + return (pos % this.size$() | 0); +}; + +/** + * @param {!number} pos + * @param {!number} len + * @return {!string} + */ +FMIndex.prototype.getSubstring$II = function (pos, len) { + /** @type {!number} */ + var pos_end; + /** @type {!number} */ + var pos_tmp; + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos_idic; + /** @type {!string} */ + var substr; + /** @type {!number} */ + var c; + /** @type {!number} */ + var _ddic$0; + if (pos >= this.size$()) { + throw new Error("FMIndex.getSubstring() : range error"); + } + pos_end = Math.min(pos + len, this.size$()); + pos_tmp = this.size$() - 1; + i = this._head; + pos_idic = Math.floor((pos_end + (_ddic$0 = this._ddic) - 2) / _ddic$0); + if (pos_idic < this._idic.length) { + pos_tmp = pos_idic * this._ddic; + i = this._idic[pos_idic]; + } + substr = ""; + while (pos_tmp >= pos) { + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + if (pos_tmp < pos_end) { + substr = String.fromCharCode(c) + substr; + } + if (pos_tmp === 0) { + break; + } + pos_tmp--; + } + return substr; +}; + +/** + */ +FMIndex.prototype.build$ = function () { + this.build$SIIB(String.fromCharCode(0), 65535, 20, false); +}; + +/** + * @param {!string} end_marker + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIB = function (end_marker, ddic, verbose) { + this.build$SIIB(end_marker, 65535, ddic, verbose); +}; + +/** + * @param {!string} end_marker + * @param {!number} maxChar + * @param {!number} ddic + * @param {!boolean} verbose + */ +FMIndex.prototype.build$SIIB = function (end_marker, maxChar, ddic, verbose) { + /** @type {BurrowsWheelerTransform} */ + var b; + /** @type {!string} */ + var s; + /** @type {!number} */ + var c; + /** @type {!string} */ + var str$0; + /** @type {WaveletMatrix} */ + var this$0; + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + if (verbose) { + console.time("building burrows-wheeler transform"); + } + this._substr += end_marker; + b = ({_str: "", _size: 0, _head: 0, _suffixarray: [ ]}); + str$0 = this._substr; + _str$0 = b._str = str$0; + b._size = _str$0.length; + _suffixarray$0 = b._suffixarray = SAIS$make$S(str$0); + b._head = (_suffixarray$0.indexOf(0) | 0); + s = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$(b); + this._ssize = s.length; + this._head = b._head; + b._str = ""; + b._size = 0; + b._head = 0; + b._suffixarray.length = 0; + this._substr = ""; + if (verbose) { + console.timeEnd("building burrows-wheeler transform"); + } + if (verbose) { + console.time("building wavelet matrix"); + } + this$0 = this._sv; + this$0._bitsize = (Math.ceil(Math.log(maxChar) / 0.6931471805599453) | 0); + if (verbose) { + console.log(" maxCharCode: ", maxChar); + console.log(" bitSize: ", this._sv.bitsize$()); + } + this._sv.build$S(s); + if (verbose) { + console.timeEnd("building wavelet matrix"); + } + if (verbose) { + console.time("caching rank less than"); + } + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + if (verbose) { + console.timeEnd("caching rank less than"); + } + this._ddic = ddic; + if (verbose) { + console.time("building dictionaries"); + } + this._buildDictionaries$(); + if (verbose) { + console.timeEnd("building dictionaries"); + console.log(''); + } +}; + +/** + */ +FMIndex.prototype._buildDictionaries$ = function () { + /** @type {!number} */ + var i; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var c; + for (i = 0; i < this._ssize / this._ddic + 1; i++) { + this._posdic.push(0); + this._idic.push(0); + } + i = this._head; + pos = this.size$() - 1; + do { + if (i % this._ddic === 0) { + this._posdic[Math.floor(i / this._ddic)] = (pos | 0); + } + if (pos % this._ddic === 0) { + this._idic[Math.floor(pos / this._ddic)] = (i | 0); + } + c = this._sv.get$I(i); + i = this._rlt[c] + this._sv.rank$II(i, c); + pos--; + } while (i !== this._head); +}; + +/** + * @param {!string} doc + */ +FMIndex.prototype.push$S = function (doc) { + if (doc.length <= 0) { + throw new Error("FMIndex::push(): empty string"); + } + this._substr += doc; +}; + +/** + * @param {!string} keyword + * @return {Array.<undefined|!number>} + */ +FMIndex.prototype.search$S = function (keyword) { + /** @type {Array.<undefined|!number>} */ + var result; + /** @type {Array.<undefined|!number>} */ + var position; + /** @type {!number} */ + var rows; + /** @type {undefined|!number} */ + var first; + /** @type {undefined|!number} */ + var last; + /** @type {undefined|!number} */ + var i; + result = [ ]; + position = [ ]; + rows = this.getRows$SAI(keyword, position); + if (rows > 0) { + first = position[0]; + last = position[1]; + for (i = first; i <= last; i++) { + result.push(this.getPosition$I(i)); + } + } + return result; +}; + +/** + * @return {!string} + */ +FMIndex.prototype.dump$ = function () { + return this.dump$B(false); +}; + +/** + * @param {!boolean} verbose + * @return {!string} + */ +FMIndex.prototype.dump$B = function (verbose) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {CompressionReport} */ + var report; + /** @type {!number} */ + var i; + contents = [ ]; + report = ({source: 0, result: 0}); + contents.push(Binary$dump32bitNumber$N(this._ddic)); + contents.push(Binary$dump32bitNumber$N(this._ssize)); + contents.push(Binary$dump32bitNumber$N(this._head)); + CompressionReport$add$LCompressionReport$II(report, 6, 6); + contents.push(this._sv.dump$LCompressionReport$(report)); + if (verbose) { + console.log("Serializing FM-index"); + console.log(' Wavelet Matrix: ' + (contents[3].length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)'); + } + contents.push(Binary$dump32bitNumber$N(this._posdic.length)); + for (i in this._posdic) { + contents.push(Binary$dump32bitNumber$N(this._posdic[i])); + } + for (i in this._idic) { + contents.push(Binary$dump32bitNumber$N(this._idic[i])); + } + if (verbose) { + console.log(' Dictionary Cache: ' + (this._idic.length * 16 + "") + ' bytes'); + } + return contents.join(""); +}; + +/** + * @param {!string} data + * @return {!number} + */ +FMIndex.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +FMIndex.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var maxChar; + /** @type {!number} */ + var c; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._ddic = (result$0 | 0); + this._ssize = (Binary$load32bitNumber$SI(data, offset + 2) | 0); + this._head = (Binary$load32bitNumber$SI(data, offset + 4) | 0); + offset = this._sv.load$SI(data, offset + 6); + maxChar = Math.pow(2, this._sv.bitsize$()); + for (c = 0; c < maxChar; c++) { + this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + size = result$1; + offset += 2; + for (i = 0; i < size; (i++, offset += 2)) { + this._posdic.push(Binary$load32bitNumber$SI(data, offset)); + } + for (i = 0; i < size; (i++, offset += 2)) { + this._idic.push(Binary$load32bitNumber$SI(data, offset)); + } + return offset; +}; + +/** + * class Query extends Object + * @constructor + */ +function Query() { +} + +/** + * @constructor + */ +function Query$() { + this.word = ''; + this.or = false; + this.not = false; + this.raw = false; +}; + +Query$.prototype = new Query; + +/** + * @return {!string} + */ +Query.prototype.toString = function () { + /** @type {Array.<undefined|!string>} */ + var result; + result = [ ]; + if (this.or) { + result.push("OR "); + } + if (this.not) { + result.push("-"); + } + if (this.raw) { + result.push('"', this.word, '"'); + } else { + result.push(this.word); + } + return result.join(''); +}; + +/** + * class Tag extends Object + * @constructor + */ +function Tag() { +} + +/** + * @constructor + * @param {!string} name + */ +function Tag$S(name) { + this.name = name; + this.attributes = ({ }); + this.isSelfClosing = false; +}; + +Tag$S.prototype = new Tag; + +/** + * class _Common extends Object + * @constructor + */ +function _Common() { +} + +/** + * @constructor + */ +function _Common$() { +}; + +_Common$.prototype = new _Common; + +/** + * class _State extends Object + * @constructor + */ +function _State() { +} + +/** + * @constructor + */ +function _State$() { +}; + +_State$.prototype = new _State; + +/** + * class SAXHandler extends Object + * @constructor + */ +function SAXHandler() { +} + +/** + * @constructor + */ +function SAXHandler$() { + this.position = 0; + this.column = 0; + this.line = 0; +}; + +SAXHandler$.prototype = new SAXHandler; + +/** + * @param {Error} error + */ +SAXHandler.prototype.onerror$LError$ = function (error) { +}; + +/** + * @param {!string} text + */ +SAXHandler.prototype.ontext$S = function (text) { +}; + +/** + * @param {!string} doctype + */ +SAXHandler.prototype.ondoctype$S = function (doctype) { +}; + +/** + * @param {!string} name + * @param {!string} body + */ +SAXHandler.prototype.onprocessinginstruction$SS = function (name, body) { +}; + +/** + * @param {!string} sgmlDecl + */ +SAXHandler.prototype.onsgmldeclaration$S = function (sgmlDecl) { +}; + +/** + * @param {!string} tagname + * @param {Object.<string, undefined|!string>} attributes + */ +SAXHandler.prototype.onopentag$SHS = function (tagname, attributes) { +}; + +/** + * @param {!string} tagname + */ +SAXHandler.prototype.onclosetag$S = function (tagname) { +}; + +/** + * @param {!string} name + * @param {!string} value + */ +SAXHandler.prototype.onattribute$SS = function (name, value) { +}; + +/** + * @param {!string} comment + */ +SAXHandler.prototype.oncomment$S = function (comment) { +}; + +/** + */ +SAXHandler.prototype.onopencdata$ = function () { +}; + +/** + * @param {!string} cdata + */ +SAXHandler.prototype.oncdata$S = function (cdata) { +}; + +/** + */ +SAXHandler.prototype.onclosecdata$ = function () { +}; + +/** + */ +SAXHandler.prototype.onend$ = function () { +}; + +/** + */ +SAXHandler.prototype.onready$ = function () { +}; + +/** + * @param {!string} script + */ +SAXHandler.prototype.onscript$S = function (script) { +}; + +/** + * class _HTMLHandler extends SAXHandler + * @constructor + */ +function _HTMLHandler() { +} + +_HTMLHandler.prototype = new SAXHandler; +/** + * @constructor + * @param {Object.<string, undefined|Array.<undefined|!string>>} styles + * @param {!boolean} escape + */ +function _HTMLHandler$HASB(styles, escape) { + this.position = 0; + this.column = 0; + this.line = 0; + this.text = [ ]; + this.escape = escape; + this.styles = styles; +}; + +_HTMLHandler$HASB.prototype = new _HTMLHandler; + +/** + * @param {!string} str + * @return {!string} + */ +_HTMLHandler.escapeHTML$S = function (str) { + return str.replace(/\n/g, "<br/>").replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">"); +}; + +var _HTMLHandler$escapeHTML$S = _HTMLHandler.escapeHTML$S; + +/** + * @param {!string} tagname + * @param {Object.<string, undefined|!string>} attributes + */ +_HTMLHandler.prototype.onopentag$SHS = function (tagname, attributes) { + this.text.push(this.styles[tagname][0]); +}; + +/** + * @param {!string} tagname + */ +_HTMLHandler.prototype.onclosetag$S = function (tagname) { + this.text.push(this.styles[tagname][1]); +}; + +/** + * @param {!string} text + */ +_HTMLHandler.prototype.ontext$S = function (text) { + if (this.escape) { + this.text.push(text.replace(/\n/g, "<br/>").replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")); + } else { + this.text.push(text); + } +}; + +/** + * @return {!string} + */ +_HTMLHandler.prototype.result$ = function () { + return this.text.join(''); +}; + +/** + * class SAXParser extends Object + * @constructor + */ +function SAXParser() { +} + +/** + * @constructor + * @param {SAXHandler} handler + */ +function SAXParser$LSAXHandler$(handler) { + this.q = ""; + this.c = ""; + this.bufferCheckPosition = 0; + this.looseCase = ""; + this.tags = [ ]; + this.closed = false; + this.closedRoot = false; + this.sawRoot = false; + this.tag = null; + this.error = null; + this.handler = null; + this.ENTITIES = null; + this.strict = false; + this.tagName = ""; + this.state = 0; + this.line = 0; + this.column = 0; + this.position = 0; + this.startTagPosition = 0; + this.attribName = ""; + this.attribValue = ""; + this.script = ""; + this.textNode = ""; + this.attribList = null; + this.noscript = false; + this.cdata = ""; + this.procInstBody = ""; + this.procInstName = ""; + this.doctype = ""; + this.entity = ""; + this.sgmlDecl = ""; + this.comment = ""; + this.preTags = 0; + this._init$LSAXHandler$B(handler, false); +}; + +SAXParser$LSAXHandler$.prototype = new SAXParser; + +/** + * @constructor + * @param {SAXHandler} handler + * @param {!boolean} strict + */ +function SAXParser$LSAXHandler$B(handler, strict) { + this.q = ""; + this.c = ""; + this.bufferCheckPosition = 0; + this.looseCase = ""; + this.tags = [ ]; + this.closed = false; + this.closedRoot = false; + this.sawRoot = false; + this.tag = null; + this.error = null; + this.handler = null; + this.ENTITIES = null; + this.strict = false; + this.tagName = ""; + this.state = 0; + this.line = 0; + this.column = 0; + this.position = 0; + this.startTagPosition = 0; + this.attribName = ""; + this.attribValue = ""; + this.script = ""; + this.textNode = ""; + this.attribList = null; + this.noscript = false; + this.cdata = ""; + this.procInstBody = ""; + this.procInstName = ""; + this.doctype = ""; + this.entity = ""; + this.sgmlDecl = ""; + this.comment = ""; + this.preTags = 0; + this._init$LSAXHandler$B(handler, strict); +}; + +SAXParser$LSAXHandler$B.prototype = new SAXParser; + +/** + * @param {SAXHandler} handler + * @param {!boolean} strict + */ +SAXParser.prototype._init$LSAXHandler$B = function (handler, strict) { + this.handler = handler; + this.clearBuffers$(); + this.q = ""; + this.bufferCheckPosition = 65536; + this.looseCase = 'toLowerCase'; + this.tags = [ ]; + this.closed = this.closedRoot = this.sawRoot = false; + this.tag = null; + this.error = null; + this.strict = strict; + this.noscript = strict; + this.state = 1; + this.ENTITIES = _Entities$entity_list$(); + this.attribList = [ ]; + this.noscript = false; + this.preTags = 0; +}; + +/** + * @param {!boolean} flag + */ +SAXParser.prototype.set_noscript$B = function (flag) { + this.noscript = flag; +}; + +/** + * @return {SAXParser} + */ +SAXParser.prototype.resume$ = function () { + this.error = null; + return this; +}; + +/** + * @return {SAXParser} + */ +SAXParser.prototype.close$ = function () { + return this.parse$S(''); +}; + +/** + * @param {!string} chunk + * @return {SAXParser} + */ +SAXParser.prototype.parse$S = function (chunk) { + /** @type {Char} */ + var _; + /** @type {!number} */ + var i; + /** @type {!string} */ + var c; + /** @type {!number} */ + var starti; + /** @type {!number} */ + var pad; + /** @type {!number} */ + var returnState; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$0; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$1; + /** @type {RegExp} */ + var charclass$2; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$3; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$4; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$5; + /** @type {!string} */ + var text$0; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$6; + /** @type {RegExp} */ + var charclass$7; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$8; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$9; + /** @type {RegExp} */ + var charclass$10; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$11; + /** @type {RegExp} */ + var charclass$12; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$13; + /** @type {RegExp} */ + var charclass$14; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$15; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$16; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$17; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$18; + /** @type {RegExp} */ + var charclass$19; + /** @type {RegExp} */ + var charclass$20; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$21; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$22; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$23; + /** @type {Object.<string, undefined|!boolean>} */ + var charclass$24; + /** @type {!string} */ + var comment$0; + _ = new Char$(); + if (this.error) { + throw this.error; + } + if (this.closed) { + return this.emiterror$S("Cannot write after close. Assign an onready handler."); + } + (i = 0, c = ""); + while (this.c = c = chunk.charAt(i++)) { + this.position++; + if (c === "\n") { + this.handler.line++; + this.handler.column = 0; + } else { + this.handler.column++; + } + switch (this.state) { + case 1: + if (c === "<") { + this.state = 4; + this.startTagPosition = this.position; + } else { + charclass$0 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$0, c)) { + this.strictFail$S("Non-whitespace before first tag."); + this.textNode = c; + this.state = 2; + } + } + continue; + case 2: + if (this.sawRoot && ! this.closedRoot) { + starti = i - 1; + while (c && c !== "<" && c !== "&") { + c = chunk.charAt(i++); + if (c) { + this.position++; + if (c === "\n") { + this.handler.line++; + this.handler.column = 0; + } else { + this.handler.column++; + } + } + } + this.textNode += chunk.substring(starti, i - 1); + } + if (c === "<") { + this.state = 4; + this.startTagPosition = this.position; + } else { + if (_.not$HBS(_.whitespace, c) && (! this.sawRoot || this.closedRoot)) { + this.strictFail$S("Text data outside of root node."); + } + if (c === "&") { + this.state = 3; + } else { + this.textNode += c; + } + } + continue; + case 33: + if (c === "<") { + this.state = 34; + } else { + this.script += c; + } + continue; + case 34: + if (c === "/") { + this.state = 31; + } else { + this.script += "<" + c; + this.state = 33; + } + continue; + case 4: + if (c === "!") { + this.state = 5; + this.sgmlDecl = ""; + } else { + charclass$1 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$1, c)) { + } else { + charclass$2 = _.nameStart; + if (charclass$2.test(c)) { + this.state = 21; + this.tagName = c; + } else { + if (c === "/") { + this.state = 31; + this.tagName = ""; + } else { + if (c === "?") { + this.state = 18; + this.procInstName = this.procInstBody = ""; + } else { + this.strictFail$S("Unencoded <"); + if (this.startTagPosition + 1 < this.position) { + pad = this.position - this.startTagPosition; + for (i = 0; i < pad; i++) { + c = " " + c; + } + } + this.textNode += "<" + c; + this.state = 2; + } + } + } + } + } + continue; + case 5: + if ((this.sgmlDecl + c).toUpperCase() === _.CDATA) { + this.closetext_if_exist$(); + this.state = 15; + this.sgmlDecl = ""; + this.cdata = ""; + } else { + if (this.sgmlDecl + c === "--") { + this.state = 12; + this.comment = ""; + this.sgmlDecl = ""; + } else { + if ((this.sgmlDecl + c).toUpperCase() === _.DOCTYPE) { + this.state = 7; + if (this.doctype || this.sawRoot) { + this.strictFail$S("Inappropriately located doctype declaration"); + } + this.doctype = ""; + this.sgmlDecl = ""; + } else { + if (c === ">") { + this.closetext_if_exist$(); + this.sgmlDecl = ""; + this.state = 2; + } else { + charclass$3 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$3, c)) { + this.state = 6; + this.sgmlDecl += c; + } else { + this.sgmlDecl += c; + } + } + } + } + } + continue; + case 6: + if (c === this.q) { + this.state = 5; + this.q = ""; + } + this.sgmlDecl += c; + continue; + case 7: + if (c === ">") { + this.state = 2; + this.closetext_if_exist$(); + this.doctype.trim(); + } else { + this.doctype += c; + if (c === "[") { + this.state = 9; + } else { + charclass$4 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$4, c)) { + this.state = 8; + this.q = c; + } + } + } + continue; + case 8: + this.doctype += c; + if (c === this.q) { + this.q = ""; + this.state = 7; + } + continue; + case 9: + this.doctype += c; + if (c === "]") { + this.state = 7; + } else { + charclass$5 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$5, c)) { + this.state = 10; + this.q = c; + } + } + continue; + case 10: + this.doctype += c; + if (c === this.q) { + this.state = 9; + this.q = ""; + } + continue; + case 12: + if (c === "-") { + this.state = 13; + } else { + this.comment += c; + } + continue; + case 13: + if (c === "-") { + this.state = 14; + text$0 = this.comment; + text$0 = text$0.replace(/[\n\t]/g, ' '); + text$0 = text$0.replace(/\s\s+/g, " "); + comment$0 = this.comment = text$0; + if (comment$0) { + this.closetext_if_exist$(); + this.comment.trim(); + } + this.comment = ""; + } else { + this.comment += "-" + c; + this.state = 12; + } + continue; + case 14: + if (c !== ">") { + this.strictFail$S("Malformed comment"); + this.comment += "--" + c; + this.state = 12; + } else { + this.state = 2; + } + continue; + case 15: + if (c === "]") { + this.state = 16; + } else { + this.cdata += c; + } + continue; + case 16: + if (c === "]") { + this.state = 17; + } else { + this.cdata += "]" + c; + this.state = 15; + } + continue; + case 17: + if (c === ">") { + if (this.cdata) { + this.closetext_if_exist$(); + } + this.cdata = ""; + this.state = 2; + } else { + if (c === "]") { + this.cdata += "]"; + } else { + this.cdata += "]]" + c; + this.state = 15; + } + } + continue; + case 18: + if (c === "?") { + this.state = 20; + } else { + charclass$6 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$6, c)) { + this.state = 19; + } else { + this.procInstName += c; + } + } + continue; + case 19: + if (! this.procInstBody && _.is$HBS(_.whitespace, c)) { + continue; + } else { + if (c === "?") { + this.state = 20; + } else { + this.procInstBody += c; + } + } + continue; + case 20: + if (c === ">") { + this.closetext_if_exist$(); + this.procInstName = this.procInstBody = ""; + this.state = 2; + } else { + this.procInstBody += "?" + c; + this.state = 19; + } + continue; + case 21: + charclass$7 = _.nameBody; + if (charclass$7.test(c)) { + this.tagName += c; + } else { + this.newTag$(); + if (c === ">") { + this.openTag$B(false); + } else { + if (c === "/") { + this.state = 22; + } else { + charclass$8 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$8, c)) { + this.strictFail$S("Invalid character in tag name"); + } + this.state = 23; + } + } + } + continue; + case 22: + if (c === ">") { + this.openTag$B(true); + this.closeTag$(); + } else { + this.strictFail$S("Forward-slash in opening tag not followed by >"); + this.state = 23; + } + continue; + case 23: + charclass$9 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$9, c)) { + continue; + } else { + if (c === ">") { + this.openTag$B(false); + } else { + if (c === "/") { + this.state = 22; + } else { + charclass$10 = _.nameStart; + if (charclass$10.test(c)) { + this.attribName = c; + this.attribValue = ""; + this.state = 24; + } else { + this.strictFail$S("Invalid attribute name"); + } + } + } + } + continue; + case 24: + if (c === "=") { + this.state = 26; + } else { + if (c === ">") { + this.strictFail$S("Attribute without value"); + this.attribValue = this.attribName; + this.attrib$(); + this.openTag$B(false); + } else { + charclass$11 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$11, c)) { + this.state = 25; + } else { + charclass$12 = _.nameBody; + if (charclass$12.test(c)) { + this.attribName += c; + } else { + this.strictFail$S("Invalid attribute name"); + } + } + } + } + continue; + case 25: + if (c === "=") { + this.state = 26; + } else { + charclass$13 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$13, c)) { + continue; + } else { + this.strictFail$S("Attribute without value"); + this.tag.attributes[this.attribName] = ""; + this.attribValue = ""; + this.closetext_if_exist$(); + this.attribName = ""; + if (c === ">") { + this.openTag$B(false); + } else { + charclass$14 = _.nameStart; + if (charclass$14.test(c)) { + this.attribName = c; + this.state = 24; + } else { + this.strictFail$S("Invalid attribute name"); + this.state = 23; + } + } + } + } + continue; + case 26: + charclass$15 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$15, c)) { + continue; + } else { + charclass$16 = _.quote; + if ($__jsx_ObjectHasOwnProperty.call(charclass$16, c)) { + this.q = c; + this.state = 27; + } else { + this.strictFail$S("Unquoted attribute value"); + this.state = 28; + this.attribValue = c; + } + } + continue; + case 27: + if (c !== this.q) { + if (c === "&") { + this.state = 29; + } else { + this.attribValue += c; + } + continue; + } + this.attrib$(); + this.q = ""; + this.state = 23; + continue; + case 28: + charclass$17 = _.attribEnd; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$17, c)) { + if (c === "&") { + this.state = 30; + } else { + this.attribValue += c; + } + continue; + } + this.attrib$(); + if (c === ">") { + this.openTag$B(false); + } else { + this.state = 23; + } + continue; + case 31: + if (! this.tagName) { + charclass$18 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$18, c)) { + continue; + } else { + charclass$19 = _.nameStart; + if (! charclass$19.test(c)) { + if (this.script) { + this.script += "</" + c; + this.state = 33; + } else { + this.strictFail$S("Invalid tagname in closing tag."); + } + } else { + this.tagName = c; + } + } + } else { + if (c === ">") { + this.closeTag$(); + } else { + charclass$20 = _.nameBody; + if (charclass$20.test(c)) { + this.tagName += c; + } else { + if (this.script) { + this.script += "</" + this.tagName; + this.tagName = ""; + this.state = 33; + } else { + charclass$21 = _.whitespace; + if (! $__jsx_ObjectHasOwnProperty.call(charclass$21, c)) { + this.strictFail$S("Invalid tagname in closing tag"); + } + this.state = 32; + } + } + } + } + continue; + case 32: + charclass$22 = _.whitespace; + if ($__jsx_ObjectHasOwnProperty.call(charclass$22, c)) { + continue; + } + if (c === ">") { + this.closeTag$(); + } else { + this.strictFail$S("Invalid characters in closing tag"); + } + continue; + case 3: + if (c === ";") { + this.textNode += this.parseEntity$(); + this.entity = ""; + this.state = 2; + } else { + charclass$23 = _.entity; + if ($__jsx_ObjectHasOwnProperty.call(charclass$23, c)) { + this.entity += c; + } else { + this.strictFail$S("Invalid character entity"); + this.textNode += "&" + this.entity + c; + this.entity = ""; + this.state = 2; + } + } + continue; + case 29: + case 30: + if (this.state === 29) { + returnState = 27; + } else { + returnState = 28; + } + if (c === ";") { + this.attribValue += this.parseEntity$(); + this.entity = ""; + this.state = (returnState | 0); + } else { + charclass$24 = _.entity; + if ($__jsx_ObjectHasOwnProperty.call(charclass$24, c)) { + this.entity += c; + } else { + this.strictFail$S("Invalid character entity"); + this.attribValue += "&" + this.entity + c; + this.entity = ""; + this.state = (returnState | 0); + } + } + continue; + default: + throw new Error("Unknown state: " + (this.state + "")); + } + } + this.end$(); + return this; +}; + +/** + */ +SAXParser.prototype.clearBuffers$ = function () { + this.comment = ''; + this.sgmlDecl = ''; + this.textNode = ''; + this.tagName = ''; + this.doctype = ''; + this.procInstName = ''; + this.procInstBody = ''; + this.entity = ''; + this.attribName = ''; + this.attribValue = ''; + this.cdata = ''; + this.script = ''; +}; + +/** + */ +SAXParser.prototype.closetext_if_exist$ = function () { + if (this.textNode !== '') { + this.closetext$(); + } +}; + +/** + */ +SAXParser.prototype.closetext$ = function () { + /** @type {!string} */ + var text; + /** @type {!string} */ + var text$0; + if (this.preTags === 0) { + text$0 = this.textNode; + text$0 = text$0.replace(/[\n\t]/g, ' '); + text$0 = text$0.replace(/\s\s+/g, " "); + text = text$0; + if (text$0) { + this.handler.ontext$S(text); + } + } else { + if (this.textNode) { + this.handler.ontext$S(this.textNode); + } + } + this.textNode = ""; +}; + +/** + * @param {!string} text + * @return {!string} + */ +SAXParser.prototype.textopts$S = function (text) { + text = text.replace(/[\n\t]/g, ' '); + text = text.replace(/\s\s+/g, " "); + return text; +}; + +/** + * @param {!string} er + * @return {SAXParser} + */ +SAXParser.prototype.emiterror$S = function (er) { + /** @type {Error} */ + var error; + this.closetext$(); + er += "\nLine: " + (this.line + "") + "\nColumn: " + (this.column + "") + "\nChar: " + this.c; + error = new Error(er); + this.error = error; + return this; +}; + +/** + */ +SAXParser.prototype.end$ = function () { + if (! this.closedRoot) { + this.strictFail$S("Unclosed root tag"); + } + if (this.state !== 2) { + this.emiterror$S("Unexpected end"); + } + this.closetext$(); + this.c = ""; + this.closed = true; +}; + +/** + * @param {!string} message + */ +SAXParser.prototype.strictFail$S = function (message) { + if (this.strict) { + this.emiterror$S(message); + } +}; + +/** + */ +SAXParser.prototype.newTag$ = function () { + if (! this.strict) { + this.tagName = this.tagName.toLowerCase(); + } + this.tag = ({name: this.tagName, attributes: ({ }), isSelfClosing: false}); + this.attribList.length = 0; +}; + +/** + */ +SAXParser.prototype.attrib$ = function () { + if (! this.strict) { + this.attribName = this.attribName.toLowerCase(); + } + if ($__jsx_ObjectHasOwnProperty.call(this.tag.attributes, this.attribName)) { + this.attribName = this.attribValue = ""; + return; + } + this.tag.attributes[this.attribName] = this.attribValue; + this.closetext_if_exist$(); + this.attribName = this.attribValue = ""; +}; + +/** + */ +SAXParser.prototype.openTag$ = function () { + this.openTag$B(false); +}; + +/** + * @param {!boolean} selfClosing + */ +SAXParser.prototype.openTag$B = function (selfClosing) { + /** @type {Tag} */ + var tag$0; + /** @type {Tag} */ + var tag$1; + (tag$0 = this.tag).isSelfClosing = selfClosing; + this.sawRoot = true; + this.tags.push(tag$0); + this.closetext_if_exist$(); + this.handler.onopentag$SHS((tag$1 = this.tag).name, tag$1.attributes); + if (this.tag.name === 'pre') { + this.preTags++; + } + if (! selfClosing) { + if (! this.noscript && this.tagName.toLowerCase() === "script") { + this.state = 33; + } else { + this.state = 2; + } + this.tag = null; + this.tagName = ""; + } + this.attribName = this.attribValue = ""; + this.attribList.length = 0; +}; + +/** + */ +SAXParser.prototype.closeTag$ = function () { + /** @type {!number} */ + var t; + /** @type {!string} */ + var tagName; + /** @type {!string} */ + var closeTo; + /** @type {Tag} */ + var close; + /** @type {!number} */ + var s; + /** @type {Tag} */ + var tag$0; + if (! this.tagName) { + this.strictFail$S("Weird empty close tag."); + this.textNode += "</>"; + this.state = 2; + return; + } + if (this.script) { + if (this.tagName !== "script") { + this.script += "</" + this.tagName + ">"; + this.tagName = ""; + this.state = 33; + return; + } + this.closetext_if_exist$(); + this.script = ""; + } + t = this.tags.length; + tagName = this.tagName; + if (! this.strict) { + tagName = tagName.toLowerCase(); + } + closeTo = tagName; + while (t--) { + close = this.tags[t]; + if (close.name !== closeTo) { + this.strictFail$S("Unexpected close tag"); + } else { + break; + } + } + if (t < 0) { + this.strictFail$S("Unmatched closing tag: " + this.tagName); + this.textNode += "</" + this.tagName + ">"; + this.state = 2; + return; + } + this.tagName = tagName; + s = this.tags.length; + while (s-- > t) { + tag$0 = this.tag = this.tags.pop(); + this.tagName = tag$0.name; + this.closetext_if_exist$(); + this.handler.onclosetag$S(this.tagName); + if (this.tagName === 'pre') { + this.preTags--; + } + } + if (t === 0) { + this.closedRoot = true; + } + this.tagName = this.attribValue = this.attribName = ""; + this.attribList.length = 0; + this.state = 2; +}; + +/** + * @return {!string} + */ +SAXParser.prototype.parseEntity$ = function () { + /** @type {!string} */ + var entity; + /** @type {!string} */ + var entityLC; + /** @type {!number} */ + var num; + /** @type {!string} */ + var numStr; + entity = this.entity; + entityLC = entity.toLowerCase(); + num = 0; + numStr = ""; + if (this.ENTITIES[entity]) { + return this.ENTITIES[entity]; + } + if (this.ENTITIES[entityLC]) { + return this.ENTITIES[entityLC]; + } + entity = entityLC; + if (entityLC.charAt(0) === "#") { + if (entity.charAt(1) === "x") { + entity = entity.slice(2); + num = $__jsx_parseInt(entity, 16); + numStr = num.toString(16); + } else { + entity = entity.slice(1); + num = $__jsx_parseInt(entity, 10); + numStr = num.toString(10); + } + } + entity = entity.replace(/^0+/, ""); + if (numStr.toLowerCase() !== entity) { + this.strictFail$S("Invalid character entity"); + return "&" + this.entity + ";"; + } + return String.fromCharCode(num); +}; + +/** + * class Char extends Object + * @constructor + */ +function Char() { +} + +/** + * @constructor + */ +function Char$() { + this.CDATA = "[CDATA["; + this.DOCTYPE = "DOCTYPE"; + this.XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; + this.whitespace = this._charClass$S("\r\n\t "); + this.number = this._charClass$S("0124356789"); + this.letter = this._charClass$S("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); + this.quote = this._charClass$S("'\""); + this.entity = this._charClass$S("0124356789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#"); + this.attribEnd = this._charClass$S("\r\n\t >"); + this.nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/; + this.nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/; +}; + +Char$.prototype = new Char; + +/** + * @param {!string} str + * @return {Object.<string, undefined|!boolean>} + */ +Char.prototype._charClass$S = function (str) { + /** @type {Object.<string, undefined|!boolean>} */ + var result; + /** @type {!number} */ + var i; + result = ({ }); + for (i = 0; i < str.length; i++) { + result[str.slice(i, i + 1)] = true; + } + return result; +}; + +/** + * @param {RegExp} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.is$LRegExp$S = function (charclass, c) { + return charclass.test(c); +}; + +/** + * @param {Object.<string, undefined|!boolean>} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.is$HBS = function (charclass, c) { + return $__jsx_ObjectHasOwnProperty.call(charclass, c); +}; + +/** + * @param {RegExp} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.not$LRegExp$S = function (charclass, c) { + return ! charclass.test(c); +}; + +/** + * @param {Object.<string, undefined|!boolean>} charclass + * @param {!string} c + * @return {!boolean} + */ +Char.prototype.not$HBS = function (charclass, c) { + return ! $__jsx_ObjectHasOwnProperty.call(charclass, c); +}; + +/** + * class _Entities extends Object + * @constructor + */ +function _Entities() { +} + +/** + * @constructor + */ +function _Entities$() { +}; + +_Entities$.prototype = new _Entities; + +/** + * @return {Object.<string, undefined|!string>} + */ +_Entities.entity_list$ = function () { + /** @type {Object.<string, undefined|!string>} */ + var result; + /** @type {!string} */ + var key; + /** @type {*} */ + var value; + result = ({ }); + for (key in _Entities._entities) { + value = _Entities._entities[key]; + if (typeof value === 'string') { + result[key] = value + ""; + } else { + if (typeof value === 'number') { + result[key] = String.fromCharCode(value | 0); + } + } + } + return result; +}; + +var _Entities$entity_list$ = _Entities.entity_list$; + +/** + * class BaseStemmer extends Object + * @constructor + */ +function BaseStemmer() { +} + +$__jsx_merge_interface(BaseStemmer, Stemmer); + +/** + * @constructor + */ +function BaseStemmer$() { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + this.cache = ({ }); + current$0 = this.current = ""; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +BaseStemmer$.prototype = new BaseStemmer; + +/** + * @param {!string} value + */ +BaseStemmer.prototype.setCurrent$S = function (value) { + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + current$0 = this.current = value; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; +}; + +/** + * @return {!string} + */ +BaseStemmer.prototype.getCurrent$ = function () { + return this.current; +}; + +/** + * @param {BaseStemmer} other + */ +BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) { + this.cursor++; + return true; + } + return false; +}; + +/** + * @param {Array.<undefined|!number>} s + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) { + this.cursor--; + return true; + } + return false; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.in_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor >= this.limit) { + return false; + } + ch = this.current.charCodeAt(this.cursor); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor++; + return true; +}; + +/** + * @param {!number} min + * @param {!number} max + * @return {!boolean} + */ +BaseStemmer.prototype.out_range_b$II = function (min, max) { + /** @type {!number} */ + var ch; + if (this.cursor <= this.limit_backward) { + return false; + } + ch = this.current.charCodeAt(this.cursor - 1); + if (! (ch > max || ch < min)) { + return false; + } + this.cursor--; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.limit - this.cursor < s_size) { + return false; + } + if (this.current.slice(cursor$0 = this.cursor, cursor$0 + s_size) !== s) { + return false; + } + this.cursor += s_size; + return true; +}; + +/** + * @param {!number} s_size + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) { + /** @type {!number} */ + var cursor$0; + if (this.cursor - this.limit_backward < s_size) { + return false; + } + if (this.current.slice((cursor$0 = this.cursor) - s_size, cursor$0) !== s) { + return false; + } + this.cursor -= s_size; + return true; +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v$S = function (s) { + return this.eq_s$IS(s.length, s); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.eq_v_b$S = function (s) { + return this.eq_s_b$IS(s.length, s); +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var l; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + l = this.limit; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >>> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = common; i2 < w.s_size; i2++) { + if (c + common === l) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c + w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(w.instance); + this.cursor = (c + w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {Array.<undefined|Among>} v + * @param {!number} v_size + * @return {!number} + */ +BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + /** @type {!number} */ + var c; + /** @type {!number} */ + var lb; + /** @type {!number} */ + var common_i; + /** @type {!number} */ + var common_j; + /** @type {!boolean} */ + var first_key_inspected; + /** @type {!number} */ + var k; + /** @type {!number} */ + var diff; + /** @type {!number} */ + var common; + /** @type {Among} */ + var w; + /** @type {!number} */ + var i2; + /** @type {!boolean} */ + var res; + i = 0; + j = v_size; + c = this.cursor; + lb = this.limit_backward; + common_i = 0; + common_j = 0; + first_key_inspected = false; + while (true) { + k = i + (j - i >> 1); + diff = 0; + common = (common_i < common_j ? common_i : common_j); + w = v[k]; + for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) { + if (c - common === lb) { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2); + if (diff !== 0) { + break; + } + common++; + } + if (diff < 0) { + j = k; + common_j = common; + } else { + i = k; + common_i = common; + } + if (j - i <= 1) { + if (i > 0) { + break; + } + if (j === i) { + break; + } + if (first_key_inspected) { + break; + } + first_key_inspected = true; + } + } + while (true) { + w = v[i]; + if (common_i >= w.s_size) { + this.cursor = (c - w.s_size | 0); + if (w.method == null) { + return w.result; + } + res = w.method(this); + this.cursor = (c - w.s_size | 0); + if (res) { + return w.result; + } + } + i = w.substring_i; + if (i < 0) { + return 0; + } + } + return -1; +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + * @return {!number} + */ +BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += (adjustment | 0); + if (this.cursor >= c_ket) { + this.cursor += (adjustment | 0); + } else { + if (this.cursor > c_bra) { + this.cursor = c_bra; + } + } + return (adjustment | 0); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_check$ = function () { + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true); +}; + +/** + * @param {!string} s + * @return {!boolean} + */ +BaseStemmer.prototype.slice_from$S = function (s) { + /** @type {!boolean} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = false; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + this.replace_s$IIS(this.bra, this.ket, s); + result = true; + } + return result; +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.slice_del$ = function () { + return this.slice_from$S(""); +}; + +/** + * @param {!number} c_bra + * @param {!number} c_ket + * @param {!string} s + */ +BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) { + /** @type {!number} */ + var adjustment; + adjustment = this.replace_s$IIS(c_bra, c_ket, s); + if (c_bra <= this.bra) { + this.bra += (adjustment | 0); + } + if (c_bra <= this.ket) { + this.ket += (adjustment | 0); + } +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.slice_to$S = function (s) { + /** @type {!string} */ + var result; + /** @type {!number} */ + var bra$0; + /** @type {!number} */ + var ket$0; + /** @type {!number} */ + var limit$0; + result = ''; + if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) { + result = this.current.slice(this.bra, this.ket); + } + return result; +}; + +/** + * @param {!string} s + * @return {!string} + */ +BaseStemmer.prototype.assign_to$S = function (s) { + return this.current.slice(0, this.limit); +}; + +/** + * @return {!boolean} + */ +BaseStemmer.prototype.stem$ = function () { + return false; +}; + +/** + * @param {!string} word + * @return {!string} + */ +BaseStemmer.prototype.stemWord$S = function (word) { + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + return result; +}; + +/** + * @param {Array.<undefined|!string>} words + * @return {Array.<undefined|!string>} + */ +BaseStemmer.prototype.stemWords$AS = function (words) { + /** @type {Array.<undefined|!string>} */ + var results; + /** @type {!number} */ + var i; + /** @type {undefined|!string} */ + var word; + /** @type {undefined|!string} */ + var result; + /** @type {!string} */ + var current$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + results = [ ]; + for (i = 0; i < words.length; i++) { + word = words[i]; + result = this.cache['.' + word]; + if (result == null) { + current$0 = this.current = word; + cursor$0 = this.cursor = 0; + limit$0 = this.limit = current$0.length; + this.limit_backward = 0; + this.bra = cursor$0; + this.ket = limit$0; + this.stem$(); + result = this.current; + this.cache['.' + word] = result; + } + results.push(result); + } + return results; +}; + +/** + * class TurkishStemmer extends BaseStemmer + * @constructor + */ +function TurkishStemmer() { +} + +TurkishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function TurkishStemmer$() { + BaseStemmer$.call(this); + this.B_continue_stemming_noun_suffixes = false; + this.I_strlen = 0; +}; + +TurkishStemmer$.prototype = new TurkishStemmer; + +/** + * @param {TurkishStemmer} other + */ +TurkishStemmer.prototype.copy_from$LTurkishStemmer$ = function (other) { + this.B_continue_stemming_noun_suffixes = other.B_continue_stemming_noun_suffixes; + this.I_strlen = other.I_strlen; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_check_vowel_harmony$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab25; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; +golab0: + while (true) { + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_2; + break golab0; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + } + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "a")) { + break lab3; + } + golab4: + while (true) { + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel1, 97, 305)) { + break lab5; + } + this.cursor = this.limit - v_4; + break golab4; + } + cursor$1 = this.cursor = this.limit - v_4; + if (cursor$1 <= this.limit_backward) { + break lab3; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab6; + } + golab7: + while (true) { + v_5 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel2, 101, 252)) { + break lab8; + } + this.cursor = this.limit - v_5; + break golab7; + } + cursor$2 = this.cursor = this.limit - v_5; + if (cursor$2 <= this.limit_backward) { + break lab6; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s_b$IS(1, "\u0131")) { + break lab9; + } + golab10: + while (true) { + v_6 = this.limit - this.cursor; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel3, 97, 305)) { + break lab11; + } + this.cursor = this.limit - v_6; + break golab10; + } + cursor$3 = this.cursor = this.limit - v_6; + if (cursor$3 <= this.limit_backward) { + break lab9; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.eq_s_b$IS(1, "i")) { + break lab12; + } + golab13: + while (true) { + v_7 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel4, 101, 105)) { + break lab14; + } + this.cursor = this.limit - v_7; + break golab13; + } + cursor$4 = this.cursor = this.limit - v_7; + if (cursor$4 <= this.limit_backward) { + break lab12; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab15; + } + golab16: + while (true) { + v_8 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) { + break lab17; + } + this.cursor = this.limit - v_8; + break golab16; + } + cursor$5 = this.cursor = this.limit - v_8; + if (cursor$5 <= this.limit_backward) { + break lab15; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! this.eq_s_b$IS(1, "\u00F6")) { + break lab18; + } + golab19: + while (true) { + v_9 = this.limit - this.cursor; + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) { + break lab20; + } + this.cursor = this.limit - v_9; + break golab19; + } + cursor$6 = this.cursor = this.limit - v_9; + if (cursor$6 <= this.limit_backward) { + break lab18; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.eq_s_b$IS(1, "u")) { + break lab21; + } + golab22: + while (true) { + v_10 = this.limit - this.cursor; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) { + break lab23; + } + this.cursor = this.limit - v_10; + break golab22; + } + cursor$7 = this.cursor = this.limit - v_10; + if (cursor$7 <= this.limit_backward) { + break lab21; + } + this.cursor--; + } + break lab2; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "\u00FC")) { + return false; + } + golab24: + while (true) { + v_11 = this.limit - this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) { + break lab25; + } + this.cursor = this.limit - v_11; + break golab24; + } + cursor$8 = this.cursor = this.limit - v_11; + if (cursor$8 <= this.limit_backward) { + return false; + } + this.cursor--; + } + } + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "n")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "n")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "y")) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) { + break lab1; + } + cursor$0 = this.cursor = this.limit - v_2; + if (cursor$0 <= this.limit_backward) { + break lab1; + } + this.cursor--; + v_3 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab1; + } + this.cursor = this.limit - v_3; + break lab0; + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_1; + v_4 = limit$0 - cursor$1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) { + break lab2; + } + this.cursor = this.limit - v_5; + return false; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_4; + v_6 = limit$1 - cursor$2; + if (cursor$2 <= this.limit_backward) { + return false; + } + this.cursor--; + if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + return false; + } + this.cursor = this.limit - v_6; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_possessives$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_lArI$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nUn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ndA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DAn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ndAn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ylA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ki$ = function () { + return (! this.eq_s_b$IS(2, "ki") ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ncA$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yUm$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sUn$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yUz$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_sUnUz$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_lAr$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_nUz$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_DUr$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_cAsInA$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yDU$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ysA$ = function () { + return (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_ymUs_$ = function () { + return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_mark_yken$ = function () { + return (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_nominal_verb_suffixes$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab24; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab26; + /** @type {!boolean} */ + var lab27; + /** @type {!boolean} */ + var lab28; + /** @type {!boolean} */ + var lab29; + /** @type {!boolean} */ + var lab30; + /** @type {!boolean} */ + var lab31; + /** @type {!boolean} */ + var lab32; + /** @type {!boolean} */ + var lab33; + /** @type {!boolean} */ + var lab34; + this.ket = this.cursor; + this.B_continue_stemming_noun_suffixes = true; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_2; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab4; + } + break lab2; + } + this.cursor = this.limit - v_2; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab5; + } + break lab2; + } + this.cursor = this.limit - v_2; + if (! (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab1; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true)) { + break lab6; + } + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_3 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab8; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab9; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab10; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab11; + } + break lab7; + } + this.cursor = this.limit - v_3; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab12; + } + break lab7; + } + this.cursor = this.limit - v_3; + } + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab6; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab13; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_5 = this.limit - this.cursor; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) { + break lab16; + } + break lab15; + } + this.cursor = this.limit - v_5; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab17; + } + break lab15; + } + this.cursor = this.limit - v_5; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab18; + } + break lab15; + } + this.cursor = this.limit - v_5; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_4; + break lab14; + } + } + } + this.B_continue_stemming_noun_suffixes = false; + break lab0; + } + this.cursor = this.limit - v_1; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true)) { + break lab19; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_6 = this.limit - this.cursor; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab21; + } + break lab20; + } + this.cursor = this.limit - v_6; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab19; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + v_7 = this.limit - this.cursor; + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab24; + } + break lab23; + } + this.cursor = this.limit - v_7; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab25; + } + break lab23; + } + this.cursor = this.limit - v_7; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab26; + } + break lab23; + } + this.cursor = this.limit - v_7; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab22; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_8; + break lab27; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + v_10 = this.limit - this.cursor; + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) { + break lab30; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab31; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab32; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) { + break lab33; + } + break lab29; + } + this.cursor = this.limit - v_10; + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab34; + } + break lab29; + } + this.cursor = this.limit - v_10; + } + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + this.cursor = this.limit - v_9; + break lab28; + } + } + } + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_suffix_chain_before_ki$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + this.ket = this.cursor; + if (! (! this.eq_s_b$IS(2, "ki") ? false : true)) { + return false; + } + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_4; + break lab5; + } + } + break lab3; + } + this.cursor = this.limit - v_3; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + this.cursor = this.limit - v_2; + break lab2; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_5; + break lab6; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_5; + break lab6; + } + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab7; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_7; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_8 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = this.limit - v_8; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab11; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_9; + break lab14; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_9; + break lab14; + } + } + break lab9; + } + this.cursor = this.limit - v_7; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_6; + break lab8; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) { + return false; + } + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + v_10 = this.limit - this.cursor; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab15; + } + this.cursor = this.limit - v_10; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab17; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_11 = this.limit - this.cursor; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_11; + break lab18; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_11; + break lab18; + } + } + break lab15; + } + this.cursor = this.limit - v_10; + if (! this.r_stem_suffix_chain_before_ki$()) { + return false; + } + } + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_stem_noun_suffixes$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!number} */ + var v_16; + /** @type {!number} */ + var v_17; + /** @type {!number} */ + var v_18; + /** @type {!number} */ + var v_19; + /** @type {!number} */ + var v_20; + /** @type {!number} */ + var v_21; + /** @type {!number} */ + var v_22; + /** @type {!number} */ + var v_23; + /** @type {!number} */ + var v_24; + /** @type {!number} */ + var v_25; + /** @type {!number} */ + var v_26; + /** @type {!number} */ + var v_27; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab24; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab26; + /** @type {!boolean} */ + var lab27; + /** @type {!boolean} */ + var lab28; + /** @type {!boolean} */ + var lab29; + /** @type {!boolean} */ + var lab30; + /** @type {!boolean} */ + var lab31; + /** @type {!boolean} */ + var lab32; + /** @type {!boolean} */ + var lab33; + /** @type {!boolean} */ + var lab34; + /** @type {!boolean} */ + var lab35; + /** @type {!boolean} */ + var lab36; + /** @type {!boolean} */ + var lab37; + /** @type {!boolean} */ + var lab38; + /** @type {!boolean} */ + var lab39; + /** @type {!boolean} */ + var lab40; + /** @type {!boolean} */ + var lab41; + /** @type {!boolean} */ + var lab42; + /** @type {!boolean} */ + var lab43; + /** @type {!boolean} */ + var lab44; + /** @type {!boolean} */ + var lab45; + /** @type {!boolean} */ + var lab46; + /** @type {!boolean} */ + var lab47; + /** @type {!boolean} */ + var lab48; + /** @type {!boolean} */ + var lab49; + /** @type {!boolean} */ + var lab50; + /** @type {!boolean} */ + var lab51; + /** @type {!boolean} */ + var lab52; + /** @type {!boolean} */ + var lab53; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab1; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_2; + break lab2; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab3; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_4 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab6; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab5; + } + this.cursor = this.limit - v_4; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_5 = this.limit - this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab9; + } + break lab8; + } + this.cursor = this.limit - v_5; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab7; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_6 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_6; + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_6; + break lab10; + } + } + break lab5; + } + cursor$0 = this.cursor = this.limit - v_4; + this.ket = cursor$0; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_3; + break lab4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_3; + break lab4; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_7 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) { + break lab13; + } + break lab12; + } + this.cursor = this.limit - v_7; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true)) { + break lab11; + } + } + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_8 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab15; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab14; + } + this.cursor = this.limit - v_8; + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab16; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_9 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_9; + break lab17; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_9; + break lab17; + } + } + break lab14; + } + this.cursor = this.limit - v_8; + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab11; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab18 = true; + lab18: + while (lab18 === true) { + lab18 = false; + this.ket = this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + v_10 = this.limit - this.cursor; + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true)) { + break lab20; + } + break lab19; + } + this.cursor = this.limit - v_10; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true)) { + break lab18; + } + } + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + v_11 = this.limit - this.cursor; + lab22 = true; + lab22: + while (lab22 === true) { + lab22 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab22; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_12 = this.limit - this.cursor; + lab23 = true; + lab23: + while (lab23 === true) { + lab23 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_12; + break lab23; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_12; + break lab23; + } + } + break lab21; + } + this.cursor = this.limit - v_11; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab18; + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab24 = true; + lab24: + while (lab24 === true) { + lab24 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true)) { + break lab24; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_13 = this.limit - this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + this.ket = this.cursor; + lab26 = true; + lab26: + while (lab26 === true) { + lab26 = false; + v_14 = this.limit - this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab27; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_15 = this.limit - this.cursor; + lab28 = true; + lab28: + while (lab28 === true) { + lab28 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_15; + break lab28; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_15; + break lab28; + } + } + break lab26; + } + this.cursor = this.limit - v_14; + lab29 = true; + lab29: + while (lab29 === true) { + lab29 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab29; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_16 = this.limit - this.cursor; + lab30 = true; + lab30: + while (lab30 === true) { + lab30 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_16; + break lab30; + } + } + break lab26; + } + this.cursor = this.limit - v_14; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_13; + break lab25; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab31 = true; + lab31: + while (lab31 === true) { + lab31 = false; + this.ket = this.cursor; + lab32 = true; + lab32: + while (lab32 === true) { + lab32 = false; + v_17 = this.limit - this.cursor; + lab33 = true; + lab33: + while (lab33 === true) { + lab33 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) { + break lab33; + } + break lab32; + } + this.cursor = this.limit - v_17; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab31; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_18 = this.limit - this.cursor; + lab34 = true; + lab34: + while (lab34 === true) { + lab34 = false; + lab35 = true; + lab35: + while (lab35 === true) { + lab35 = false; + v_19 = this.limit - this.cursor; + lab36 = true; + lab36: + while (lab36 === true) { + lab36 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + break lab36; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab36; + } + break lab35; + } + this.cursor = this.limit - v_19; + lab37 = true; + lab37: + while (lab37 === true) { + lab37 = false; + this.ket = this.cursor; + lab38 = true; + lab38: + while (lab38 === true) { + lab38 = false; + v_20 = this.limit - this.cursor; + lab39 = true; + lab39: + while (lab39 === true) { + lab39 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab39; + } + break lab38; + } + this.cursor = this.limit - v_20; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + break lab37; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_21 = this.limit - this.cursor; + lab40 = true; + lab40: + while (lab40 === true) { + lab40 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_21; + break lab40; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_21; + break lab40; + } + } + break lab35; + } + this.cursor = this.limit - v_19; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_18; + break lab34; + } + } + } + break lab0; + } + this.cursor = this.limit - v_1; + lab41 = true; + lab41: + while (lab41 === true) { + lab41 = false; + this.ket = this.cursor; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) { + break lab41; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab42 = true; + lab42: + while (lab42 === true) { + lab42 = false; + if (! this.r_stem_suffix_chain_before_ki$()) { + break lab42; + } + break lab0; + } + this.cursor = this.limit - v_1; + lab43 = true; + lab43: + while (lab43 === true) { + lab43 = false; + this.ket = this.cursor; + lab44 = true; + lab44: + while (lab44 === true) { + lab44 = false; + v_22 = this.limit - this.cursor; + lab45 = true; + lab45: + while (lab45 === true) { + lab45 = false; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) { + break lab45; + } + break lab44; + } + this.cursor = this.limit - v_22; + lab46 = true; + lab46: + while (lab46 === true) { + lab46 = false; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab46; + } + break lab44; + } + this.cursor = this.limit - v_22; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) { + break lab43; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_23 = this.limit - this.cursor; + lab47 = true; + lab47: + while (lab47 === true) { + lab47 = false; + this.ket = this.cursor; + lab48 = true; + lab48: + while (lab48 === true) { + lab48 = false; + v_24 = this.limit - this.cursor; + lab49 = true; + lab49: + while (lab49 === true) { + lab49 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab49; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_25 = this.limit - this.cursor; + lab50 = true; + lab50: + while (lab50 === true) { + lab50 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_25; + break lab50; + } + } + break lab48; + } + this.cursor = this.limit - v_24; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_23; + break lab47; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_23; + break lab47; + } + } + break lab0; + } + cursor$1 = this.cursor = this.limit - v_1; + this.ket = cursor$1; + lab51 = true; + lab51: + while (lab51 === true) { + lab51 = false; + v_26 = this.limit - this.cursor; + lab52 = true; + lab52: + while (lab52 === true) { + lab52 = false; + if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) { + break lab52; + } + break lab51; + } + this.cursor = this.limit - v_26; + if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) { + return false; + } + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + v_27 = this.limit - this.cursor; + lab53 = true; + lab53: + while (lab53 === true) { + lab53 = false; + this.ket = this.cursor; + if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) { + this.cursor = this.limit - v_27; + break lab53; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_stem_suffix_chain_before_ki$()) { + this.cursor = this.limit - v_27; + break lab53; + } + } + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_post_process_last_consonants$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(TurkishStemmer.a_23, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("p")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00E7")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("t")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("k")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "d")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_2; + if (! this.eq_s_b$IS(1, "g")) { + return false; + } + } + this.cursor = this.limit - v_1; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + golab4: + while (true) { + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab5; + } + this.cursor = this.limit - v_5; + break golab4; + } + cursor$0 = this.cursor = this.limit - v_5; + if (cursor$0 <= this.limit_backward) { + break lab3; + } + this.cursor--; + } + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_6 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s_b$IS(1, "a")) { + break lab7; + } + break lab6; + } + this.cursor = this.limit - v_6; + if (! this.eq_s_b$IS(1, "\u0131")) { + break lab3; + } + } + cursor$1 = this.cursor = this.limit - v_4; + this.insert$IIS(cursor$1, cursor$1, "\u0131"); + this.cursor = cursor$1; + break lab2; + } + this.cursor = this.limit - v_3; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_7 = this.limit - this.cursor; + golab9: + while (true) { + v_8 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab10; + } + this.cursor = this.limit - v_8; + break golab9; + } + cursor$2 = this.cursor = this.limit - v_8; + if (cursor$2 <= this.limit_backward) { + break lab8; + } + this.cursor--; + } + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + v_9 = this.limit - this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab12; + } + break lab11; + } + this.cursor = this.limit - v_9; + if (! this.eq_s_b$IS(1, "i")) { + break lab8; + } + } + cursor$3 = this.cursor = this.limit - v_7; + this.insert$IIS(cursor$3, cursor$3, "i"); + this.cursor = cursor$3; + break lab2; + } + this.cursor = this.limit - v_3; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + v_10 = this.limit - this.cursor; + golab14: + while (true) { + v_11 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab15; + } + this.cursor = this.limit - v_11; + break golab14; + } + cursor$4 = this.cursor = this.limit - v_11; + if (cursor$4 <= this.limit_backward) { + break lab13; + } + this.cursor--; + } + lab16 = true; + lab16: + while (lab16 === true) { + lab16 = false; + v_12 = this.limit - this.cursor; + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab17; + } + break lab16; + } + this.cursor = this.limit - v_12; + if (! this.eq_s_b$IS(1, "u")) { + break lab13; + } + } + cursor$5 = this.cursor = this.limit - v_10; + this.insert$IIS(cursor$5, cursor$5, "u"); + this.cursor = cursor$5; + break lab2; + } + cursor$7 = this.cursor = (limit$0 = this.limit) - v_3; + v_13 = limit$0 - cursor$7; + golab18: + while (true) { + v_14 = this.limit - this.cursor; + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab19; + } + this.cursor = this.limit - v_14; + break golab18; + } + cursor$6 = this.cursor = this.limit - v_14; + if (cursor$6 <= this.limit_backward) { + return false; + } + this.cursor--; + } + lab20 = true; + lab20: + while (lab20 === true) { + lab20 = false; + v_15 = this.limit - this.cursor; + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.eq_s_b$IS(1, "\u00F6")) { + break lab21; + } + break lab20; + } + this.cursor = this.limit - v_15; + if (! this.eq_s_b$IS(1, "\u00FC")) { + return false; + } + } + cursor$8 = this.cursor = this.limit - v_13; + this.insert$IIS(cursor$8, cursor$8, "\u00FC"); + this.cursor = cursor$8; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_more_than_one_syllable_word$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + v_1 = this.cursor; + v_2 = 2; +replab0: + while (true) { + v_3 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping$AIII(TurkishStemmer.g_vowel, 97, 305)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + } + v_2--; + continue replab0; + } + this.cursor = v_3; + break replab0; + } + if (v_2 > 0) { + return false; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_is_reserved_word$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!number} */ + var I_strlen$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var I_strlen$1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s$IS(2, "ad")) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + } + I_strlen$0 = this.I_strlen = 2; + if (! (I_strlen$0 === this.limit)) { + break lab1; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_4 = cursor$0; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s$IS(5, "soyad")) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + I_strlen$1 = this.I_strlen = 5; + if (! (I_strlen$1 === this.limit)) { + return false; + } + this.cursor = v_4; + } + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_is_reserved_word$()) { + break lab0; + } + return false; + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_append_U_to_stems_ending_with_d_or_g$()) { + break lab1; + } + } + this.cursor = this.limit - v_2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_post_process_last_consonants$()) { + break lab2; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @return {!boolean} + */ +TurkishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + if (! this.r_more_than_one_syllable_word$()) { + return false; + } + this.limit_backward = this.cursor; + cursor$0 = this.cursor = limit$0 = this.limit; + v_1 = limit$0 - cursor$0; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_stem_nominal_verb_suffixes$()) { + break lab0; + } + } + this.cursor = this.limit - v_1; + if (! this.B_continue_stemming_noun_suffixes) { + return false; + } + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_stem_noun_suffixes$()) { + break lab1; + } + } + this.cursor = this.limit_backward; + return (! this.r_postlude$() ? false : true); +}; + +/** + * @param {*} o + * @return {!boolean} + */ +TurkishStemmer.prototype.equals$X = function (o) { + return o instanceof TurkishStemmer; +}; + +/** + * @return {!number} + */ +TurkishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "TurkishStemmer"; + hash = 0; + if ("TurkishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class SwedishStemmer extends BaseStemmer + * @constructor + */ +function SwedishStemmer() { +} + +SwedishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function SwedishStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +SwedishStemmer$.prototype = new SwedishStemmer; + +/** + * @param {SwedishStemmer} other + */ +SwedishStemmer.prototype.copy_from$LSwedishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(SwedishStemmer.g_v, 97, 246)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(SwedishStemmer.g_v, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_0, 37); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(SwedishStemmer.g_s_ending, 98, 121)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$2; + if (this.find_among_b$ALAmong$I(SwedishStemmer.a_1, 7) === 0) { + this.limit_backward = v_2; + return false; + } + cursor$3 = this.cursor = this.limit - v_3; + this.ket = cursor$3; + if (cursor$3 <= this.limit_backward) { + this.limit_backward = v_2; + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("l\u00F6s")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("full")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +SwedishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + this.cursor = this.limit - v_3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +SwedishStemmer.prototype.equals$X = function (o) { + return o instanceof SwedishStemmer; +}; + +/** + * @return {!number} + */ +SwedishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "SwedishStemmer"; + hash = 0; + if ("SwedishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class SpanishStemmer extends BaseStemmer + * @constructor + */ +function SpanishStemmer() { +} + +SpanishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function SpanishStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +SpanishStemmer$.prototype = new SpanishStemmer; + +/** + * @param {SpanishStemmer} other + */ +SpanishStemmer.prototype.copy_from$LSpanishStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(SpanishStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_attached_pronoun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(SpanishStemmer.a_1, 13) === 0) { + return false; + } + this.bra = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_2, 11); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + this.bra = this.cursor; + if (! this.slice_from$S("iendo")) { + return false; + } + break; + case 2: + this.bra = this.cursor; + if (! this.slice_from$S("ando")) { + return false; + } + break; + case 3: + this.bra = this.cursor; + if (! this.slice_from$S("ar")) { + return false; + } + break; + case 4: + this.bra = this.cursor; + if (! this.slice_from$S("er")) { + return false; + } + break; + case 5: + this.bra = this.cursor; + if (! this.slice_from$S("ir")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.eq_s_b$IS(1, "u")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_6, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_3, 4); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_4; + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_5; + break lab4; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = this.limit - v_5; + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_y_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_7, 12); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.eq_s_b$IS(1, "u")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_8, 96); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(1, "u")) { + this.cursor = this.limit - v_3; + break lab0; + } + v_4 = this.limit - this.cursor; + if (! this.eq_s_b$IS(1, "g")) { + this.cursor = this.limit - v_3; + break lab0; + } + this.cursor = this.limit - v_4; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_9, 8); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "u")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.eq_s_b$IS(1, "g")) { + this.cursor = this.limit - v_1; + break lab0; + } + cursor$1 = this.cursor = this.limit - v_2; + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +SpanishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_attached_pronoun$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_standard_suffix$()) { + break lab4; + } + break lab3; + } + this.cursor = this.limit - v_4; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_y_verb_suffix$()) { + break lab5; + } + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_verb_suffix$()) { + break lab2; + } + } + } + this.cursor = this.limit - v_3; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_residual_suffix$()) { + break lab6; + } + } + cursor$3 = this.cursor = this.limit_backward; + v_6 = cursor$3; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_postlude$()) { + break lab7; + } + } + this.cursor = v_6; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +SpanishStemmer.prototype.equals$X = function (o) { + return o instanceof SpanishStemmer; +}; + +/** + * @return {!number} + */ +SpanishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "SpanishStemmer"; + hash = 0; + if ("SpanishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class RussianStemmer extends BaseStemmer + * @constructor + */ +function RussianStemmer() { +} + +RussianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function RussianStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_pV = 0; +}; + +RussianStemmer$.prototype = new RussianStemmer; + +/** + * @param {RussianStemmer} other + */ +RussianStemmer.prototype.copy_from$LRussianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + this.I_pV = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + golab1: + while (true) { + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab2; + } + break golab1; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_pV = this.cursor; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_perfective_gerund$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_0, 9); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "\u044F")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_adjective$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_1, 26); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_adjectival$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + if (! this.r_adjective$()) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_2, 8); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.eq_s_b$IS(1, "\u044F")) { + this.cursor = this.limit - v_1; + break lab0; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_reflexive$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_verb$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_4, 46); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "\u0430")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "\u044F")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_noun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_5, 36); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_derivational$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_6, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.r_tidy_up$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_7, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "\u043D")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RussianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit_backward$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + if (cursor$1 < this.I_pV) { + return false; + } + cursor$3 = this.cursor = this.I_pV; + v_3 = this.limit_backward; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = (limit$2 = this.limit) - v_2; + v_4 = limit$2 - cursor$4; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_5 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_perfective_gerund$()) { + break lab3; + } + break lab2; + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_5; + v_6 = limit$1 - cursor$2; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_reflexive$()) { + this.cursor = this.limit - v_6; + break lab4; + } + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_7 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_adjectival$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_7; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_verb$()) { + break lab7; + } + break lab5; + } + this.cursor = this.limit - v_7; + if (! this.r_noun$()) { + break lab1; + } + } + } + } + cursor$5 = this.cursor = (limit$3 = this.limit) - v_4; + v_8 = limit$3 - cursor$5; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "\u0438")) { + this.cursor = this.limit - v_8; + break lab8; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + v_9 = this.limit - this.cursor; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_derivational$()) { + break lab9; + } + } + this.cursor = this.limit - v_9; + lab10 = true; +lab10: + while (lab10 === true) { + lab10 = false; + if (! this.r_tidy_up$()) { + break lab10; + } + } + limit_backward$0 = this.limit_backward = v_3; + this.cursor = limit_backward$0; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +RussianStemmer.prototype.equals$X = function (o) { + return o instanceof RussianStemmer; +}; + +/** + * @return {!number} + */ +RussianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "RussianStemmer"; + hash = 0; + if ("RussianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class RomanianStemmer extends BaseStemmer + * @constructor + */ +function RomanianStemmer() { +} + +RomanianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function RomanianStemmer$() { + BaseStemmer$.call(this); + this.B_standard_suffix_removed = false; + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +RomanianStemmer$.prototype = new RomanianStemmer; + +/** + * @param {RomanianStemmer} other + */ +RomanianStemmer.prototype.copy_from$LRomanianStemmer$ = function (other) { + this.B_standard_suffix_removed = other.B_standard_suffix_removed; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!number} */ + var cursor$0; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + this.bra = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s$IS(1, "u")) { + break lab5; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab5; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! this.eq_s$IS(1, "i")) { + break lab3; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab3; + } + if (! this.slice_from$S("I")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(RomanianStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_step_0$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_1, 16); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 5: + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "ab")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("i")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("at")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("a\u0163i")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_combo_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.limit - (cursor$0 = this.cursor); + this.ket = cursor$0; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_2, 46); + if (among_var === 0) { + return false; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("abil")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ibil")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("iv")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("at")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("it")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.B_standard_suffix_removed = false; +replab0: + while (true) { + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_combo_suffix$()) { + break lab1; + } + continue replab0; + } + this.cursor = this.limit - v_1; + break replab0; + } + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_3, 62); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "\u0163")) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("t")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ist")) { + return false; + } + break; + } + this.B_standard_suffix_removed = true; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_4, 94); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(RomanianStemmer.g_v, 97, 259)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "u")) { + this.limit_backward = v_2; + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.r_vowel_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_5, 5); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +RomanianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_step_0$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_standard_suffix$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_4; + v_5 = limit$2 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_standard_suffix_removed) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + } + this.cursor = this.limit - v_5; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_vowel_suffix$()) { + break lab7; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_8 = cursor$5; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_postlude$()) { + break lab8; + } + } + this.cursor = v_8; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +RomanianStemmer.prototype.equals$X = function (o) { + return o instanceof RomanianStemmer; +}; + +/** + * @return {!number} + */ +RomanianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "RomanianStemmer"; + hash = 0; + if ("RomanianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class PortugueseStemmer extends BaseStemmer + * @constructor + */ +function PortugueseStemmer() { +} + +PortugueseStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function PortugueseStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +PortugueseStemmer$.prototype = new PortugueseStemmer; + +/** + * @param {PortugueseStemmer} other + */ +PortugueseStemmer.prototype.copy_from$LPortugueseStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_0, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a~")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("o~")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("\u00E3")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00F5")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_5, 45); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 5: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_2, 4); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_4, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 9: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + if (! this.slice_from$S("ir")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_6, 120); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_7, 7); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.r_residual_form$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_8, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "u")) { + break lab1; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.eq_s_b$IS(1, "g")) { + break lab1; + } + this.cursor = this.limit - v_2; + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "i")) { + return false; + } + this.bra = cursor$1 = this.cursor; + v_3 = this.limit - cursor$1; + if (! this.eq_s_b$IS(1, "c")) { + return false; + } + this.cursor = this.limit - v_3; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("c")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PortugueseStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$4 = this.cursor = v_2; + this.limit_backward = cursor$4; + cursor$5 = this.cursor = limit$1 = this.limit; + v_3 = limit$1 - cursor$5; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_standard_suffix$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + cursor$3 = this.cursor = (limit$0 = this.limit) - v_5; + v_7 = limit$0 - cursor$3; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "i")) { + break lab7; + } + this.bra = cursor$1 = this.cursor; + v_8 = this.limit - cursor$1; + if (! this.eq_s_b$IS(1, "c")) { + break lab7; + } + cursor$2 = this.cursor = this.limit - v_8; + if (! (! (this.I_pV <= cursor$2) ? false : true)) { + break lab7; + } + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_7; + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_residual_suffix$()) { + break lab2; + } + } + } + this.cursor = this.limit - v_3; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_residual_form$()) { + break lab8; + } + } + cursor$6 = this.cursor = this.limit_backward; + v_10 = cursor$6; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_postlude$()) { + break lab9; + } + } + this.cursor = v_10; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +PortugueseStemmer.prototype.equals$X = function (o) { + return o instanceof PortugueseStemmer; +}; + +/** + * @return {!number} + */ +PortugueseStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "PortugueseStemmer"; + hash = 0; + if ("PortugueseStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class PorterStemmer extends BaseStemmer + * @constructor + */ +function PorterStemmer() { +} + +PorterStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function PorterStemmer$() { + BaseStemmer$.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +PorterStemmer$.prototype = new PorterStemmer; + +/** + * @param {PorterStemmer} other + */ +PorterStemmer.prototype.copy_from$LPorterStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_shortv$ = function () { + return (! this.out_grouping_b$AIII(PorterStemmer.g_v_WXY, 89, 121) ? false : ! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : ! this.out_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1a$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_0, 4); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ss")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1b$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_2, 3); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ee")) { + return false; + } + break; + case 2: + v_1 = this.limit - this.cursor; + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_1, 13); + if (among_var === 0) { + return false; + } + this.cursor = this.limit - v_3; + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + this.insert$IIS(cursor$0, cursor$0, "e"); + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = this.limit - this.cursor; + if (! this.r_shortv$()) { + return false; + } + cursor$2 = this.cursor = this.limit - v_4; + c = cursor$2; + this.insert$IIS(cursor$2, cursor$2, "e"); + this.cursor = cursor$2; + break; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_1c$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "Y")) { + return false; + } + } + this.bra = this.cursor; +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) { + break lab3; + } + break golab2; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + return (! this.slice_from$S("i") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_2$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_3, 20); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ence")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ance")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("able")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("ize")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("ous")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("ive")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("ble")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_3$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_4, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_4$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_5, 19); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "t")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_5a$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + this.bra = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = this.limit - v_1; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_shortv$()) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.r_Step_5b$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p2 <= cursor$0) ? false : true) ? false : ! this.eq_s_b$IS(1, "l") ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +PorterStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!number} */ + var v_14; + /** @type {!number} */ + var v_15; + /** @type {!number} */ + var v_16; + /** @type {!number} */ + var v_18; + /** @type {!number} */ + var v_19; + /** @type {!number} */ + var v_20; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab16; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab18; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab20; + /** @type {!boolean} */ + var lab21; + /** @type {!boolean} */ + var lab22; + /** @type {!boolean} */ + var lab23; + /** @type {!boolean} */ + var lab25; + /** @type {!boolean} */ + var lab27; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$8; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$9; + /** @type {!number} */ + var limit$7; + /** @type {!number} */ + var cursor$10; + /** @type {!number} */ + var cursor$11; + /** @type {!number} */ + var cursor$12; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab0; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$1 = this.cursor = v_1; + v_2 = cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab5; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab5; + } + this.ket = this.cursor; + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + this.cursor++; + } + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + continue replab2; + } + this.cursor = v_3; + break replab2; + } + } + cursor$2 = this.cursor = v_2; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_5 = cursor$2; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + cursor$3 = this.cursor = v_5; + this.limit_backward = cursor$3; + cursor$4 = this.cursor = limit$1 = this.limit; + v_10 = limit$1 - cursor$4; + lab15 = true; +lab15: + while (lab15 === true) { + lab15 = false; + if (! this.r_Step_1a$()) { + break lab15; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_10; + v_11 = limit$2 - cursor$5; + lab16 = true; +lab16: + while (lab16 === true) { + lab16 = false; + if (! this.r_Step_1b$()) { + break lab16; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_11; + v_12 = limit$3 - cursor$6; + lab17 = true; +lab17: + while (lab17 === true) { + lab17 = false; + if (! this.r_Step_1c$()) { + break lab17; + } + } + cursor$7 = this.cursor = (limit$4 = this.limit) - v_12; + v_13 = limit$4 - cursor$7; + lab18 = true; +lab18: + while (lab18 === true) { + lab18 = false; + if (! this.r_Step_2$()) { + break lab18; + } + } + cursor$8 = this.cursor = (limit$5 = this.limit) - v_13; + v_14 = limit$5 - cursor$8; + lab19 = true; +lab19: + while (lab19 === true) { + lab19 = false; + if (! this.r_Step_3$()) { + break lab19; + } + } + cursor$9 = this.cursor = (limit$6 = this.limit) - v_14; + v_15 = limit$6 - cursor$9; + lab20 = true; +lab20: + while (lab20 === true) { + lab20 = false; + if (! this.r_Step_4$()) { + break lab20; + } + } + cursor$10 = this.cursor = (limit$7 = this.limit) - v_15; + v_16 = limit$7 - cursor$10; + lab21 = true; +lab21: + while (lab21 === true) { + lab21 = false; + if (! this.r_Step_5a$()) { + break lab21; + } + } + this.cursor = this.limit - v_16; + lab22 = true; +lab22: + while (lab22 === true) { + lab22 = false; + if (! this.r_Step_5b$()) { + break lab22; + } + } + cursor$12 = this.cursor = this.limit_backward; + v_18 = cursor$12; + lab23 = true; +lab23: + while (lab23 === true) { + lab23 = false; + if (! this.B_Y_found) { + break lab23; + } + replab24: + while (true) { + v_19 = this.cursor; + lab25 = true; + lab25: + while (lab25 === true) { + lab25 = false; + golab26: + while (true) { + v_20 = this.cursor; + lab27 = true; + lab27: + while (lab27 === true) { + lab27 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "Y")) { + break lab27; + } + this.ket = this.cursor; + this.cursor = v_20; + break golab26; + } + cursor$11 = this.cursor = v_20; + if (cursor$11 >= this.limit) { + break lab25; + } + this.cursor++; + } + if (! this.slice_from$S("y")) { + return false; + } + continue replab24; + } + this.cursor = v_19; + break replab24; + } + } + this.cursor = v_18; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +PorterStemmer.prototype.equals$X = function (o) { + return o instanceof PorterStemmer; +}; + +/** + * @return {!number} + */ +PorterStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "PorterStemmer"; + hash = 0; + if ("PorterStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class NorwegianStemmer extends BaseStemmer + * @constructor + */ +function NorwegianStemmer() { +} + +NorwegianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function NorwegianStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; +}; + +NorwegianStemmer$.prototype = new NorwegianStemmer; + +/** + * @param {NorwegianStemmer} other + */ +NorwegianStemmer.prototype.copy_from$LNorwegianStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_0, 29); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_3 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(NorwegianStemmer.g_s_ending, 98, 122)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "k")) { + return false; + } + if (! this.out_grouping_b$AIII(NorwegianStemmer.g_v, 97, 248)) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("er")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit_backward$0; + v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor); + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(NorwegianStemmer.a_1, 2) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = this.limit - v_1; + if (cursor$3 <= limit_backward$0) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_2, 11); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +NorwegianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + this.cursor = this.limit - v_3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +NorwegianStemmer.prototype.equals$X = function (o) { + return o instanceof NorwegianStemmer; +}; + +/** + * @return {!number} + */ +NorwegianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "NorwegianStemmer"; + hash = 0; + if ("NorwegianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class ItalianStemmer extends BaseStemmer + * @constructor + */ +function ItalianStemmer() { +} + +ItalianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function ItalianStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +ItalianStemmer$.prototype = new ItalianStemmer; + +/** + * @param {ItalianStemmer} other + */ +ItalianStemmer.prototype.copy_from$LItalianStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(ItalianStemmer.a_0, 7); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("\u00E0")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("\u00E8")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("\u00EC")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("\u00F2")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("\u00F9")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("qU")) { + return false; + } + break; + case 7: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab2: + while (true) { + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + golab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s$IS(1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab7; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab6; + } + this.cursor = v_5; + if (! this.eq_s$IS(1, "i")) { + break lab5; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab5; + } + if (! this.slice_from$S("I")) { + return false; + } + } + this.cursor = v_4; + break golab4; + } + cursor$0 = this.cursor = v_4; + if (cursor$0 >= this.limit) { + break lab3; + } + this.cursor++; + } + continue replab2; + } + this.cursor = v_3; + break replab2; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab15; + /** @type {!boolean} */ + var lab17; + /** @type {!boolean} */ + var lab19; + /** @type {!boolean} */ + var lab21; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_3 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab4; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab4; + } + this.cursor++; + } + break lab3; + } + this.cursor = v_3; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab2; + } + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + } + } + break lab1; + } + this.cursor = v_2; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_6 = this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab10; + } + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab10; + } + this.cursor++; + } + break lab9; + } + this.cursor = v_6; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab0; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$0 = this.cursor = v_1; + v_8 = cursor$0; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + golab14: + while (true) { + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab15; + } + break golab14; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab16: + while (true) { + lab17 = true; + lab17: + while (lab17 === true) { + lab17 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab17; + } + break golab16; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab18: + while (true) { + lab19 = true; + lab19: + while (lab19 === true) { + lab19 = false; + if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab19; + } + break golab18; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + golab20: + while (true) { + lab21 = true; + lab21: + while (lab21 === true) { + lab21 = false; + if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) { + break lab21; + } + break golab20; + } + if (this.cursor >= this.limit) { + break lab13; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_8; + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(ItalianStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_attached_pronoun$ = function () { + /** @type {!number} */ + var among_var; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(ItalianStemmer.a_2, 37) === 0) { + return false; + } + this.bra = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_3, 5); + if (among_var === 0) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_6, 51); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ente")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_4, 4); + if (among_var === 0) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_2; + break lab1; + case 1: + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_5, 3); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab2; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab2; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 9: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_4; + break lab3; + } + this.bra = cursor$4 = this.cursor; + if (! (! (this.I_p2 <= cursor$4) ? false : true)) { + this.cursor = this.limit - v_4; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_7, 87); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.r_vowel_suffix$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.in_grouping_b$AIII(ItalianStemmer.g_AEIO, 97, 242)) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_pV <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "i")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_pV <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_1; + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + v_2 = this.limit - this.cursor; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "h")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + if (! this.in_grouping_b$AIII(ItalianStemmer.g_CG, 99, 103)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +ItalianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_7; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = limit$0 = this.limit; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_attached_pronoun$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_standard_suffix$()) { + break lab5; + } + break lab4; + } + this.cursor = this.limit - v_5; + if (! this.r_verb_suffix$()) { + break lab3; + } + } + } + this.cursor = this.limit - v_4; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_vowel_suffix$()) { + break lab6; + } + } + cursor$4 = this.cursor = this.limit_backward; + v_7 = cursor$4; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_postlude$()) { + break lab7; + } + } + this.cursor = v_7; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +ItalianStemmer.prototype.equals$X = function (o) { + return o instanceof ItalianStemmer; +}; + +/** + * @return {!number} + */ +ItalianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "ItalianStemmer"; + hash = 0; + if ("ItalianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class HungarianStemmer extends BaseStemmer + * @constructor + */ +function HungarianStemmer() { +} + +HungarianStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function HungarianStemmer$() { + BaseStemmer$.call(this); + this.I_p1 = 0; +}; + +HungarianStemmer$.prototype = new HungarianStemmer; + +/** + * @param {HungarianStemmer} other + */ +HungarianStemmer.prototype.copy_from$LHungarianStemmer$ = function (other) { + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = this.limit; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab1; + } + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab3; + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (this.find_among$ALAmong$I(HungarianStemmer.a_0, 8) === 0) { + break lab5; + } + break lab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + break lab1; + } + this.cursor++; + } + this.I_p1 = this.cursor; + break lab0; + } + this.cursor = v_1; + if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + return false; + } + golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_v_ending$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_1, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_double$ = function () { + /** @type {!number} */ + var v_1; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(HungarianStemmer.a_2, 23) === 0) { + return false; + } + this.cursor = this.limit - v_1; + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + this.ket = cursor$0 = this.cursor; + c = (cursor$0 - 1 | 0); + if (this.limit_backward > c || c > this.limit) { + return false; + } + cursor$1 = this.cursor = c; + this.bra = cursor$1; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_instrum$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_3, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.r_double$()) { + return false; + } + break; + case 2: + if (! this.r_double$()) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(HungarianStemmer.a_4, 44) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (! (! (this.I_p1 <= cursor$0) ? false : true) ? false : ! this.slice_from$S("") ? false : ! this.r_v_ending$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case_special$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_5, 3); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_case_other$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_6, 6); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_factive$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_7, 2); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.r_double$()) { + return false; + } + break; + case 2: + if (! this.r_double$()) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_plural$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_8, 7); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_owned$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_9, 12); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_sing_owner$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_10, 31); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 16: + if (! this.slice_from$S("")) { + return false; + } + break; + case 17: + if (! this.slice_from$S("")) { + return false; + } + break; + case 18: + if (! this.slice_from$S("")) { + return false; + } + break; + case 19: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 20: + if (! this.slice_from$S("e")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.r_plur_owner$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_11, 42); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 13: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("")) { + return false; + } + break; + case 16: + if (! this.slice_from$S("")) { + return false; + } + break; + case 17: + if (! this.slice_from$S("")) { + return false; + } + break; + case 18: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 19: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 20: + if (! this.slice_from$S("")) { + return false; + } + break; + case 21: + if (! this.slice_from$S("")) { + return false; + } + break; + case 22: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 23: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 24: + if (! this.slice_from$S("")) { + return false; + } + break; + case 25: + if (! this.slice_from$S("")) { + return false; + } + break; + case 26: + if (! this.slice_from$S("")) { + return false; + } + break; + case 27: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 28: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 29: + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +HungarianStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$7; + /** @type {!number} */ + var cursor$8; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_instrum$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_case$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_case_special$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$3 = this.limit) - v_4; + v_5 = limit$3 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_case_other$()) { + break lab4; + } + } + cursor$5 = this.cursor = (limit$4 = this.limit) - v_5; + v_6 = limit$4 - cursor$5; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_factive$()) { + break lab5; + } + } + cursor$6 = this.cursor = (limit$5 = this.limit) - v_6; + v_7 = limit$5 - cursor$6; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_owned$()) { + break lab6; + } + } + cursor$7 = this.cursor = (limit$6 = this.limit) - v_7; + v_8 = limit$6 - cursor$7; + lab7 = true; +lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_sing_owner$()) { + break lab7; + } + } + cursor$8 = this.cursor = (limit$7 = this.limit) - v_8; + v_9 = limit$7 - cursor$8; + lab8 = true; +lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_plur_owner$()) { + break lab8; + } + } + this.cursor = this.limit - v_9; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_plural$()) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +HungarianStemmer.prototype.equals$X = function (o) { + return o instanceof HungarianStemmer; +}; + +/** + * @return {!number} + */ +HungarianStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "HungarianStemmer"; + hash = 0; + if ("HungarianStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class GermanStemmer extends BaseStemmer + * @constructor + */ +function GermanStemmer() { +} + +GermanStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function GermanStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +GermanStemmer$.prototype = new GermanStemmer; + +/** + * @param {GermanStemmer} other + */ +GermanStemmer.prototype.copy_from$LGermanStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "\u00DF")) { + break lab3; + } + this.ket = this.cursor; + if (! this.slice_from$S("ss")) { + return false; + } + break lab2; + } + cursor$0 = this.cursor = v_3; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + this.cursor = v_1; +replab4: + while (true) { + v_4 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + golab6: + while (true) { + v_5 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab7; + } + this.bra = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_6 = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s$IS(1, "u")) { + break lab9; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab9; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab8; + } + this.cursor = v_6; + if (! this.eq_s$IS(1, "y")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab7; + } + if (! this.slice_from$S("Y")) { + return false; + } + } + this.cursor = v_5; + break golab6; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab5; + } + this.cursor++; + } + continue replab4; + } + this.cursor = v_4; + break replab4; + } + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$1 = this.cursor = c; + this.I_x = cursor$1; + this.cursor = v_1; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(GermanStemmer.a_0, 6); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$8; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_1, 7); + if (among_var === 0) { + break lab0; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + break lab0; + } + switch (among_var) { + case 0: + break lab0; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + v_2 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + this.cursor = this.limit - v_2; + break lab1; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(3, "nis")) { + this.cursor = this.limit - v_2; + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 3: + if (! this.in_grouping_b$AIII(GermanStemmer.g_s_ending, 98, 116)) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$2 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_2, 4); + if (among_var === 0) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + break lab2; + } + switch (among_var) { + case 0: + break lab2; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(GermanStemmer.g_st_ending, 98, 116)) { + break lab2; + } + c = (this.cursor - 3 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$8 = this.cursor = (limit$1 = this.limit) - v_3; + v_4 = limit$1 - cursor$8; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_4, 8); + if (among_var === 0) { + break lab3; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab3; + } + switch (among_var) { + case 0: + break lab3; + case 1: + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + this.cursor = this.limit - v_5; + break lab4; + } + this.bra = cursor$4 = this.cursor; + v_6 = this.limit - cursor$4; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab5; + } + this.cursor = this.limit - v_5; + break lab4; + } + cursor$5 = this.cursor = this.limit - v_6; + if (! (! (this.I_p2 <= cursor$5) ? false : true)) { + this.cursor = this.limit - v_5; + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 2: + v_7 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab6; + } + break lab3; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + this.ket = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + v_9 = this.limit - this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.eq_s_b$IS(2, "er")) { + break lab9; + } + break lab8; + } + this.cursor = this.limit - v_9; + if (! this.eq_s_b$IS(2, "en")) { + this.cursor = this.limit - v_8; + break lab7; + } + } + this.bra = cursor$6 = this.cursor; + if (! (! (this.I_p1 <= cursor$6) ? false : true)) { + this.cursor = this.limit - v_8; + break lab7; + } + if (! this.slice_from$S("")) { + return false; + } + } + break; + case 4: + if (! this.slice_from$S("")) { + return false; + } + v_10 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_3, 2); + if (among_var === 0) { + this.cursor = this.limit - v_10; + break lab10; + } + this.bra = cursor$7 = this.cursor; + if (! (! (this.I_p2 <= cursor$7) ? false : true)) { + this.cursor = this.limit - v_10; + break lab10; + } + switch (among_var) { + case 0: + this.cursor = this.limit - v_10; + break lab10; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + } + } + this.cursor = this.limit - v_4; + return true; +}; + +/** + * @return {!boolean} + */ +GermanStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_standard_suffix$()) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_postlude$()) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +GermanStemmer.prototype.equals$X = function (o) { + return o instanceof GermanStemmer; +}; + +/** + * @return {!number} + */ +GermanStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "GermanStemmer"; + hash = 0; + if ("GermanStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class FrenchStemmer extends BaseStemmer + * @constructor + */ +function FrenchStemmer() { +} + +FrenchStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function FrenchStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.I_pV = 0; +}; + +FrenchStemmer$.prototype = new FrenchStemmer; + +/** + * @param {FrenchStemmer} other + */ +FrenchStemmer.prototype.copy_from$LFrenchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.I_pV = other.I_pV; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + this.bra = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + v_4 = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s$IS(1, "u")) { + break lab7; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab7; + } + if (! this.slice_from$S("U")) { + return false; + } + break lab6; + } + this.cursor = v_4; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s$IS(1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + if (! this.slice_from$S("I")) { + return false; + } + break lab6; + } + this.cursor = v_4; + if (! this.eq_s$IS(1, "y")) { + break lab5; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } + break lab4; + } + this.cursor = v_3; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab9; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab9; + } + if (! this.slice_from$S("Y")) { + return false; + } + break lab4; + } + this.cursor = v_3; + if (! this.eq_s$IS(1, "q")) { + break lab3; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "u")) { + break lab3; + } + this.ket = this.cursor; + if (! this.slice_from$S("U")) { + return false; + } + } + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab14; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + this.I_pV = limit$0 = this.limit; + this.I_p1 = limit$0; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab2; + } + if (this.cursor >= this.limit) { + break lab2; + } + this.cursor++; + break lab1; + } + this.cursor = v_2; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (this.find_among$ALAmong$I(FrenchStemmer.a_0, 3) === 0) { + break lab3; + } + break lab1; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab0; + } + this.cursor++; + golab4: + while (true) { + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab5; + } + break golab4; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_pV = this.cursor; + } + cursor$1 = this.cursor = v_1; + v_4 = cursor$1; + lab6 = true; +lab6: + while (lab6 === true) { + lab6 = false; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p1 = this.cursor; + golab11: + while (true) { + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab12; + } + break golab11; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + golab13: + while (true) { + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab14; + } + break golab13; + } + if (this.cursor >= this.limit) { + break lab6; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_4; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(FrenchStemmer.a_1, 4); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 4: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_RV$ = function () { + return (! (this.I_pV <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_4, 43); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_1 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab2; + } + if (! this.slice_from$S("")) { + return false; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("iqU")) { + return false; + } + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("log")) { + return false; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("u")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_2, 6); + if (among_var === 0) { + this.cursor = this.limit - v_3; + break lab3; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_3; + break lab3; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_3; + break lab3; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_4 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab5; + } + if (! this.slice_from$S("")) { + return false; + } + break lab4; + } + cursor$1 = this.cursor = this.limit - v_4; + if (! (! (this.I_p1 <= cursor$1) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("eux")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_3; + break lab3; + } + if (! this.slice_from$S("i")) { + return false; + } + break; + } + } + break; + case 7: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_5 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_3, 3); + if (among_var === 0) { + this.cursor = this.limit - v_5; + break lab6; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_5; + break lab6; + case 1: + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab8; + } + if (! this.slice_from$S("")) { + return false; + } + break lab7; + } + this.cursor = this.limit - v_6; + if (! this.slice_from$S("abl")) { + return false; + } + } + break; + case 2: + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_7 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab10; + } + if (! this.slice_from$S("")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("iqU")) { + return false; + } + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.cursor = this.limit - v_5; + break lab6; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + break; + case 8: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + v_8 = this.limit - this.cursor; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "at")) { + this.cursor = this.limit - v_8; + break lab11; + } + this.bra = cursor$2 = this.cursor; + if (! (! (this.I_p2 <= cursor$2) ? false : true)) { + this.cursor = this.limit - v_8; + break lab11; + } + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ic")) { + this.cursor = this.limit - v_8; + break lab11; + } + this.bra = this.cursor; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + v_9 = this.limit - this.cursor; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab13; + } + if (! this.slice_from$S("")) { + return false; + } + break lab12; + } + this.cursor = this.limit - v_9; + if (! this.slice_from$S("iqU")) { + return false; + } + } + } + break; + case 9: + if (! this.slice_from$S("eau")) { + return false; + } + break; + case 10: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("al")) { + return false; + } + break; + case 11: + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + v_10 = this.limit - this.cursor; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab15; + } + if (! this.slice_from$S("")) { + return false; + } + break lab14; + } + cursor$3 = this.cursor = this.limit - v_10; + if (! (! (this.I_p1 <= cursor$3) ? false : true)) { + return false; + } + if (! this.slice_from$S("eux")) { + return false; + } + } + break; + case 12: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 13: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ant")) { + return false; + } + return false; + case 14: + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ent")) { + return false; + } + return false; + case 15: + v_11 = this.limit - this.cursor; + if (! this.in_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + return false; + } + if (! (! (this.I_pV <= this.cursor) ? false : true)) { + return false; + } + this.cursor = this.limit - v_11; + if (! this.slice_from$S("")) { + return false; + } + return false; + } + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_i_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_5, 35); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + this.limit_backward = v_2; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_verb_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_pV) { + return false; + } + cursor$1 = this.cursor = this.I_pV; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_6, 38); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_2; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_2; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + this.cursor = this.limit - v_3; + break lab0; + } + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + break; + } + this.limit_backward = v_2; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_residual_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "s")) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = cursor$0 = this.cursor; + v_2 = this.limit - cursor$0; + if (! this.out_grouping_b$AIII(FrenchStemmer.g_keep_with_s, 97, 232)) { + this.cursor = this.limit - v_1; + break lab0; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("")) { + return false; + } + } + v_3 = this.limit - (cursor$1 = this.cursor); + if (cursor$1 < this.I_pV) { + return false; + } + cursor$2 = this.cursor = this.I_pV; + v_4 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = this.limit - v_3; + this.ket = cursor$3; + among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_7, 7); + if (among_var === 0) { + this.limit_backward = v_4; + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.limit_backward = v_4; + return false; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + this.limit_backward = v_4; + return false; + } + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_5; + if (! this.eq_s_b$IS(1, "t")) { + this.limit_backward = v_4; + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (! this.eq_s_b$IS(2, "gu")) { + this.limit_backward = v_4; + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + this.limit_backward = v_4; + return true; +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_un_double$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(FrenchStemmer.a_8, 5) === 0) { + return false; + } + cursor$0 = this.cursor = this.limit - v_1; + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.r_un_accent$ = function () { + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + v_1 = 1; +replab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) { + break lab1; + } + v_1--; + continue replab0; + } + break replab0; + } + if (v_1 > 0) { + return false; + } + this.ket = this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + v_3 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "\u00E9")) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_3; + if (! this.eq_s_b$IS(1, "\u00E8")) { + return false; + } + } + this.bra = this.cursor; + return (! this.slice_from$S("e") ? false : true); +}; + +/** + * @return {!boolean} + */ +FrenchStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_11; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$2 = this.cursor = v_2; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$1 = this.limit; + v_3 = limit$1 - cursor$3; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_4 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + v_5 = this.limit - this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_standard_suffix$()) { + break lab6; + } + break lab5; + } + this.cursor = this.limit - v_6; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_i_verb_suffix$()) { + break lab7; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_verb_suffix$()) { + break lab4; + } + } + cursor$1 = this.cursor = (limit$0 = this.limit) - v_5; + v_7 = limit$0 - cursor$1; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + this.ket = this.cursor; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + v_8 = this.limit - this.cursor; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.eq_s_b$IS(1, "Y")) { + break lab10; + } + this.bra = this.cursor; + if (! this.slice_from$S("i")) { + return false; + } + break lab9; + } + this.cursor = this.limit - v_8; + if (! this.eq_s_b$IS(1, "\u00E7")) { + this.cursor = this.limit - v_7; + break lab8; + } + this.bra = this.cursor; + if (! this.slice_from$S("c")) { + return false; + } + } + } + break lab3; + } + this.cursor = this.limit - v_4; + if (! this.r_residual_suffix$()) { + break lab2; + } + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_3; + v_9 = limit$2 - cursor$4; + lab11 = true; +lab11: + while (lab11 === true) { + lab11 = false; + if (! this.r_un_double$()) { + break lab11; + } + } + this.cursor = this.limit - v_9; + lab12 = true; +lab12: + while (lab12 === true) { + lab12 = false; + if (! this.r_un_accent$()) { + break lab12; + } + } + cursor$5 = this.cursor = this.limit_backward; + v_11 = cursor$5; + lab13 = true; +lab13: + while (lab13 === true) { + lab13 = false; + if (! this.r_postlude$()) { + break lab13; + } + } + this.cursor = v_11; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +FrenchStemmer.prototype.equals$X = function (o) { + return o instanceof FrenchStemmer; +}; + +/** + * @return {!number} + */ +FrenchStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "FrenchStemmer"; + hash = 0; + if ("FrenchStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class FinnishStemmer extends BaseStemmer + * @constructor + */ +function FinnishStemmer() { +} + +FinnishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function FinnishStemmer$() { + BaseStemmer$.call(this); + this.B_ending_removed = false; + this.S_x = ""; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +FinnishStemmer$.prototype = new FinnishStemmer; + +/** + * @param {FinnishStemmer} other + */ +FinnishStemmer.prototype.copy_from$LFinnishStemmer$ = function (other) { + this.B_ending_removed = other.B_ending_removed; + this.S_x = other.S_x; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + this.cursor = v_1; + break golab0; + } + cursor$0 = this.cursor = v_1; + if (cursor$0 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; +golab4: + while (true) { + v_3 = this.cursor; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab5; + } + this.cursor = v_3; + break golab4; + } + cursor$1 = this.cursor = v_3; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab6: + while (true) { + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + break golab6; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_particle_etc$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_0, 10); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.in_grouping_b$AIII(FinnishStemmer.g_particle_end, 97, 246)) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_possessive$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_4, 9); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(1, "k")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_3; + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(3, "kse")) { + return false; + } + this.bra = this.cursor; + if (! this.slice_from$S("ksi")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("")) { + return false; + } + break; + case 4: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_1, 6) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_2, 6) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_3, 2) === 0) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_LONG$ = function () { + return (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_VI$ = function () { + return (! this.eq_s_b$IS(1, "i") ? false : ! this.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_case_ending$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_6, 30); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.eq_s_b$IS(1, "a")) { + return false; + } + break; + case 2: + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + break; + case 3: + if (! this.eq_s_b$IS(1, "i")) { + return false; + } + break; + case 4: + if (! this.eq_s_b$IS(1, "o")) { + return false; + } + break; + case 5: + if (! this.eq_s_b$IS(1, "\u00E4")) { + return false; + } + break; + case 6: + if (! this.eq_s_b$IS(1, "\u00F6")) { + return false; + } + break; + case 7: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_4 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_5 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab2; + } + break lab1; + } + this.cursor = this.limit - v_5; + if (! this.eq_s_b$IS(2, "ie")) { + this.cursor = this.limit - v_3; + break lab0; + } + } + cursor$3 = this.cursor = this.limit - v_4; + if (cursor$3 <= this.limit_backward) { + this.cursor = this.limit - v_3; + break lab0; + } + this.cursor--; + this.bra = this.cursor; + } + break; + case 8: + if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + return false; + } + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + return false; + } + break; + case 9: + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + break; + } + if (! this.slice_from$S("")) { + return false; + } + this.B_ending_removed = true; + return true; +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_other_endings$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p2) { + return false; + } + cursor$1 = this.cursor = this.I_p2; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_7, 14); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + v_3 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "po")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_3; + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_i_plural$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(FinnishStemmer.a_8, 2) === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_t_plural$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var cursor$6; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (! this.eq_s_b$IS(1, "t")) { + this.limit_backward = v_2; + return false; + } + this.bra = cursor$3 = this.cursor; + v_3 = this.limit - cursor$3; + if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + this.limit_backward = v_2; + return false; + } + this.cursor = this.limit - v_3; + if (! this.slice_from$S("")) { + return false; + } + this.limit_backward = v_2; + v_4 = this.limit - (cursor$4 = this.cursor); + if (cursor$4 < this.I_p2) { + return false; + } + cursor$5 = this.cursor = this.I_p2; + v_5 = this.limit_backward; + this.limit_backward = cursor$5; + cursor$6 = this.cursor = this.limit - v_4; + this.ket = cursor$6; + among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_9, 2); + if (among_var === 0) { + this.limit_backward = v_5; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_5; + switch (among_var) { + case 0: + return false; + case 1: + v_6 = this.limit - this.cursor; + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(2, "po")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_6; + break; + } + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.r_tidy$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab7; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var cursor$8; + /** @type {!string} */ + var S_x$0; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$2 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = (limit$0 = this.limit) - v_1; + v_3 = limit$0 - cursor$3; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_4 = this.limit - this.cursor; + if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) { + break lab0; + } + cursor$1 = this.cursor = this.limit - v_4; + this.ket = cursor$1; + if (cursor$1 <= this.limit_backward) { + break lab0; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + cursor$4 = this.cursor = (limit$1 = this.limit) - v_3; + v_5 = limit$1 - cursor$4; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.ket = this.cursor; + if (! this.in_grouping_b$AIII(FinnishStemmer.g_AEI, 97, 228)) { + break lab1; + } + this.bra = this.cursor; + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab1; + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_5; + v_6 = limit$2 - cursor$5; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "j")) { + break lab2; + } + this.bra = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + v_7 = this.limit - this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.eq_s_b$IS(1, "o")) { + break lab4; + } + break lab3; + } + this.cursor = this.limit - v_7; + if (! this.eq_s_b$IS(1, "u")) { + break lab2; + } + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_6; + v_8 = limit$3 - cursor$6; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "o")) { + break lab5; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(1, "j")) { + break lab5; + } + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_8; + this.limit_backward = v_2; +golab6: + while (true) { + v_9 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) { + break lab7; + } + this.cursor = this.limit - v_9; + break golab6; + } + cursor$7 = this.cursor = this.limit - v_9; + if (cursor$7 <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.ket = cursor$8 = this.cursor; + if (cursor$8 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + S_x$0 = this.S_x = this.slice_to$S(this.S_x); + return (S_x$0 === '' ? false : ! this.eq_v_b$S(this.S_x) ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +FinnishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$5; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.B_ending_removed = false; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_particle_etc$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_possessive$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_case_ending$()) { + break lab3; + } + } + cursor$4 = this.cursor = (limit$3 = this.limit) - v_4; + v_5 = limit$3 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_other_endings$()) { + break lab4; + } + } + this.cursor = this.limit - v_5; + lab5 = true; +lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.B_ending_removed) { + break lab6; + } + v_7 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.r_i_plural$()) { + break lab7; + } + } + this.cursor = this.limit - v_7; + break lab5; + } + cursor$5 = this.cursor = (limit$4 = this.limit) - v_6; + v_8 = limit$4 - cursor$5; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_t_plural$()) { + break lab8; + } + } + this.cursor = this.limit - v_8; + } + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_tidy$()) { + break lab9; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +FinnishStemmer.prototype.equals$X = function (o) { + return o instanceof FinnishStemmer; +}; + +/** + * @return {!number} + */ +FinnishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "FinnishStemmer"; + hash = 0; + if ("FinnishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class EnglishStemmer extends BaseStemmer + * @constructor + */ +function EnglishStemmer() { +} + +EnglishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function EnglishStemmer$() { + BaseStemmer$.call(this); + this.B_Y_found = false; + this.I_p2 = 0; + this.I_p1 = 0; +}; + +EnglishStemmer$.prototype = new EnglishStemmer; + +/** + * @param {EnglishStemmer} other + */ +EnglishStemmer.prototype.copy_from$LEnglishStemmer$ = function (other) { + this.B_Y_found = other.B_Y_found; + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.B_Y_found = false; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "'")) { + break lab0; + } + this.ket = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab1; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + } + cursor$2 = this.cursor = v_2; + v_3 = cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + break lab6; + } + this.ket = this.cursor; + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + this.cursor++; + } + if (! this.slice_from$S("Y")) { + return false; + } + this.B_Y_found = true; + continue replab3; + } + this.cursor = v_4; + break replab3; + } + } + this.cursor = v_3; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab10; + /** @type {!number} */ + var limit$0; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (this.find_among$ALAmong$I(EnglishStemmer.a_0, 3) === 0) { + break lab2; + } + break lab1; + } + this.cursor = v_2; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + } + this.I_p1 = this.cursor; + golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + golab9: + while (true) { + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab10; + } + break golab9; + } + if (this.cursor >= this.limit) { + break lab0; + } + this.cursor++; + } + this.I_p2 = this.cursor; + } + this.cursor = v_1; + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_shortv$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v_WXY, 89, 121)) { + break lab1; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + if (this.cursor > this.limit_backward) { + return false; + } + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1a$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_1, 3); + if (among_var === 0) { + this.cursor = this.limit - v_1; + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + this.cursor = this.limit - v_1; + break lab0; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_2, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ss")) { + return false; + } + break; + case 2: + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + c = (this.cursor - 2 | 0); + if (this.limit_backward > c || c > this.limit) { + break lab2; + } + this.cursor = c; + if (! this.slice_from$S("i")) { + return false; + } + break lab1; + } + this.cursor = this.limit - v_2; + if (! this.slice_from$S("ie")) { + return false; + } + } + break; + case 3: + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + golab3: + while (true) { + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab4; + } + break golab3; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1b$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var c; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_4, 6); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("ee")) { + return false; + } + break; + case 2: + v_1 = this.limit - this.cursor; + golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + break lab1; + } + break golab0; + } + if (this.cursor <= this.limit_backward) { + return false; + } + this.cursor--; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + v_3 = this.limit - this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_3, 13); + if (among_var === 0) { + return false; + } + this.cursor = this.limit - v_3; + switch (among_var) { + case 0: + return false; + case 1: + c = cursor$0 = this.cursor; + this.insert$IIS(cursor$0, cursor$0, "e"); + this.cursor = c; + break; + case 2: + this.ket = cursor$1 = this.cursor; + if (cursor$1 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (this.cursor !== this.I_p1) { + return false; + } + v_4 = this.limit - this.cursor; + if (! this.r_shortv$()) { + return false; + } + cursor$2 = this.cursor = this.limit - v_4; + c = cursor$2; + this.insert$IIS(cursor$2, cursor$2, "e"); + this.cursor = cursor$2; + break; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_1c$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + this.ket = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "y")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "Y")) { + return false; + } + } + this.bra = this.cursor; + if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (this.cursor > this.limit_backward) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + return (! this.slice_from$S("i") ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_2$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_5, 24); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ence")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("ance")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("able")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("ent")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("ize")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("ous")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("ive")) { + return false; + } + break; + case 12: + if (! this.slice_from$S("ble")) { + return false; + } + break; + case 13: + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("og")) { + return false; + } + break; + case 14: + if (! this.slice_from$S("ful")) { + return false; + } + break; + case 15: + if (! this.slice_from$S("less")) { + return false; + } + break; + case 16: + if (! this.in_grouping_b$AIII(EnglishStemmer.g_valid_LI, 99, 116)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_3$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_6, 9); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("tion")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("ate")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("al")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("ic")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("")) { + return false; + } + break; + case 6: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_4$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_7, 18); + if (among_var === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p2 <= cursor$0) ? false : true)) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.eq_s_b$IS(1, "s")) { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_1; + if (! this.eq_s_b$IS(1, "t")) { + return false; + } + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_Step_5$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_8, 2); + if (among_var === 0) { + return false; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + return false; + case 1: + lab0 = true; + lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab1; + } + break lab0; + } + cursor$0 = this.cursor = this.limit - v_1; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_2 = this.limit - this.cursor; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_shortv$()) { + break lab2; + } + return false; + } + this.cursor = this.limit - v_2; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + return false; + } + if (! this.eq_s_b$IS(1, "l")) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception2$ = function () { + /** @type {!number} */ + var cursor$0; + this.ket = this.cursor; + if (this.find_among_b$ALAmong$I(EnglishStemmer.a_9, 8) === 0) { + return false; + } + this.bra = cursor$0 = this.cursor; + return (cursor$0 > this.limit_backward ? false : true); +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_exception1$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var cursor$0; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(EnglishStemmer.a_10, 18); + if (among_var === 0) { + return false; + } + this.ket = cursor$0 = this.cursor; + if (cursor$0 < this.limit) { + return false; + } + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("ski")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("sky")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("die")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("lie")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("tie")) { + return false; + } + break; + case 6: + if (! this.slice_from$S("idl")) { + return false; + } + break; + case 7: + if (! this.slice_from$S("gentl")) { + return false; + } + break; + case 8: + if (! this.slice_from$S("ugli")) { + return false; + } + break; + case 9: + if (! this.slice_from$S("earli")) { + return false; + } + break; + case 10: + if (! this.slice_from$S("onli")) { + return false; + } + break; + case 11: + if (! this.slice_from$S("singl")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + if (! this.B_Y_found) { + return false; + } +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + golab2: + while (true) { + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "Y")) { + break lab3; + } + this.ket = this.cursor; + this.cursor = v_2; + break golab2; + } + cursor$0 = this.cursor = v_2; + if (cursor$0 >= this.limit) { + break lab1; + } + this.cursor++; + } + if (! this.slice_from$S("y")) { + return false; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +EnglishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!number} */ + var v_11; + /** @type {!number} */ + var v_12; + /** @type {!number} */ + var v_13; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!boolean} */ + var lab10; + /** @type {!boolean} */ + var lab11; + /** @type {!boolean} */ + var lab12; + /** @type {!boolean} */ + var lab13; + /** @type {!boolean} */ + var lab14; + /** @type {!boolean} */ + var lab15; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + /** @type {!number} */ + var limit$4; + /** @type {!number} */ + var cursor$7; + /** @type {!number} */ + var limit$5; + /** @type {!number} */ + var cursor$8; + /** @type {!number} */ + var limit$6; + /** @type {!number} */ + var cursor$9; + /** @type {!number} */ + var cursor$10; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_exception1$()) { + break lab1; + } + break lab0; + } + this.cursor = v_1; + lab2 = true; + lab2: + while (lab2 === true) { + lab2 = false; + v_2 = this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + c = (this.cursor + 3 | 0); + if (0 > c || c > this.limit) { + break lab3; + } + this.cursor = c; + break lab2; + } + this.cursor = v_2; + break lab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_prelude$()) { + break lab4; + } + } + cursor$1 = this.cursor = v_3; + v_4 = cursor$1; + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + if (! this.r_mark_regions$()) { + break lab5; + } + } + cursor$2 = this.cursor = v_4; + this.limit_backward = cursor$2; + cursor$3 = this.cursor = limit$0 = this.limit; + v_5 = limit$0 - cursor$3; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.r_Step_1a$()) { + break lab6; + } + } + this.cursor = this.limit - v_5; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.r_exception2$()) { + break lab8; + } + break lab7; + } + cursor$4 = this.cursor = (limit$1 = this.limit) - v_6; + v_7 = limit$1 - cursor$4; + lab9 = true; + lab9: + while (lab9 === true) { + lab9 = false; + if (! this.r_Step_1b$()) { + break lab9; + } + } + cursor$5 = this.cursor = (limit$2 = this.limit) - v_7; + v_8 = limit$2 - cursor$5; + lab10 = true; + lab10: + while (lab10 === true) { + lab10 = false; + if (! this.r_Step_1c$()) { + break lab10; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_8; + v_9 = limit$3 - cursor$6; + lab11 = true; + lab11: + while (lab11 === true) { + lab11 = false; + if (! this.r_Step_2$()) { + break lab11; + } + } + cursor$7 = this.cursor = (limit$4 = this.limit) - v_9; + v_10 = limit$4 - cursor$7; + lab12 = true; + lab12: + while (lab12 === true) { + lab12 = false; + if (! this.r_Step_3$()) { + break lab12; + } + } + cursor$8 = this.cursor = (limit$5 = this.limit) - v_10; + v_11 = limit$5 - cursor$8; + lab13 = true; + lab13: + while (lab13 === true) { + lab13 = false; + if (! this.r_Step_4$()) { + break lab13; + } + } + cursor$9 = this.cursor = (limit$6 = this.limit) - v_11; + v_12 = limit$6 - cursor$9; + lab14 = true; + lab14: + while (lab14 === true) { + lab14 = false; + if (! this.r_Step_5$()) { + break lab14; + } + } + this.cursor = this.limit - v_12; + } + cursor$10 = this.cursor = this.limit_backward; + v_13 = cursor$10; + lab15 = true; + lab15: + while (lab15 === true) { + lab15 = false; + if (! this.r_postlude$()) { + break lab15; + } + } + this.cursor = v_13; + } + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +EnglishStemmer.prototype.equals$X = function (o) { + return o instanceof EnglishStemmer; +}; + +/** + * @return {!number} + */ +EnglishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "EnglishStemmer"; + hash = 0; + if ("EnglishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class DutchStemmer extends BaseStemmer + * @constructor + */ +function DutchStemmer() { +} + +DutchStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function DutchStemmer$() { + BaseStemmer$.call(this); + this.I_p2 = 0; + this.I_p1 = 0; + this.B_e_found = false; +}; + +DutchStemmer$.prototype = new DutchStemmer; + +/** + * @param {DutchStemmer} other + */ +DutchStemmer.prototype.copy_from$LDutchStemmer$ = function (other) { + this.I_p2 = other.I_p2; + this.I_p1 = other.I_p1; + this.B_e_found = other.B_e_found; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_prelude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + v_1 = this.cursor; +replab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(DutchStemmer.a_0, 11); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("a")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("e")) { + return false; + } + break; + case 3: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 4: + if (! this.slice_from$S("o")) { + return false; + } + break; + case 5: + if (! this.slice_from$S("u")) { + return false; + } + break; + case 6: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_2; + break replab0; + } + cursor$0 = this.cursor = v_1; + v_3 = cursor$0; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.bra = this.cursor; + if (! this.eq_s$IS(1, "y")) { + this.cursor = v_3; + break lab2; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } +replab3: + while (true) { + v_4 = this.cursor; + lab4 = true; + lab4: + while (lab4 === true) { + lab4 = false; + golab5: + while (true) { + v_5 = this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab6; + } + this.bra = this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + v_6 = this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s$IS(1, "i")) { + break lab8; + } + this.ket = this.cursor; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab8; + } + if (! this.slice_from$S("I")) { + return false; + } + break lab7; + } + this.cursor = v_6; + if (! this.eq_s$IS(1, "y")) { + break lab6; + } + this.ket = this.cursor; + if (! this.slice_from$S("Y")) { + return false; + } + } + this.cursor = v_5; + break golab5; + } + cursor$1 = this.cursor = v_5; + if (cursor$1 >= this.limit) { + break lab4; + } + this.cursor++; + } + continue replab3; + } + this.cursor = v_4; + break replab3; + } + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_mark_regions$ = function () { + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab8; + /** @type {!number} */ + var limit$0; + this.I_p1 = limit$0 = this.limit; + this.I_p2 = limit$0; +golab0: + while (true) { + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab1; + } + break golab0; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < 3)) { + break lab4; + } + this.I_p1 = 3; + } +golab5: + while (true) { + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab6; + } + break golab5; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } +golab7: + while (true) { + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) { + break lab8; + } + break golab7; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p2 = this.cursor; + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_postlude$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!boolean} */ + var lab1; +replab0: + while (true) { + v_1 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + this.bra = this.cursor; + among_var = this.find_among$ALAmong$I(DutchStemmer.a_1, 3); + if (among_var === 0) { + break lab1; + } + this.ket = this.cursor; + switch (among_var) { + case 0: + break lab1; + case 1: + if (! this.slice_from$S("y")) { + return false; + } + break; + case 2: + if (! this.slice_from$S("i")) { + return false; + } + break; + case 3: + if (this.cursor >= this.limit) { + break lab1; + } + this.cursor++; + break; + } + continue replab0; + } + this.cursor = v_1; + break replab0; + } + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_R1$ = function () { + return (! (this.I_p1 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_R2$ = function () { + return (! (this.I_p2 <= this.cursor) ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + v_1 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(DutchStemmer.a_2, 3) === 0) { + return false; + } + cursor$0 = this.cursor = this.limit - v_1; + this.ket = cursor$0; + if (cursor$0 <= this.limit_backward) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_e_ending$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var cursor$0; + this.B_e_found = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(1, "e")) { + return false; + } + this.bra = cursor$0 = this.cursor; + if (! (! (this.I_p1 <= cursor$0) ? false : true)) { + return false; + } + v_1 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + return false; + } + this.cursor = this.limit - v_1; + if (! this.slice_from$S("")) { + return false; + } + this.B_e_found = true; + return (! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_en_ending$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!boolean} */ + var lab0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + return false; + } + v_1 = this.limit - this.cursor; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + return false; + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.eq_s_b$IS(3, "gem")) { + break lab0; + } + return false; + } + this.cursor = this.limit - v_2; + return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true); +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.r_standard_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!number} */ + var v_5; + /** @type {!number} */ + var v_6; + /** @type {!number} */ + var v_7; + /** @type {!number} */ + var v_8; + /** @type {!number} */ + var v_9; + /** @type {!number} */ + var v_10; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!boolean} */ + var lab5; + /** @type {!boolean} */ + var lab6; + /** @type {!boolean} */ + var lab7; + /** @type {!boolean} */ + var lab8; + /** @type {!boolean} */ + var lab9; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$4; + /** @type {!number} */ + var cursor$5; + /** @type {!number} */ + var limit$3; + /** @type {!number} */ + var cursor$6; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_3, 5); + if (among_var === 0) { + break lab0; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab0; + case 1: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! this.slice_from$S("heid")) { + return false; + } + break; + case 2: + if (! this.r_en_ending$()) { + break lab0; + } + break; + case 3: + if (! (! (this.I_p1 <= this.cursor) ? false : true)) { + break lab0; + } + if (! this.out_grouping_b$AIII(DutchStemmer.g_v_j, 97, 232)) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_e_ending$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(4, "heid")) { + break lab2; + } + this.bra = cursor$1 = this.cursor; + if (! (! (this.I_p2 <= cursor$1) ? false : true)) { + break lab2; + } + v_4 = this.limit - this.cursor; + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.eq_s_b$IS(1, "c")) { + break lab3; + } + break lab2; + } + this.cursor = this.limit - v_4; + if (! this.slice_from$S("")) { + return false; + } + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "en")) { + break lab2; + } + this.bra = this.cursor; + if (! this.r_en_ending$()) { + break lab2; + } + } + cursor$4 = this.cursor = (limit$2 = this.limit) - v_3; + v_5 = limit$2 - cursor$4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + this.ket = this.cursor; + among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_4, 6); + if (among_var === 0) { + break lab4; + } + this.bra = this.cursor; + switch (among_var) { + case 0: + break lab4; + case 1: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + lab5 = true; + lab5: + while (lab5 === true) { + lab5 = false; + v_6 = this.limit - this.cursor; + lab6 = true; + lab6: + while (lab6 === true) { + lab6 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + break lab6; + } + this.bra = cursor$3 = this.cursor; + if (! (! (this.I_p2 <= cursor$3) ? false : true)) { + break lab6; + } + v_7 = this.limit - this.cursor; + lab7 = true; + lab7: + while (lab7 === true) { + lab7 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab7; + } + break lab6; + } + this.cursor = this.limit - v_7; + if (! this.slice_from$S("")) { + return false; + } + break lab5; + } + this.cursor = this.limit - v_6; + if (! this.r_undouble$()) { + break lab4; + } + } + break; + case 2: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + v_8 = this.limit - this.cursor; + lab8 = true; + lab8: + while (lab8 === true) { + lab8 = false; + if (! this.eq_s_b$IS(1, "e")) { + break lab8; + } + break lab4; + } + this.cursor = this.limit - v_8; + if (! this.slice_from$S("")) { + return false; + } + break; + case 3: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + if (! this.r_e_ending$()) { + break lab4; + } + break; + case 4: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + break; + case 5: + if (! (! (this.I_p2 <= this.cursor) ? false : true)) { + break lab4; + } + if (! this.B_e_found) { + break lab4; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + } + cursor$6 = this.cursor = (limit$3 = this.limit) - v_5; + v_9 = limit$3 - cursor$6; + lab9 = true; +lab9: + while (lab9 === true) { + lab9 = false; + if (! this.out_grouping_b$AIII(DutchStemmer.g_v_I, 73, 232)) { + break lab9; + } + v_10 = this.limit - this.cursor; + if (this.find_among_b$ALAmong$I(DutchStemmer.a_5, 4) === 0) { + break lab9; + } + if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) { + break lab9; + } + cursor$5 = this.cursor = this.limit - v_10; + this.ket = cursor$5; + if (cursor$5 <= this.limit_backward) { + break lab9; + } + this.cursor--; + this.bra = this.cursor; + if (! this.slice_from$S("")) { + return false; + } + } + this.cursor = this.limit - v_9; + return true; +}; + +/** + * @return {!boolean} + */ +DutchStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_prelude$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + v_2 = cursor$0; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_mark_regions$()) { + break lab1; + } + } + cursor$1 = this.cursor = v_2; + this.limit_backward = cursor$1; + this.cursor = this.limit; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_standard_suffix$()) { + break lab2; + } + } + cursor$2 = this.cursor = this.limit_backward; + v_4 = cursor$2; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_postlude$()) { + break lab3; + } + } + this.cursor = v_4; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +DutchStemmer.prototype.equals$X = function (o) { + return o instanceof DutchStemmer; +}; + +/** + * @return {!number} + */ +DutchStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "DutchStemmer"; + hash = 0; + if ("DutchStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class DanishStemmer extends BaseStemmer + * @constructor + */ +function DanishStemmer() { +} + +DanishStemmer.prototype = new BaseStemmer; +/** + * @constructor + */ +function DanishStemmer$() { + BaseStemmer$.call(this); + this.I_x = 0; + this.I_p1 = 0; + this.S_ch = ""; +}; + +DanishStemmer$.prototype = new DanishStemmer; + +/** + * @param {DanishStemmer} other + */ +DanishStemmer.prototype.copy_from$LDanishStemmer$ = function (other) { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + this.S_ch = other.S_ch; + BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_mark_regions$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var c; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + this.I_p1 = limit$0 = this.limit; + v_1 = cursor$0 = this.cursor; + c = (cursor$0 + 3 | 0); + if (0 > c || c > limit$0) { + return false; + } + cursor$2 = this.cursor = c; + this.I_x = cursor$2; + this.cursor = v_1; +golab0: + while (true) { + v_2 = this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.in_grouping$AIII(DanishStemmer.g_v, 97, 248)) { + break lab1; + } + this.cursor = v_2; + break golab0; + } + cursor$1 = this.cursor = v_2; + if (cursor$1 >= this.limit) { + return false; + } + this.cursor++; + } +golab2: + while (true) { + lab3 = true; + lab3: + while (lab3 === true) { + lab3 = false; + if (! this.out_grouping$AIII(DanishStemmer.g_v, 97, 248)) { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) { + return false; + } + this.cursor++; + } + this.I_p1 = this.cursor; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! (this.I_p1 < this.I_x)) { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_main_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_0, 32); + if (among_var === 0) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + break; + case 2: + if (! this.in_grouping_b$AIII(DanishStemmer.g_s_ending, 97, 229)) { + return false; + } + if (! this.slice_from$S("")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_consonant_pair$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var cursor$3; + /** @type {!number} */ + var limit_backward$0; + v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor); + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + if (this.find_among_b$ALAmong$I(DanishStemmer.a_1, 4) === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + limit_backward$0 = this.limit_backward = v_3; + cursor$3 = this.cursor = this.limit - v_1; + if (cursor$3 <= limit_backward$0) { + return false; + } + this.cursor--; + this.bra = this.cursor; + return (! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_other_suffix$ = function () { + /** @type {!number} */ + var among_var; + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + v_1 = this.limit - this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + this.ket = this.cursor; + if (! this.eq_s_b$IS(2, "st")) { + break lab0; + } + this.bra = this.cursor; + if (! this.eq_s_b$IS(2, "ig")) { + break lab0; + } + if (! this.slice_from$S("")) { + return false; + } + } + cursor$0 = this.cursor = (limit$0 = this.limit) - v_1; + v_2 = limit$0 - cursor$0; + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_2; + this.ket = cursor$2; + among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_2, 5); + if (among_var === 0) { + this.limit_backward = v_3; + return false; + } + this.bra = this.cursor; + this.limit_backward = v_3; + switch (among_var) { + case 0: + return false; + case 1: + if (! this.slice_from$S("")) { + return false; + } + v_4 = this.limit - this.cursor; + lab1 = true; + lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_consonant_pair$()) { + break lab1; + } + } + this.cursor = this.limit - v_4; + break; + case 2: + if (! this.slice_from$S("l\u00F8s")) { + return false; + } + break; + } + return true; +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.r_undouble$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var cursor$2; + /** @type {!string} */ + var S_ch$0; + v_1 = this.limit - (cursor$0 = this.cursor); + if (cursor$0 < this.I_p1) { + return false; + } + cursor$1 = this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = cursor$1; + cursor$2 = this.cursor = this.limit - v_1; + this.ket = cursor$2; + if (! this.out_grouping_b$AIII(DanishStemmer.g_v, 97, 248)) { + this.limit_backward = v_2; + return false; + } + this.bra = this.cursor; + S_ch$0 = this.S_ch = this.slice_to$S(this.S_ch); + if (S_ch$0 === '') { + return false; + } + this.limit_backward = v_2; + return (! this.eq_v_b$S(this.S_ch) ? false : ! this.slice_from$S("") ? false : true); +}; + +/** + * @return {!boolean} + */ +DanishStemmer.prototype.stem$ = function () { + /** @type {!number} */ + var v_1; + /** @type {!number} */ + var v_2; + /** @type {!number} */ + var v_3; + /** @type {!number} */ + var v_4; + /** @type {!boolean} */ + var lab0; + /** @type {!boolean} */ + var lab1; + /** @type {!boolean} */ + var lab2; + /** @type {!boolean} */ + var lab3; + /** @type {!boolean} */ + var lab4; + /** @type {!number} */ + var cursor$0; + /** @type {!number} */ + var limit$0; + /** @type {!number} */ + var cursor$1; + /** @type {!number} */ + var limit$1; + /** @type {!number} */ + var cursor$2; + /** @type {!number} */ + var limit$2; + /** @type {!number} */ + var cursor$3; + v_1 = this.cursor; + lab0 = true; +lab0: + while (lab0 === true) { + lab0 = false; + if (! this.r_mark_regions$()) { + break lab0; + } + } + cursor$0 = this.cursor = v_1; + this.limit_backward = cursor$0; + cursor$1 = this.cursor = limit$0 = this.limit; + v_2 = limit$0 - cursor$1; + lab1 = true; +lab1: + while (lab1 === true) { + lab1 = false; + if (! this.r_main_suffix$()) { + break lab1; + } + } + cursor$2 = this.cursor = (limit$1 = this.limit) - v_2; + v_3 = limit$1 - cursor$2; + lab2 = true; +lab2: + while (lab2 === true) { + lab2 = false; + if (! this.r_consonant_pair$()) { + break lab2; + } + } + cursor$3 = this.cursor = (limit$2 = this.limit) - v_3; + v_4 = limit$2 - cursor$3; + lab3 = true; +lab3: + while (lab3 === true) { + lab3 = false; + if (! this.r_other_suffix$()) { + break lab3; + } + } + this.cursor = this.limit - v_4; + lab4 = true; +lab4: + while (lab4 === true) { + lab4 = false; + if (! this.r_undouble$()) { + break lab4; + } + } + this.cursor = this.limit_backward; + return true; +}; + +/** + * @param {*} o + * @return {!boolean} + */ +DanishStemmer.prototype.equals$X = function (o) { + return o instanceof DanishStemmer; +}; + +/** + * @return {!number} + */ +DanishStemmer.prototype.hashCode$ = function () { + /** @type {!string} */ + var classname; + /** @type {!number} */ + var hash; + /** @type {!number} */ + var i; + /** @type {!number} */ + var char; + classname = "DanishStemmer"; + hash = 0; + if ("DanishStemmer".length === 0) { + return (hash | 0); + } + for (i = 0; i < classname.length; i++) { + char = classname.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return (hash | 0); +}; + +/** + * class Among extends Object + * @constructor + */ +function Among() { +} + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + */ +function Among$SII(s, substring_i, result) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = null; + this.instance = null; +}; + +Among$SII.prototype = new Among; + +/** + * @constructor + * @param {!string} s + * @param {!number} substring_i + * @param {!number} result + * @param {*} method + * @param {BaseStemmer} instance + */ +function Among$SIIF$LBaseStemmer$B$LBaseStemmer$(s, substring_i, result, method, instance) { + this.s_size = s.length; + this.s = s; + this.substring_i = substring_i; + this.result = result; + this.method = method; + this.instance = instance; +}; + +Among$SIIF$LBaseStemmer$B$LBaseStemmer$.prototype = new Among; + +/** + * class BitVector extends Object + * @constructor + */ +function BitVector() { +} + +/** + * @constructor + */ +function BitVector$() { + /** @type {Array.<undefined|!number>} */ + var _v$0; + /** @type {Array.<undefined|!number>} */ + var _r$0; + _r$0 = this._r = [ ]; + _v$0 = this._v = [ ]; + _v$0.length = 0; + _r$0.length = 0; + this._size = 0; + this._size1 = 0; +}; + +BitVector$.prototype = new BitVector; + +/** + */ +BitVector.prototype.build$ = function () { + /** @type {!number} */ + var i; + this._size1 = 0; + for (i = 0; i < this._v.length; i++) { + if (i % 8 === 0) { + this._r.push(true ? this._size1 : this._size - this._size1); + } + this._size1 += this._rank32$IIB(this._v[i], 32, true); + } +}; + +/** + */ +BitVector.prototype.clear$ = function () { + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; +}; + +/** + * @return {!number} + */ +BitVector.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.size$B = function (b) { + return (b ? this._size1 : this._size - this._size1); +}; + +/** + * @param {!number} value + */ +BitVector.prototype.set$I = function (value) { + this.set$IB(value, true); +}; + +/** + * @param {!number} value + * @param {!boolean} flag + */ +BitVector.prototype.set$IB = function (value, flag) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + this._size = (value + 1 | 0); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + while (q >= this._v.length) { + this._v.push(0); + } + m = 0x1 << r; + if (flag) { + this._v[q] |= m; + } else { + this._v[q] &= ~ m; + } +}; + +/** + * @param {!number} value + * @return {!boolean} + */ +BitVector.prototype.get$I = function (value) { + /** @type {!number} */ + var q; + /** @type {!number} */ + var r; + /** @type {!number} */ + var m; + if (value >= this._size) { + throw new Error("BitVector.get() : range error"); + } + q = (value / 32 | 0); + r = (value % 32 | 0); + m = 0x1 << r; + return !! (this._v[q] & m); +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.rank$I = function (i) { + return this.rank$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.rank$IB = function (i, b) { + /** @type {!number} */ + var q_large; + /** @type {!number} */ + var q_small; + /** @type {!number} */ + var r; + /** @type {!number} */ + var rank; + /** @type {!number} */ + var begin; + /** @type {!number} */ + var j; + if (i > this._size) { + throw new Error("BitVector.rank() : range error"); + } + if (i === 0) { + return 0; + } + i--; + q_large = (Math.floor(i / 256) | 0); + q_small = (Math.floor(i / 32) | 0); + r = (Math.floor(i % 32) | 0); + rank = (this._r[q_large] | 0); + if (! b) { + rank = q_large * 256 - rank; + } + begin = q_large * 8; + for (j = begin; j < q_small; j++) { + rank += this._rank32$IIB(this._v[j], 32, b); + } + rank += this._rank32$IIB(this._v[q_small], r + 1, b); + return rank; +}; + +/** + * @param {!number} i + * @return {!number} + */ +BitVector.prototype.select$I = function (i) { + return this.select$IB(i, true); +}; + +/** + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype.select$IB = function (i, b) { + /** @type {!number} */ + var left; + /** @type {!number} */ + var right; + /** @type {!number} */ + var pivot; + /** @type {undefined|!number} */ + var rank; + /** @type {!number} */ + var j; + if (i >= (b ? this._size1 : this._size - this._size1)) { + throw new Error("BitVector.select() : range error"); + } + left = 0; + right = this._r.length; + while (left < right) { + pivot = Math.floor((left + right) / 2); + rank = this._r[pivot]; + if (! b) { + rank = pivot * 256 - rank; + } + if (i < rank) { + right = pivot; + } else { + left = pivot + 1; + } + } + right--; + if (b) { + i -= (this._r[right] | 0); + } else { + i -= (right * 256 - this._r[right] | 0); + } + j = right * 8; + while (1) { + rank = this._rank32$IIB(this._v[j], 32, b); + if (i < rank) { + break; + } + j++; + i -= (rank | 0); + } + return (j * 32 + this._select32$IIB(this._v[j], i, b) | 0); +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._rank32$IIB = function (x, i, b) { + if (! b) { + x = ~ x; + } + x <<= 32 - i; + x = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x = ((x & 0xcccccccc) >>> 2) + (x & 0x33333333); + x = ((x & 0xf0f0f0f0) >>> 4) + (x & 0x0f0f0f0f); + x = ((x & 0xff00ff00) >>> 8) + (x & 0x00ff00ff); + x = ((x & 0xffff0000) >>> 16) + (x & 0x0000ffff); + return x; +}; + +/** + * @param {!number} x + * @param {!number} i + * @param {!boolean} b + * @return {!number} + */ +BitVector.prototype._select32$IIB = function (x, i, b) { + /** @type {!number} */ + var x1; + /** @type {!number} */ + var x2; + /** @type {!number} */ + var x3; + /** @type {!number} */ + var x4; + /** @type {!number} */ + var x5; + /** @type {!number} */ + var pos; + /** @type {!number} */ + var v5; + /** @type {!number} */ + var v4; + /** @type {!number} */ + var v3; + /** @type {!number} */ + var v2; + /** @type {!number} */ + var v1; + /** @type {!number} */ + var v0; + if (! b) { + x = ~ x; + } + x1 = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555); + x2 = ((x1 & 0xcccccccc) >>> 2) + (x1 & 0x33333333); + x3 = ((x2 & 0xf0f0f0f0) >>> 4) + (x2 & 0x0f0f0f0f); + x4 = ((x3 & 0xff00ff00) >>> 8) + (x3 & 0x00ff00ff); + x5 = ((x4 & 0xffff0000) >>> 16) + (x4 & 0x0000ffff); + i++; + pos = 0; + v5 = x5 & 0xffffffff; + if (i > v5) { + i -= (v5 | 0); + pos += 32; + } + v4 = x4 >>> pos & 0x0000ffff; + if (i > v4) { + i -= (v4 | 0); + pos += 16; + } + v3 = x3 >>> pos & 0x000000ff; + if (i > v3) { + i -= (v3 | 0); + pos += 8; + } + v2 = x2 >>> pos & 0x0000000f; + if (i > v2) { + i -= (v2 | 0); + pos += 4; + } + v1 = x1 >>> pos & 0x00000003; + if (i > v1) { + i -= (v1 | 0); + pos += 2; + } + v0 = x >>> pos & 0x00000001; + if (i > v0) { + i -= (v0 | 0); + pos += 1; + } + return (pos | 0); +}; + +/** + * @return {!string} + */ +BitVector.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + contents.push(Binary$dump32bitNumberList$AN(this._v)); + return contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +BitVector.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + contents = [ ]; + contents.push(Binary$dump32bitNumber$N(this._size)); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumberList$ANLCompressionReport$(this._v, report)); + return contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +BitVector.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +BitVector.prototype.load$SI = function (data, offset) { + /** @type {LoadedNumberListResult} */ + var result; + /** @type {!number} */ + var result$0; + this._v.length = 0; + this._r.length = 0; + this._size = 0; + this._size1 = 0; + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + result = Binary$load32bitNumberList$SI(data, offset + 2); + this._v = result.result; + this.build$(); + return result.offset; +}; + +/** + * class WaveletMatrix extends Object + * @constructor + */ +function WaveletMatrix() { +} + +/** + * @constructor + */ +function WaveletMatrix$() { + /** @type {Array.<undefined|BitVector>} */ + var _bv$0; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + this._range = ({ }); + _bv$0 = this._bv = [ ]; + _seps$0 = this._seps = [ ]; + this._bitsize = 16; + _bv$0.length = 0; + _seps$0.length = 0; + this._size = 0; +}; + +WaveletMatrix$.prototype = new WaveletMatrix; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.bitsize$ = function () { + return this._bitsize; +}; + +/** + * @param {!number} charCode + */ +WaveletMatrix.prototype.setMaxCharCode$I = function (charCode) { + this._bitsize = (Math.ceil(Math.log(charCode) / 0.6931471805599453) | 0); +}; + +/** + */ +WaveletMatrix.prototype.clear$ = function () { + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; +}; + +/** + * @param {!string} v + */ +WaveletMatrix.prototype.build$S = function (v) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var bitsize; + /** @type {!number} */ + var i; + /** @type {!number} */ + var depth; + /** @type {Object.<string, undefined|!number>} */ + var range_tmp; + /** @type {!number} */ + var code; + /** @type {!boolean} */ + var bit; + /** @type {!number} */ + var key; + /** @type {Object.<string, undefined|!number>} */ + var range_rev; + /** @type {!string} */ + var range_key; + /** @type {!number} */ + var value; + /** @type {!number} */ + var pos0; + /** @type {undefined|!number} */ + var pos1; + /** @type {!string} */ + var range_rev_key; + /** @type {!number} */ + var begin; + /** @type {undefined|!number} */ + var end; + /** @type {!number} */ + var num0; + /** @type {!number} */ + var num1; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + size = v.length; + bitsize = this._bitsize; + for (i = 0; i < bitsize; i++) { + this._bv.push(new BitVector$()); + this._seps.push(0); + } + this._size = (size | 0); + for (i = 0; i < size; i++) { + this._bv[0].set$IB(i, this._uint2bit$II(v.charCodeAt(i), 0)); + } + this._bv[0].build$(); + this._seps[0] = this._bv[0].size$B(false); + this._range["0"] = 0; + this._range["1"] = this._seps[0]; + depth = 1; + while (depth < bitsize) { + range_tmp = WaveletMatrix$_shallow_copy$HI(this._range); + for (i = 0; i < size; i++) { + code = v.charCodeAt(i); + bit = this._uint2bit$II(code, depth); + key = code >>> bitsize - depth; + this._bv[depth].set$IB(range_tmp[key + ""], bit); + range_tmp[key + ""]++; + } + this._bv[depth].build$(); + this._seps[depth] = this._bv[depth].size$B(false); + range_rev = ({ }); + for (range_key in this._range) { + value = this._range[range_key]; + if (value != range_tmp[range_key]) { + range_rev[value + ""] = range_key | 0; + } + } + this._range = ({ }); + pos0 = 0; + pos1 = this._seps[depth]; + for (range_rev_key in range_rev) { + begin = range_rev_key | 0; + value = range_rev[range_rev_key]; + end = range_tmp[value + ""]; + num0 = this._bv[depth].rank$IB(end, false) - this._bv[depth].rank$IB(begin, false); + num1 = end - begin - num0; + if (num0 > 0) { + this._range[(value << 1) + ""] = (pos0 | 0); + pos0 += num0; + } + if (num1 > 0) { + this._range[(value << 1) + 1 + ""] = pos1; + pos1 += (num1 | 0); + } + } + depth++; + } +}; + +/** + * @return {!number} + */ +WaveletMatrix.prototype.size$ = function () { + return this._size; +}; + +/** + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.size$I = function (c) { + return this.rank$II(this._size, c); +}; + +/** + * @param {!number} i + * @return {!number} + */ +WaveletMatrix.prototype.get$I = function (i) { + /** @type {!number} */ + var value; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i >= this._size) { + throw new Error("WaveletMatrix.get() : range error"); + } + value = 0; + depth = 0; + while (depth < this._bitsize) { + bit = this._bv[depth].get$I(i); + i = this._bv[depth].rank$IB(i, bit); + value <<= 1; + if (bit) { + i += this._seps[depth]; + value += 1; + } + depth++; + } + return (value | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank$II = function (i, c) { + /** @type {undefined|!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!boolean} */ + var bit; + if (i > this._size) { + throw new Error("WaveletMatrix.rank(): range error"); + } + if (i === 0) { + return 0; + } + begin = this._range[c + ""]; + if (begin == null) { + return 0; + } + end = i; + depth = 0; + while (depth < this._bitsize) { + bit = this._uint2bit$II(c, depth); + end = this._bv[depth].rank$IB(end, bit); + if (bit) { + end += this._seps[depth]; + } + depth++; + } + return (end - begin | 0); +}; + +/** + * @param {!number} i + * @param {!number} c + * @return {!number} + */ +WaveletMatrix.prototype.rank_less_than$II = function (i, c) { + /** @type {!number} */ + var begin; + /** @type {!number} */ + var end; + /** @type {!number} */ + var depth; + /** @type {!number} */ + var rlt; + /** @type {!number} */ + var rank0_begin; + /** @type {!number} */ + var rank0_end; + /** @type {Array.<undefined|!number>} */ + var _seps$0; + if (i > this._size) { + throw new Error("WaveletMatrix.rank_less_than(): range error"); + } + if (i === 0) { + return 0; + } + begin = 0; + end = i; + depth = 0; + rlt = 0; + while (depth < this._bitsize) { + rank0_begin = this._bv[depth].rank$IB(begin, false); + rank0_end = this._bv[depth].rank$IB(end, false); + if (this._uint2bit$II(c, depth)) { + rlt += rank0_end - rank0_begin; + begin += (_seps$0 = this._seps)[depth] - rank0_begin; + end += _seps$0[depth] - rank0_end; + } else { + begin = rank0_begin; + end = rank0_end; + } + depth++; + } + return (rlt | 0); +}; + +/** + * @return {!string} + */ +WaveletMatrix.prototype.dump$ = function () { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$()); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + counter++; + } + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {CompressionReport} report + * @return {!string} + */ +WaveletMatrix.prototype.dump$LCompressionReport$ = function (report) { + /** @type {Array.<undefined|!string>} */ + var contents; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!string>} */ + var range_contents; + /** @type {!number} */ + var counter; + /** @type {!string} */ + var key; + contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ]; + CompressionReport$add$LCompressionReport$II(report, 3, 3); + for (i = 0; i < this._bitsize; i++) { + contents.push(this._bv[i].dump$LCompressionReport$(report)); + } + for (i = 0; i < this._bitsize; i++) { + contents.push(Binary$dump32bitNumber$N(this._seps[i])); + CompressionReport$add$LCompressionReport$II(report, 2, 2); + } + range_contents = [ ]; + counter = 0; + for (key in this._range) { + range_contents.push(Binary$dump32bitNumber$N(key | 0)); + range_contents.push(Binary$dump32bitNumber$N(this._range[key])); + CompressionReport$add$LCompressionReport$II(report, 4, 4); + counter++; + } + CompressionReport$add$LCompressionReport$II(report, 2, 2); + contents.push(Binary$dump32bitNumber$N(counter)); + return contents.join('') + range_contents.join(''); +}; + +/** + * @param {!string} data + * @return {!number} + */ +WaveletMatrix.prototype.load$S = function (data) { + return this.load$SI(data, 0); +}; + +/** + * @param {!string} data + * @param {!number} offset + * @return {!number} + */ +WaveletMatrix.prototype.load$SI = function (data, offset) { + /** @type {!number} */ + var i; + /** @type {BitVector} */ + var bit_vector; + /** @type {!number} */ + var range_size; + /** @type {!number} */ + var value; + /** @type {!number} */ + var offset$0; + /** @type {!number} */ + var result$0; + /** @type {!number} */ + var result$1; + /** @type {!number} */ + var result$2; + this._bv.length = 0; + this._seps.length = 0; + this._size = 0; + offset$0 = offset++; + this._bitsize = (data.charCodeAt(offset$0) | 0); + result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + this._size = (result$0 | 0); + offset += 2; + for (i = 0; i < this._bitsize; i++) { + bit_vector = new BitVector$(); + offset = bit_vector.load$SI(data, offset); + this._bv.push(bit_vector); + } + for (i = 0; i < this._bitsize; (i++, offset += 2)) { + this._seps.push(Binary$load32bitNumber$SI(data, offset)); + } + result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + range_size = result$1; + offset += 2; + for (i = 0; i < range_size; (i++, offset += 4)) { + result$2 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1); + value = Binary$load32bitNumber$SI(data, offset + 2); + this._range[result$2 + ""] = (value | 0); + } + return offset; +}; + +/** + * @param {Object.<string, undefined|!number>} input + * @return {Object.<string, undefined|!number>} + */ +WaveletMatrix._shallow_copy$HI = function (input) { + /** @type {Object.<string, undefined|!number>} */ + var result; + /** @type {!string} */ + var key; + result = ({ }); + for (key in input) { + result[key] = input[key]; + } + return result; +}; + +var WaveletMatrix$_shallow_copy$HI = WaveletMatrix._shallow_copy$HI; + +/** + * @param {!number} c + * @param {!number} i + * @return {!boolean} + */ +WaveletMatrix.prototype._uint2bit$II = function (c, i) { + return (c >>> this._bitsize - 1 - i & 0x1) === 0x1; +}; + +/** + * class BurrowsWheelerTransform extends Object + * @constructor + */ +function BurrowsWheelerTransform() { +} + +/** + * @constructor + */ +function BurrowsWheelerTransform$() { + this._str = ""; + this._size = 0; + this._head = 0; + this._suffixarray = [ ]; +}; + +BurrowsWheelerTransform$.prototype = new BurrowsWheelerTransform; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.size$LBurrowsWheelerTransform$ = function ($this) { + return $this._size; +}; + +var BurrowsWheelerTransform$size$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.size$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!number} + */ +BurrowsWheelerTransform.head$LBurrowsWheelerTransform$ = function ($this) { + return $this._head; +}; + +var BurrowsWheelerTransform$head$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.head$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + */ +BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$ = function ($this) { + $this._str = ""; + $this._size = 0; + $this._head = 0; + $this._suffixarray.length = 0; +}; + +var BurrowsWheelerTransform$clear$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} str + */ +BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S = function ($this, str) { + /** @type {!string} */ + var _str$0; + /** @type {Array.<undefined|!number>} */ + var _suffixarray$0; + _str$0 = $this._str = str; + $this._size = _str$0.length; + _suffixarray$0 = $this._suffixarray = SAIS$make$S(str); + $this._head = (_suffixarray$0.indexOf(0) | 0); +}; + +var BurrowsWheelerTransform$build$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!number} i + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I = function ($this, i) { + /** @type {!number} */ + var size; + /** @type {!number} */ + var index; + size = $this._size; + if (i >= size) { + throw new Error("BurrowsWheelerTransform.get() : range error"); + } + index = ($this._suffixarray[i] + size - 1) % size; + return $this._str.charAt(index); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I; + +/** + * @param {BurrowsWheelerTransform} $this + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$ = function ($this) { + /** @type {Array.<undefined|!string>} */ + var str; + /** @type {!number} */ + var size; + /** @type {!number} */ + var i; + str = [ ]; + size = $this._size; + for (i = 0; i < size; i++) { + str.push(BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I($this, i)); + } + return str.join(""); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$; + +/** + * @param {BurrowsWheelerTransform} $this + * @param {!string} replace + * @return {!string} + */ +BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S = function ($this, replace) { + /** @type {!string} */ + var result; + result = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$($this); + return result.replace(BurrowsWheelerTransform.END_MARKER, replace); +}; + +var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S; + +/** + * class OArray extends Object + * @constructor + */ +function OArray() { +} + +/** + * @constructor + * @param {Array.<undefined|!number>} array + */ +function OArray$AI(array) { + this.array = array; + this.offset = 0; +}; + +OArray$AI.prototype = new OArray; + +/** + * @constructor + * @param {Array.<undefined|!number>} array + * @param {!number} offset + */ +function OArray$AII(array, offset) { + this.array = array; + this.offset = offset; +}; + +OArray$AII.prototype = new OArray; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!number} + */ +OArray.get$LOArray$I = function ($this, index) { + return $this.array[index + $this.offset]; +}; + +var OArray$get$LOArray$I = OArray.get$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index + * @param {!number} value + */ +OArray.set$LOArray$II = function ($this, index, value) { + $this.array[index + $this.offset] = value; +}; + +var OArray$set$LOArray$II = OArray.set$LOArray$II; + +/** + * @param {OArray} $this + * @param {!number} index + * @return {!boolean} + */ +OArray.isS$LOArray$I = function ($this, index) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index + (offset$0 = $this.offset)] < array$0[index + offset$0 + 1]; +}; + +var OArray$isS$LOArray$I = OArray.isS$LOArray$I; + +/** + * @param {OArray} $this + * @param {!number} index1 + * @param {!number} index2 + * @return {!boolean} + */ +OArray.compare$LOArray$II = function ($this, index1, index2) { + /** @type {Array.<undefined|!number>} */ + var array$0; + /** @type {!number} */ + var offset$0; + return (array$0 = $this.array)[index1 + (offset$0 = $this.offset)] == array$0[index2 + offset$0]; +}; + +var OArray$compare$LOArray$II = OArray.compare$LOArray$II; + +/** + * class SAIS extends Object + * @constructor + */ +function SAIS() { +} + +/** + * @constructor + */ +function SAIS$() { +}; + +SAIS$.prototype = new SAIS; + +/** + * @param {BitVector} t + * @param {!number} i + * @return {!boolean} + */ +SAIS._isLMS$LBitVector$I = function (t, i) { + return i > 0 && t.get$I(i) && ! t.get$I(i - 1); +}; + +var SAIS$_isLMS$LBitVector$I = SAIS._isLMS$LBitVector$I; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._getBuckets$LOArray$AIIIB = function (s, bkt, n, K, end) { + /** @type {!number} */ + var sum; + /** @type {!number} */ + var i; + sum = 0; + for (i = 0; i <= K; i++) { + bkt[i] = 0; + } + for (i = 0; i < n; i++) { + bkt[OArray$get$LOArray$I(s, i)]++; + } + for (i = 0; i <= K; i++) { + sum += bkt[i]; + bkt[i] = ((end ? sum : sum - bkt[i]) | 0); + } +}; + +var SAIS$_getBuckets$LOArray$AIIIB = SAIS._getBuckets$LOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAl$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = 0; i < n; i++) { + j = SA[i] - 1; + if (j >= 0 && ! t.get$I(j)) { + SA[bkt[OArray$get$LOArray$I(s, j)]++] = (j | 0); + } + } +}; + +var SAIS$_induceSAl$LBitVector$AILOArray$AIIIB = SAIS._induceSAl$LBitVector$AILOArray$AIIIB; + +/** + * @param {BitVector} t + * @param {Array.<undefined|!number>} SA + * @param {OArray} s + * @param {Array.<undefined|!number>} bkt + * @param {!number} n + * @param {!number} K + * @param {!boolean} end + */ +SAIS._induceSAs$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) { + /** @type {!number} */ + var i; + /** @type {!number} */ + var j; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end); + for (i = n - 1; i >= 0; i--) { + j = SA[i] - 1; + if (j >= 0 && t.get$I(j)) { + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + } +}; + +var SAIS$_induceSAs$LBitVector$AILOArray$AIIIB = SAIS._induceSAs$LBitVector$AILOArray$AIIIB; + +/** + * @param {!string} source + * @return {Array.<undefined|!number>} + */ +SAIS.make$S = function (source) { + /** @type {Array.<undefined|!number>} */ + var charCodes; + /** @type {!number} */ + var maxCode; + /** @type {!number} */ + var i; + /** @type {!number} */ + var code; + /** @type {Array.<undefined|!number>} */ + var SA; + /** @type {OArray} */ + var s; + charCodes = [ ]; + charCodes.length = source.length; + maxCode = 0; + for (i = 0; i < source.length; i++) { + code = source.charCodeAt(i); + charCodes[i] = (code | 0); + maxCode = (code > maxCode ? code : maxCode); + } + SA = [ ]; + SA.length = source.length; + s = ({offset: 0, array: charCodes}); + SAIS$_make$LOArray$AIII(s, SA, source.length, maxCode); + return SA; +}; + +var SAIS$make$S = SAIS.make$S; + +/** + * @param {OArray} s + * @param {Array.<undefined|!number>} SA + * @param {!number} n + * @param {!number} K + */ +SAIS._make$LOArray$AIII = function (s, SA, n, K) { + /** @type {BitVector} */ + var t; + /** @type {!number} */ + var i; + /** @type {Array.<undefined|!number>} */ + var bkt; + /** @type {!number} */ + var n1; + /** @type {!number} */ + var name; + /** @type {!number} */ + var prev; + /** @type {undefined|!number} */ + var pos; + /** @type {!boolean} */ + var diff; + /** @type {!number} */ + var d; + /** @type {!number} */ + var j; + /** @type {Array.<undefined|!number>} */ + var SA1; + /** @type {OArray} */ + var s1; + /** @type {!number} */ + var i$0; + /** @type {!number} */ + var index$0; + t = new BitVector$(); + t.set$IB(n - 2, false); + t.set$IB(n - 1, true); + for (i = n - 3; i >= 0; i--) { + t.set$IB(i, OArray$isS$LOArray$I(s, i) || OArray$compare$LOArray$II(s, i, i + 1) && t.get$I(i + 1)); + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for (i = 0; i < n; i++) { + SA[i] = -1; + } + for (i = 1; i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + SA[-- bkt[OArray$get$LOArray$I(s, i)]] = (i | 0); + } + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); + n1 = 0; + for (i = 0; i < n; i++) { + i$0 = SA[i]; + if (i$0 > 0 && t.get$I(i$0) && ! t.get$I(i$0 - 1)) { + SA[n1++] = SA[i]; + } + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + name = 0; + prev = -1; + for (i = 0; i < n1; i++) { + pos = SA[i]; + diff = false; + for (d = 0; d < n; d++) { + if (prev === -1 || ! OArray$compare$LOArray$II(s, pos + d, prev + d) || t.get$I(pos + d) !== t.get$I(prev + d)) { + diff = true; + break; + } else { + if (d > 0 && (SAIS$_isLMS$LBitVector$I(t, pos + d) || SAIS$_isLMS$LBitVector$I(t, prev + d))) { + break; + } + } + } + if (diff) { + name++; + prev = pos; + } + pos = ((pos % 2 === 0 ? pos / 2 : (pos - 1) / 2) | 0); + SA[n1 + pos] = (name - 1 | 0); + } + for ((i = n - 1, j = n - 1); i >= n1; i--) { + if (SA[i] >= 0) { + SA[j--] = SA[i]; + } + } + SA1 = SA; + s1 = ({offset: n - n1, array: SA}); + if (name < n1) { + SAIS$_make$LOArray$AIII(s1, SA1, n1, name - 1); + } else { + for (i = 0; i < n1; i++) { + SA1[OArray$get$LOArray$I(s1, i)] = (i | 0); + } + } + bkt = [ ]; + bkt.length = K + 1; + SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true); + for ((i = 1, j = 0); i < n; i++) { + if (SAIS$_isLMS$LBitVector$I(t, i)) { + OArray$set$LOArray$II(s1, j++, i); + } + } + for (i = 0; i < n1; i++) { + index$0 = SA1[i]; + SA1[i] = s1.array[index$0 + s1.offset]; + } + for (i = n1; i < n; i++) { + SA[i] = -1; + } + for (i = n1 - 1; i >= 0; i--) { + j = SA[i]; + SA[i] = -1; + SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0); + } + SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false); + SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true); +}; + +var SAIS$_make$LOArray$AIII = SAIS._make$LOArray$AIII; + +$__jsx_lazy_init(node, "__dirname", function () { + return eval("__dirname") + ""; +}); +$__jsx_lazy_init(node, "__filename", function () { + return eval("__filename") + ""; +}); +$__jsx_lazy_init(node, "fs", function () { + return node$require$S('fs'); +}); +$__jsx_lazy_init(node, "path", function () { + return node$require$S('path'); +}); +$__jsx_lazy_init(node, "child_process", function () { + return node$require$S('child_process'); +}); +$__jsx_lazy_init(node, "url", function () { + return node$require$S('url'); +}); +$__jsx_lazy_init(node, "http", function () { + return node$require$S('http'); +}); +$__jsx_lazy_init(node, "https", function () { + return node$require$S('https'); +}); +$__jsx_lazy_init(node, "net", function () { + return node$require$S('net'); +}); +$__jsx_lazy_init(Oktavia, "eof", function () { + return String.fromCharCode(0); +}); +$__jsx_lazy_init(Oktavia, "eob", function () { + return String.fromCharCode(1); +}); +$__jsx_lazy_init(Oktavia, "unknown", function () { + return String.fromCharCode(3); +}); +$__jsx_lazy_init(Style, "console", function () { + return ({ 'title': [ '\x1B[32m\x1b[4m', '\x1B[39m\x1b[0m' ], 'url': [ '\x1B[34m', '\x1B[39m' ], 'hit': [ '\x1B[4m', '\x1B[0m' ], 'del': [ '\x1B[9m', '\x1B[0m' ], 'summary': [ '\x1B[90m', '\x1B[39m' ] }); +}); +$__jsx_lazy_init(Style, "html", function () { + return ({ 'title': [ '<span class="title">', '</span>' ], 'url': [ '<span class="url">', '</span>' ], 'hit': [ '<span class="hit">', '</span>' ], 'del': [ '<del>', '</del>' ], 'summary': [ '<span class="reuslt">', '</span>' ] }); +}); +$__jsx_lazy_init(Style, "ignore", function () { + return ({ 'tilte': [ '', '' ], 'url': [ '', '' ], 'hit': [ '', '' ], 'del': [ '', '' ], 'summary': [ '', '' ] }); +}); +Binary._base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +$__jsx_lazy_init(Binary, "_base64DecodeChars", function () { + return [ -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, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 ]; +}); +js.global = (function () { return this; })(); +$__jsx_lazy_init(_Common, "buffers", function () { + return [ "comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script" ]; +}); +$__jsx_lazy_init(_Common, "EVENTS", function () { + return [ "text", "processinginstruction", "sgmldeclaration", "doctype", "comment", "attribute", "opentag", "closetag", "opencdata", "cdata", "clo_State.CDATA", "error", "end", "ready", "script", "opennamespace", "closenamespace" ]; +}); +_Common.MAX_BUFFER_LENGTH = 65536; +_State.BEGIN = 1; +_State.TEXT = 2; +_State.TEXT_ENTITY = 3; +_State.OPEN_WAKA = 4; +_State.SGML_DECL = 5; +_State.SGML_DECL_QUOTED = 6; +_State.DOCTYPE = 7; +_State.DOCTYPE_QUOTED = 8; +_State.DOCTYPE_DTD = 9; +_State.DOCTYPE_DTD_QUOTED = 10; +_State.COMMENT_STARTING = 11; +_State.COMMENT = 12; +_State.COMMENT_ENDING = 13; +_State.COMMENT_ENDED = 14; +_State.CDATA = 15; +_State.CDATA_ENDING = 16; +_State.CDATA_ENDING_2 = 17; +_State.PROC_INST = 18; +_State.PROC_INST_BODY = 19; +_State.PROC_INST_ENDING = 20; +_State.OPEN_TAG = 21; +_State.OPEN_TAG_SLASH = 22; +_State.ATTRIB = 23; +_State.ATTRIB_NAME = 24; +_State.ATTRIB_NAME_SAW_WHITE = 25; +_State.ATTRIB_VALUE = 26; +_State.ATTRIB_VALUE_QUOTED = 27; +_State.ATTRIB_VALUE_UNQUOTED = 28; +_State.ATTRIB_VALUE_ENTITY_Q = 29; +_State.ATTRIB_VALUE_ENTITY_U = 30; +_State.CLOSE_TAG = 31; +_State.CLOSE_TAG_SAW_WHITE = 32; +_State.SCRIPT = 33; +_State.SCRIPT_ENDING = 34; +$__jsx_lazy_init(_Entities, "_entities", function () { + return ({ "amp": "&", "gt": ">", "lt": "<", "quot": "\"", "apos": "'", "AElig": 198, "Aacute": 193, "Acirc": 194, "Agrave": 192, "Aring": 197, "Atilde": 195, "Auml": 196, "Ccedil": 199, "ETH": 208, "Eacute": 201, "Ecirc": 202, "Egrave": 200, "Euml": 203, "Iacute": 205, "Icirc": 206, "Igrave": 204, "Iuml": 207, "Ntilde": 209, "Oacute": 211, "Ocirc": 212, "Ograve": 210, "Oslash": 216, "Otilde": 213, "Ouml": 214, "THORN": 222, "Uacute": 218, "Ucirc": 219, "Ugrave": 217, "Uuml": 220, "Yacute": 221, "aacute": 225, "acirc": 226, "aelig": 230, "agrave": 224, "aring": 229, "atilde": 227, "auml": 228, "ccedil": 231, "eacute": 233, "ecirc": 234, "egrave": 232, "eth": 240, "euml": 235, "iacute": 237, "icirc": 238, "igrave": 236, "iuml": 239, "ntilde": 241, "oacute": 243, "ocirc": 244, "ograve": 242, "oslash": 248, "otilde": 245, "ouml": 246, "szlig": 223, "thorn": 254, "uacute": 250, "ucirc": 251, "ugrave": 249, "uuml": 252, "yacute": 253, "yuml": 255, "copy": 169, "reg": 174, "nbsp": 160, "iexcl": 161, "cent": 162, "pound": 163, "curren": 164, "yen": 165, "brvbar": 166, "sect": 167, "uml": 168, "ordf": 170, "laquo": 171, "not": 172, "shy": 173, "macr": 175, "deg": 176, "plusmn": 177, "sup1": 185, "sup2": 178, "sup3": 179, "acute": 180, "micro": 181, "para": 182, "middot": 183, "cedil": 184, "ordm": 186, "raquo": 187, "frac14": 188, "frac12": 189, "frac34": 190, "iquest": 191, "times": 215, "divide": 247, "OElig": 338, "oelig": 339, "Scaron": 352, "scaron": 353, "Yuml": 376, "fnof": 402, "circ": 710, "tilde": 732, "Alpha": 913, "Beta": 914, "Gamma": 915, "Delta": 916, "Epsilon": 917, "Zeta": 918, "Eta": 919, "Theta": 920, "Iota": 921, "Kappa": 922, "Lambda": 923, "Mu": 924, "Nu": 925, "Xi": 926, "Omicron": 927, "Pi": 928, "Rho": 929, "Sigma": 931, "Tau": 932, "Upsilon": 933, "Phi": 934, "Chi": 935, "Psi": 936, "Omega": 937, "alpha": 945, "beta": 946, "gamma": 947, "delta": 948, "epsilon": 949, "zeta": 950, "eta": 951, "theta": 952, "iota": 953, "kappa": 954, "lambda": 955, "mu": 956, "nu": 957, "xi": 958, "omicron": 959, "pi": 960, "rho": 961, "sigmaf": 962, "sigma": 963, "tau": 964, "upsilon": 965, "phi": 966, "chi": 967, "psi": 968, "omega": 969, "thetasym": 977, "upsih": 978, "piv": 982, "ensp": 8194, "emsp": 8195, "thinsp": 8201, "zwnj": 8204, "zwj": 8205, "lrm": 8206, "rlm": 8207, "ndash": 8211, "mdash": 8212, "lsquo": 8216, "rsquo": 8217, "sbquo": 8218, "ldquo": 8220, "rdquo": 8221, "bdquo": 8222, "dagger": 8224, "Dagger": 8225, "bull": 8226, "hellip": 8230, "permil": 8240, "prime": 8242, "Prime": 8243, "lsaquo": 8249, "rsaquo": 8250, "oline": 8254, "frasl": 8260, "euro": 8364, "image": 8465, "weierp": 8472, "real": 8476, "trade": 8482, "alefsym": 8501, "larr": 8592, "uarr": 8593, "rarr": 8594, "darr": 8595, "harr": 8596, "crarr": 8629, "lArr": 8656, "uArr": 8657, "rArr": 8658, "dArr": 8659, "hArr": 8660, "forall": 8704, "part": 8706, "exist": 8707, "empty": 8709, "nabla": 8711, "isin": 8712, "notin": 8713, "ni": 8715, "prod": 8719, "sum": 8721, "minus": 8722, "lowast": 8727, "radic": 8730, "prop": 8733, "infin": 8734, "ang": 8736, "and": 8743, "or": 8744, "cap": 8745, "cup": 8746, "int": 8747, "there4": 8756, "sim": 8764, "cong": 8773, "asymp": 8776, "ne": 8800, "equiv": 8801, "le": 8804, "ge": 8805, "sub": 8834, "sup": 8835, "nsub": 8836, "sube": 8838, "supe": 8839, "oplus": 8853, "otimes": 8855, "perp": 8869, "sdot": 8901, "lceil": 8968, "rceil": 8969, "lfloor": 8970, "rfloor": 8971, "lang": 9001, "rang": 9002, "loz": 9674, "spades": 9824, "clubs": 9827, "hearts": 9829, "diams": 9830 }); +}); +TurkishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(TurkishStemmer, "methodObject", function () { + return new TurkishStemmer$(); +}); +$__jsx_lazy_init(TurkishStemmer, "a_0", function () { + return [ new Among$SII("m", -1, -1), new Among$SII("n", -1, -1), new Among$SII("miz", -1, -1), new Among$SII("niz", -1, -1), new Among$SII("muz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("m\u00FCz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("m\u0131z", -1, -1), new Among$SII("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_1", function () { + return [ new Among$SII("leri", -1, -1), new Among$SII("lar\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_2", function () { + return [ new Among$SII("ni", -1, -1), new Among$SII("nu", -1, -1), new Among$SII("n\u00FC", -1, -1), new Among$SII("n\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_3", function () { + return [ new Among$SII("in", -1, -1), new Among$SII("un", -1, -1), new Among$SII("\u00FCn", -1, -1), new Among$SII("\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_4", function () { + return [ new Among$SII("a", -1, -1), new Among$SII("e", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_5", function () { + return [ new Among$SII("na", -1, -1), new Among$SII("ne", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_6", function () { + return [ new Among$SII("da", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("de", -1, -1), new Among$SII("te", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_7", function () { + return [ new Among$SII("nda", -1, -1), new Among$SII("nde", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_8", function () { + return [ new Among$SII("dan", -1, -1), new Among$SII("tan", -1, -1), new Among$SII("den", -1, -1), new Among$SII("ten", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_9", function () { + return [ new Among$SII("ndan", -1, -1), new Among$SII("nden", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_10", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("le", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_11", function () { + return [ new Among$SII("ca", -1, -1), new Among$SII("ce", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_12", function () { + return [ new Among$SII("im", -1, -1), new Among$SII("um", -1, -1), new Among$SII("\u00FCm", -1, -1), new Among$SII("\u0131m", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_13", function () { + return [ new Among$SII("sin", -1, -1), new Among$SII("sun", -1, -1), new Among$SII("s\u00FCn", -1, -1), new Among$SII("s\u0131n", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_14", function () { + return [ new Among$SII("iz", -1, -1), new Among$SII("uz", -1, -1), new Among$SII("\u00FCz", -1, -1), new Among$SII("\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_15", function () { + return [ new Among$SII("siniz", -1, -1), new Among$SII("sunuz", -1, -1), new Among$SII("s\u00FCn\u00FCz", -1, -1), new Among$SII("s\u0131n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_16", function () { + return [ new Among$SII("lar", -1, -1), new Among$SII("ler", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_17", function () { + return [ new Among$SII("niz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("n\u0131z", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_18", function () { + return [ new Among$SII("dir", -1, -1), new Among$SII("tir", -1, -1), new Among$SII("dur", -1, -1), new Among$SII("tur", -1, -1), new Among$SII("d\u00FCr", -1, -1), new Among$SII("t\u00FCr", -1, -1), new Among$SII("d\u0131r", -1, -1), new Among$SII("t\u0131r", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_19", function () { + return [ new Among$SII("cas\u0131na", -1, -1), new Among$SII("cesine", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_20", function () { + return [ new Among$SII("di", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("dik", -1, -1), new Among$SII("tik", -1, -1), new Among$SII("duk", -1, -1), new Among$SII("tuk", -1, -1), new Among$SII("d\u00FCk", -1, -1), new Among$SII("t\u00FCk", -1, -1), new Among$SII("d\u0131k", -1, -1), new Among$SII("t\u0131k", -1, -1), new Among$SII("dim", -1, -1), new Among$SII("tim", -1, -1), new Among$SII("dum", -1, -1), new Among$SII("tum", -1, -1), new Among$SII("d\u00FCm", -1, -1), new Among$SII("t\u00FCm", -1, -1), new Among$SII("d\u0131m", -1, -1), new Among$SII("t\u0131m", -1, -1), new Among$SII("din", -1, -1), new Among$SII("tin", -1, -1), new Among$SII("dun", -1, -1), new Among$SII("tun", -1, -1), new Among$SII("d\u00FCn", -1, -1), new Among$SII("t\u00FCn", -1, -1), new Among$SII("d\u0131n", -1, -1), new Among$SII("t\u0131n", -1, -1), new Among$SII("du", -1, -1), new Among$SII("tu", -1, -1), new Among$SII("d\u00FC", -1, -1), new Among$SII("t\u00FC", -1, -1), new Among$SII("d\u0131", -1, -1), new Among$SII("t\u0131", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_21", function () { + return [ new Among$SII("sa", -1, -1), new Among$SII("se", -1, -1), new Among$SII("sak", -1, -1), new Among$SII("sek", -1, -1), new Among$SII("sam", -1, -1), new Among$SII("sem", -1, -1), new Among$SII("san", -1, -1), new Among$SII("sen", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_22", function () { + return [ new Among$SII("mi\u015F", -1, -1), new Among$SII("mu\u015F", -1, -1), new Among$SII("m\u00FC\u015F", -1, -1), new Among$SII("m\u0131\u015F", -1, -1) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "a_23", function () { + return [ new Among$SII("b", -1, 1), new Among$SII("c", -1, 2), new Among$SII("d", -1, 3), new Among$SII("\u011F", -1, 4) ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_U", function () { + return [ 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel1", function () { + return [ 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel2", function () { + return [ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel3", function () { + return [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel4", function () { + return [ 17 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel5", function () { + return [ 65 ]; +}); +$__jsx_lazy_init(TurkishStemmer, "g_vowel6", function () { + return [ 65 ]; +}); +SwedishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SwedishStemmer, "methodObject", function () { + return new SwedishStemmer$(); +}); +$__jsx_lazy_init(SwedishStemmer, "a_0", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("arna", 0, 1), new Among$SII("erna", 0, 1), new Among$SII("heterna", 2, 1), new Among$SII("orna", 0, 1), new Among$SII("ad", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ade", 6, 1), new Among$SII("ande", 6, 1), new Among$SII("arne", 6, 1), new Among$SII("are", 6, 1), new Among$SII("aste", 6, 1), new Among$SII("en", -1, 1), new Among$SII("anden", 12, 1), new Among$SII("aren", 12, 1), new Among$SII("heten", 12, 1), new Among$SII("ern", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 18, 1), new Among$SII("or", -1, 1), new Among$SII("s", -1, 2), new Among$SII("as", 21, 1), new Among$SII("arnas", 22, 1), new Among$SII("ernas", 22, 1), new Among$SII("ornas", 22, 1), new Among$SII("es", 21, 1), new Among$SII("ades", 26, 1), new Among$SII("andes", 26, 1), new Among$SII("ens", 21, 1), new Among$SII("arens", 29, 1), new Among$SII("hetens", 29, 1), new Among$SII("erns", 21, 1), new Among$SII("at", -1, 1), new Among$SII("andet", -1, 1), new Among$SII("het", -1, 1), new Among$SII("ast", -1, 1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_1", function () { + return [ new Among$SII("dd", -1, -1), new Among$SII("gd", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1), new Among$SII("tt", -1, -1) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "a_2", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("els", -1, 1), new Among$SII("fullt", -1, 3), new Among$SII("l\u00F6st", -1, 2) ]; +}); +$__jsx_lazy_init(SwedishStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 ]; +}); +$__jsx_lazy_init(SwedishStemmer, "g_s_ending", function () { + return [ 119, 127, 149 ]; +}); +SpanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(SpanishStemmer, "methodObject", function () { + return new SpanishStemmer$(); +}); +$__jsx_lazy_init(SpanishStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_1", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("sela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("me", -1, -1), new Among$SII("se", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("selo", 5, -1), new Among$SII("las", -1, -1), new Among$SII("selas", 7, -1), new Among$SII("les", -1, -1), new Among$SII("los", -1, -1), new Among$SII("selos", 10, -1), new Among$SII("nos", -1, -1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_2", function () { + return [ new Among$SII("ando", -1, 6), new Among$SII("iendo", -1, 6), new Among$SII("yendo", -1, 7), new Among$SII("\u00E1ndo", -1, 2), new Among$SII("i\u00E9ndo", -1, 1), new Among$SII("ar", -1, 6), new Among$SII("er", -1, 6), new Among$SII("ir", -1, 6), new Among$SII("\u00E1r", -1, 3), new Among$SII("\u00E9r", -1, 4), new Among$SII("\u00EDr", -1, 5) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_3", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_4", function () { + return [ new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_6", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("ancia", -1, 2), new Among$SII("encia", -1, 5), new Among$SII("adora", -1, 2), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("log\u00EDa", -1, 3), new Among$SII("idad", -1, 8), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 2), new Among$SII("mente", -1, 7), new Among$SII("amente", 13, 6), new Among$SII("aci\u00F3n", -1, 2), new Among$SII("uci\u00F3n", -1, 4), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amiento", -1, 1), new Among$SII("imiento", -1, 1), new Among$SII("ivo", -1, 9), new Among$SII("ador", -1, 2), new Among$SII("icas", -1, 1), new Among$SII("ancias", -1, 2), new Among$SII("encias", -1, 5), new Among$SII("adoras", -1, 2), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 9), new Among$SII("anzas", -1, 1), new Among$SII("log\u00EDas", -1, 3), new Among$SII("idades", -1, 8), new Among$SII("ables", -1, 1), new Among$SII("ibles", -1, 1), new Among$SII("aciones", -1, 2), new Among$SII("uciones", -1, 4), new Among$SII("adores", -1, 2), new Among$SII("antes", -1, 2), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amientos", -1, 1), new Among$SII("imientos", -1, 1), new Among$SII("ivos", -1, 9) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_7", function () { + return [ new Among$SII("ya", -1, 1), new Among$SII("ye", -1, 1), new Among$SII("yan", -1, 1), new Among$SII("yen", -1, 1), new Among$SII("yeron", -1, 1), new Among$SII("yendo", -1, 1), new Among$SII("yo", -1, 1), new Among$SII("yas", -1, 1), new Among$SII("yes", -1, 1), new Among$SII("yais", -1, 1), new Among$SII("yamos", -1, 1), new Among$SII("y\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_8", function () { + return [ new Among$SII("aba", -1, 2), new Among$SII("ada", -1, 2), new Among$SII("ida", -1, 2), new Among$SII("ara", -1, 2), new Among$SII("iera", -1, 2), new Among$SII("\u00EDa", -1, 2), new Among$SII("ar\u00EDa", 5, 2), new Among$SII("er\u00EDa", 5, 2), new Among$SII("ir\u00EDa", 5, 2), new Among$SII("ad", -1, 2), new Among$SII("ed", -1, 2), new Among$SII("id", -1, 2), new Among$SII("ase", -1, 2), new Among$SII("iese", -1, 2), new Among$SII("aste", -1, 2), new Among$SII("iste", -1, 2), new Among$SII("an", -1, 2), new Among$SII("aban", 16, 2), new Among$SII("aran", 16, 2), new Among$SII("ieran", 16, 2), new Among$SII("\u00EDan", 16, 2), new Among$SII("ar\u00EDan", 20, 2), new Among$SII("er\u00EDan", 20, 2), new Among$SII("ir\u00EDan", 20, 2), new Among$SII("en", -1, 1), new Among$SII("asen", 24, 2), new Among$SII("iesen", 24, 2), new Among$SII("aron", -1, 2), new Among$SII("ieron", -1, 2), new Among$SII("ar\u00E1n", -1, 2), new Among$SII("er\u00E1n", -1, 2), new Among$SII("ir\u00E1n", -1, 2), new Among$SII("ado", -1, 2), new Among$SII("ido", -1, 2), new Among$SII("ando", -1, 2), new Among$SII("iendo", -1, 2), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2), new Among$SII("as", -1, 2), new Among$SII("abas", 39, 2), new Among$SII("adas", 39, 2), new Among$SII("idas", 39, 2), new Among$SII("aras", 39, 2), new Among$SII("ieras", 39, 2), new Among$SII("\u00EDas", 39, 2), new Among$SII("ar\u00EDas", 45, 2), new Among$SII("er\u00EDas", 45, 2), new Among$SII("ir\u00EDas", 45, 2), new Among$SII("es", -1, 1), new Among$SII("ases", 49, 2), new Among$SII("ieses", 49, 2), new Among$SII("abais", -1, 2), new Among$SII("arais", -1, 2), new Among$SII("ierais", -1, 2), new Among$SII("\u00EDais", -1, 2), new Among$SII("ar\u00EDais", 55, 2), new Among$SII("er\u00EDais", 55, 2), new Among$SII("ir\u00EDais", 55, 2), new Among$SII("aseis", -1, 2), new Among$SII("ieseis", -1, 2), new Among$SII("asteis", -1, 2), new Among$SII("isteis", -1, 2), new Among$SII("\u00E1is", -1, 2), new Among$SII("\u00E9is", -1, 1), new Among$SII("ar\u00E9is", 64, 2), new Among$SII("er\u00E9is", 64, 2), new Among$SII("ir\u00E9is", 64, 2), new Among$SII("ados", -1, 2), new Among$SII("idos", -1, 2), new Among$SII("amos", -1, 2), new Among$SII("\u00E1bamos", 70, 2), new Among$SII("\u00E1ramos", 70, 2), new Among$SII("i\u00E9ramos", 70, 2), new Among$SII("\u00EDamos", 70, 2), new Among$SII("ar\u00EDamos", 74, 2), new Among$SII("er\u00EDamos", 74, 2), new Among$SII("ir\u00EDamos", 74, 2), new Among$SII("emos", -1, 1), new Among$SII("aremos", 78, 2), new Among$SII("eremos", 78, 2), new Among$SII("iremos", 78, 2), new Among$SII("\u00E1semos", 78, 2), new Among$SII("i\u00E9semos", 78, 2), new Among$SII("imos", -1, 2), new Among$SII("ar\u00E1s", -1, 2), new Among$SII("er\u00E1s", -1, 2), new Among$SII("ir\u00E1s", -1, 2), new Among$SII("\u00EDs", -1, 2), new Among$SII("ar\u00E1", -1, 2), new Among$SII("er\u00E1", -1, 2), new Among$SII("ir\u00E1", -1, 2), new Among$SII("ar\u00E9", -1, 2), new Among$SII("er\u00E9", -1, 2), new Among$SII("ir\u00E9", -1, 2), new Among$SII("i\u00F3", -1, 2) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "a_9", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 2), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(SpanishStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 ]; +}); +RussianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RussianStemmer, "methodObject", function () { + return new RussianStemmer$(); +}); +$__jsx_lazy_init(RussianStemmer, "a_0", function () { + return [ new Among$SII("\u0432", -1, 1), new Among$SII("\u0438\u0432", 0, 2), new Among$SII("\u044B\u0432", 0, 2), new Among$SII("\u0432\u0448\u0438", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438", 3, 2), new Among$SII("\u044B\u0432\u0448\u0438", 3, 2), new Among$SII("\u0432\u0448\u0438\u0441\u044C", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), new Among$SII("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_1", function () { + return [ new Among$SII("\u0435\u0435", -1, 1), new Among$SII("\u0438\u0435", -1, 1), new Among$SII("\u043E\u0435", -1, 1), new Among$SII("\u044B\u0435", -1, 1), new Among$SII("\u0438\u043C\u0438", -1, 1), new Among$SII("\u044B\u043C\u0438", -1, 1), new Among$SII("\u0435\u0439", -1, 1), new Among$SII("\u0438\u0439", -1, 1), new Among$SII("\u043E\u0439", -1, 1), new Among$SII("\u044B\u0439", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044B\u043C", -1, 1), new Among$SII("\u0435\u0433\u043E", -1, 1), new Among$SII("\u043E\u0433\u043E", -1, 1), new Among$SII("\u0435\u043C\u0443", -1, 1), new Among$SII("\u043E\u043C\u0443", -1, 1), new Among$SII("\u0438\u0445", -1, 1), new Among$SII("\u044B\u0445", -1, 1), new Among$SII("\u0435\u044E", -1, 1), new Among$SII("\u043E\u044E", -1, 1), new Among$SII("\u0443\u044E", -1, 1), new Among$SII("\u044E\u044E", -1, 1), new Among$SII("\u0430\u044F", -1, 1), new Among$SII("\u044F\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_2", function () { + return [ new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u043D\u043D", -1, 1), new Among$SII("\u0432\u0448", -1, 1), new Among$SII("\u0438\u0432\u0448", 2, 2), new Among$SII("\u044B\u0432\u0448", 2, 2), new Among$SII("\u0449", -1, 1), new Among$SII("\u044E\u0449", 5, 1), new Among$SII("\u0443\u044E\u0449", 6, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_3", function () { + return [ new Among$SII("\u0441\u044C", -1, 1), new Among$SII("\u0441\u044F", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_4", function () { + return [ new Among$SII("\u043B\u0430", -1, 1), new Among$SII("\u0438\u043B\u0430", 0, 2), new Among$SII("\u044B\u043B\u0430", 0, 2), new Among$SII("\u043D\u0430", -1, 1), new Among$SII("\u0435\u043D\u0430", 3, 2), new Among$SII("\u0435\u0442\u0435", -1, 1), new Among$SII("\u0438\u0442\u0435", -1, 2), new Among$SII("\u0439\u0442\u0435", -1, 1), new Among$SII("\u0435\u0439\u0442\u0435", 7, 2), new Among$SII("\u0443\u0439\u0442\u0435", 7, 2), new Among$SII("\u043B\u0438", -1, 1), new Among$SII("\u0438\u043B\u0438", 10, 2), new Among$SII("\u044B\u043B\u0438", 10, 2), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 13, 2), new Among$SII("\u0443\u0439", 13, 2), new Among$SII("\u043B", -1, 1), new Among$SII("\u0438\u043B", 16, 2), new Among$SII("\u044B\u043B", 16, 2), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 2), new Among$SII("\u044B\u043C", -1, 2), new Among$SII("\u043D", -1, 1), new Among$SII("\u0435\u043D", 22, 2), new Among$SII("\u043B\u043E", -1, 1), new Among$SII("\u0438\u043B\u043E", 24, 2), new Among$SII("\u044B\u043B\u043E", 24, 2), new Among$SII("\u043D\u043E", -1, 1), new Among$SII("\u0435\u043D\u043E", 27, 2), new Among$SII("\u043D\u043D\u043E", 27, 1), new Among$SII("\u0435\u0442", -1, 1), new Among$SII("\u0443\u0435\u0442", 30, 2), new Among$SII("\u0438\u0442", -1, 2), new Among$SII("\u044B\u0442", -1, 2), new Among$SII("\u044E\u0442", -1, 1), new Among$SII("\u0443\u044E\u0442", 34, 2), new Among$SII("\u044F\u0442", -1, 2), new Among$SII("\u043D\u044B", -1, 1), new Among$SII("\u0435\u043D\u044B", 37, 2), new Among$SII("\u0442\u044C", -1, 1), new Among$SII("\u0438\u0442\u044C", 39, 2), new Among$SII("\u044B\u0442\u044C", 39, 2), new Among$SII("\u0435\u0448\u044C", -1, 1), new Among$SII("\u0438\u0448\u044C", -1, 2), new Among$SII("\u044E", -1, 2), new Among$SII("\u0443\u044E", 44, 2) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_5", function () { + return [ new Among$SII("\u0430", -1, 1), new Among$SII("\u0435\u0432", -1, 1), new Among$SII("\u043E\u0432", -1, 1), new Among$SII("\u0435", -1, 1), new Among$SII("\u0438\u0435", 3, 1), new Among$SII("\u044C\u0435", 3, 1), new Among$SII("\u0438", -1, 1), new Among$SII("\u0435\u0438", 6, 1), new Among$SII("\u0438\u0438", 6, 1), new Among$SII("\u0430\u043C\u0438", 6, 1), new Among$SII("\u044F\u043C\u0438", 6, 1), new Among$SII("\u0438\u044F\u043C\u0438", 10, 1), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 12, 1), new Among$SII("\u0438\u0435\u0439", 13, 1), new Among$SII("\u0438\u0439", 12, 1), new Among$SII("\u043E\u0439", 12, 1), new Among$SII("\u0430\u043C", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u0435\u043C", 18, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044F\u043C", -1, 1), new Among$SII("\u0438\u044F\u043C", 21, 1), new Among$SII("\u043E", -1, 1), new Among$SII("\u0443", -1, 1), new Among$SII("\u0430\u0445", -1, 1), new Among$SII("\u044F\u0445", -1, 1), new Among$SII("\u0438\u044F\u0445", 26, 1), new Among$SII("\u044B", -1, 1), new Among$SII("\u044C", -1, 1), new Among$SII("\u044E", -1, 1), new Among$SII("\u0438\u044E", 30, 1), new Among$SII("\u044C\u044E", 30, 1), new Among$SII("\u044F", -1, 1), new Among$SII("\u0438\u044F", 33, 1), new Among$SII("\u044C\u044F", 33, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_6", function () { + return [ new Among$SII("\u043E\u0441\u0442", -1, 1), new Among$SII("\u043E\u0441\u0442\u044C", -1, 1) ]; +}); +$__jsx_lazy_init(RussianStemmer, "a_7", function () { + return [ new Among$SII("\u0435\u0439\u0448\u0435", -1, 1), new Among$SII("\u043D", -1, 2), new Among$SII("\u0435\u0439\u0448", -1, 1), new Among$SII("\u044C", -1, 3) ]; +}); +$__jsx_lazy_init(RussianStemmer, "g_v", function () { + return [ 33, 65, 8, 232 ]; +}); +RomanianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(RomanianStemmer, "methodObject", function () { + return new RomanianStemmer$(); +}); +$__jsx_lazy_init(RomanianStemmer, "a_0", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_1", function () { + return [ new Among$SII("ea", -1, 3), new Among$SII("a\u0163ia", -1, 7), new Among$SII("aua", -1, 2), new Among$SII("iua", -1, 4), new Among$SII("a\u0163ie", -1, 7), new Among$SII("ele", -1, 3), new Among$SII("ile", -1, 5), new Among$SII("iile", 6, 4), new Among$SII("iei", -1, 4), new Among$SII("atei", -1, 6), new Among$SII("ii", -1, 4), new Among$SII("ului", -1, 1), new Among$SII("ul", -1, 1), new Among$SII("elor", -1, 3), new Among$SII("ilor", -1, 4), new Among$SII("iilor", 14, 4) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_2", function () { + return [ new Among$SII("icala", -1, 4), new Among$SII("iciva", -1, 4), new Among$SII("ativa", -1, 5), new Among$SII("itiva", -1, 6), new Among$SII("icale", -1, 4), new Among$SII("a\u0163iune", -1, 5), new Among$SII("i\u0163iune", -1, 6), new Among$SII("atoare", -1, 5), new Among$SII("itoare", -1, 6), new Among$SII("\u0103toare", -1, 5), new Among$SII("icitate", -1, 4), new Among$SII("abilitate", -1, 1), new Among$SII("ibilitate", -1, 2), new Among$SII("ivitate", -1, 3), new Among$SII("icive", -1, 4), new Among$SII("ative", -1, 5), new Among$SII("itive", -1, 6), new Among$SII("icali", -1, 4), new Among$SII("atori", -1, 5), new Among$SII("icatori", 18, 4), new Among$SII("itori", -1, 6), new Among$SII("\u0103tori", -1, 5), new Among$SII("icitati", -1, 4), new Among$SII("abilitati", -1, 1), new Among$SII("ivitati", -1, 3), new Among$SII("icivi", -1, 4), new Among$SII("ativi", -1, 5), new Among$SII("itivi", -1, 6), new Among$SII("icit\u0103i", -1, 4), new Among$SII("abilit\u0103i", -1, 1), new Among$SII("ivit\u0103i", -1, 3), new Among$SII("icit\u0103\u0163i", -1, 4), new Among$SII("abilit\u0103\u0163i", -1, 1), new Among$SII("ivit\u0103\u0163i", -1, 3), new Among$SII("ical", -1, 4), new Among$SII("ator", -1, 5), new Among$SII("icator", 35, 4), new Among$SII("itor", -1, 6), new Among$SII("\u0103tor", -1, 5), new Among$SII("iciv", -1, 4), new Among$SII("ativ", -1, 5), new Among$SII("itiv", -1, 6), new Among$SII("ical\u0103", -1, 4), new Among$SII("iciv\u0103", -1, 4), new Among$SII("ativ\u0103", -1, 5), new Among$SII("itiv\u0103", -1, 6) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_3", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("abila", -1, 1), new Among$SII("ibila", -1, 1), new Among$SII("oasa", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("anta", -1, 1), new Among$SII("ista", -1, 3), new Among$SII("uta", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("ic", -1, 1), new Among$SII("ice", -1, 1), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("isme", -1, 3), new Among$SII("iune", -1, 2), new Among$SII("oase", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("itate", 17, 1), new Among$SII("ite", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("iste", -1, 3), new Among$SII("ute", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ici", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("iuni", -1, 2), new Among$SII("atori", -1, 1), new Among$SII("osi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("itati", 30, 1), new Among$SII("iti", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("isti", -1, 3), new Among$SII("uti", -1, 1), new Among$SII("i\u015Fti", -1, 3), new Among$SII("ivi", -1, 1), new Among$SII("it\u0103i", -1, 1), new Among$SII("o\u015Fi", -1, 1), new Among$SII("it\u0103\u0163i", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("ibil", -1, 1), new Among$SII("ism", -1, 3), new Among$SII("ator", -1, 1), new Among$SII("os", -1, 1), new Among$SII("at", -1, 1), new Among$SII("it", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ist", -1, 3), new Among$SII("ut", -1, 1), new Among$SII("iv", -1, 1), new Among$SII("ic\u0103", -1, 1), new Among$SII("abil\u0103", -1, 1), new Among$SII("ibil\u0103", -1, 1), new Among$SII("oas\u0103", -1, 1), new Among$SII("at\u0103", -1, 1), new Among$SII("it\u0103", -1, 1), new Among$SII("ant\u0103", -1, 1), new Among$SII("ist\u0103", -1, 3), new Among$SII("ut\u0103", -1, 1), new Among$SII("iv\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_4", function () { + return [ new Among$SII("ea", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("esc", -1, 1), new Among$SII("\u0103sc", -1, 1), new Among$SII("ind", -1, 1), new Among$SII("\u00E2nd", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("\u00E2re", -1, 1), new Among$SII("se", -1, 2), new Among$SII("ase", 10, 1), new Among$SII("sese", 10, 2), new Among$SII("ise", 10, 1), new Among$SII("use", 10, 1), new Among$SII("\u00E2se", 10, 1), new Among$SII("e\u015Fte", -1, 1), new Among$SII("\u0103\u015Fte", -1, 1), new Among$SII("eze", -1, 1), new Among$SII("ai", -1, 1), new Among$SII("eai", 19, 1), new Among$SII("iai", 19, 1), new Among$SII("sei", -1, 2), new Among$SII("e\u015Fti", -1, 1), new Among$SII("\u0103\u015Fti", -1, 1), new Among$SII("ui", -1, 1), new Among$SII("ezi", -1, 1), new Among$SII("\u00E2i", -1, 1), new Among$SII("a\u015Fi", -1, 1), new Among$SII("se\u015Fi", -1, 2), new Among$SII("ase\u015Fi", 29, 1), new Among$SII("sese\u015Fi", 29, 2), new Among$SII("ise\u015Fi", 29, 1), new Among$SII("use\u015Fi", 29, 1), new Among$SII("\u00E2se\u015Fi", 29, 1), new Among$SII("i\u015Fi", -1, 1), new Among$SII("u\u015Fi", -1, 1), new Among$SII("\u00E2\u015Fi", -1, 1), new Among$SII("a\u0163i", -1, 2), new Among$SII("ea\u0163i", 38, 1), new Among$SII("ia\u0163i", 38, 1), new Among$SII("e\u0163i", -1, 2), new Among$SII("i\u0163i", -1, 2), new Among$SII("\u00E2\u0163i", -1, 2), new Among$SII("ar\u0103\u0163i", -1, 1), new Among$SII("ser\u0103\u0163i", -1, 2), new Among$SII("aser\u0103\u0163i", 45, 1), new Among$SII("seser\u0103\u0163i", 45, 2), new Among$SII("iser\u0103\u0163i", 45, 1), new Among$SII("user\u0103\u0163i", 45, 1), new Among$SII("\u00E2ser\u0103\u0163i", 45, 1), new Among$SII("ir\u0103\u0163i", -1, 1), new Among$SII("ur\u0103\u0163i", -1, 1), new Among$SII("\u00E2r\u0103\u0163i", -1, 1), new Among$SII("am", -1, 1), new Among$SII("eam", 54, 1), new Among$SII("iam", 54, 1), new Among$SII("em", -1, 2), new Among$SII("asem", 57, 1), new Among$SII("sesem", 57, 2), new Among$SII("isem", 57, 1), new Among$SII("usem", 57, 1), new Among$SII("\u00E2sem", 57, 1), new Among$SII("im", -1, 2), new Among$SII("\u00E2m", -1, 2), new Among$SII("\u0103m", -1, 2), new Among$SII("ar\u0103m", 65, 1), new Among$SII("ser\u0103m", 65, 2), new Among$SII("aser\u0103m", 67, 1), new Among$SII("seser\u0103m", 67, 2), new Among$SII("iser\u0103m", 67, 1), new Among$SII("user\u0103m", 67, 1), new Among$SII("\u00E2ser\u0103m", 67, 1), new Among$SII("ir\u0103m", 65, 1), new Among$SII("ur\u0103m", 65, 1), new Among$SII("\u00E2r\u0103m", 65, 1), new Among$SII("au", -1, 1), new Among$SII("eau", 76, 1), new Among$SII("iau", 76, 1), new Among$SII("indu", -1, 1), new Among$SII("\u00E2ndu", -1, 1), new Among$SII("ez", -1, 1), new Among$SII("easc\u0103", -1, 1), new Among$SII("ar\u0103", -1, 1), new Among$SII("ser\u0103", -1, 2), new Among$SII("aser\u0103", 84, 1), new Among$SII("seser\u0103", 84, 2), new Among$SII("iser\u0103", 84, 1), new Among$SII("user\u0103", 84, 1), new Among$SII("\u00E2ser\u0103", 84, 1), new Among$SII("ir\u0103", -1, 1), new Among$SII("ur\u0103", -1, 1), new Among$SII("\u00E2r\u0103", -1, 1), new Among$SII("eaz\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "a_5", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ie", 1, 1), new Among$SII("i", -1, 1), new Among$SII("\u0103", -1, 1) ]; +}); +$__jsx_lazy_init(RomanianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 ]; +}); +PortugueseStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PortugueseStemmer, "methodObject", function () { + return new PortugueseStemmer$(); +}); +$__jsx_lazy_init(PortugueseStemmer, "a_0", function () { + return [ new Among$SII("", -1, 3), new Among$SII("\u00E3", 0, 1), new Among$SII("\u00F5", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("a~", 0, 1), new Among$SII("o~", 0, 2) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_2", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_3", function () { + return [ new Among$SII("ante", -1, 1), new Among$SII("avel", -1, 1), new Among$SII("\u00EDvel", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_4", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_5", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("\u00E2ncia", -1, 1), new Among$SII("\u00EAncia", -1, 4), new Among$SII("ira", -1, 9), new Among$SII("adora", -1, 1), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 8), new Among$SII("eza", -1, 1), new Among$SII("log\u00EDa", -1, 2), new Among$SII("idade", -1, 7), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 6), new Among$SII("amente", 12, 5), new Among$SII("\u00E1vel", -1, 1), new Among$SII("\u00EDvel", -1, 1), new Among$SII("uci\u00F3n", -1, 3), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 1), new Among$SII("imento", -1, 1), new Among$SII("ivo", -1, 8), new Among$SII("a\u00E7a~o", -1, 1), new Among$SII("ador", -1, 1), new Among$SII("icas", -1, 1), new Among$SII("\u00EAncias", -1, 4), new Among$SII("iras", -1, 9), new Among$SII("adoras", -1, 1), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 8), new Among$SII("ezas", -1, 1), new Among$SII("log\u00EDas", -1, 2), new Among$SII("idades", -1, 7), new Among$SII("uciones", -1, 3), new Among$SII("adores", -1, 1), new Among$SII("antes", -1, 1), new Among$SII("a\u00E7o~es", -1, 1), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amentos", -1, 1), new Among$SII("imentos", -1, 1), new Among$SII("ivos", -1, 8) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_6", function () { + return [ new Among$SII("ada", -1, 1), new Among$SII("ida", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("aria", 2, 1), new Among$SII("eria", 2, 1), new Among$SII("iria", 2, 1), new Among$SII("ara", -1, 1), new Among$SII("era", -1, 1), new Among$SII("ira", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("esse", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("aste", -1, 1), new Among$SII("este", -1, 1), new Among$SII("iste", -1, 1), new Among$SII("ei", -1, 1), new Among$SII("arei", 16, 1), new Among$SII("erei", 16, 1), new Among$SII("irei", 16, 1), new Among$SII("am", -1, 1), new Among$SII("iam", 20, 1), new Among$SII("ariam", 21, 1), new Among$SII("eriam", 21, 1), new Among$SII("iriam", 21, 1), new Among$SII("aram", 20, 1), new Among$SII("eram", 20, 1), new Among$SII("iram", 20, 1), new Among$SII("avam", 20, 1), new Among$SII("em", -1, 1), new Among$SII("arem", 29, 1), new Among$SII("erem", 29, 1), new Among$SII("irem", 29, 1), new Among$SII("assem", 29, 1), new Among$SII("essem", 29, 1), new Among$SII("issem", 29, 1), new Among$SII("ado", -1, 1), new Among$SII("ido", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("indo", -1, 1), new Among$SII("ara~o", -1, 1), new Among$SII("era~o", -1, 1), new Among$SII("ira~o", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("as", -1, 1), new Among$SII("adas", 47, 1), new Among$SII("idas", 47, 1), new Among$SII("ias", 47, 1), new Among$SII("arias", 50, 1), new Among$SII("erias", 50, 1), new Among$SII("irias", 50, 1), new Among$SII("aras", 47, 1), new Among$SII("eras", 47, 1), new Among$SII("iras", 47, 1), new Among$SII("avas", 47, 1), new Among$SII("es", -1, 1), new Among$SII("ardes", 58, 1), new Among$SII("erdes", 58, 1), new Among$SII("irdes", 58, 1), new Among$SII("ares", 58, 1), new Among$SII("eres", 58, 1), new Among$SII("ires", 58, 1), new Among$SII("asses", 58, 1), new Among$SII("esses", 58, 1), new Among$SII("isses", 58, 1), new Among$SII("astes", 58, 1), new Among$SII("estes", 58, 1), new Among$SII("istes", 58, 1), new Among$SII("is", -1, 1), new Among$SII("ais", 71, 1), new Among$SII("eis", 71, 1), new Among$SII("areis", 73, 1), new Among$SII("ereis", 73, 1), new Among$SII("ireis", 73, 1), new Among$SII("\u00E1reis", 73, 1), new Among$SII("\u00E9reis", 73, 1), new Among$SII("\u00EDreis", 73, 1), new Among$SII("\u00E1sseis", 73, 1), new Among$SII("\u00E9sseis", 73, 1), new Among$SII("\u00EDsseis", 73, 1), new Among$SII("\u00E1veis", 73, 1), new Among$SII("\u00EDeis", 73, 1), new Among$SII("ar\u00EDeis", 84, 1), new Among$SII("er\u00EDeis", 84, 1), new Among$SII("ir\u00EDeis", 84, 1), new Among$SII("ados", -1, 1), new Among$SII("idos", -1, 1), new Among$SII("amos", -1, 1), new Among$SII("\u00E1ramos", 90, 1), new Among$SII("\u00E9ramos", 90, 1), new Among$SII("\u00EDramos", 90, 1), new Among$SII("\u00E1vamos", 90, 1), new Among$SII("\u00EDamos", 90, 1), new Among$SII("ar\u00EDamos", 95, 1), new Among$SII("er\u00EDamos", 95, 1), new Among$SII("ir\u00EDamos", 95, 1), new Among$SII("emos", -1, 1), new Among$SII("aremos", 99, 1), new Among$SII("eremos", 99, 1), new Among$SII("iremos", 99, 1), new Among$SII("\u00E1ssemos", 99, 1), new Among$SII("\u00EAssemos", 99, 1), new Among$SII("\u00EDssemos", 99, 1), new Among$SII("imos", -1, 1), new Among$SII("armos", -1, 1), new Among$SII("ermos", -1, 1), new Among$SII("irmos", -1, 1), new Among$SII("\u00E1mos", -1, 1), new Among$SII("ar\u00E1s", -1, 1), new Among$SII("er\u00E1s", -1, 1), new Among$SII("ir\u00E1s", -1, 1), new Among$SII("eu", -1, 1), new Among$SII("iu", -1, 1), new Among$SII("ou", -1, 1), new Among$SII("ar\u00E1", -1, 1), new Among$SII("er\u00E1", -1, 1), new Among$SII("ir\u00E1", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_7", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("i", -1, 1), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "a_8", function () { + return [ new Among$SII("e", -1, 1), new Among$SII("\u00E7", -1, 2), new Among$SII("\u00E9", -1, 1), new Among$SII("\u00EA", -1, 1) ]; +}); +$__jsx_lazy_init(PortugueseStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 ]; +}); +PorterStemmer.serialVersionUID = 1; +$__jsx_lazy_init(PorterStemmer, "methodObject", function () { + return new PorterStemmer$(); +}); +$__jsx_lazy_init(PorterStemmer, "a_0", function () { + return [ new Among$SII("s", -1, 3), new Among$SII("ies", 0, 2), new Among$SII("sses", 0, 1), new Among$SII("ss", 0, -1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_2", function () { + return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_3", function () { + return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("abli", -1, 4), new Among$SII("eli", -1, 6), new Among$SII("alli", -1, 9), new Among$SII("ousli", -1, 12), new Among$SII("entli", -1, 5), new Among$SII("aliti", -1, 10), new Among$SII("biliti", -1, 14), new Among$SII("iviti", -1, 13), new Among$SII("tional", -1, 1), new Among$SII("ational", 10, 8), new Among$SII("alism", -1, 10), new Among$SII("ation", -1, 8), new Among$SII("ization", 13, 7), new Among$SII("izer", -1, 7), new Among$SII("ator", -1, 8), new Among$SII("iveness", -1, 13), new Among$SII("fulness", -1, 11), new Among$SII("ousness", -1, 12) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_4", function () { + return [ new Among$SII("icate", -1, 2), new Among$SII("ative", -1, 3), new Among$SII("alize", -1, 1), new Among$SII("iciti", -1, 2), new Among$SII("ical", -1, 2), new Among$SII("ful", -1, 3), new Among$SII("ness", -1, 3) ]; +}); +$__jsx_lazy_init(PorterStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1), new Among$SII("ou", -1, 1) ]; +}); +$__jsx_lazy_init(PorterStemmer, "g_v", function () { + return [ 17, 65, 16, 1 ]; +}); +$__jsx_lazy_init(PorterStemmer, "g_v_WXY", function () { + return [ 1, 17, 65, 208, 1 ]; +}); +NorwegianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(NorwegianStemmer, "methodObject", function () { + return new NorwegianStemmer$(); +}); +$__jsx_lazy_init(NorwegianStemmer, "a_0", function () { + return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ede", 1, 1), new Among$SII("ande", 1, 1), new Among$SII("ende", 1, 1), new Among$SII("ane", 1, 1), new Among$SII("ene", 1, 1), new Among$SII("hetene", 6, 1), new Among$SII("erte", 1, 3), new Among$SII("en", -1, 1), new Among$SII("heten", 9, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 12, 1), new Among$SII("s", -1, 2), new Among$SII("as", 14, 1), new Among$SII("es", 14, 1), new Among$SII("edes", 16, 1), new Among$SII("endes", 16, 1), new Among$SII("enes", 16, 1), new Among$SII("hetenes", 19, 1), new Among$SII("ens", 14, 1), new Among$SII("hetens", 21, 1), new Among$SII("ers", 14, 1), new Among$SII("ets", 14, 1), new Among$SII("et", -1, 1), new Among$SII("het", 25, 1), new Among$SII("ert", -1, 3), new Among$SII("ast", -1, 1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_1", function () { + return [ new Among$SII("dt", -1, -1), new Among$SII("vt", -1, -1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "a_2", function () { + return [ new Among$SII("leg", -1, 1), new Among$SII("eleg", 0, 1), new Among$SII("ig", -1, 1), new Among$SII("eig", 2, 1), new Among$SII("lig", 2, 1), new Among$SII("elig", 4, 1), new Among$SII("els", -1, 1), new Among$SII("lov", -1, 1), new Among$SII("elov", 7, 1), new Among$SII("slov", 7, 1), new Among$SII("hetslov", 9, 1) ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +}); +$__jsx_lazy_init(NorwegianStemmer, "g_s_ending", function () { + return [ 119, 125, 149, 1 ]; +}); +ItalianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(ItalianStemmer, "methodObject", function () { + return new ItalianStemmer$(); +}); +$__jsx_lazy_init(ItalianStemmer, "a_0", function () { + return [ new Among$SII("", -1, 7), new Among$SII("qu", 0, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_2", function () { + return [ new Among$SII("la", -1, -1), new Among$SII("cela", 0, -1), new Among$SII("gliela", 0, -1), new Among$SII("mela", 0, -1), new Among$SII("tela", 0, -1), new Among$SII("vela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("cele", 6, -1), new Among$SII("gliele", 6, -1), new Among$SII("mele", 6, -1), new Among$SII("tele", 6, -1), new Among$SII("vele", 6, -1), new Among$SII("ne", -1, -1), new Among$SII("cene", 12, -1), new Among$SII("gliene", 12, -1), new Among$SII("mene", 12, -1), new Among$SII("sene", 12, -1), new Among$SII("tene", 12, -1), new Among$SII("vene", 12, -1), new Among$SII("ci", -1, -1), new Among$SII("li", -1, -1), new Among$SII("celi", 20, -1), new Among$SII("glieli", 20, -1), new Among$SII("meli", 20, -1), new Among$SII("teli", 20, -1), new Among$SII("veli", 20, -1), new Among$SII("gli", 20, -1), new Among$SII("mi", -1, -1), new Among$SII("si", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("vi", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("celo", 31, -1), new Among$SII("glielo", 31, -1), new Among$SII("melo", 31, -1), new Among$SII("telo", 31, -1), new Among$SII("velo", 31, -1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_3", function () { + return [ new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_4", function () { + return [ new Among$SII("ic", -1, -1), new Among$SII("abil", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_5", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_6", function () { + return [ new Among$SII("ica", -1, 1), new Among$SII("logia", -1, 3), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("enza", -1, 5), new Among$SII("ice", -1, 1), new Among$SII("atrice", 7, 1), new Among$SII("iche", -1, 1), new Among$SII("logie", -1, 3), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("usione", -1, 4), new Among$SII("azione", -1, 2), new Among$SII("uzione", -1, 4), new Among$SII("atore", -1, 2), new Among$SII("ose", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 1), new Among$SII("amente", 19, 7), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 9), new Among$SII("anze", -1, 1), new Among$SII("enze", -1, 5), new Among$SII("ici", -1, 1), new Among$SII("atrici", 25, 1), new Among$SII("ichi", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("ismi", -1, 1), new Among$SII("usioni", -1, 4), new Among$SII("azioni", -1, 2), new Among$SII("uzioni", -1, 4), new Among$SII("atori", -1, 2), new Among$SII("osi", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("amenti", -1, 6), new Among$SII("imenti", -1, 6), new Among$SII("isti", -1, 1), new Among$SII("ivi", -1, 9), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 6), new Among$SII("imento", -1, 6), new Among$SII("ivo", -1, 9), new Among$SII("it\u00E0", -1, 8), new Among$SII("ist\u00E0", -1, 1), new Among$SII("ist\u00E8", -1, 1), new Among$SII("ist\u00EC", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "a_7", function () { + return [ new Among$SII("isca", -1, 1), new Among$SII("enda", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("uta", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("eva", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("erebbe", -1, 1), new Among$SII("irebbe", -1, 1), new Among$SII("isce", -1, 1), new Among$SII("ende", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("avate", 16, 1), new Among$SII("evate", 16, 1), new Among$SII("ivate", 16, 1), new Among$SII("ete", -1, 1), new Among$SII("erete", 20, 1), new Among$SII("irete", 20, 1), new Among$SII("ite", -1, 1), new Among$SII("ereste", -1, 1), new Among$SII("ireste", -1, 1), new Among$SII("ute", -1, 1), new Among$SII("erai", -1, 1), new Among$SII("irai", -1, 1), new Among$SII("isci", -1, 1), new Among$SII("endi", -1, 1), new Among$SII("erei", -1, 1), new Among$SII("irei", -1, 1), new Among$SII("assi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("eresti", -1, 1), new Among$SII("iresti", -1, 1), new Among$SII("uti", -1, 1), new Among$SII("avi", -1, 1), new Among$SII("evi", -1, 1), new Among$SII("ivi", -1, 1), new Among$SII("isco", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("Yamo", -1, 1), new Among$SII("iamo", -1, 1), new Among$SII("avamo", -1, 1), new Among$SII("evamo", -1, 1), new Among$SII("ivamo", -1, 1), new Among$SII("eremo", -1, 1), new Among$SII("iremo", -1, 1), new Among$SII("assimo", -1, 1), new Among$SII("ammo", -1, 1), new Among$SII("emmo", -1, 1), new Among$SII("eremmo", 54, 1), new Among$SII("iremmo", 54, 1), new Among$SII("immo", -1, 1), new Among$SII("ano", -1, 1), new Among$SII("iscano", 58, 1), new Among$SII("avano", 58, 1), new Among$SII("evano", 58, 1), new Among$SII("ivano", 58, 1), new Among$SII("eranno", -1, 1), new Among$SII("iranno", -1, 1), new Among$SII("ono", -1, 1), new Among$SII("iscono", 65, 1), new Among$SII("arono", 65, 1), new Among$SII("erono", 65, 1), new Among$SII("irono", 65, 1), new Among$SII("erebbero", -1, 1), new Among$SII("irebbero", -1, 1), new Among$SII("assero", -1, 1), new Among$SII("essero", -1, 1), new Among$SII("issero", -1, 1), new Among$SII("ato", -1, 1), new Among$SII("ito", -1, 1), new Among$SII("uto", -1, 1), new Among$SII("avo", -1, 1), new Among$SII("evo", -1, 1), new Among$SII("ivo", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("er\u00E0", -1, 1), new Among$SII("ir\u00E0", -1, 1), new Among$SII("er\u00F2", -1, 1), new Among$SII("ir\u00F2", -1, 1) ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_AEIO", function () { + return [ 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 ]; +}); +$__jsx_lazy_init(ItalianStemmer, "g_CG", function () { + return [ 17 ]; +}); +HungarianStemmer.serialVersionUID = 1; +$__jsx_lazy_init(HungarianStemmer, "methodObject", function () { + return new HungarianStemmer$(); +}); +$__jsx_lazy_init(HungarianStemmer, "a_0", function () { + return [ new Among$SII("cs", -1, -1), new Among$SII("dzs", -1, -1), new Among$SII("gy", -1, -1), new Among$SII("ly", -1, -1), new Among$SII("ny", -1, -1), new Among$SII("sz", -1, -1), new Among$SII("ty", -1, -1), new Among$SII("zs", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_1", function () { + return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_2", function () { + return [ new Among$SII("bb", -1, -1), new Among$SII("cc", -1, -1), new Among$SII("dd", -1, -1), new Among$SII("ff", -1, -1), new Among$SII("gg", -1, -1), new Among$SII("jj", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("ll", -1, -1), new Among$SII("mm", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("pp", -1, -1), new Among$SII("rr", -1, -1), new Among$SII("ccs", -1, -1), new Among$SII("ss", -1, -1), new Among$SII("zzs", -1, -1), new Among$SII("tt", -1, -1), new Among$SII("vv", -1, -1), new Among$SII("ggy", -1, -1), new Among$SII("lly", -1, -1), new Among$SII("nny", -1, -1), new Among$SII("tty", -1, -1), new Among$SII("ssz", -1, -1), new Among$SII("zz", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_3", function () { + return [ new Among$SII("al", -1, 1), new Among$SII("el", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_4", function () { + return [ new Among$SII("ba", -1, -1), new Among$SII("ra", -1, -1), new Among$SII("be", -1, -1), new Among$SII("re", -1, -1), new Among$SII("ig", -1, -1), new Among$SII("nak", -1, -1), new Among$SII("nek", -1, -1), new Among$SII("val", -1, -1), new Among$SII("vel", -1, -1), new Among$SII("ul", -1, -1), new Among$SII("n\u00E1l", -1, -1), new Among$SII("n\u00E9l", -1, -1), new Among$SII("b\u00F3l", -1, -1), new Among$SII("r\u00F3l", -1, -1), new Among$SII("t\u00F3l", -1, -1), new Among$SII("b\u00F5l", -1, -1), new Among$SII("r\u00F5l", -1, -1), new Among$SII("t\u00F5l", -1, -1), new Among$SII("\u00FCl", -1, -1), new Among$SII("n", -1, -1), new Among$SII("an", 19, -1), new Among$SII("ban", 20, -1), new Among$SII("en", 19, -1), new Among$SII("ben", 22, -1), new Among$SII("k\u00E9ppen", 22, -1), new Among$SII("on", 19, -1), new Among$SII("\u00F6n", 19, -1), new Among$SII("k\u00E9pp", -1, -1), new Among$SII("kor", -1, -1), new Among$SII("t", -1, -1), new Among$SII("at", 29, -1), new Among$SII("et", 29, -1), new Among$SII("k\u00E9nt", 29, -1), new Among$SII("ank\u00E9nt", 32, -1), new Among$SII("enk\u00E9nt", 32, -1), new Among$SII("onk\u00E9nt", 32, -1), new Among$SII("ot", 29, -1), new Among$SII("\u00E9rt", 29, -1), new Among$SII("\u00F6t", 29, -1), new Among$SII("hez", -1, -1), new Among$SII("hoz", -1, -1), new Among$SII("h\u00F6z", -1, -1), new Among$SII("v\u00E1", -1, -1), new Among$SII("v\u00E9", -1, -1) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_5", function () { + return [ new Among$SII("\u00E1n", -1, 2), new Among$SII("\u00E9n", -1, 1), new Among$SII("\u00E1nk\u00E9nt", -1, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_6", function () { + return [ new Among$SII("stul", -1, 2), new Among$SII("astul", 0, 1), new Among$SII("\u00E1stul", 0, 3), new Among$SII("st\u00FCl", -1, 2), new Among$SII("est\u00FCl", 3, 1), new Among$SII("\u00E9st\u00FCl", 3, 4) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_7", function () { + return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_8", function () { + return [ new Among$SII("k", -1, 7), new Among$SII("ak", 0, 4), new Among$SII("ek", 0, 6), new Among$SII("ok", 0, 5), new Among$SII("\u00E1k", 0, 1), new Among$SII("\u00E9k", 0, 2), new Among$SII("\u00F6k", 0, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_9", function () { + return [ new Among$SII("\u00E9i", -1, 7), new Among$SII("\u00E1\u00E9i", 0, 6), new Among$SII("\u00E9\u00E9i", 0, 5), new Among$SII("\u00E9", -1, 9), new Among$SII("k\u00E9", 3, 4), new Among$SII("ak\u00E9", 4, 1), new Among$SII("ek\u00E9", 4, 1), new Among$SII("ok\u00E9", 4, 1), new Among$SII("\u00E1k\u00E9", 4, 3), new Among$SII("\u00E9k\u00E9", 4, 2), new Among$SII("\u00F6k\u00E9", 4, 1), new Among$SII("\u00E9\u00E9", 3, 8) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_10", function () { + return [ new Among$SII("a", -1, 18), new Among$SII("ja", 0, 17), new Among$SII("d", -1, 16), new Among$SII("ad", 2, 13), new Among$SII("ed", 2, 13), new Among$SII("od", 2, 13), new Among$SII("\u00E1d", 2, 14), new Among$SII("\u00E9d", 2, 15), new Among$SII("\u00F6d", 2, 13), new Among$SII("e", -1, 18), new Among$SII("je", 9, 17), new Among$SII("nk", -1, 4), new Among$SII("unk", 11, 1), new Among$SII("\u00E1nk", 11, 2), new Among$SII("\u00E9nk", 11, 3), new Among$SII("\u00FCnk", 11, 1), new Among$SII("uk", -1, 8), new Among$SII("juk", 16, 7), new Among$SII("\u00E1juk", 17, 5), new Among$SII("\u00FCk", -1, 8), new Among$SII("j\u00FCk", 19, 7), new Among$SII("\u00E9j\u00FCk", 20, 6), new Among$SII("m", -1, 12), new Among$SII("am", 22, 9), new Among$SII("em", 22, 9), new Among$SII("om", 22, 9), new Among$SII("\u00E1m", 22, 10), new Among$SII("\u00E9m", 22, 11), new Among$SII("o", -1, 18), new Among$SII("\u00E1", -1, 19), new Among$SII("\u00E9", -1, 20) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "a_11", function () { + return [ new Among$SII("id", -1, 10), new Among$SII("aid", 0, 9), new Among$SII("jaid", 1, 6), new Among$SII("eid", 0, 9), new Among$SII("jeid", 3, 6), new Among$SII("\u00E1id", 0, 7), new Among$SII("\u00E9id", 0, 8), new Among$SII("i", -1, 15), new Among$SII("ai", 7, 14), new Among$SII("jai", 8, 11), new Among$SII("ei", 7, 14), new Among$SII("jei", 10, 11), new Among$SII("\u00E1i", 7, 12), new Among$SII("\u00E9i", 7, 13), new Among$SII("itek", -1, 24), new Among$SII("eitek", 14, 21), new Among$SII("jeitek", 15, 20), new Among$SII("\u00E9itek", 14, 23), new Among$SII("ik", -1, 29), new Among$SII("aik", 18, 26), new Among$SII("jaik", 19, 25), new Among$SII("eik", 18, 26), new Among$SII("jeik", 21, 25), new Among$SII("\u00E1ik", 18, 27), new Among$SII("\u00E9ik", 18, 28), new Among$SII("ink", -1, 20), new Among$SII("aink", 25, 17), new Among$SII("jaink", 26, 16), new Among$SII("eink", 25, 17), new Among$SII("jeink", 28, 16), new Among$SII("\u00E1ink", 25, 18), new Among$SII("\u00E9ink", 25, 19), new Among$SII("aitok", -1, 21), new Among$SII("jaitok", 32, 20), new Among$SII("\u00E1itok", -1, 22), new Among$SII("im", -1, 5), new Among$SII("aim", 35, 4), new Among$SII("jaim", 36, 1), new Among$SII("eim", 35, 4), new Among$SII("jeim", 38, 1), new Among$SII("\u00E1im", 35, 2), new Among$SII("\u00E9im", 35, 3) ]; +}); +$__jsx_lazy_init(HungarianStemmer, "g_v", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 ]; +}); +GermanStemmer.serialVersionUID = 1; +$__jsx_lazy_init(GermanStemmer, "methodObject", function () { + return new GermanStemmer$(); +}); +$__jsx_lazy_init(GermanStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 1), new Among$SII("\u00E4", 0, 3), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_1", function () { + return [ new Among$SII("e", -1, 2), new Among$SII("em", -1, 1), new Among$SII("en", -1, 2), new Among$SII("ern", -1, 1), new Among$SII("er", -1, 1), new Among$SII("s", -1, 3), new Among$SII("es", 5, 2) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_2", function () { + return [ new Among$SII("en", -1, 1), new Among$SII("er", -1, 1), new Among$SII("st", -1, 2), new Among$SII("est", 2, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_3", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lich", -1, 1) ]; +}); +$__jsx_lazy_init(GermanStemmer, "a_4", function () { + return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ung", -1, 1), new Among$SII("lich", -1, 3), new Among$SII("isch", -1, 2), new Among$SII("ik", -1, 2), new Among$SII("heit", -1, 3), new Among$SII("keit", -1, 4) ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_s_ending", function () { + return [ 117, 30, 5 ]; +}); +$__jsx_lazy_init(GermanStemmer, "g_st_ending", function () { + return [ 117, 30, 4 ]; +}); +FrenchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FrenchStemmer, "methodObject", function () { + return new FrenchStemmer$(); +}); +$__jsx_lazy_init(FrenchStemmer, "a_0", function () { + return [ new Among$SII("col", -1, -1), new Among$SII("par", -1, -1), new Among$SII("tap", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_1", function () { + return [ new Among$SII("", -1, 4), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_2", function () { + return [ new Among$SII("iqU", -1, 3), new Among$SII("abl", -1, 3), new Among$SII("I\u00E8r", -1, 4), new Among$SII("i\u00E8r", -1, 4), new Among$SII("eus", -1, 2), new Among$SII("iv", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_3", function () { + return [ new Among$SII("ic", -1, 2), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 3) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_4", function () { + return [ new Among$SII("iqUe", -1, 1), new Among$SII("atrice", -1, 2), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 5), new Among$SII("logie", -1, 3), new Among$SII("able", -1, 1), new Among$SII("isme", -1, 1), new Among$SII("euse", -1, 11), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 8), new Among$SII("if", -1, 8), new Among$SII("usion", -1, 4), new Among$SII("ation", -1, 2), new Among$SII("ution", -1, 4), new Among$SII("ateur", -1, 2), new Among$SII("iqUes", -1, 1), new Among$SII("atrices", -1, 2), new Among$SII("ances", -1, 1), new Among$SII("ences", -1, 5), new Among$SII("logies", -1, 3), new Among$SII("ables", -1, 1), new Among$SII("ismes", -1, 1), new Among$SII("euses", -1, 11), new Among$SII("istes", -1, 1), new Among$SII("ives", -1, 8), new Among$SII("ifs", -1, 8), new Among$SII("usions", -1, 4), new Among$SII("ations", -1, 2), new Among$SII("utions", -1, 4), new Among$SII("ateurs", -1, 2), new Among$SII("ments", -1, 15), new Among$SII("ements", 30, 6), new Among$SII("issements", 31, 12), new Among$SII("it\u00E9s", -1, 7), new Among$SII("ment", -1, 15), new Among$SII("ement", 34, 6), new Among$SII("issement", 35, 12), new Among$SII("amment", 34, 13), new Among$SII("emment", 34, 14), new Among$SII("aux", -1, 10), new Among$SII("eaux", 39, 9), new Among$SII("eux", -1, 1), new Among$SII("it\u00E9", -1, 7) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_5", function () { + return [ new Among$SII("ira", -1, 1), new Among$SII("ie", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("issante", -1, 1), new Among$SII("i", -1, 1), new Among$SII("irai", 4, 1), new Among$SII("ir", -1, 1), new Among$SII("iras", -1, 1), new Among$SII("ies", -1, 1), new Among$SII("\u00EEmes", -1, 1), new Among$SII("isses", -1, 1), new Among$SII("issantes", -1, 1), new Among$SII("\u00EEtes", -1, 1), new Among$SII("is", -1, 1), new Among$SII("irais", 13, 1), new Among$SII("issais", 13, 1), new Among$SII("irions", -1, 1), new Among$SII("issions", -1, 1), new Among$SII("irons", -1, 1), new Among$SII("issons", -1, 1), new Among$SII("issants", -1, 1), new Among$SII("it", -1, 1), new Among$SII("irait", 21, 1), new Among$SII("issait", 21, 1), new Among$SII("issant", -1, 1), new Among$SII("iraIent", -1, 1), new Among$SII("issaIent", -1, 1), new Among$SII("irent", -1, 1), new Among$SII("issent", -1, 1), new Among$SII("iront", -1, 1), new Among$SII("\u00EEt", -1, 1), new Among$SII("iriez", -1, 1), new Among$SII("issiez", -1, 1), new Among$SII("irez", -1, 1), new Among$SII("issez", -1, 1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_6", function () { + return [ new Among$SII("a", -1, 3), new Among$SII("era", 0, 2), new Among$SII("asse", -1, 3), new Among$SII("ante", -1, 3), new Among$SII("\u00E9e", -1, 2), new Among$SII("ai", -1, 3), new Among$SII("erai", 5, 2), new Among$SII("er", -1, 2), new Among$SII("as", -1, 3), new Among$SII("eras", 8, 2), new Among$SII("\u00E2mes", -1, 3), new Among$SII("asses", -1, 3), new Among$SII("antes", -1, 3), new Among$SII("\u00E2tes", -1, 3), new Among$SII("\u00E9es", -1, 2), new Among$SII("ais", -1, 3), new Among$SII("erais", 15, 2), new Among$SII("ions", -1, 1), new Among$SII("erions", 17, 2), new Among$SII("assions", 17, 3), new Among$SII("erons", -1, 2), new Among$SII("ants", -1, 3), new Among$SII("\u00E9s", -1, 2), new Among$SII("ait", -1, 3), new Among$SII("erait", 23, 2), new Among$SII("ant", -1, 3), new Among$SII("aIent", -1, 3), new Among$SII("eraIent", 26, 2), new Among$SII("\u00E8rent", -1, 2), new Among$SII("assent", -1, 3), new Among$SII("eront", -1, 2), new Among$SII("\u00E2t", -1, 3), new Among$SII("ez", -1, 2), new Among$SII("iez", 32, 2), new Among$SII("eriez", 33, 2), new Among$SII("assiez", 33, 3), new Among$SII("erez", 32, 2), new Among$SII("\u00E9", -1, 2) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_7", function () { + return [ new Among$SII("e", -1, 3), new Among$SII("I\u00E8re", 0, 2), new Among$SII("i\u00E8re", 0, 2), new Among$SII("ion", -1, 1), new Among$SII("Ier", -1, 2), new Among$SII("ier", -1, 2), new Among$SII("\u00EB", -1, 4) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "a_8", function () { + return [ new Among$SII("ell", -1, -1), new Among$SII("eill", -1, -1), new Among$SII("enn", -1, -1), new Among$SII("onn", -1, -1), new Among$SII("ett", -1, -1) ]; +}); +$__jsx_lazy_init(FrenchStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 ]; +}); +$__jsx_lazy_init(FrenchStemmer, "g_keep_with_s", function () { + return [ 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +FinnishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(FinnishStemmer, "methodObject", function () { + return new FinnishStemmer$(); +}); +$__jsx_lazy_init(FinnishStemmer, "a_0", function () { + return [ new Among$SII("pa", -1, 1), new Among$SII("sti", -1, 2), new Among$SII("kaan", -1, 1), new Among$SII("han", -1, 1), new Among$SII("kin", -1, 1), new Among$SII("h\u00E4n", -1, 1), new Among$SII("k\u00E4\u00E4n", -1, 1), new Among$SII("ko", -1, 1), new Among$SII("p\u00E4", -1, 1), new Among$SII("k\u00F6", -1, 1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_1", function () { + return [ new Among$SII("lla", -1, -1), new Among$SII("na", -1, -1), new Among$SII("ssa", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("lta", 3, -1), new Among$SII("sta", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_2", function () { + return [ new Among$SII("ll\u00E4", -1, -1), new Among$SII("n\u00E4", -1, -1), new Among$SII("ss\u00E4", -1, -1), new Among$SII("t\u00E4", -1, -1), new Among$SII("lt\u00E4", 3, -1), new Among$SII("st\u00E4", 3, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_3", function () { + return [ new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_4", function () { + return [ new Among$SII("nsa", -1, 3), new Among$SII("mme", -1, 3), new Among$SII("nne", -1, 3), new Among$SII("ni", -1, 2), new Among$SII("si", -1, 1), new Among$SII("an", -1, 4), new Among$SII("en", -1, 6), new Among$SII("\u00E4n", -1, 5), new Among$SII("ns\u00E4", -1, 3) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_5", function () { + return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("ii", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1), new Among$SII("\u00E4\u00E4", -1, -1), new Among$SII("\u00F6\u00F6", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_6", function () { + return [ new Among$SII("a", -1, 8), new Among$SII("lla", 0, -1), new Among$SII("na", 0, -1), new Among$SII("ssa", 0, -1), new Among$SII("ta", 0, -1), new Among$SII("lta", 4, -1), new Among$SII("sta", 4, -1), new Among$SII("tta", 4, 9), new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1), new Among$SII("ksi", -1, -1), new Among$SII("n", -1, 7), new Among$SII("han", 11, 1), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("den", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("seen", 11, -1, (function (instance) { + return instance.r_LONG$(); + }), FinnishStemmer.methodObject), new Among$SII("hen", 11, 2), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("tten", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SII("hin", 11, 3), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("siin", 11, -1, (function (instance) { + return instance.r_VI$(); + }), FinnishStemmer.methodObject), new Among$SII("hon", 11, 4), new Among$SII("h\u00E4n", 11, 5), new Among$SII("h\u00F6n", 11, 6), new Among$SII("\u00E4", -1, 8), new Among$SII("ll\u00E4", 22, -1), new Among$SII("n\u00E4", 22, -1), new Among$SII("ss\u00E4", 22, -1), new Among$SII("t\u00E4", 22, -1), new Among$SII("lt\u00E4", 26, -1), new Among$SII("st\u00E4", 26, -1), new Among$SII("tt\u00E4", 26, 9) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_7", function () { + return [ new Among$SII("eja", -1, -1), new Among$SII("mma", -1, 1), new Among$SII("imma", 1, -1), new Among$SII("mpa", -1, 1), new Among$SII("impa", 3, -1), new Among$SII("mmi", -1, 1), new Among$SII("immi", 5, -1), new Among$SII("mpi", -1, 1), new Among$SII("impi", 7, -1), new Among$SII("ej\u00E4", -1, -1), new Among$SII("mm\u00E4", -1, 1), new Among$SII("imm\u00E4", 10, -1), new Among$SII("mp\u00E4", -1, 1), new Among$SII("imp\u00E4", 12, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_8", function () { + return [ new Among$SII("i", -1, -1), new Among$SII("j", -1, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "a_9", function () { + return [ new Among$SII("mma", -1, 1), new Among$SII("imma", 0, -1) ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_AEI", function () { + return [ 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_V1", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_V2", function () { + return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +$__jsx_lazy_init(FinnishStemmer, "g_particle_end", function () { + return [ 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ]; +}); +EnglishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(EnglishStemmer, "methodObject", function () { + return new EnglishStemmer$(); +}); +$__jsx_lazy_init(EnglishStemmer, "a_0", function () { + return [ new Among$SII("arsen", -1, -1), new Among$SII("commun", -1, -1), new Among$SII("gener", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_1", function () { + return [ new Among$SII("'", -1, 1), new Among$SII("'s'", 0, 1), new Among$SII("'s", -1, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_2", function () { + return [ new Among$SII("ied", -1, 2), new Among$SII("s", -1, 3), new Among$SII("ies", 1, 2), new Among$SII("sses", 1, 1), new Among$SII("ss", 1, -1), new Among$SII("us", 1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_3", function () { + return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_4", function () { + return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2), new Among$SII("edly", -1, 2), new Among$SII("eedly", 3, 1), new Among$SII("ingly", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_5", function () { + return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("ogi", -1, 13), new Among$SII("li", -1, 16), new Among$SII("bli", 3, 12), new Among$SII("abli", 4, 4), new Among$SII("alli", 3, 8), new Among$SII("fulli", 3, 14), new Among$SII("lessli", 3, 15), new Among$SII("ousli", 3, 10), new Among$SII("entli", 3, 5), new Among$SII("aliti", -1, 8), new Among$SII("biliti", -1, 12), new Among$SII("iviti", -1, 11), new Among$SII("tional", -1, 1), new Among$SII("ational", 14, 7), new Among$SII("alism", -1, 8), new Among$SII("ation", -1, 7), new Among$SII("ization", 17, 6), new Among$SII("izer", -1, 6), new Among$SII("ator", -1, 7), new Among$SII("iveness", -1, 11), new Among$SII("fulness", -1, 9), new Among$SII("ousness", -1, 10) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_6", function () { + return [ new Among$SII("icate", -1, 4), new Among$SII("ative", -1, 6), new Among$SII("alize", -1, 3), new Among$SII("iciti", -1, 4), new Among$SII("ical", -1, 4), new Among$SII("tional", -1, 1), new Among$SII("ational", 5, 2), new Among$SII("ful", -1, 5), new Among$SII("ness", -1, 5) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_7", function () { + return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_8", function () { + return [ new Among$SII("e", -1, 1), new Among$SII("l", -1, 2) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_9", function () { + return [ new Among$SII("succeed", -1, -1), new Among$SII("proceed", -1, -1), new Among$SII("exceed", -1, -1), new Among$SII("canning", -1, -1), new Among$SII("inning", -1, -1), new Among$SII("earring", -1, -1), new Among$SII("herring", -1, -1), new Among$SII("outing", -1, -1) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "a_10", function () { + return [ new Among$SII("andes", -1, -1), new Among$SII("atlas", -1, -1), new Among$SII("bias", -1, -1), new Among$SII("cosmos", -1, -1), new Among$SII("dying", -1, 3), new Among$SII("early", -1, 9), new Among$SII("gently", -1, 7), new Among$SII("howe", -1, -1), new Among$SII("idly", -1, 6), new Among$SII("lying", -1, 4), new Among$SII("news", -1, -1), new Among$SII("only", -1, 10), new Among$SII("singly", -1, 11), new Among$SII("skies", -1, 2), new Among$SII("skis", -1, 1), new Among$SII("sky", -1, -1), new Among$SII("tying", -1, 5), new Among$SII("ugly", -1, 8) ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v", function () { + return [ 17, 65, 16, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_v_WXY", function () { + return [ 1, 17, 65, 208, 1 ]; +}); +$__jsx_lazy_init(EnglishStemmer, "g_valid_LI", function () { + return [ 55, 141, 2 ]; +}); +DutchStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DutchStemmer, "methodObject", function () { + return new DutchStemmer$(); +}); +$__jsx_lazy_init(DutchStemmer, "a_0", function () { + return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E4", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00EB", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00EF", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FA", 0, 5), new Among$SII("\u00FC", 0, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_1", function () { + return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 2), new Among$SII("Y", 0, 1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_2", function () { + return [ new Among$SII("dd", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("tt", -1, -1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_3", function () { + return [ new Among$SII("ene", -1, 2), new Among$SII("se", -1, 3), new Among$SII("en", -1, 2), new Among$SII("heden", 2, 1), new Among$SII("s", -1, 3) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_4", function () { + return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ing", -1, 1), new Among$SII("lijk", -1, 3), new Among$SII("baar", -1, 4), new Among$SII("bar", -1, 5) ]; +}); +$__jsx_lazy_init(DutchStemmer, "a_5", function () { + return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1) ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v_I", function () { + return [ 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +$__jsx_lazy_init(DutchStemmer, "g_v_j", function () { + return [ 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ]; +}); +DanishStemmer.serialVersionUID = 1; +$__jsx_lazy_init(DanishStemmer, "methodObject", function () { + return new DanishStemmer$(); +}); +$__jsx_lazy_init(DanishStemmer, "a_0", function () { + return [ new Among$SII("hed", -1, 1), new Among$SII("ethed", 0, 1), new Among$SII("ered", -1, 1), new Among$SII("e", -1, 1), new Among$SII("erede", 3, 1), new Among$SII("ende", 3, 1), new Among$SII("erende", 5, 1), new Among$SII("ene", 3, 1), new Among$SII("erne", 3, 1), new Among$SII("ere", 3, 1), new Among$SII("en", -1, 1), new Among$SII("heden", 10, 1), new Among$SII("eren", 10, 1), new Among$SII("er", -1, 1), new Among$SII("heder", 13, 1), new Among$SII("erer", 13, 1), new Among$SII("s", -1, 2), new Among$SII("heds", 16, 1), new Among$SII("es", 16, 1), new Among$SII("endes", 18, 1), new Among$SII("erendes", 19, 1), new Among$SII("enes", 18, 1), new Among$SII("ernes", 18, 1), new Among$SII("eres", 18, 1), new Among$SII("ens", 16, 1), new Among$SII("hedens", 24, 1), new Among$SII("erens", 24, 1), new Among$SII("ers", 16, 1), new Among$SII("ets", 16, 1), new Among$SII("erets", 28, 1), new Among$SII("et", -1, 1), new Among$SII("eret", 30, 1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_1", function () { + return [ new Among$SII("gd", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1) ]; +}); +$__jsx_lazy_init(DanishStemmer, "a_2", function () { + return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("elig", 1, 1), new Among$SII("els", -1, 1), new Among$SII("l\u00F8st", -1, 2) ]; +}); +$__jsx_lazy_init(DanishStemmer, "g_v", function () { + return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ]; +}); +$__jsx_lazy_init(DanishStemmer, "g_s_ending", function () { + return [ 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 ]; +}); +BitVector.SMALL_BLOCK_SIZE = 32; +BitVector.LARGE_BLOCK_SIZE = 256; +BitVector.BLOCK_RATE = 8; +$__jsx_lazy_init(BurrowsWheelerTransform, "END_MARKER", function () { + return String.fromCharCode(0); +}); +var $__jsx_classMap = { + "tool/oktavia-search.jsx": { + Search: Search, + Search$: Search$, + _Main: _Main, + _Main$: _Main$ + }, + "system:lib/js/js/nodejs.jsx": { + node: node, + node$: node$ + }, + "src/oktavia.jsx": { + Oktavia: Oktavia, + Oktavia$: Oktavia$ + }, + "src/getopt.jsx": { + CommandOption: CommandOption, + CommandOption$S: CommandOption$S, + CommandOption$SS: CommandOption$SS, + CommandOption$SSB: CommandOption$SSB, + BasicParser: BasicParser, + BasicParser$SAS: BasicParser$SAS + }, + "src/query-parser.jsx": { + QueryParser: QueryParser, + QueryParser$: QueryParser$ + }, + "src/search-result.jsx": { + Proposal: Proposal, + Proposal$II: Proposal$II, + Position: Position, + Position$SIB: Position$SIB, + SearchUnit: SearchUnit, + SearchUnit$I: SearchUnit$I, + SingleResult: SingleResult, + SingleResult$: SingleResult$, + SingleResult$SBB: SingleResult$SBB, + SearchSummary: SearchSummary, + SearchSummary$: SearchSummary$, + SearchSummary$LOktavia$: SearchSummary$LOktavia$ + }, + "src/style.jsx": { + Style: Style, + Style$S: Style$S, + _HTMLHandler: _HTMLHandler, + _HTMLHandler$HASB: _HTMLHandler$HASB + }, + "src/binary-util.jsx": { + Binary: Binary, + Binary$: Binary$, + LoadedStringResult: LoadedStringResult, + LoadedStringResult$SI: LoadedStringResult$SI, + LoadedStringListResult: LoadedStringListResult, + LoadedStringListResult$SI: LoadedStringListResult$SI, + LoadedStringListMapResult: LoadedStringListMapResult, + LoadedStringListMapResult$SI: LoadedStringListMapResult$SI, + LoadedNumberListResult: LoadedNumberListResult, + LoadedNumberListResult$SI: LoadedNumberListResult$SI, + CompressionReport: CompressionReport, + CompressionReport$: CompressionReport$ + }, + "src/stemmer/stemmer.jsx": { + Stemmer: Stemmer, + Stemmer$: Stemmer$ + }, + "system:lib/js/js.jsx": { + js: js, + js$: js$ + }, + "src/metadata.jsx": { + Metadata: Metadata, + Metadata$LOktavia$: Metadata$LOktavia$, + Section: Section, + Section$LOktavia$: Section$LOktavia$, + Splitter: Splitter, + Splitter$LOktavia$: Splitter$LOktavia$, + Splitter$LOktavia$S: Splitter$LOktavia$S, + Table: Table, + Table$LOktavia$AS: Table$LOktavia$AS, + Block: Block, + Block$LOktavia$: Block$LOktavia$ + }, + "src/fm-index.jsx": { + FMIndex: FMIndex, + FMIndex$: FMIndex$ + }, + "src/query.jsx": { + Query: Query, + Query$: Query$ + }, + "src/sax.jsx": { + Tag: Tag, + Tag$S: Tag$S, + _Common: _Common, + _Common$: _Common$, + _State: _State, + _State$: _State$, + SAXHandler: SAXHandler, + SAXHandler$: SAXHandler$, + SAXParser: SAXParser, + SAXParser$LSAXHandler$: SAXParser$LSAXHandler$, + SAXParser$LSAXHandler$B: SAXParser$LSAXHandler$B, + Char: Char, + Char$: Char$, + _Entities: _Entities, + _Entities$: _Entities$ + }, + "src/stemmer/base-stemmer.jsx": { + BaseStemmer: BaseStemmer, + BaseStemmer$: BaseStemmer$ + }, + "src/stemmer/turkish-stemmer.jsx": { + TurkishStemmer: TurkishStemmer, + TurkishStemmer$: TurkishStemmer$ + }, + "src/stemmer/swedish-stemmer.jsx": { + SwedishStemmer: SwedishStemmer, + SwedishStemmer$: SwedishStemmer$ + }, + "src/stemmer/spanish-stemmer.jsx": { + SpanishStemmer: SpanishStemmer, + SpanishStemmer$: SpanishStemmer$ + }, + "src/stemmer/russian-stemmer.jsx": { + RussianStemmer: RussianStemmer, + RussianStemmer$: RussianStemmer$ + }, + "src/stemmer/romanian-stemmer.jsx": { + RomanianStemmer: RomanianStemmer, + RomanianStemmer$: RomanianStemmer$ + }, + "src/stemmer/portuguese-stemmer.jsx": { + PortugueseStemmer: PortugueseStemmer, + PortugueseStemmer$: PortugueseStemmer$ + }, + "src/stemmer/porter-stemmer.jsx": { + PorterStemmer: PorterStemmer, + PorterStemmer$: PorterStemmer$ + }, + "src/stemmer/norwegian-stemmer.jsx": { + NorwegianStemmer: NorwegianStemmer, + NorwegianStemmer$: NorwegianStemmer$ + }, + "src/stemmer/italian-stemmer.jsx": { + ItalianStemmer: ItalianStemmer, + ItalianStemmer$: ItalianStemmer$ + }, + "src/stemmer/hungarian-stemmer.jsx": { + HungarianStemmer: HungarianStemmer, + HungarianStemmer$: HungarianStemmer$ + }, + "src/stemmer/german-stemmer.jsx": { + GermanStemmer: GermanStemmer, + GermanStemmer$: GermanStemmer$ + }, + "src/stemmer/french-stemmer.jsx": { + FrenchStemmer: FrenchStemmer, + FrenchStemmer$: FrenchStemmer$ + }, + "src/stemmer/finnish-stemmer.jsx": { + FinnishStemmer: FinnishStemmer, + FinnishStemmer$: FinnishStemmer$ + }, + "src/stemmer/english-stemmer.jsx": { + EnglishStemmer: EnglishStemmer, + EnglishStemmer$: EnglishStemmer$ + }, + "src/stemmer/dutch-stemmer.jsx": { + DutchStemmer: DutchStemmer, + DutchStemmer$: DutchStemmer$ + }, + "src/stemmer/danish-stemmer.jsx": { + DanishStemmer: DanishStemmer, + DanishStemmer$: DanishStemmer$ + }, + "src/stemmer/among.jsx": { + Among: Among, + Among$SII: Among$SII, + Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$SIIF$LBaseStemmer$B$LBaseStemmer$ + }, + "src/bit-vector.jsx": { + BitVector: BitVector, + BitVector$: BitVector$ + }, + "src/wavelet-matrix.jsx": { + WaveletMatrix: WaveletMatrix, + WaveletMatrix$: WaveletMatrix$ + }, + "src/burrows-wheeler-transform.jsx": { + BurrowsWheelerTransform: BurrowsWheelerTransform, + BurrowsWheelerTransform$: BurrowsWheelerTransform$ + }, + "src/sais.jsx": { + OArray: OArray, + OArray$AI: OArray$AI, + OArray$AII: OArray$AII, + SAIS: SAIS, + SAIS$: SAIS$ + } +}; + + +/** + * launches _Main.main(:string[]):void invoked by jsx --run|--executable + */ +JSX.runMain = function (sourceFile, args) { + var module = JSX.require(sourceFile); + if (! module) { + throw new ReferenceError("entry point module not found in " + sourceFile); + } + if (! module._Main) { + throw new ReferenceError("entry point _Main not found in " + sourceFile); + } + if (! module._Main.main$AS) { + throw new ReferenceError("entry point _Main.main(:string[]):void not found in " + sourceFile); + } + module._Main.main$AS(args); +}; + +/** + * launches _Test#test*():void invoked by jsx --test + */ +JSX.runTests = function (sourceFile, tests) { + var module = JSX.require(sourceFile); + var testClass = module._Test$; + + if (!testClass) return; // skip if there's no test class + + if(tests.length === 0) { + var p = testClass.prototype; + for (var m in p) { + if (p[m] instanceof Function + && /^test.*[$]$/.test(m)) { + tests.push(m); + } + } + } + else { // set as process arguments + tests = tests.map(function (name) { + return name + "$"; // mangle for function test*():void + }); + } + + var testCase = new testClass(); + + if (testCase.beforeClass$AS != null) + testCase.beforeClass$AS(tests); + + for (var i = 0; i < tests.length; ++i) { + (function (method) { + if (method in testCase) { + testCase.run$SF$V$(method, function() { testCase[method](); }); + } + else { + throw new ReferenceError("No such test method: " + method); + } + }(tests[i])); + } + + if (testCase.afterClass$ != null) + testCase.afterClass$(); +}; +JSX.runMain("tool/oktavia-search.jsx", process.argv.slice(2)) +})(JSX); |