diff --git a/app.js b/app.js index 4760d938..1eb705a3 100644 --- a/app.js +++ b/app.js @@ -51,6 +51,7 @@ Sencha Cmd when upgrading. */ + Ext.Loader.setConfig({ enabled : true, paths : { diff --git a/app/Application.js b/app/Application.js index 39477e65..4a177c6a 100644 --- a/app/Application.js +++ b/app/Application.js @@ -62,7 +62,10 @@ Ext.define('LIME.Application', { 'Language', 'ProgressWindow', 'PreferencesManager', - 'Notification' + 'Notification', + 'ContextMenu', + 'ContextInfoManager', + 'WidgetManager' ], stores: [ @@ -83,11 +86,15 @@ Ext.define('LIME.Application', { this.secureLaunch(); }, + /** + * This function loads the MarkupLanguages store and creates + * the application viewport when the configuration is finished + * */ secureLaunch: function() { if (!Config.loadedFinish) { Ext.defer(this.secureLaunch, 100, this); } else { - this.getStore('MarkupLanguages').loadData(Config.languages); + this.getStore('MarkupLanguages').loadData(Config.languages); Ext.create('LIME.view.Viewport'); } } diff --git a/app/DocProperties.js b/app/DocProperties.js index 78f019fa..87948723 100644 --- a/app/DocProperties.js +++ b/app/DocProperties.js @@ -58,12 +58,28 @@ Ext.define('LIME.DocProperties', { */ metadataClass : 'limeMetadata', + /** + * @property {String} documentBaseClass + * This is the first class of the document element + */ documentBaseClass: 'document', + elementFocusedCls: 'focused', + + /** + * @property {String} docIdAttribute + * The name of the attribute which contains the id of the document + */ docIdAttribute: 'docid', + /** + * @property {String} markingLanguageAttribute + * The name of the attribute which contains the marking language + */ markingLanguageAttribute: 'markinglanguage', + languageAttribute: 'language', + /** * @property {Ext.Template} docClsTpl * The class attribute of div that contains the document that has to be marked. @@ -101,6 +117,11 @@ Ext.define('LIME.DocProperties', { * This object contains information about marked elements. */ markedElements : {}, + /** + * @property {Object} elementsWidget + * This object contains information about widget of marked elements. + */ + elementsWidget : {}, /** * @property {Object} currentEditorFile * This object contains information about opened document @@ -141,6 +162,18 @@ Ext.define('LIME.DocProperties', { this.markedElements = {}; this.currentEditorFile.id = ''; }, + + setElementWidget: function(name, widget) { + this.elementsWidget[name] = widget; + }, + + getElementWidget: function(name) { + return this.elementsWidget[name]; + }, + + getNodeWidget: function(node) { + return this.getElementWidget(DomUtils.getElementNameByNode(node)); + }, /** * This function set the properties of a given marked element id @@ -175,16 +208,28 @@ Ext.define('LIME.DocProperties', { this.documentInfo.docId = id; this.currentEditorFile.id = id; }, - + + /** + * This function updates the documentInfo property + * @param {Object} values The new documentInfo object + */ setDocumentInfo : function(values) { this.documentInfo = Ext.Object.merge(this.documentInfo, values); }, - + + /** + * This function updates the frbr property + * @param {Object} values The new frbr object + */ setFrbr : function(values) { var newFrbr = Ext.Object.merge(this.frbr, values); this.frbr = newFrbr; }, - + + /** + * This function clears and initializes metadata objects + * @param {Object} app The new frbr object + */ clearMetadata : function(app) { this.initVars(); app.fireEvent(Statics.eventsNames.frbrChanged); @@ -197,6 +242,61 @@ Ext.define('LIME.DocProperties', { return; }, + updateMetadata: function(config) { + var obj = config.metadata.obj, + nodes = config.path.split("/"), + targetNode = nodes[nodes.length-1], + parentTarget = obj, + afterNode, + result = 0; + Ext.Array.remove(nodes, targetNode); + Ext.each(nodes, function(el) { + parentTarget = parentTarget[el]; + }); + if (parentTarget) { + try { + if(config.overwrite) { + config.after = targetNode; + } else if (!config.append) { + /* Using Ext.Array.push is a trick to transform the value + * in array if it isn't an array and array remain the same */ + Ext.each(Ext.Array.push(parentTarget[targetNode]), function(child) { + parentTarget.el.removeChild(child.el); + }); + } + afterNode = (config.after && parentTarget[config.after]) + ? Utilities.getLastItem(Ext.Array.push(parentTarget[config.after])).el + : parentTarget.el.lastChild; + firstAfterNode = afterNode; + Ext.each(config.data, function(attributes) { + var newElConf = Ext.merge({ + tag : 'div', + cls : targetNode + }, attributes); + if(afterNode) { + afterNode = Ext.DomHelper.insertAfter(afterNode, newElConf); + } else { + afterNode = Ext.DomHelper.append(parentTarget.el, newElConf); + } + }); + if(config.overwrite && firstAfterNode) { + afterNode.parentNode.removeChild(firstAfterNode); + } + } catch(e) { + Ext.log({level: "error"}, e); + result = 2; + } + } else { + result = 1; + } + + return result; + }, + + isAutosaveId: function(id) { + return !Ext.isEmpty(id.match("/autosave/")); + }, + initVars : function() { this.frbr = Ext.clone(this.frbrTemplate); this.documentInfo = Ext.clone(this.documentInfoTemplate); diff --git a/app/DomUtils.js b/app/DomUtils.js index 1ae8a210..383a8b0a 100644 --- a/app/DomUtils.js +++ b/app/DomUtils.js @@ -1,502 +1,584 @@ /* - * Copyright (c) 2014 - Copyright holders CIRSFID and Department of - * Computer Science and Engineering of the University of Bologna - * - * Authors: - * Monica Palmirani – CIRSFID of the University of Bologna - * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna - * Luca Cervone – CIRSFID of the University of Bologna - * - * Permission is hereby granted to any person obtaining a copy of this - * software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The Software can be used by anyone for purposes without commercial gain, - * including scientific, individual, and charity purposes. If it is used - * for purposes having commercial gains, an agreement with the copyright - * holders is required. The above copyright notice and this permission - * notice shall be included in all copies or substantial portions of the - * Software. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders and authors shall not be used in advertising or otherwise to - * promote the sale, use or other dealings in this Software without prior - * written authorization. - * - * The end-user documentation included with the redistribution, if any, - * must include the following acknowledgment: "This product includes - * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, - * Fabio Vitali, Luca Cervone)", in the same place and form as other - * third-party acknowledgments. Alternatively, this acknowledgment may - * appear in the software itself, in the same form and location as other - * such third-party acknowledgments. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ /** - * Generic dom utilities + * Generic dom utilities */ Ext.define('LIME.DomUtils', { - /* Since this is merely a utility class define it as a singleton (static members by default) */ - singleton : true, - alternateClassName : 'DomUtils', - /** - * @property {String} markedElements - * Temporary parsing element class for text fragments. - */ - tempParsingClass : "tempParsing", - /** - * @property {String} toRemoveClass - * Class given to the elements that have to be removed before the translation - */ - toRemoveClass : "useless", - /** - * @property {String} breakingElementClass - * Class given to those elements that work as "breaker" for the text - */ - breakingElementClass : "breaking", - /** - * @property {String} tempSelectionClass - * Temporary selection element class for text fragments. - */ - tempSelectionClass : "tempSelection", - /** - * @property {String} elementIdAttribute - * This is the name of the attribute that is used as internal id - */ - elementIdAttribute : "internalId", - /** - * @property {String} langElementIdAttribute - * This is the name of the identificator attribute - */ - langElementIdAttribute : "id", - /** - * @property {String} elementIdSeparator - * Separator string used in the element id attribute - */ - elementIdSeparator : '_', - /** - * @property {RegExp} blockTagRegex - * RegExp object used for recognise if a string is a block element - */ - blockTagRegex : /<(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)(\/)?>/i, - /** - * @property {RegExp} blockRegex - * RegExp object used for recognise if tag is a block element - */ - blockRegex : /^(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i, - /** - * @property {RegExp} vowelsRegex - * RegExp object used for vowels - */ - vowelsRegex : /([a, e, i, o, u]|[0-9]+)/gi, - - - /** - * @property {Object} nodeType - * This object is a traslation of numeric node type in string type - */ - nodeType : { - ELEMENT : 1, - ATTRIBUTE : 2, - TEXT : 3, - CDATA_SECTION : 4, - ENTITY_REFERENCE : 5, - ENTITY : 6, - PROCESSING_INSTRUCTION : 7, - COMMENT : 8, - DOCUMENT : 9, - DOCUMENT_TYPE : 10, - DOCUMENT_FRAGMENT : 11, - NOTATION : 12 - }, - - /** - * This function take a @first node and a @last node - * and append all their siblings (first and last included) - * to the given @newParent - * @first and @last MUST BE at the same nesting level of the - * same element! No checking is performed by this function! - * @param {HTMLElement} first - * @param {HTMLElement} last - * @param {HTMLElement} newParent - */ - appendChildren : function(first, last, newParent) { - var temp = first; - /* iterator */ - last = last.nextSibling; - var next; - /* next node to visit */ - do { - next = temp.nextSibling; - newParent.appendChild(temp) - temp = next; - } while (temp != last); - }, + /* Since this is merely a utility class define it as a singleton (static members by default) */ + singleton : true, + alternateClassName : 'DomUtils', + /** + * @property {String} markedElements + * Temporary parsing element class for text fragments. + */ + tempParsingClass : "tempParsing", + /** + * @property {String} toRemoveClass + * Class given to the elements that have to be removed before the translation + */ + toRemoveClass : "useless", + /** + * @property {String} breakingElementClass + * Class given to those elements that work as "breaker" for the text + */ + breakingElementClass : "breaking", + /** + * @property {String} tempSelectionClass + * Temporary selection element class for text fragments. + */ + tempSelectionClass : "tempSelection", + /** + * @property {String} elementIdAttribute + * This is the name of the attribute that is used as internal id + */ + elementIdAttribute : "internalId", + /** + * @property {String} langElementIdAttribute + * This is the name of the identificator attribute + */ + langElementIdAttribute : "id", + + toMarkNodeClass: "toMarkNode", + /** + * @property {String} elementIdSeparator + * Separator string used in the element id attribute + */ + elementIdSeparator : '_', + /** + * @property {RegExp} blockTagRegex + * RegExp object used for recognise if a string is a block element + */ + blockTagRegex : /<(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)(\/)?>/i, + /** + * @property {RegExp} blockRegex + * RegExp object used for recognise if tag is a block element + */ + blockRegex : /^(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i, + /** + * @property {RegExp} vowelsRegex + * RegExp object used for vowels + */ + vowelsRegex : /([a, e, i, o, u]|[0-9]+)/gi, + + tagRegex: /<(.|\n)*?>/g, - /** - * Return an ExtJS DomQuery compatible query that - * will return all the useless elements that can be removed - * before translating - * @returns {String} The query - */ - getTempClassesQuery : function(){ - // TODO rendere le classi iterabili - return "."+this.tempSelectionClass+", ."+this.toRemoveClass+", ."+this.tempSelectionClass+", ."+this.breakingElementClass; - }, - - /** - * This function returns a list of the siblings of the given name (e.g. p, div etc.) - * of the startElement (if endElement is specified it stops once that is reached; - * if the endElement is never found, e.g. out of the hierarchy, the computation - * stops at the last sibling found). - * WARNING: this function does NOT provide any check about the order of the nodes given, - * it could not terminate if endElement is before/in/above startElement - * @param {HTMLElement} startElement - * @param {HTMLElement} [endElement] - * @param {String/Regexp} [nodeName] - * @returns {HTMLElement[]} - */ - getSiblings : function(startElement, endElement, nodeName) { - if (!startElement || !endElement) - return null; - var iterator = startElement; - var siblings = []; - // Include start and end - while (iterator != endElement.nextSibling) { - // Use the regex if available - var condition = (Utilities.toType(nodeName) == "regexp") ? nodeName.test(iterator.nodeName) : iterator.nodeName.toLowerCase() == nodeName; - if (!nodeName || condition) { - siblings.push(iterator); - } - iterator = iterator.nextSibling; - } - return siblings; - }, + /** + * @property {Object} nodeType + * This object is a traslation of numeric node type in string type + */ + nodeType : { + ELEMENT : 1, + ATTRIBUTE : 2, + TEXT : 3, + CDATA_SECTION : 4, + ENTITY_REFERENCE : 5, + ENTITY : 6, + PROCESSING_INSTRUCTION : 7, + COMMENT : 8, + DOCUMENT : 9, + DOCUMENT_TYPE : 10, + DOCUMENT_FRAGMENT : 11, + NOTATION : 12 + }, - /** - * TODO: test this function - * - * This function is a innerHTML replacement. - * It allows to completely move all the children nodes from - * a source to a destination. - * @param {HTMLElement} from The source - * @param {HTMLElement} to The destination - */ - moveChildrenNodes : function(from, to) { - while (to.firstChild) { - to.removeChild(to.firstChild); + config: { + breakingElementHtml: "" + }, + + /** + * This function take a @first node and a @last node + * and append all their siblings (first and last included) + * to the given @newParent + * @first and @last MUST BE at the same nesting level of the + * same element! No checking is performed by this function! + * @param {HTMLElement} first + * @param {HTMLElement} last + * @param {HTMLElement} newParent + */ + appendChildren : function(first, last, newParent) { + var temp = first; + /* iterator */ + last = last.nextSibling; + var next; + /* next node to visit */ + do { + next = temp.nextSibling; + newParent.appendChild(temp); + temp = next; + } while (temp != last); + }, + + /** + * Return an ExtJS DomQuery compatible query that + * will return all the useless elements that can be removed + * before translating + * @returns {String} The query + */ + getTempClassesQuery : function() { + // TODO rendere le classi iterabili + return "." + this.tempSelectionClass + ", ." + this.toRemoveClass + ", ." + this.tempSelectionClass + ", ." + this.breakingElementClass; + }, + + /** + * This function returns a list of the siblings of the given name (e.g. p, div etc.) + * of the startElement (if endElement is specified it stops once that is reached; + * if the endElement is never found, e.g. out of the hierarchy, the computation + * stops at the last sibling found). + * WARNING: this function does NOT provide any check about the order of the nodes given, + * it could not terminate if endElement is before/in/above startElement + * @param {HTMLElement} startElement + * @param {HTMLElement} [endElement] + * @param {String/Regexp} [nodeName] + * @returns {HTMLElement[]} + */ + getSiblings : function(startElement, endElement, nodeName) { + if (!startElement || !endElement) + return null; + var iterator = startElement; + var siblings = []; + // Include start and end + while (iterator != endElement.nextSibling) { + // Use the regex if available + var condition = (Utilities.toType(nodeName) == "regexp") ? nodeName.test(iterator.nodeName) : iterator.nodeName.toLowerCase() == nodeName; + if (!nodeName || condition) { + siblings.push(iterator); + } + iterator = iterator.nextSibling; + } + return siblings; + }, + + getSiblingsFromNode : function(node) { + var iterator, siblings = []; + if (node) { + iterator = node.nextSibling; + while (iterator) { + siblings.push(iterator); + iterator = iterator.nextSibling; + } + } + return siblings; + }, + + /** + * TODO: test this function + * + * This function is a innerHTML replacement. + * It allows to completely move all the children nodes from + * a source to a destination. + * @param {HTMLElement} from The source + * @param {HTMLElement} to The destination + */ + moveChildrenNodes : function(from, to, append) { + if (!append) { + while (to.firstChild) { + to.removeChild(to.firstChild); + } } while (from.firstChild) { to.appendChild(from.firstChild); } - }, + }, - /** - * This function returns an HtmlElement of the given type - * starting from the given root and going towards the given direction - * NOTE/TODO: down direction not implemented yet! - * @param {HTMLElement} root - * @param {String/Regexp} name - * @returns {HTMLElement} - */ - getNodeByName : function(root, name) { - // Once we reached the body element we stop - var selectedNode = root; - while (selectedNode.nodeName.toLowerCase() != 'body') { - var nodeName = selectedNode.nodeName.toLowerCase(); - // name can be either be a string or a regexp object (useful in most cases, e.g. for sensitive case or multiple names) - if ((Utilities.toType(name) == "regexp") ? name.test(nodeName) : (nodeName == name.toLowerCase())) { - return selectedNode; - } - selectedNode = selectedNode.parentNode; - } - return null; - }, - /** - * Function which checks if a node @child is a descendant of @parent - * @param {HTMLElement} parent - * @param {HTMLElement} child - * @returns {Boolean} - */ - isDescendant : function(parent, child) { - var node = child.parentNode; - while (node != null) { - if (node == parent) { - return true; - } - node = node.parentNode; - } - return false; - }, + /** + * This function returns an HtmlElement of the given type + * starting from the given root and going towards the given direction + * NOTE/TODO: down direction not implemented yet! + * @param {HTMLElement} root + * @param {String/Regexp} name + * @returns {HTMLElement} + */ + getNodeByName : function(root, name) { + // Once we reached the body element we stop + var selectedNode = root; + while (selectedNode.nodeName.toLowerCase() != 'body') { + var nodeName = selectedNode.nodeName.toLowerCase(); + // name can be either be a string or a regexp object (useful in most cases, e.g. for sensitive case or multiple names) + if ((Utilities.toType(name) == "regexp") ? name.test(nodeName) : (nodeName == name.toLowerCase())) { + return selectedNode; + } + selectedNode = selectedNode.parentNode; + } + return null; + }, + /** + * Function which checks if a node @child is a descendant of @parent + * @param {HTMLElement} parent + * @param {HTMLElement} child + * @returns {Boolean} + */ + isDescendant : function(parent, child) { + var node = child.parentNode; + while (node != null) { + if (node == parent) { + return true; + } + node = node.parentNode; + } + return false; + }, - /** - * Function which returns the level of nesting (from the root with level 1) of the given @node - * @param {HTMLElement} node - * @returns {Number} - */ - nestingLevel : function(node) { - var lv = 1; - while (node != null) { - node = node.parentNode; - lv++; - } - return lv; - }, + /** + * Function which returns the level of nesting (from the root with level 1) of the given @node + * @param {HTMLElement} node + * @returns {Number} + */ + nestingLevel : function(node) { + var lv = 1; + while (node != null) { + node = node.parentNode; + lv++; + } + return lv; + }, + + /** + * This function converts a XML node into a JSON string + * @param {HTMLElement} xml + * @returns {Object} + */ + xmlToJson : function(xml) { + // Create the return object + var obj; + if (xml && xml.nodeType == DomUtils.nodeType.ELEMENT) {// element*/ + obj = {}; + obj.el = xml; + // do children + if (xml && xml.hasChildNodes()) { + obj.children = []; + for (var i = 0; i < xml.childNodes.length; i++) { + var item = xml.childNodes.item(i); + if (item) { + var nodeName = item.nodeName.toLowerCase(); + var childObj = this.xmlToJson(item); + if (childObj) + obj.children.push(childObj); + } + } + } + } + return obj; + }, + + nodeToJson : function(xml) { + var obj, i, attrib, nodeClass; + if (xml && xml.nodeType == DomUtils.nodeType.ELEMENT) {// element*/ + obj = {}; + obj.el = xml; + obj.attr = {}; + for ( i = 0; i < xml.attributes.length; i++) { + attrib = xml.attributes[i]; + obj.attr[attrib.name] = attrib.value; + } + // do children + if (xml && xml.hasChildNodes()) { + obj.children = []; + for ( i = 0; i < xml.childNodes.length; i++) { + var item = xml.childNodes.item(i); + if (item) { + var nodeName = item.nodeName; + var childObj = this.nodeToJson(item); + if (childObj) { + nodeClass = childObj.attr["class"]; + if (nodeClass) { + obj[nodeClass] = Utilities.pushOrValue(obj[nodeClass], childObj); + } + obj.children.push(childObj); + } + } + } + } + } + return obj; + }, + /** + * This function search extra information in a node that has a specific type and return it + * @param {HTMLElement} node + * @param {HTMLElement} type + * @param {HTMLElement} [limit] + * @returns {String} + */ + getNodeExtraInfo : function(node, type, limit) { + var info = ''; + if (node && node.getAttribute("class") && node.getAttribute("class").indexOf(type) != -1) { + var infoLength = limit || Statics.extraInfoLimit; + var wrapper = new Ext.Element(node); + //TODO: da file config + var where = ["num", "heading", "subheading"]; + var infoNode; + for (var i = 0; i < where.length; i++) { + var contentEl = wrapper.child(".content"); + if (contentEl) { + wrapper = contentEl; + } + var chNode = wrapper.down("." + where[i]); + if (chNode) { + var hcontainer = chNode.parent(".hcontainer"); + if (hcontainer && hcontainer.dom == node) { + infoNode = chNode; + break; + } + } + } + if (infoNode) { + info = infoNode.getHTML(); + info = info.replace(/<(?:.|\n)*?>/gm, ''); + } + if (info.length > infoLength) { + info = info.substr(0, infoLength) + "..."; + } + } + return info; + }, + /** + * This function retrieves the first marked ascendant + * for the given node. + * @param {HTMLElement} node + * @returns {HTMLElement} a reference to the marked ascendant node, false if nothing was found + */ + getFirstMarkedAncestor : function(node) { + if (!node) + return null; + if (node && node.nodeType == DomUtils.nodeType.ELEMENT && node.getAttribute(DomUtils.elementIdAttribute) != null) + return node; + node = (node.parentNode) ? node.parentNode : null; + // let's start from the parent, shall we? + while (node && node.nodeType == DomUtils.nodeType.ELEMENT) { + if (node.getAttribute(DomUtils.elementIdAttribute)) { + return node; + } + node = node.parentNode; + } + return null; + }, - /** - * This function converts a XML node into a JSON string - * @param {HTMLElement} xml - * @returns {Object} - */ - xmlToJson : function(xml) { - // Create the return object - var obj; - if (xml && xml.nodeType == DomUtils.nodeType.ELEMENT) {// element*/ - obj = {}; - obj.el = xml; - // do children - if (xml && xml.hasChildNodes()) { - obj.children = []; - for (var i = 0; i < xml.childNodes.length; i++) { - var item = xml.childNodes.item(i); - if (item) { - var nodeName = item.nodeName.toLowerCase(); - var childObj = this.xmlToJson(item); - if (childObj) - obj.children.push(childObj); - } - } - } - } - return obj; - }, - /** - * This function search extra information in a node that has a specific type and return it - * @param {HTMLElement} node - * @param {HTMLElement} type - * @param {HTMLElement} [limit] - * @returns {String} - */ - getNodeExtraInfo : function(node, type, limit) { - var info = ''; - if(node && node.getAttribute("class") && node.getAttribute("class").indexOf(type)!=-1){ - var infoLength = limit || Statics.extraInfoLimit; - var wrapper = new Ext.Element(node); - //TODO: da file config - var where = ["num", "heading", "subheading"]; - var infoNode; - for (var i = 0; i < where.length; i++) { - var contentEl = wrapper.child(".content"); - if(contentEl){ - wrapper = contentEl; - } - var chNode = wrapper.down("." + where[i]); - if (chNode) { - var hcontainer = chNode.parent(".hcontainer"); - if(hcontainer && hcontainer.dom==node){ - infoNode = chNode; - break; - } - } - } - if (infoNode) { - info = infoNode.getHTML(); - info = info.replace(/<(?:.|\n)*?>/gm, ''); - } - if (info.length > infoLength) { - info = info.substr(0, infoLength) + "..."; - } - } - return info; - }, - /** - * This function retrieves the first marked ascendant - * for the given node. - * @param {HTMLElement} node - * @returns {HTMLElement} a reference to the marked ascendant node, false if nothing was found - */ - getFirstMarkedAncestor : function(node) { - if (!node) - return null; - if (node && node.nodeType == DomUtils.nodeType.ELEMENT && node.getAttribute(DomUtils.elementIdAttribute) != null) - return node; - node = (node.parentNode) ? node.parentNode : null; - // let's start from the parent, shall we? - while (node && node.nodeType == DomUtils.nodeType.ELEMENT) { - if (node.getAttribute(DomUtils.elementIdAttribute)) { - return node; - } - node = node.parentNode; - } - return null; - }, + /** + * This function returns a list of all the marked children's ids + * found starting from node. + * + * @param {HTMLElement} node + * @returns {String[]} + */ + getMarkedChildrenId : function(node) { + var childrenIds = []; + Ext.each(Ext.query('[' + DomUtils.elementIdAttribute + ']', node), function(child) { + var id = child.getAttribute(DomUtils.elementIdAttribute); + childrenIds.push(id); + }); + return childrenIds; + }, - /** - * This function returns a list of all the marked children's ids - * found starting from node. - * - * @param {HTMLElement} node - * @returns {String[]} - */ - getMarkedChildrenId : function(node) { - var childrenIds = []; - Ext.each(Ext.query('[' + DomUtils.elementIdAttribute + ']', node), function(child) { - var id = child.getAttribute(DomUtils.elementIdAttribute); - childrenIds.push(id); - }); - return childrenIds; - }, + /** + * This function returns a reference to an existing button + * which matches part of the given elementId. + * @param {String} elementId + * @returns {String} + */ + getButtonIdByElementId : function(elementId) { + if (!elementId) + return null; + return elementId.split(DomUtils.elementIdSeparator)[0]; + }, - /** - * This function returns a reference to an existing button - * which matches part of the given elementId. - * @param {String} elementId - * @returns {String} - */ - getButtonIdByElementId : function(elementId) { - if (!elementId) return null; - return elementId.split(DomUtils.elementIdSeparator)[0]; - }, - - /** - * This function returns the marking button related to the passed element - * @param {HTMLElement} element - * returns {LIME.view.markingmenu.TreeButton} - */ + /** + * This function returns the marking button related to the passed element + * @param {HTMLElement} element + * returns {LIME.view.markingmenu.TreeButton} + */ getButtonByElement : function(element) { var elementId, markingElement; if (element && element.getAttribute) { elementId = element.getAttribute(DomUtils.elementIdAttribute); markingElement = DocProperties.getMarkedElement(elementId); if (elementId && markingElement) { - return markingElement.button; + return markingElement.button; } } return null; }, - - /** - * This function builds and set an id attribute starting from the given element. - * The build process is based on the hierarchy of the elements. - * The difference between this and {@link LIME.controller.Marker#getMarkingId} is that this id is - * specific to the language plugin currently in use while the latest is for development purposes. - * @param {HTMLElement} markedElement The element we have to set the attribute to - * @param {Object} counters Counters of elements - */ - setLanguageMarkingId : function(markedElement, counters) { - var newId = '', - elementId = markedElement.getAttribute(this.elementIdAttribute); - if(elementId && DocProperties.markedElements[elementId]){ - var counter = 1, - button = DocProperties.markedElements[elementId].button, - prefix = button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix || ''; - // If the element has already an language id, leave it - if (markedElement.getAttribute(prefix + this.langElementIdAttribute)) - return; - newId = button.id.replace(this.vowelsRegex, ''), - //don't use "parent" variable because in IE is a reference to Window - parentMarked = this.getFirstMarkedAncestor(markedElement.parentNode); - if (parentMarked) { - parentId = parentMarked.getAttribute(prefix + this.langElementIdAttribute); - if(!counters[parentId]){ - counters[parentId] = {}; - }else if(counters[parentId][newId]){ - counter = counters[parentId][newId]; - } - counters[parentId][newId] = counter+1; - newId = parentId + '-' + newId; - }else{ - if(!counters[newId]){ - counters[newId] = counter+1; - }else{ - counter = counters[newId]; - } - } - newId+= counter; - } - if(newId != '') - markedElement.setAttribute(prefix + this.langElementIdAttribute, newId); - }, - /** This function search the Node that contains the passed string - * @param {String} text - * @param {HTMLElement} initNode - * @param {HTMLElement[]} [rejectElements] Elements to reject - * @returns {HTMLElement} - */ - findNodeByText : function(text, initNode,rejectElements) { - containsText=function(node){ - if(rejectElements && Ext.Array.indexOf(rejectElements,node)!=-1){ - return NodeFilter.FILTER_REJECT - }else if (node.innerHTML.indexOf(text)!=-1) - return NodeFilter.FILTER_ACCEPT - else - return NodeFilter.FILTER_SKIP - } + + getElementId: function(element) { + var elementId, markingElement; + if (element && element.getAttribute) { + elementId = element.getAttribute(DomUtils.elementIdAttribute); + return elementId; + } + return null; + }, + + getElementNameByNode: function(node) { + var button = DomUtils.getButtonByElement(node); + if(button && button.waweConfig && button.waweConfig.name) { + return button.waweConfig.name; + } + return null; + }, + + /** This function search the Node that contains the passed string + * @param {String} text + * @param {HTMLElement} initNode + * @param {HTMLElement[]} [rejectElements] Elements to reject + * @returns {HTMLElement} + */ + findNodeByText : function(text, initNode, rejectElements) { + containsText = function(node) { + if (rejectElements && Ext.Array.indexOf(rejectElements, node) != -1) { + return NodeFilter.FILTER_REJECT; + } else if (node.innerHTML.indexOf(text) != -1) + return NodeFilter.FILTER_ACCEPT; + else + return NodeFilter.FILTER_SKIP; + }; var w = initNode.ownerDocument.createTreeWalker(initNode, NodeFilter.SHOW_ELEMENT, containsText, false); - var node; + var node; while (w.nextNode()) { - node = w.currentNode; + node = w.currentNode; } - return node - }, - /** This function search the Text Nodes that contains the passed string - * @param {String} text - * @param {HTMLElement} initNode - * @returns {HTMLElement[]} Array of text nodes - */ - findTextNodes : function(text, initNode) { - containsText=function(node){ - if (node.textContent.indexOf(text)!=-1) - return NodeFilter.FILTER_ACCEPT - else - return NodeFilter.FILTER_SKIP - }; + return node; + }, + /** This function search the Text Nodes that contains the passed string + * @param {String} text + * @param {HTMLElement} initNode + * @returns {HTMLElement[]} Array of text nodes + */ + findTextNodes : function(text, initNode) { + containsText = function(node) { + if (node.textContent.indexOf(text) != -1) + return NodeFilter.FILTER_ACCEPT; + else + return NodeFilter.FILTER_SKIP; + }; var w = initNode.ownerDocument.createTreeWalker(initNode, NodeFilter.SHOW_TEXT, containsText, false); - var nodes = []; - try { + var nodes = []; + try { while (w.nextNode()) { - nodes.push(w.currentNode); + nodes.push(w.currentNode); } } catch(e) { - Ext.log({level: "error"}, e); + Ext.log({ + level : "error" + }, e); }; return nodes; - }, - /** This function search all occurences of subStr in str, and returns all accurences position - * @param {String} str - * @param {String} subStr - * @returns {Number[]} Array of indexes - */ - stringIndexesOf : function(str, subStr){ - str+=''; - subStr+=''; - var pos = 0, - indexes = [], - sLength = subStr.length; - - while(pos!=-1){ - pos = str.indexOf(subStr,pos); - if(pos!=-1){ - indexes.push(pos); - pos+=sLength; - } - } - return indexes; - }, - - /** + }, + + getTextOfNodeClassic: function(node) { + var text = ""; + for(var i = 0; i < node.childNodes.length; i++) { + if(node.childNodes[i].nodeType == this.nodeType.TEXT) { + text+= node.childNodes[i].nodeValue+ " "; + } else if(node.childNodes[i].nodeType == this.nodeType.ELEMENT) { + text+= this.getTextOfNodeClassic(node.childNodes[i]); + } + } + return text; + }, + + getTextOfNode : function(node) { + var w = node.ownerDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, { + acceptNode : function(node) { + return NodeFilter.FILTER_ACCEPT; + } + }, false); + + var text = ""; + try { + while (w.nextNode()) { + text += w.currentNode.nodeValue + " "; + } + } catch(e) { + Ext.log({ + level : "error" + }, e); + return this.getTextOfNodeClassic(node); + }; + return text; + }, + + getTextNodes : function(node) { + var w = node.ownerDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, { + acceptNode : function(node) { + return NodeFilter.FILTER_ACCEPT; + } + }, false); + + var nodes = []; + try { + while (w.nextNode()) { + nodes.push(w.currentNode); + } + } catch(e) { + Ext.log({ + level : "error" + }, e); + }; + return nodes; + }, + /** This function search all occurences of subStr in str, and returns all accurences position + * @param {String} str + * @param {String} subStr + * @returns {Number[]} Array of indexes + */ + stringIndexesOf : function(str, subStr) { + str += ''; + subStr += ''; + var pos = 0, indexes = [], sLength = subStr.length; + + while (pos != -1) { + pos = str.indexOf(subStr, pos); + if (pos != -1) { + indexes.push(pos); + pos += sLength; + } + } + return indexes; + }, + + /** * Add the given style properties to the elements that match * the given css selector. * @param {String} selector The css selector @@ -505,8 +587,7 @@ Ext.define('LIME.DomUtils', { */ addStyle : function(selector, styleText, doc) { // Create a style element and append it into the head element - var head = Ext.query('head', doc)[0], - styleEl = Ext.query('style', head)[0]; + var head = Ext.query('head', doc)[0], styleEl = Ext.query('style', head)[0]; if (!styleEl) { styleEl = doc.createElement('style'); head.appendChild(styleEl); @@ -519,35 +600,173 @@ Ext.define('LIME.DomUtils', { } }, /** - * Wrapper for DOMParser.parseFromString + * Wrapper for DOMParser.parseFromString */ - parseFromString: function(string) { + parseFromString : function(string) { var parser = new DOMParser(), docDom; // IE exception try { docDom = parser.parseFromString(string, "application/xml"); - if (docDom.documentElement.tagName == "parsererror" || - docDom.documentElement.querySelector("parseerror") || - docDom.documentElement.querySelector("parsererror")) { - docDom = false; + if (docDom.documentElement.tagName == "parsererror" || docDom.documentElement.querySelector("parseerror") || docDom.documentElement.querySelector("parsererror")) { + docDom = null; } } catch(e) { - docDom = false; + docDom = null; } return docDom; }, - + /** - * Wrapper for XMLSerializer.serializeToString + * Wrapper for XMLSerializer.serializeToString */ - serializeToString: function(dom) { + serializeToString : function(dom) { var XMLS = new XMLSerializer(); - return XMLS.serializeToString(dom); + return XMLS.serializeToString(dom); }, - - getDocTypeByNode: function(node) { + + getDocTypeByNode : function(node) { var cls = node.getAttribute("class").split(' '); return Ext.Array.difference(cls, [DocProperties.documentBaseClass])[0]; - } + }, + + markedNodeIsPattern : function(node, pattern) { + var cls = node.getAttribute("class"); + if (cls && cls.match("\\b" + pattern + "\\b")) { + return true; + } + return false; + }, + + allNodesHaveClass : function(nodes, cls) { + for (var i = 0; i < nodes.length; i++) { + if (!nodes[i].getAttribute || nodes[i].getAttribute("class") != cls) { + return false; + } + } + return (nodes.length) ? true : false; + }, + + addSpacesInTextNode : function(textNode) { + if (textNode.length) { + textNode.appendData(" "); + } + }, + + removeChildren: function(node) { + while (node.firstChild) { + node.removeChild(node.firstChild); + } + }, + + replaceTextOfNode: function(node, newText) { + var oldText = this.getTextOfNode(node); + this.removeChildren(node); + node.appendChild(node.ownerDocument.createTextNode(newText)); + return oldText; + }, + + isNodeBlock: function(node) { + return this.blockRegex.test(node.nodeName); + }, + + isSameNodeWithHtml: function(node, html) { + var re = new RegExp("^<"+node.nodeName+">", 'i'); + return re.test(html); + }, + + filterMarkedNodes: function(nodes) { + return Ext.Array.toArray(nodes).filter(function(el) { + return el.getAttribute(DomUtils.elementIdAttribute); + }); + }, + + isBreakingNode: function(node) { + var cls = node.getAttribute("class"); + if(cls && cls.indexOf(DomUtils.breakingElementClass) != -1) { + return true; + } + return false; + }, + + isNodeFocused: function(node) { + var cls = node.getAttribute(DocProperties.elementFocusedCls); + if(cls && cls === "true") { + return true; + } + return false; + }, + + insertAfter: function(node, target) { + if(target.nextElementSibling) { + target.parentNode.insertBefore(node, target.nextElementSibling); + } else { + target.parentNode.appendChild(node); + } + }, + + getLastFromQuery: function(node, query) { + var result = node.querySelectorAll(query); + if(result && result.length) { + return result[result.length-1]; + } + return null; + }, + + unwrapNode: function(node) { + var iterNode; + if(node.parentNode) { + iterNode = node.firstChild; + while (iterNode) { + nextSibling = iterNode.nextSibling; + node.parentNode.insertBefore(iterNode, node); + iterNode = nextSibling; + } + node.parentNode.removeChild(node); + } + }, + isNodeSiblingOfNode: function(node1, node2) { + if(node1 && node2) { + var iterNode = node1.nextSibling; + while(iterNode && iterNode != node2) { + iterNode = iterNode.nextSibling; + } + return (iterNode == node2); + } + return false; + }, + + getAscendantNodes: function(node) { + var nodes = [], parent = node.parentNode; + while(parent && parent.nodeName.toLowerCase() != "body") { + nodes.push(parent); + parent = parent.parentNode; + } + return nodes; + }, + + getCommonAscendant: function(node1, node2) { + var ascendants1 = Ext.Array.toArray(this.getAscendantNodes(node1)), + ascendants2 = Ext.Array.toArray(this.getAscendantNodes(node2)), + index1, index2; + + ascendant = ascendants1.filter(function(node) { + return (ascendants2.indexOf(node) != -1); + })[0]; + + index1 = ascendants1.indexOf(ascendant); + index2 = ascendants2.indexOf(ascendant); + index1 = (index1 != 0) ? index1-1 : 0; + index2 = (index2 != 0) ? index2-1 : 0; + + return { + ascendant: ascendant, + firstParent: ascendants1[index1], + secondParent: ascendants2[index2] + }; + }, + + constructor: function() { + this.setBreakingElementHtml(" "); + } }); diff --git a/app/Global.js b/app/Global.js index 51e4050a..87b8fc9e 100644 --- a/app/Global.js +++ b/app/Global.js @@ -78,6 +78,11 @@ Ext.define('LIME.Global', { allLanguages: [{name: "default"}], languages:[], + + fieldsDefaults: {}, + + // Indicates whether the default language/plugin was loaded. + loaded: false, getDependences : function() { return Ext.Array.map(this.extensionScripts, function(script) { @@ -86,6 +91,8 @@ Ext.define('LIME.Global', { }, load : function() { + var me = this; + Ext.Loader.setPath(this.uxPath, this.getPluginLibsPath()); Ext.syncRequire(this.getDependences()); // Loading the language plugin configuration file @@ -98,11 +105,15 @@ Ext.define('LIME.Global', { try { jsonData = Ext.decode(response.responseText, true); if(jsonData) { - Ext.Array.push(this.allLanguages, jsonData.languages); - this.languages = jsonData.languages; + Ext.Array.push(me.allLanguages, jsonData.languages); + me.languages = jsonData.languages; + me.fieldsDefaults = (jsonData.fieldsDefaults) ? jsonData.fieldsDefaults : me.fieldsDefaults; // Load the plugin structure - this.loadPluginStructure(); - this.loadLanguage(); + me.loadPluginStructure(); + me.loadLanguage(function() { + me.loaded = true; + Ext.callback(me.afterDefaultLoaded); + }); } else { Ext.log({level: "error"}, "language config (languagesPlugins/config.json) decode error!"); } @@ -139,7 +150,7 @@ Ext.define('LIME.Global', { }, loadLanguage : function(callback) { - var me = this, counter, + var me = this, counter, urls = [], callingCallback = function() { if(!--counter) { var newCallback = function() { @@ -174,6 +185,24 @@ Ext.define('LIME.Global', { me.loadScript(this.getPluginLibsPath() + '/' + script + '.js', callingCallback, callingCallback); }, this); + if(langConf.transformationFiles) { + Ext.Object.each(langConf.transformationFiles, function(name, value) { + if(name == "languageToLIME" || name == "LIMEtoLanguage") { + urls.push({ + url: me.getLanguagePath()+value, + name: name + }); + } + }); + if(!Ext.isEmpty(urls)) { + Utilities.filterUrls(urls, false, function(newUrls) { + langConf.transformationUrls = {}; + Ext.each(newUrls, function(obj) { + langConf.transformationUrls[obj.name] = obj.url; + }); + }, false, me); + } + } }, loadScript: function(url, success, error) { @@ -219,6 +248,9 @@ Ext.define('LIME.Global', { Ext.callback(callback, me); } }; + + me.setPluginUrl(name, pluginDirUrl); + Ext.Ajax.request({ async : false, url : structureUrl, @@ -227,6 +259,7 @@ Ext.define('LIME.Global', { var data = Ext.decode(response.responseText, true), scriptToLoad = []; if(data) { + if (data.views) { Ext.Array.push(scriptToLoad, data.views); } @@ -277,6 +310,32 @@ Ext.define('LIME.Global', { } }, + setPluginUrl: function(name, relativeUrl) { + var me = this; + me.pluginUrls = me.pluginUrls || {}; + me.pluginUrls[name] = { + relative: relativeUrl, + absolute: me.getAppUrl()+relativeUrl + }; + }, + + getAppUrl: function() { + return window.location.origin+window.location.pathname; + }, + + getPluginUrl: function(name) { + return this.pluginUrls[name]; + }, + + getLanguageTransformationFiles: function(lang) { + return this.getLanguageConfig(lang).transformationUrls; + }, + + getLanguageTransformationFile: function(name, lang) { + var files = this.getLanguageTransformationFiles(lang); + return (files && files[name]) ? files[name] : null; + }, + getCustomViews : function(name) { return this.customizationViews[name]; }, @@ -295,15 +354,20 @@ Ext.define('LIME.Global', { setLanguage : function(language, callback) { var me = this; - me.language = language; - if(Ext.isFunction(this.beforeSetLanguage)) { - var callB = Ext.bind(function() { - me.loadLanguage(callback); - }, me); - this.beforeSetLanguage(language, callB); + if(me.language != language) { + me.language = language; + if(Ext.isFunction(this.beforeSetLanguage)) { + var callB = Ext.bind(function() { + me.loadLanguage(callback); + }, me); + this.beforeSetLanguage(language, callB); + } else { + this.loadLanguage(callback); + } } else { - this.loadLanguage(callback); + Ext.callback(callback, me); } + }, getLanguage: function() { diff --git a/app/Interpreters.js b/app/Interpreters.js index c25db537..1941951a 100644 --- a/app/Interpreters.js +++ b/app/Interpreters.js @@ -69,11 +69,26 @@ Ext.define('LIME.Interpreters', { /*Clone the pattern configuration*/ var patternConfigClone = Ext.clone(patternConfig); var patternName = buttonConfig.pattern; - - /*Return the result of the mergePattern function that returns a new pattern configuration*/ + + if(!patternConfigClone) return buttonConfig; + + + if (buttonConfig.remove) { + for (var i in buttonConfig.remove) { + var elementsToRemove = buttonConfig.remove[i]; + if (elementsToRemove.length > 0) { + Ext.each(elementsToRemove, function(elementToRemove) { + delete patternConfigClone[i][elementToRemove]; + }); + } else { + delete patternConfigClone[i]; + } + } + } + /*Return the result of the mergePattern function that returns a new pattern configuration*/ var newPattern = this.mergePattern(patternConfigClone, buttonConfig); newPattern.wrapperClass = this.parseClass(newPattern.wrapperClass, elName, patternName); - if (newPattern.remove) { + /*if (newPattern.remove) { for (var i in newPattern.remove) { var elementsToRemove = newPattern.remove[i]; if (elementsToRemove.length > 0) { @@ -86,7 +101,7 @@ Ext.define('LIME.Interpreters', { } - } + }*/ return newPattern; }, /** @@ -239,13 +254,18 @@ Ext.define('LIME.Interpreters', { } // Get the element's widget widget = (rule) ? Interpreters.parseWidget(rule) : null; + + if(widget) { + DocProperties.setElementWidget(name, widget); + } + + pattern = Interpreters.parsePattern(name, patterns[button.pattern], button); //Create the configuration object config = { markupConfig : button, pattern : pattern, rules : rule, - widgetConfig : widget, name : name, label : label }; @@ -359,13 +379,14 @@ Ext.define('LIME.Interpreters', { */ parseWidget : function(rule) { var widgetsObject = rule.askFor, - globalAttributes = rule.attributes; - var namePrefix = rule[Utilities.buttonFieldDefault].attributePrefix || ""; + globalAttributes = rule.attributes || {}; + if (!widgetsObject) return null; var widgetConfig = { list : [] }; + var namePrefix = rule[Utilities.buttonFieldDefault].attributePrefix || ""; var title = ""; var how = Ext.Object.getSize(widgetsObject); for (var i in widgetsObject) { @@ -373,6 +394,16 @@ Ext.define('LIME.Interpreters', { /* Don't create many panels containing the fields but concatenate them in a unique panel */ var tempWidget = {}; tempWidget.xtype = (Statics.widgetTypePatterns[widget.type]) ? Statics.widgetTypePatterns[widget.type] : 'textfield'; + if(widget.type == "list") { + var store = Ext.create('Ext.data.Store', { + fields: ["type"], + data : widget.values.map(function(el) {return {"type": el};}) + }); + tempWidget.store = store; + tempWidget.queryMode = 'local'; + tempWidget.displayField = 'type'; + tempWidget.valueField = 'type'; + } if (how > 1) { tempWidget.emptyText = widget.label; if (title != "") @@ -384,6 +415,9 @@ Ext.define('LIME.Interpreters', { if (widget.insert && widget.insert.attribute) { tempWidget.name = namePrefix + widget.insert.attribute.name; tempWidget.origName = widget.insert.attribute.name; + globalAttributes[tempWidget.origName] = { + tpl: "{"+tempWidget.origName+"}" + }; } else { tempWidget.origName = i; tempWidget.name = i; diff --git a/app/Locale.js b/app/Locale.js index 74db3cb4..798ddfff 100644 --- a/app/Locale.js +++ b/app/Locale.js @@ -68,10 +68,10 @@ Ext.define('LIME.Locale', { getString: function(name, scope) { if (scope && this.pStrings[scope]) { if(this.pStrings[scope][this.lang]) - return this.pStrings[scope][this.lang][name]; + return this.pStrings[scope][this.lang][name] || name; if(this.pStrings[scope][this.getDefaultLang()]) - return this.pStrings[scope][this.getDefaultLang()][name]; + return this.pStrings[scope][this.getDefaultLang()][name] || name; } return this.strings[name]; }, diff --git a/app/Statics.js b/app/Statics.js index 30fb14a2..ea1afbae 100644 --- a/app/Statics.js +++ b/app/Statics.js @@ -75,7 +75,6 @@ Ext.define('LIME.Statics', { internalClass : 'internalMetadata' }, - /** * @property {Object} widgetTypePatterns * Object used as dictionary for translation of widget type in ext xtypes @@ -85,7 +84,8 @@ Ext.define('LIME.Statics', { date : "datefield", number: 'numberfield', doctype: 'docTypeSelector', - nationality: 'nationalitySelector' + nationality: 'nationalitySelector', + list: 'combo' }, /** * @property {Object} treeIcon @@ -128,7 +128,21 @@ Ext.define('LIME.Statics', { languageLoaded: 'languageLoaded', selectDocument: 'selectDocument', beforeCreation: 'beforeCreation', - nodeChangedExternally: 'nodeChangedExternally' + nodeChangedExternally: 'nodeChangedExternally', + openDocument: 'openDocument', + addMarkingGroup: 'addMarkingGroup', + addMarkingButton: 'addMarkingButton', + setCustomMarkingHandler: "setCustomMarkingHandler", + editorDomNodeFocused: "editorDomNodeFocused", + nodeFocusedExternally: "nodeFocusedExternally", + unmarkNodes: "unmarkNodes", + unmarkedNodes: "unmarkedNodes", + nodeAttributesChanged: "nodeAttributesChanged", + showContextMenu: "showContextMenu", + registerContextMenuBeforeShow: "registerContextMenuBeforeShow", + openCloseContextPanel: "openCloseContextPanel", + addContextPanelTab: "addContextPanelTab", + removeGroupContextPanel: "removeGroupContextPanel" }, services: { @@ -145,7 +159,6 @@ Ext.define('LIME.Statics', { saveAs : 'SAVE_FILE', listFiles: 'LIST_FILES', fileToHtml: 'FILE_TO_HTML', - fileToString: 'FILE_TO_STRING', userManager: 'USER_MANAGER', userPreferences: 'USER_PREFERENCES', createDocumentCollection: 'CREATE_DOCUMENT_COLLECTION', diff --git a/app/Utilities.js b/app/Utilities.js index fb60d248..fb1c96c7 100644 --- a/app/Utilities.js +++ b/app/Utilities.js @@ -100,7 +100,7 @@ Ext.define('LIME.Utilities', { // get the url for the requested service var requestedServiceUrl = this.ajaxUrls['baseUrl'] + '?'; - // itereate throuhg the params + // itereate through the params for (param in params) { // create the request url requestedServiceUrl = requestedServiceUrl + param + '=' + encodeURI(params[param]) + '&'; @@ -368,8 +368,9 @@ Ext.define('LIME.Utilities', { current = json[obj]; if (obj.indexOf('@') == 0){ // Set attribute (if the value is null use the XML strict boolean value repeating the name of the attribute) - root.setAttribute(obj.substr(1), (!current)? obj.substr(1) : current); - } else { + //root.setAttribute(obj.substr(1), (!current)? obj.substr(1) : current); + root.setAttribute(obj.substr(1), (!current)? "" : current); + } else if(obj.charAt(0) != "!") { // Append new div and call the conversion on it if (current){ if (Ext.isString(current)){ @@ -422,6 +423,28 @@ Ext.define('LIME.Utilities', { return root; }, + globalIndexOf: function(substring, string) { + var a=[],i=-1; + while((i=string.indexOf(substring,i+1)) >= 0) a.push(i); + return a; + }, + + removeNodeByQuery: function(root, query) { + var node = root.querySelector(query); + if(node && node.parentNode) { + node.parentNode.removeChild(node); + } + return node; + }, + + replaceChildByQuery: function(root, query, newChild) { + var oldChild = root.querySelector(query); + if (oldChild && oldChild.parentNode) { + oldChild.parentNode.replaceChild(newChild, oldChild); + } + return oldChild; + }, + createWidget: function(name, config) { var widget; try { @@ -429,6 +452,52 @@ Ext.define('LIME.Utilities', { } catch(e) { } return widget; + }, + + pushOrValue: function(target, element) { + var result = target; + if(Ext.isArray(target)) { + result.push(element); + } else if (Ext.isEmpty(target)) { + result = element; + } else { + result = [target]; + result.push(element); + } + return result; + }, + + getLastItem: function(array) { + return array[array.length-1]; + }, + + filterUrls: function(reqUrls, content, success, failure, scope) { + var params = { + requestedService : Statics.services.filterUrls, + urls : Ext.encode(reqUrls) + }; + if(content) { + params = Ext.merge(params, {content: true}); + } + Ext.Ajax.request({ + // the url of the web service + url : Utilities.getAjaxUrl(), + method : 'POST', + params : params, + scope : this, + success : function(result, request) { + var newUrls = Ext.decode(result.responseText, true); + if (Ext.isFunction(success) && newUrls) { + Ext.bind(success, scope)(newUrls); + } else if(Ext.isFunction(failure)) { + Ext.bind(failure, scope)(reqUrls); + } + }, + failure: function() { + if (Ext.isFunction(failure)) { + Ext.bind(failure, scope)(reqUrls); + } + } + }); } - }); diff --git a/app/controller/ContextInfoManager.js b/app/controller/ContextInfoManager.js new file mode 100644 index 00000000..95f1c732 --- /dev/null +++ b/app/controller/ContextInfoManager.js @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.ContextInfoManager', { + extend : 'Ext.app.Controller', + + views: ["LIME.view.main.ContextPanel", "LIME.view.main.editor.Path"], + refs : [{ + selector: 'contextPanel', + ref: 'contextPanel' + }, { + selector: 'mainEditorPath tool[type="up"]', + ref: 'cxtPanelUpDownTool' + }], + + tabGroups: {}, + enabledGroup: null, + + /* + * + * Opens the context panel + * @param {Number/String} height The height of the panel it can be: + * undefined - set the maximum height, + * number - set height in pixel + * string - if passed "lastHeight" it doesn't change the height + * */ + + openContextPanel: function(height) { + var tool = this.getCxtPanelUpDownTool(), + contextPanel= this.getContextPanel(), + activatedTab, firstTab, + groupCmp = this.getGroupCmp(); + + if(groupCmp) { + activatedTab = groupCmp.getActiveTab(); + firstTab = groupCmp.down("panel"); + } + + if(height != "lastHeight") { + height = (Ext.isNumber(height)) ? height : contextPanel.maxHeight; + contextPanel.setHeight(height); + } + + contextPanel.show(); + tool.setType("down"); + + if(activatedTab) { + groupCmp.setActiveTab(activatedTab); + activatedTab.fireEvent("activate", activatedTab); + } else if(firstTab) { + groupCmp.setActiveTab(firstTab); + firstTab.fireEvent("activate", firstTab); + } + }, + + closeContextPanel: function() { + var tool = this.getCxtPanelUpDownTool(), + contextPanel= this.getContextPanel(); + + contextPanel.hide(); + tool.setType("up"); + }, + + openTabGroup: function(groupToEnable) { + var me = this, contextPanel= me.getContextPanel(); + groupToEnable = groupToEnable || me.enabledGroup || Ext.Object.getKeys(me.tabGroups)[0]; + + // Remove elements from previous group + if(me.enabledGroup && me.enabledGroup != groupToEnable) { + me.removeElementsFromGroup(me.enabledGroup); + } + + if(groupToEnable && me.tabGroups[groupToEnable]) { + me.enabledGroup = groupToEnable; + if(!me.getGroupCmp(groupToEnable)) { + contextPanel.add(me.tabGroups[groupToEnable]); + } + me.tabGroups[groupToEnable].show(); + } + }, + + /* + * Opens or closes the context panel + * @param {Boolean} open True to open and False to close + * @param {String} groupToEnable The name of the group to open or close + * @param {Number/String} height The height of the panel it can be: + * undefined - set the maximum height, + * number - set height in pixel + * string - if passed "lastHeight" it doesn't change the height + * */ + openCloseContextPanel: function(open, groupToEnable, height) { + var me = this, contextPanel= me.getContextPanel(); + + open = (Ext.isBoolean(open)) ? open : ((contextPanel.isVisible()) ? false : true); + + if(open) { + me.openTabGroup(groupToEnable); + me.openContextPanel(height); + } else { + me.closeContextPanel(); + } + }, + + addTab: function(cmp) { + var me = this, newCmp = me.tabGroups[cmp.groupName], + contextPanel= this.getContextPanel(), + existingCmp, index; + + if(!me.tabGroups[cmp.groupName]) { + newCmp = Ext.widget("tabpanel", { + name: cmp.groupName, + border : 0 + }); + me.tabGroups[cmp.groupName] = newCmp; + } + existingCmp = newCmp.down("*[name='"+cmp.name+"']"); + if(existingCmp) { + index = newCmp.items.indexOf(existingCmp); + newCmp.remove(existingCmp); + newCmp.insert(index, cmp); + } else { + newCmp.add(cmp); + } + }, + + getGroupCmp: function(groupName) { + groupName = groupName || this.enabledGroup; + var contextPanel= this.getContextPanel(); + return contextPanel.down("*[name='"+groupName+"']"); + }, + + removeElementsFromGroup: function(groupName, destroy) { + var me = this, contextPanel= me.getContextPanel(), + groupCmp = me.getGroupCmp(groupName); + if(groupCmp) { + groupCmp.hide(); + if(destroy) { + contextPanel.remove(groupCmp); + delete me.tabGroups[groupName]; + } + } + }, + + removeGroup: function(groupName) { + var me = this; + me.removeElementsFromGroup(groupName, true); + me.closeContextPanel(); + }, + + init : function() { + var me = this; + + me.application.on(Statics.eventsNames.openCloseContextPanel, me.openCloseContextPanel, me); + me.application.on(Statics.eventsNames.removeGroupContextPanel, me.removeGroup, me); + me.application.on(Statics.eventsNames.addContextPanelTab, me.addTab, me); + + me.control({ + "mainEditorPath": { + afterrender: function(cmp) { + cmp.add({ + xtype:"tool", + type: 'up', + callback: function() { + me.openCloseContextPanel(null, null, "lastHeight"); + } + }); + } + }, + "contextPanel": { + afterrender: function(cmp) { + } + } + }); + } +}); diff --git a/app/controller/ContextMenu.js b/app/controller/ContextMenu.js new file mode 100644 index 00000000..835a2f53 --- /dev/null +++ b/app/controller/ContextMenu.js @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * This controller manages the context menu + */ + +Ext.define('LIME.controller.ContextMenu', { + extend : 'Ext.app.Controller', + + refs : [{ + ref : 'contextMenu', + selector : 'contextMenu' + }, { + ref : 'contextMenuItems', + selector : 'menuitem[cls=editor]' + }], + + menuItems: [{ + text : 'Unmark', + separator : true, + icon : 'resources/images/icons/delete.png', + menu : { + // TODO localize the text + items : [{ + id : "unmarkThis", + text : 'Unmark this element' + }, { + id : "unmarkAll", + text : 'Unmark this element and its children' + }] + } + }], + + beforeShowFns: [], + + showContextMenu: function(coordinates) { + var me = this, menu = this.getContextMenu(), + editor = me.getController("Editor"), + selectedNode = editor.getSelectedNode(); + menu.removeAll(); + Ext.each(me.menuItems, function(item) { + menu.add(item); + }); + + Ext.each(me.beforeShowFns, function(beforeShowFn) { + try { + beforeShowFn(menu, selectedNode); + } catch(e) { + Ext.log({ + level : "error" + }, e); + } + }); + + menu.showAt(coordinates); + }, + + registerContextMenuBeforeShow: function(beforeShowFn) { + var me = this; + if(Ext.isFunction(beforeShowFn) && me.beforeShowFns.indexOf(beforeShowFn) == -1) { + me.beforeShowFns.push(beforeShowFn); + } + }, + + init : function() { + var me = this, editor = me.getController("Editor"), + markerController = me.getController('Marker'); + //Listening progress events + me.application.on(Statics.eventsNames.showContextMenu, me.showContextMenu, me); + me.application.on(Statics.eventsNames.registerContextMenuBeforeShow, me.registerContextMenuBeforeShow, me); + + me.control({ + // Handle the context menu + 'contextMenu menuitem' : { + /* TODO Distinguere i due casi basandosi sui due bottoni */ + click : function(cmp, e) { + var parentXtype = cmp.parentMenu.getXType(), id = cmp.id, + selectedNode = editor.getSelectedNode(true); + + // Call the unmark only with one of the inner buttons + if (parentXtype != "contextMenu") { + try { + // Differentiate between the types of action that have to be performed by looking at the id of the pressed button + switch(id) { + case "unmarkThis": + me.application.fireEvent(Statics.eventsNames.unmarkNodes, [selectedNode]); + break; + case "unmarkAll": + me.application.fireEvent(Statics.eventsNames.unmarkNodes, [selectedNode], true); + break; + } + } catch(e) { + Ext.log({ + level : "error" + }, e); + } + } else { + /* TODO Don't let the menu hide when the main item is clicked */ + } + } + } + }); + } +}); diff --git a/app/controller/CustomizationManager.js b/app/controller/CustomizationManager.js index fbb4fb02..2a66baf0 100644 --- a/app/controller/CustomizationManager.js +++ b/app/controller/CustomizationManager.js @@ -53,7 +53,7 @@ Ext.define('LIME.controller.CustomizationManager', { extend : 'Ext.app.Controller', - views : ['MarkingMenu', 'Ext.ux.Iframe'], + views : ['DocumentLangSelector', 'LocaleSelector', 'MarkingMenu', 'Ext.ux.Iframe'], customCallbacks : {}, @@ -115,7 +115,7 @@ Ext.define('LIME.controller.CustomizationManager', { item = mainToolbar.addMenuItem(config, menuConfig); if(item) { me.customMenuItems[controller.id] = me.customMenuItems[controller.id] || []; - me.customMenuItems[controller.id].push(item); + me.customMenuItems[controller.id].push(item); } }, @@ -133,7 +133,7 @@ Ext.define('LIME.controller.CustomizationManager', { me.application.on(Statics.eventsNames.languageLoaded, me.onLanguageLoaded, me); me.application.on(Statics.eventsNames.beforeCreation, me.beforeCreation, me); me.application.on("addMenuItem", me.addMenuItem, me); - + Config.beforeSetLanguage = function(lang, callback) { if (Config.customControllers) { Ext.each(Config.customControllers, function(controller) { @@ -144,12 +144,35 @@ Ext.define('LIME.controller.CustomizationManager', { } Ext.callback(callback); }; - + + var loadDefaultPlugin = function () { + Ext.defer(me.onLanguageLoaded, 2000, me); + } + if (Config.loaded) { + loadDefaultPlugin(); + } else { + Config.afterDefaultLoaded = loadDefaultPlugin; + } + me.control({ 'markingMenu' : { afterrender : function(cmp) { me.callCallback(cmp, "afterCreation"); } + }, + 'docLangSelector': { + afterrender: function(cmp) { + if(Config.fieldsDefaults[cmp.name]) { + cmp.setValue(Config.fieldsDefaults[cmp.name]); + } + } + }, + 'docLocaleSelector': { + afterrender: function(cmp) { + if(Config.fieldsDefaults[cmp.name]) { + cmp.setValue(Config.fieldsDefaults[cmp.name]); + } + } } }); } diff --git a/app/controller/Editor.js b/app/controller/Editor.js index b5c075b2..c42ea336 100644 --- a/app/controller/Editor.js +++ b/app/controller/Editor.js @@ -1,40 +1,40 @@ /* * Copyright (c) 2014 - Copyright holders CIRSFID and Department of * Computer Science and Engineering of the University of Bologna - * - * Authors: + * + * Authors: * Monica Palmirani – CIRSFID of the University of Bologna * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna * Luca Cervone – CIRSFID of the University of Bologna - * + * * Permission is hereby granted to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: - * + * * The Software can be used by anyone for purposes without commercial gain, * including scientific, individual, and charity purposes. If it is used * for purposes having commercial gains, an agreement with the copyright * holders is required. The above copyright notice and this permission * notice shall be included in all copies or substantial portions of the * Software. - * + * * Except as contained in this notice, the name(s) of the above copyright * holders and authors shall not be used in advertising or otherwise to * promote the sale, use or other dealings in this Software without prior * written authorization. - * + * * The end-user documentation included with the redistribution, if any, * must include the following acknowledgment: "This product includes * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, + * Computer Science and Engineering) and its authors (Monica Palmirani, * Fabio Vitali, Luca Cervone)", in the same place and form as other * third-party acknowledgments. Alternatively, this acknowledgment may * appear in the software itself, in the same form and location as other * such third-party acknowledgments. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -49,15 +49,15 @@ * This controller takes care of manipulating the text area reserved for the * actual document. It also provides a useful interface for getting and putting data * through a lot of getter and setter and utility methods. - * + * * It also includes the path view where the current hierarchy (starting from the selected * node and going up) can be easily seen. */ Ext.define('LIME.controller.Editor', { - + extend : 'Ext.app.Controller', - views : ['main.Editor', 'Explorer', 'main.editor.Path', 'modal.NewDocument'], + views : ['main.Editor', 'Explorer', 'main.editor.Path', 'main.editor.Uri','modal.NewDocument'], refs : [{ ref : 'mainEditor', @@ -71,7 +71,7 @@ Ext.define('LIME.controller.Editor', { }, { ref : 'contextMenuItems', selector : 'menuitem[cls=editor]' - }, + }, { ref : 'explorer', selector : 'explorer' @@ -88,26 +88,26 @@ Ext.define('LIME.controller.Editor', { ref : 'codemirror', selector : 'codemirror' }], - + constructor : function(){ /** - * @property {HTMLElement} lastFocused The last focused element + * @property {HTMLElement} lastFocused The last focused element */ this.lastFocused = null; - + /** - * @property {Object} defaultElement - * The default element that wraps the content of the editor (compatible with Ext.DomHelper) + * @property {Object} defaultElement + * The default element that wraps the content of the editor (compatible with Ext.DomHelper) */ this.defaultElement = { tag : 'div' }; - + this.callParent(arguments); }, - + documentTempConfig: {}, - + /** * Returns a reference to the ExtJS component * that contains the editor plugin. @@ -125,7 +125,7 @@ Ext.define('LIME.controller.Editor', { getEditor : function() { return this.getEditorComponent().getEditor(); }, - + /** * Returns the editor iframe container. Useful for positioning. * **Warning**: this method only works with those editor which support an @@ -135,23 +135,23 @@ Ext.define('LIME.controller.Editor', { getIframe : function(){ return this.getEditorComponent().iframeEl; }, - - /** + + /** * Returns the real height of the editor body. - * @returns {Number} The height + * @returns {Number} The height */ getHeight : function(){ return this.getIframe().getHeight(); }, - - /** + + /** * Returns the real height of the editor body. - * @returns {Number} The width + * @returns {Number} The width */ getWidth : function(){ return this.getIframe().getWidth(); }, - + /** * Returns the editor DOM position inside the whole page (main DOM). * @returns {Array} The coordinates of the position as an array (i.e. [x,y]) @@ -182,14 +182,14 @@ Ext.define('LIME.controller.Editor', { //Return the serializer of active editor instead a new serializer return tinymce.activeEditor.serializer; }, - + /** * Returns the serialized string of passed HTMLElement * @param {HTMLElement} element to serialize * @returns {String} */ serialize : function(dom){ - return this.getSerializer().serialize(dom); + return this.getSerializer().serialize(dom); }, /** @@ -211,7 +211,7 @@ Ext.define('LIME.controller.Editor', { /** * Returns the selection range expressed in characters. For example if the * selection starts at the character i and ends - * after j characters from the beginning of the row the range will be [i,j] + * after j characters from the beginning of the row the range will be [i,j] * @returns {Number[]} [start, end] The array containing the start and end of the range */ getSelectionRange : function() { @@ -219,6 +219,15 @@ Ext.define('LIME.controller.Editor', { return range; }, + showDocumentUri: function(docId) { + var editorContainer = this.getMainEditor().up(), title, main = this.getMain(), + uri = DocProperties.getDocumentUri(); + //!docId || !Ext.isString(docId) || DocProperties.isAutosaveId(docId) || + uri = (!uri) ? Locale.getString("newDocument") : uri; + editorContainer.tab.setTooltip(uri); + main.down("mainEditorUri").setUri(uri); + }, + /** * Allows to apply the given pattern * to the whole selection. Be careful when used with non-inline patterns @@ -233,10 +242,10 @@ Ext.define('LIME.controller.Editor', { tinymce.activeEditor.formatter.register(patternName, patternProperties); tinymce.activeEditor.formatter.apply(patternName); var searchRoot = this.getBody(); - var marked = Ext.query('span[class*=' + DomUtils.tempSelectionClass + ']', searchRoot); + var marked = Ext.query('span[class*=' + patternProperties.classes + ']', searchRoot); return marked; }, - + /** * Dispatcher for the focus events. It distinguishes * between a single node and an array of them. @@ -244,11 +253,11 @@ Ext.define('LIME.controller.Editor', { * all the actions are applied (this avoids a waste of resources to repeat * the same actions even on the other nodes without a useful result). * @param {HTMLElement/HTMLElement[]/String} nodes The node(s) to focus - * @param {Object} actions The actions that have to be performed on the node(s), e.g. click, scroll, select and + * @param {Object} actions The actions that have to be performed on the node(s), e.g. click, scroll, select and */ focus : function(nodes, actions){ var markedAscendant, - lastNode; + lastNode; if (Ext.isString(nodes)){ //This means that "nodes" is an node id nodes = Ext.query("#"+nodes,this.getBody()); @@ -277,24 +286,24 @@ Ext.define('LIME.controller.Editor', { /** * This function focuses the given node and performs the given actions on it. - * There's a big difference with the focus method since this one only applies on a + * There's a big difference with the focus method since this one only applies on a * single node and performs all the given actions on it, while the second * uses this method to apply all the actions only on the last node given in the array. * The actions that can be performed are: - * + * * * click: simulate a click event on the given node * * select: highlight the node in the view * * change: state that the focused node has changed in some way (value, attributes etc.) * * scroll: scroll the view to the given node - * + * * An example of actions object is the following: - * + * * { * // Set to true only the ones to perform * click : true, * select : true * } - * + * * @param {HTMLElement} node The dom node to focus * @param {Object} actions The actions to perform */ @@ -321,15 +330,20 @@ Ext.define('LIME.controller.Editor', { if (actions.click) { this.application.fireEvent('editorDomNodeFocused', node); } - + }, - + /** * Just select the given node in the editor * @param {HTMLElement} node The node to highlight */ - selectNode : function(node) { - this.getEditor().selection.select(node); + selectNode : function(node, content) { + content = (content == undefined) ? true : content; + this.getEditor().selection.select(node, content); + }, + + setCursorLocation: function(node, offset) { + this.getEditor().selection.setCursorLocation(node, offset); }, /** @@ -341,7 +355,7 @@ Ext.define('LIME.controller.Editor', { }, /** - * This function set an attribute to the given element or + * This function set an attribute to the given element or * the given id of the element * using name as its name and value as its value. * @param {HTMLElement/String} element The node or its id @@ -350,31 +364,33 @@ Ext.define('LIME.controller.Editor', { * @returns {Boolean} true if the attribute was changed, false otherwise */ setElementAttribute : function(elementId, name, value) { - var element = elementId; + var element = elementId, oldValue, chaged = false; var newElement = (Ext.isString(element))? Ext.query("*["+DomUtils.elementIdAttribute+"="+element+"]", this.getDom())[0] : element; if (newElement) { - //set attribute that has the same name of field - newElement.setAttribute(name, value); - /* Prevent from inserting empty attributes */ - if (value == "") { - newElement.removeAttribute(name); - } - this.getEditorComponent().fireEvent('change', this.getEditor()); - return true; - } else { - return false; + oldValue = newElement.getAttribute(name); + if(oldValue != value) { + //set attribute that has the same name of field + newElement.setAttribute(name, value); + /* Prevent from inserting empty attributes */ + if (value == "") { + newElement.removeAttribute(name); + } + this.getEditorComponent().fireEvent('change', this.getEditor()); + chaged = newElement; + } } + return chaged; }, /** * Returns the currently selected text in the format requested. * **Warning**: no checks are performed on the given format but * it should be one of the following: - * + * * * html (default) * * raw * * text - * + * * **Warning**: this method heavily relies on what editor is used (tested with tinyMCE) * @param {String} [formatType] The format of the selection */ @@ -395,7 +411,7 @@ Ext.define('LIME.controller.Editor', { getBody : function() { return this.getEditor().getBody(); }, - + /** * Returns a reference to the dom of the editor. * This method is very useful when separated-dom editors are used (such as tinyMCE). @@ -413,16 +429,41 @@ Ext.define('LIME.controller.Editor', { var doc = this.getDom().documentElement; return DomUtils.serializeToString(doc); }, - + + getDocumentElement: function() { + var me = this, body = me.getBody(); + return body.querySelector("*[class~='"+DocProperties.documentBaseClass+"']"); + }, + + getCurrentDocId: function() { + var doc = this.getBody(), + docEl = doc.querySelector("["+DocProperties.docIdAttribute+"]"); + if(docEl) { + return docEl.getAttribute(DocProperties.docIdAttribute); + } + return null; + }, + + getDocumentMetadata: function(docId) { + var result = {}; + docId = docId || this.getCurrentDocId(); + result.originalMetadata = DocProperties.docsMeta[docId]; + if(result.originalMetadata) { + result.obj = DomUtils.nodeToJson(result.originalMetadata.metaDom); + return result; + } + return null; + }, + /** * Returns the currently selected node or one of its ascendants * found by looking at two possible conditions given as arguments: either * a generic marked node or a node with a particular tag name (e.g. * div, span, p etc.). - * + * * **Warning**: the two arguments are mutually exclusive and more * priority is given to the first one but both are optional. - * + * * @param {Boolean} [marked] * @param {String} [elementName] * @return {HTMLElement} The selected/found element @@ -438,29 +479,30 @@ Ext.define('LIME.controller.Editor', { } }, + /** * This method returns an object containing many things: - * + * * * text : the content of the selected text * * node : the selected node * * start : the first node of the selected nodes * * end : the last node of the selected nodes - * + * * All the involved nodes are retrieved depending on the given arguments. * Thus you can specify: what should the format of the text be, what * tag name should the retrieved nodes have and if start and end should be * at the same nesting level. - * + * * The tag name of the nodes can be specified as an object: - * + * * { * start : "div", * end : "p", * current : "span", * } - * + * * Non specified names are simply ignored. - * + * * @param {String} [formatType] The format of the selected text * @param {Object} [nodeNames] The names of the nodes * @param {Boolean} [sameLevel] If true start or end is brought to the same (upper) level as the other one @@ -512,7 +554,7 @@ Ext.define('LIME.controller.Editor', { /** * Returns the whole content of the editor (__not__ the selection). - * + * * **Warning**: this method heavily depends on what editor is used. * @param {String} formatType Specify the format of the output (html, raw, text etc.) */ @@ -523,7 +565,7 @@ Ext.define('LIME.controller.Editor', { format : formatType }); }, - + /** * Given a css selector, an object with some css properties and * the name of a button (to match the class of marked elements) @@ -554,16 +596,32 @@ Ext.define('LIME.controller.Editor', { } }, - - onPluginLoaded : function(data) { + + onPluginLoaded : function(data, styleUrls) { var markingMenuController = this.getController('MarkingMenu'), mainToolbarController = this.getController('MainToolbar'), app = this.application, config = this.documentTempConfig; + this.addStyles(styleUrls); app.fireEvent(Statics.eventsNames.languageLoaded, data); app.fireEvent(Statics.eventsNames.progressUpdate, Locale.strings.progressBar.loadingDocument); this.loadDocument(config.docText, config.docId, config.callback, config.initial); app.fireEvent(Statics.eventsNames.progressEnd); + config.docDom = this.getDom(); app.fireEvent(Statics.eventsNames.afterLoad, config); + this.setPath(this.getBody()); + this.showDocumentUri(config.docId); + }, + + addStyles: function(urls) { + var me = this, editorDom = me.getDom(), + head = editorDom.querySelector("head"); + Ext.each(urls, function(url) { + var link = editorDom.createElement("link"); + link.setAttribute("href", url); + link.setAttribute("rel", "stylesheet"); + link.setAttribute("type", "text/css"); + head.appendChild(link); + }); }, /** @@ -575,7 +633,7 @@ Ext.define('LIME.controller.Editor', { addContentStyle : function(selector, styleText) { DomUtils.addStyle(selector, styleText, this.getDom()); }, - + beforeLoadDocument: function(config) { var initDocument = this.initDocument, me = this, loaded = false; if (!config.docMarkingLanguage && me.getStore('MarkupLanguages').count() == 1) { @@ -589,15 +647,15 @@ Ext.define('LIME.controller.Editor', { //Before load me.application.fireEvent(Statics.eventsNames.beforeLoad, config, function(newConfig) { initDocument(newConfig, me); - }); + }); } else { - initDocument(config, me); + initDocument(config, me); } - + }); loaded = true; } - } + } if(!loaded) { var newDocumentWindow = Ext.widget('newDocument'); // TODO: temporary solution @@ -606,9 +664,9 @@ Ext.define('LIME.controller.Editor', { newDocumentWindow.show(); } }, - + initDocument : function(config, me) { - var me = me || this, app = me.application; + var me = me || this, app = me.application, docType; if (!config.docType || !config.docLang || !config.docLocale) { var newDocumentWindow = Ext.widget('newDocument'); // TODO: temporary solution @@ -619,14 +677,16 @@ Ext.define('LIME.controller.Editor', { DocProperties.documentInfo.docType = config.docType; DocProperties.documentInfo.docLang = config.docLang; DocProperties.documentInfo.docLocale = config.docLocale; + DocProperties.documentInfo.originalDocId = config.originalDocId; DocProperties.documentInfo.docMarkingLanguage = config.docMarkingLanguage; - + me.documentTempConfig = config; me.getStore('LanguagesPlugin').addListener('filesloaded', me.onPluginLoaded, me); - - app.fireEvent(Statics.eventsNames.progressStart, null, {value:0.1, text: Locale.strings.progressBar.loadingDocument}); + + app.fireEvent(Statics.eventsNames.progressStart, null, {value:0.1, text: Locale.strings.progressBar.loadingDocument}); + docType = Ext.isString(config.alternateDocType) ? config.alternateDocType : config.docType; Ext.defer(function() { - me.getStore('LanguagesPlugin').loadPluginData(app, config.docType, config.docLocale); + me.getStore('LanguagesPlugin').loadPluginData(app, docType, config.docLocale); }, 200, me); }, @@ -653,10 +713,10 @@ Ext.define('LIME.controller.Editor', { } //Remove all previous document proprieties DocProperties.removeAll(); - // Clear previous undo levels + // Clear previous undo levels editor.undoManager.clear(); editor.setContent(docText); // Add a space, empty content prevents other views from updating - + // Add an undo level editor.undoManager.add(); //Parse the new document and build documentProprieties @@ -672,38 +732,50 @@ Ext.define('LIME.controller.Editor', { select : true, scroll : true, click : true - }); + }); } - } - }; + } + }; Ext.each(noteLinkers, function(linker) { linker.onclick = clickLinker; - }, this); + }, this); Ext.each(markedElements, function(element, index) { var elId = element.getAttribute(DomUtils.elementIdAttribute), newElId; + var nameAttr = element.getAttribute(LanguageController.getLanguagePrefix()+'name'); var buttonId = DomUtils.getButtonIdByElementId(elId); var button = Ext.getCmp(buttonId); if (!button) { if (elId.indexOf(DomUtils.elementIdSeparator)==-1) { - var buttons = markingMenu.getButtonsByName(elId) || - markingMenu.getButtonsByName(element.getAttribute(LanguageController.getLanguagePrefix()+'name')), - buttonKeys; - if(buttons) { - buttonKeys = Ext.Object.getKeys(buttons); - if(buttonKeys.length) { - buttonId = buttonKeys[0]; - button = buttons[buttonId]; - elId = marker.getMarkingId(buttonId); + var parent = DomUtils.getFirstMarkedAncestor(element.parentNode); + if(parent) { + var buttonParent = DomUtils.getButtonByElement(parent); + if(buttonParent) { + button = buttonParent.getChildByName(elId) || buttonParent.getChildByName(nameAttr); + } + } + if(!button) { + var buttons = markingMenu.getButtonsByName(elId) || + markingMenu.getButtonsByName(nameAttr), + buttonKeys; + if(buttons) { + buttonKeys = Ext.Object.getKeys(buttons); + if(buttonKeys.length) { + buttonId = buttonKeys[0]; + button = buttons[buttonId]; + elId = marker.getMarkingId(buttonId); + } } - } + } else { + elId = marker.getMarkingId(button.id); + } } if (!button) { Ext.MessageBox.alert("FATAL ERROR!!", "The button with id " + buttonId + " is missing!"); - return; + return; } } - + DocProperties.setMarkedElementProperties(elId, { button : button, htmlElement : element @@ -712,11 +784,14 @@ Ext.define('LIME.controller.Editor', { element.removeAttribute('style'); element.setAttribute(DomUtils.elementIdAttribute, elId); // Widget is created on demand for performance reasons - // button.showWidget(elId, null, null, "hidden"); var styleClass = button.waweConfig.pattern.wrapperClass; this.applyAllStyles('*[class="' + styleClass + '"]', button.waweConfig.pattern.wrapperStyle, button.waweConfig.shortLabel); + var isBlock = DomUtils.blockTagRegex.test(button.waweConfig.pattern.wrapperElement); + if(isBlock){ + marker.addBreakingElements(element); + } }, this); - + if (Ext.isString(docId)) { // save the id of the currently opened file DocProperties.setDocId(docId); @@ -727,7 +802,7 @@ Ext.define('LIME.controller.Editor', { /** * Replace the whole content of the editor with the given string. - * + * * **Warning**: do NOT use this method to load text. Please refer to * {@link LIME.controller.Editor#loadDocument} that will perform additional checks. * @param {newContent} The content that has to be set @@ -740,10 +815,10 @@ Ext.define('LIME.controller.Editor', { /** * Replace the given old node(s) with the new one. - * + * * Note that this method can also replace an array of * siblings with a single node. - * + * * **Warning**: this method doesn't check if the given nodes are siblings! * @param {HTMLElement} newNode * @param {HTMLElement/HTMLElement[]} oldNodes @@ -759,7 +834,7 @@ Ext.define('LIME.controller.Editor', { } return newNode; }, - + /** * Split the content into many chunks to be saved (e.g. cookies max size is 4095 bytes) * @param {String} content The content to be split @@ -772,20 +847,20 @@ Ext.define('LIME.controller.Editor', { var toSplit = content; while (toSplit.length > chunkSize){ var chunk = toSplit.split(chunkSize); - + } }, - + saveDocument: function(config) { var editor = this; this.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { xml = xml.replace('', ''); editor.saveDocumentText(xml, config); - }, {complete: true}); + }, {complete: true}); }, - + /** - * This is a wrapper for Language.saveDocument function + * This is a wrapper for Language.saveDocument function */ saveDocumentText: function(text, config) { var app = this.application, @@ -804,9 +879,9 @@ Ext.define('LIME.controller.Editor', { metadataString, xmlSerializer = new XMLSerializer(), uriTpl = new Ext.Template('/{nationality}/{docType}/{date}/{number}/{docLang}@/{docName}'), - uriPartialTmp = new Ext.Template('/{docLang}@/{docName}'), + uriPartialTmp = new Ext.Template('/{docLang}@/{docName}'), saveWindow = (config)? config.view : null, partialUrl; - + // Fill the values to be used to compile the template if (config.path) { docUrl = config.path; @@ -819,29 +894,29 @@ Ext.define('LIME.controller.Editor', { } else { // TODO: don't call this every autosave metadataDom = languageController.buildInternalMetadata(true); - } - + } + // Before saving app.fireEvent(Statics.eventsNames.beforeSave, { editorDom: editorDom, metadataDom: metadataDom, documentInfo: DocProperties.documentInfo }); - + try { metadataString = xmlSerializer.serializeToString(metadataDom); } catch(e) { metadataString = Ext.emptyString; } - - + + params = { userName : userInfo.username, fileContent : text, metadata: metadataString }; - + // Saving phase app.fireEvent(Statics.eventsNames.saveDocument, docUrl, params, function(response, docUrl) { var responseText = response.responseText, jsonData; @@ -849,13 +924,13 @@ Ext.define('LIME.controller.Editor', { responseText = responseText.substring(0, (responseText.length-1)); } jsonData = JSON.parse(responseText); - + // If it's an autosave don't show anything if (!config || !config.autosave) { if (saveWindow){ saveWindow.close(); } - + var msgTpl = Locale.strings.savedToTpl; Ext.Msg.alert({ title : Locale.strings.saveAs, @@ -863,16 +938,16 @@ Ext.define('LIME.controller.Editor', { docName : docName, docUrl : docUrl.replace(docName, '') }) - }); + }); } - + // After saving app.fireEvent(Statics.eventsNames.afterSave, { editorDom: editorDom, metadataDom: metadataDom, documentInfo: DocProperties.documentInfo }); - + // Save as the last opened if (jsonData.path) { // Set the current file's id @@ -882,7 +957,7 @@ Ext.define('LIME.controller.Editor', { }); } }); - + }, /** @@ -909,12 +984,16 @@ Ext.define('LIME.controller.Editor', { tinyInit : function(editor, autoSaveContent) { /* The context is the one from the plugin! */ var tinyautosave = this, - mainToolbarController = editor.getController('MainToolbar'); + mainToolbarController = editor.getController('MainToolbar'); tinyautosave.onPreSave = autoSaveContent; - userPreferences = editor.getController('PreferencesManager').getUserPreferences(); + userPreferences = editor.getController('PreferencesManager').getUserPreferences(), + storage = editor.getController('Storage'); /* Load exemple document if there is no saved document */ if (!userPreferences.lastOpened) { + /*Config.setLanguage(Config.languages[0].name, function() { + editor.application.fireEvent(Statics.eventsNames.languageLoaded, {}); + });*/ Ext.Ajax.request({ url : Statics.editorStartContentUrl, success : function(response) { @@ -938,6 +1017,7 @@ Ext.define('LIME.controller.Editor', { html : response.responseText }, { xtype : 'button', + cls: "bigButton", text : Locale.strings.continueStr, style : { width : '150px', @@ -952,12 +1032,13 @@ Ext.define('LIME.controller.Editor', { }).show(); } }); + } else { editor.restoreSession(); } }, - - + + /* -------------- Events handlers ---------------- */ /** @@ -989,6 +1070,21 @@ Ext.define('LIME.controller.Editor', { this.getMain().down('mainEditorPath').setPath(elements); }, + onNodeClick: function(selectedNode) { + var body = this.getBody(); + + Ext.each(body.querySelectorAll("*["+DocProperties.elementFocusedCls+"]"), function(node) { + //Ext.fly(node).removeCls(DocProperties.elementFocusedCls); + node.removeAttribute(DocProperties.elementFocusedCls); + }); + if(selectedNode) { + this.setPath(selectedNode); + //Ext.fly(selectedNode).addCls(DocProperties.elementFocusedCls); + selectedNode.setAttribute(DocProperties.elementFocusedCls, "true"); + } + + }, + /** * Restore a previously opened document by settings the appropriate * document properties and content taking them from the HTML5 localStorage object @@ -1003,59 +1099,33 @@ Ext.define('LIME.controller.Editor', { storage.openDocument(userPreferences.lastOpened); } }, - + disableEditor: function() { - this.getBody().setAttribute('contenteditable', false); + this.getBody().setAttribute('contenteditable', false); }, - + enableEditor: function() { this.getBody().setAttribute('contenteditable', true); }, - + /* Initialization of the controller */ init : function() { - + // Set the event listeners this.application.on({ nodeFocusedExternally : this.focus, nodeChangedExternally : this.focus, - editorDomNodeFocused : this.setPath, + editorDomNodeFocused : this.onNodeClick, scope : this }); this.application.on(Statics.eventsNames.loadDocument, this.beforeLoadDocument, this); this.application.on(Statics.eventsNames.disableEditing, this.disableEditor, this); this.application.on(Statics.eventsNames.enableEditing, this.enableEditor, this); - + // save a reference to the controller var editorController = this; var markerController = this.getController('Marker'); this.control({ - - // Handle the context menu - 'contextMenu menuitem' : { - /* TODO Distinguere i due casi basandosi sui due bottoni */ - click : function(cmp, e) { - var parentXtype = cmp.parentMenu.getXType(), - id = cmp.id; - // Call the unmark only with one of the inner buttons - if (parentXtype != "contextMenu"){ - try{ - // Differentiate between the types of action that have to be performed by looking at the id of the pressed button - switch(id){ - case "unmarkThis": markerController.unmark(this.getSelectedNode()); - break; - case "unmarkAll": markerController.unmark(this.getSelectedNode(), true); - break; - } - }catch(e){ - Ext.log({level: "error"}, e); - } - } else { - /* TODO Don't let the menu hide when the main item is clicked */ - } - } - }, - // Handle the path panel 'mainEditorPath' : { update : function() { @@ -1074,25 +1144,72 @@ Ext.define('LIME.controller.Editor', { }, this); } }, - + + 'mainEditorUri' : { + update : function() { + var me = this; + Ext.select(".uriSelector").on("click", function(evt, el) { + var elId = el.getAttribute("id"); + if (elId) { + me.application.fireEvent(Statics.eventsNames.openDocument, config = {path: elId}); + } + }, this); + } + }, + // Handle the viewable events on the editor (click, contextmenu etc.) 'mainEditor' : { click : function(ed, e, selectedNode) { - var me = this; + var me = this, + toMarkNodes = me.getBody().querySelectorAll("."+DomUtils.toMarkNodeClass); + + // Replace all empty toMarkNodes with breaking elements + Ext.each(toMarkNodes, function(node) { + if(Ext.isEmpty(DomUtils.getTextOfNode(node).trim())) { + if(node.parentNode) { + Ext.DomHelper.insertHtml('beforeBegin',node, DomUtils.getBreakingElementHtml()); + node.parentNode.removeChild(node); + } + } + }); + // Hide the context menu this.getContextMenu().hide(); if (Ext.Object.getSize(selectedNode)==0) { - selectedNode = editorController.getSelectedNode(true); + selectedNode = DomUtils.getFirstMarkedAncestor(e.target); + if(DomUtils.isBreakingNode(e.target)) { + var newElement = Ext.DomHelper.createDom({ + tag : 'div', + html : ' ', + cls: DomUtils.toMarkNodeClass + }); + e.target.parentNode.replaceChild(newElement, e.target); + this.setCursorLocation(newElement, 0); + if(selectedNode) { + this.lastFocused = selectedNode; + me.application.fireEvent('editorDomNodeFocused', selectedNode); + return; + } + } + } + + if(selectedNode) { + var editorNode = this.getSelectedNode(), + cls = editorNode.getAttribute("class"); + if((cls && cls != DomUtils.toMarkNodeClass) && + !DomUtils.isBreakingNode(editorNode) && editorNode != selectedNode) { + this.setCursorLocation(selectedNode, 0); + } + // Expand the selected node's related buttons + this.lastFocused = selectedNode; + me.application.fireEvent('editorDomNodeFocused', selectedNode); } - // Expand the selected node's related buttons - this.lastFocused = selectedNode; - me.application.fireEvent('editorDomNodeFocused', selectedNode); }, change : function(ed, e) { /* If the body node is not the default one wrap it */ var body = ed.getBody(), docCls = DocProperties.getDocClassList(), - documentTypeNode = Ext.query('*[class='+docCls+']', body)[0], + documentTypeNode = Ext.query('*[class='+docCls+']', body)[0], explorer = this.getExplorer(); if (!documentTypeNode) { /* Save a bookmark of the selection */ @@ -1116,7 +1233,19 @@ Ext.define('LIME.controller.Editor', { /* Warn of the change */ this.changed = true; }, - + + contextmenu : function(ed, e) { + var coordinates = [], + offsetPosition = this.getPosition(); + // Prevent the default context menu to show + e.preventDefault(); + // Compute the coordinates + //coordinates = [e.pageX+offsetPosition[0], e.pageY+offsetPosition[1]]; + coordinates = [e.clientX+offsetPosition[0], e.clientY+offsetPosition[1]]; + // Can't use Ext getXY because it's a tinymce event! + this.application.fireEvent(Statics.eventsNames.showContextMenu, coordinates); + }, + setcontent : function(ed, e) { var explorer = this.getExplorer(), body = this.getBody(), @@ -1141,34 +1270,37 @@ Ext.define('LIME.controller.Editor', { } else { var classAtt = documentTypeNode.getAttribute('class'); if (!classAtt || classAtt.indexOf(docCls)==-1) { - documentTypeNode.setAttribute('class', docCls); + documentTypeNode.setAttribute('class', docCls); } } /* Warn of the change */ this.changed = true; this.application.fireEvent('editorDomChange', body); }, - + beforerender : function() { - var me = this, editorView = me.getMainEditor(), tinyView = me.getEditorComponent(); - + var me = this, editorView = me.getMainEditor(), tinyView = me.getEditorComponent(), + marker = me.getController("Marker"); + // trick for a global scope (needed by the autosave plugin) __tinyInit = function() { var plugin = this; // Call 'tinyInit' with the plugin scope, pass 'autoSaveContent' with editor scope Ext.bind(me.tinyInit, plugin, [me, Ext.bind(me.autoSaveContent, me)])(); }; - + var tinyConfig = { tinymceConfig : { doctype : '', theme : "modern", schema: "html5", element_format : "xhtml", - forced_root_blocks: false, + force_br_newlines : true, + force_p_newlines : false, + forced_root_block : '', // Custom CSS content_css : 'resources/tiny_mce/css/content.css', - + // the editor mode mode : 'textareas', @@ -1182,14 +1314,16 @@ Ext.define('LIME.controller.Editor', { nonbreaking_force_tab: true, statusbar : false, // the enabled plugins in the editor - plugins : "compat3x, code, tinyautosave, table, link, image, searchreplace, jbimages", - + plugins : "compat3x, code, tinyautosave, table, link, image, searchreplace, jbimages, paste, noneditable", + + noneditable_leave_contenteditable: true, + valid_elements : "*[*]", // the language of tinymce language : Locale.getLang(), - toolbar: "undo redo | bold italic strikethrough | bullist numlist outdent indent | table | link image jbimages | searchreplace", + toolbar: "undo redo | bold italic strikethrough | superscript subscript | bullist numlist outdent indent | table | link image jbimages | searchreplace", // Events and callbacks @@ -1197,24 +1331,21 @@ Ext.define('LIME.controller.Editor', { editor.on('change', function(e) { editorView.fireEvent('change', editor, e); }); - + editor.on('setcontent', function(e) { editorView.fireEvent('setcontent', editor, e); }); - + editor.on('click', function(e) { // Fire a click event only if left mousebutton was used - if (e.which == 1){ + //if (e.which == 1){ editorView.fireEvent('click', editor, e); - } + //} }); - + editor.on('contextmenu', function(e) { editorView.fireEvent('contextmenu', editor, e); }); - - editor.on('paste', function(e) { - }); }, // set the controller of the autosave @@ -1223,12 +1354,12 @@ Ext.define('LIME.controller.Editor', { tinyautosave_interval_seconds : 10 } }; - + if (!WaweDebug) { - tinyConfig.tinymceConfig.menubar = false; + tinyConfig.tinymceConfig.menubar = false; } /* Set the editor custom configuration */ - Ext.apply(tinyView, tinyConfig); + Ext.apply(tinyView, tinyConfig); } } }); diff --git a/app/controller/Explorer.js b/app/controller/Explorer.js index ca82e47f..c4191ba9 100644 --- a/app/controller/Explorer.js +++ b/app/controller/Explorer.js @@ -262,7 +262,13 @@ Ext.define('LIME.controller.Explorer', { init : function() { // Register for events this.application.on({ - editorDomChange : this.buildTree, + editorDomChange : function(node, config) { + try { + this.buildTree(node, config); + } catch(e) { + Ext.log({level: "error"}, e); + } + }, editorDomNodeFocused : this.expandItem, scope : this }); @@ -283,12 +289,12 @@ Ext.define('LIME.controller.Explorer', { } }, itemcontextmenu : function(view, rec, item, index, e, eOpts) { - var coordinates = [], contextMenu = this.getContextMenu(); + var coordinates = []; // Prevent the default context menu to show e.preventDefault(); /*Fire an itemclick event to select the htmlNode in the editor*/ view.fireEvent('itemclick', view, rec, item, index, e, eOpts); - contextMenu.showAt(e.getXY()); + this.application.fireEvent(Statics.eventsNames.showContextMenu, e.getXY()); } } }); diff --git a/app/controller/Language.js b/app/controller/Language.js index ac64008c..43c9dd16 100644 --- a/app/controller/Language.js +++ b/app/controller/Language.js @@ -122,11 +122,21 @@ Ext.define('LIME.controller.Language', { var languageController = this, editorController = this.getController("Editor"), tmpElement = params.docDom, - extTmp = new Ext.Element(tmpElement), - unusedElements = extTmp.query(DomUtils.getTempClassesQuery()), - markedElements = extTmp.query("*[" + DomUtils.elementIdAttribute + "]"), + unusedElements = tmpElement.querySelectorAll(DomUtils.getTempClassesQuery()), + markedElements = tmpElement.querySelectorAll("*[" + DomUtils.elementIdAttribute + "]"), + focusedElements = tmpElement.querySelectorAll("."+DocProperties.elementFocusedCls), + langPrefix = languageController.getLanguagePrefix(), counters = {}; + if (DocProperties.frbrDom) { + var root = tmpElement.querySelector("*["+DocProperties.docIdAttribute+"]"); + var metaDom = Ext.clone(DocProperties.frbrDom); + metaDom.setAttribute("class", "meta"); + if (root && !root.querySelector("*[class*=meta]")) { + root.insertBefore(metaDom, root.firstChild); + } + } + // TODO: decide if this part is general for all languages or specific try { //Remove all unused elements @@ -137,10 +147,20 @@ Ext.define('LIME.controller.Language', { element.parentNode.removeChild(element); } }); + + Ext.each(focusedElements, function(node) { + Ext.fly(node).removeCls(DocProperties.elementFocusedCls); + }); + //Apply rules for all marked elements Ext.each(markedElements, function(element) { + var intId = element.getAttribute(DomUtils.elementIdAttribute), newId, + hrefElements = tmpElement.querySelectorAll("*["+langPrefix+"href = '#"+intId+"']"); //Set a language unique Id - DomUtils.setLanguageMarkingId(element, counters); + newId = languageController.setLanguageMarkingId(element, counters, tmpElement); + Ext.each(hrefElements, function(hrefElement) { + hrefElement.setAttribute(langPrefix+"href", "#"+newId); + }); Interpreters.wrappingRulesHandlerOnTranslate(element); }, this); } catch(e) { @@ -150,15 +170,11 @@ Ext.define('LIME.controller.Language', { return; } - if (DocProperties.frbrDom) { - var root = extTmp.down("*["+DocProperties.docIdAttribute+"]", true); - var metaDom = Ext.clone(DocProperties.frbrDom); - metaDom.setAttribute("class", "meta"); - if (root && !root.querySelector("*[class*=meta]")) { - root.insertBefore(metaDom, root.firstChild); - } - } - var tmpHtml = editorController.serialize(extTmp.dom); + var tmpHtml = editorController.serialize(tmpElement); + + //temporary trick to remove focus class when removeCls don't work + tmpHtml = tmpHtml.replace(/(class=\"[^\"]+)(\s+\bfocused\")/g, '$1"'); + //Ext.log(false, tmpHtml); Language.translateContent(tmpHtml, DocProperties.documentInfo.docMarkingLanguage, { success : function(responseText) { @@ -233,10 +249,8 @@ Ext.define('LIME.controller.Language', { buildMetadata : function(values, dom, docUri){ var serializer = new XMLSerializer(), container = document.createElement('div'), - metaTemplate = Ext.clone(this.metaTemplate), - innerTemplate = metaTemplate.inner, - mainTemplate = metaTemplate.outer, // The main template to populate and convert - identification = mainTemplate['identification'], + metaTemplate = Ext.clone(Config.getLanguageConfig().metaTemplate), + identification = metaTemplate['identification'], work = identification['FRBRWork'], expression = identification['FRBRExpression'], manifestation = identification['FRBRManifestation'], @@ -252,13 +266,6 @@ Ext.define('LIME.controller.Language', { internalMetadata = this.buildInternalMetadata(container); container.appendChild(internalMetadata); - // Copy the template - for (var level in identification) { - for (var prop in innerTemplate) { - identification[level][prop] = Ext.clone(innerTemplate[prop]); - } - } - // Populate template // Example: identification['FRBRWork']['FRBRCountry']['@value'] = values.nationality; if (values && values.work && values.expression && values.manifestation){ @@ -287,7 +294,7 @@ Ext.define('LIME.controller.Language', { DocProperties.frbrDom = null; // Convert to HTML if (dom) { - var frbr = Utilities.jsonToHtml(mainTemplate); + var frbr = Utilities.jsonToHtml(metaTemplate); frbr.setAttribute('class', Statics.metadata.frbrClass); this.parseFrbrMetadata(frbr); container.appendChild(frbr); @@ -338,6 +345,60 @@ Ext.define('LIME.controller.Language', { } return metaObject; }, + /** + * This function builds and set an id attribute starting from the given element. + * The build process is based on the hierarchy of the elements. + * The difference between this and {@link LIME.controller.Marker#getMarkingId} is that this id is + * specific to the language plugin currently in use while the latest is for development purposes. + * @param {HTMLElement} markedElement The element we have to set the attribute to + * @param {Object} counters Counters of elements + */ + getLanguageMarkingIdGeneral : function(markedElement, prefix, root, counters) { + var newId = '', elementId = markedElement.getAttribute(DomUtils.elementIdAttribute); + if (elementId && DocProperties.markedElements[elementId]) { + var counter = 1, button = DocProperties.markedElements[elementId].button; + // If the element has already an language id, leave it + if (markedElement.getAttribute(prefix + DomUtils.langElementIdAttribute)) + return; + newId = button.id.replace(DomUtils.vowelsRegex, ''), + //don't use "parent" variable because in IE is a reference to Window + parentMarked = DomUtils.getFirstMarkedAncestor(markedElement.parentNode); + if (parentMarked) { + parentId = parentMarked.getAttribute(prefix + DomUtils.langElementIdAttribute); + if (!counters[parentId]) { + counters[parentId] = {}; + } else if (counters[parentId][newId]) { + counter = counters[parentId][newId]; + } + counters[parentId][newId] = counter + 1; + newId = parentId + '-' + newId; + } else { + if (!counters[newId]) { + counters[newId] = counter + 1; + } else { + counter = counters[newId]; + } + } + newId += counter; + } + + return newId; + }, + + setLanguageMarkingId: function(markedElement, counters, root) { + var me = this, langSetId, newId, langPrefix = me.getLanguagePrefix(); + if(Ext.isFunction(Language.getLanguageMarkingId)) { + langSetId = Ext.Function.bind(Language.getLanguageMarkingId, Language); + } else { + langSetId = me.getLanguageMarkingIdGeneral; + } + newId = langSetId(markedElement, langPrefix, root, counters); + if (newId != '') { + markedElement.setAttribute(langPrefix + DomUtils.langElementIdAttribute, newId); + } + + return newId; + }, parseFrbrMetadata : function(dom) { var frbr = DocProperties.frbr, @@ -392,6 +453,16 @@ Ext.define('LIME.controller.Language', { var languageConfig = this.getStore("LanguagesPlugin").getData(); return languageConfig.markupMenuRules.defaults.attributePrefix; }, + + nodeGetLanguageAttribute: function(node, attribute) { + var prefix = this.getLanguagePrefix(), + value = node.getAttribute(prefix+attribute); + + return { + name: prefix+attribute, + value: value + }; + }, /** * Execute the custom request needed to save the document. @@ -422,10 +493,11 @@ Ext.define('LIME.controller.Language', { }, beforeLoad: function(params, callback) { - var app = this.application, beforeLoad = LoadPlugin.beforeLoad, + var me = this, app = this.application, beforeLoad = LoadPlugin.beforeLoad, XMLS = new XMLSerializer(), + editorController = me.getController("Editor"), newParams = params, - newFn, docDom, + newFn, docDom, docText, parser = new DOMParser(), doc, docCounters = {}, openedDocumentsData = []; // Checking that before load will be called just one time per document if (beforeLoad && !newParams.beforeLoaded) { @@ -465,8 +537,14 @@ Ext.define('LIME.controller.Language', { }); } - params.docText = (newParams.docDom) ? XMLS.serializeToString(newParams.docDom) : params.docText; - + if(newParams.docDom) { + try { + docText = editorController.serialize(newParams.docDom.firstChild); + } catch(e) { + docText = ""; + } + params.docText = docText || XMLS.serializeToString(newParams.docDom); + } if (newParams.metaDom) { this.parseFrbrMetadata(newParams.metaDom); } @@ -478,6 +556,10 @@ Ext.define('LIME.controller.Language', { }, afterLoad: function(params) { + var docEl = params.docDom.querySelector("."+DocProperties.documentBaseClass); + if(docEl && !docEl.getAttribute(DocProperties.docIdAttribute)) { + docEl.setAttribute(DocProperties.docIdAttribute, 0); + } var newFn = Ext.Function.bind(LoadPlugin.afterLoad, LoadPlugin, [params, this.application]); newFn(); }, @@ -499,7 +581,8 @@ Ext.define('LIME.controller.Language', { // Create bindings between events and callbacks // User's custom callbacks this.application.on(Statics.eventsNames.translateRequest, this.beforeTranslate, this); - this.application.on(Statics.eventsNames.documentLoaded, this.beforeTranslate, this); + // now before translate on documentLoaded is useless + //this.application.on(Statics.eventsNames.documentLoaded, this.beforeTranslate, this); this.application.on(Statics.eventsNames.afterLoad, this.afterLoad, this); this.application.on(Statics.eventsNames.beforeLoad, this.beforeLoad, this); this.application.on(Statics.eventsNames.saveDocument, this.saveDocument, this); @@ -512,7 +595,8 @@ Ext.define('LIME.controller.Language', { var me = this; Ext.defer(function() { me.application.fireEvent(Statics.eventsNames.changedEditorMode, { - sidebarsHidden: newC.notEditMode + sidebarsHidden: newC.notEditMode, + markingMenu: newC.markingMenu }); }, 100); } diff --git a/app/controller/LoginManager.js b/app/controller/LoginManager.js index 4996d8df..65bef364 100644 --- a/app/controller/LoginManager.js +++ b/app/controller/LoginManager.js @@ -164,224 +164,220 @@ Ext.define('LIME.controller.LoginManager', { }, - /** - * Start the login procedure calling the related web service. - * If the login is successful it loads the editor - * otherwise it shows some message. - */ - login: function() { - var loginView = this.getLogin(), - data = loginView.getData(), - openFileStore = Ext.getStore('OpenFile'); - - // save the login manager object - var loginManager = this, - preferencesManager = this.getController('PreferencesManager'); - - // call the service to check the user login - var requestUrl = Utilities.getAjaxUrl({ - 'requestedService' : Statics.services.userManager, - 'requestedAction' : 'Login', - 'userName' : data.username, - 'password': data.password - }); - - // DEBUG used when Exist is down (fake login) - /* - loginManager.setUserInfo("demo@prova.com", "demo", "/path/to/collection"); - loginView.hide(); + prepareLogin: function() { + var me = this, loginView = this.getLogin(), + data = loginView.getData(), requestUrl, + preferencesManager = this.getController('PreferencesManager'); + + // DEBUG used when Exist is down (fake login) + /* + loginManager.setUserInfo("demo@prova.com", "demo", "/path/to/collection"); + loginView.hide(); loginManager.startEditor(); - return; - */ + return; + */ - Ext.Ajax.request({ - url : requestUrl, - success : function(response, opts) { - var jsonData, - userData = {}, - userPreferences; - try { - jsonData = Ext.decode(response.responseText); - } catch(e){ - Ext.Msg.alert(Locale.strings.error, Locale.strings.serverFailure); - return; - } - // login the user - if(jsonData.success == 'true') - { - userData.username = data.username; - userData.password = data.password; - userData.userCollection = jsonData.userCollection; - userData.editorLanguage = Locale.strings.languageCode; - - // Store user's info locally - loginManager.setUserInfo(userData); - - // Retrieve user's preferences from the DB (load them in the editor in the callback) - preferencesManager.getUserPreferences(function(args){ - Ext.defer(function(args){ - preferencesManager.loadUserPreferences(args); - // Dinamically load the files store when the user has already logged in - loginView.hide(); - loginManager.startEditor(); - /*openFileStore.load({ - scope : this, - callback : function(){ - loginView.hide(); - loginManager.startEditor(); - } - });*/ - }, 0, preferencesManager, [args]); - }); - - } - - // login data was wrong - else - { - if (!loginView.isVisible()){ - loginView.show(); - } - var errorCode = jsonData.msg; - switch (errorCode) { - - case 'ERR_0' : - Ext.Msg.alert(Locale.strings.authErrors.LOGIN_FAILED_TITLE, Locale.strings.authErrors.ERR_0); - loginView.loginFailed(); - break; - } - } - }, - - failure : function(response, opts) { - if (!response || !response.status){ - response.status = 'request timed-out'; - } - Ext.Msg.alert(Locale.strings.error, Locale.strings.serverFailure +' '+response.status); - loginView.loginFailed(); - } - }); - }, - - /** - * Perform a logout cleaning whatever is needed from the - * localStorage. - * Refresh the page to force the user to login again. - */ - logout : function(){ - // Only remove user credentials - localStorage.removeItem('username'); - localStorage.removeItem('password'); - localStorage.removeItem('userCollection'); - localStorage.removeItem('documentContent'); - localStorage.removeItem('documentId'); - - // Refresh the page - window.location.reload(); + me.login(data.username, data.password, function(loginData) { + var userData = { + username: data.username, + password: data.password, + userCollection: loginData.userCollection, + editorLanguage: Locale.strings.languageCode + }; + + // Store user's info locally + me.setUserInfo(userData); + + // Retrieve user's preferences from the DB (load them in the editor in the callback) + preferencesManager.getUserPreferences(function(args) { + Ext.defer(function(args) { + preferencesManager.loadUserPreferences(args); + // Dinamically load the files store when the user has already logged in + loginView.hide(); + me.startEditor(); + }, 0, preferencesManager, [args]); + }); + }, function(loginData) { + var errorCode, errorMsg = {title: Locale.strings.error, content: Locale.strings.serverFailure}; + if (Ext.isObject(loginData)) { + errorCode = loginData.msg; + switch (errorCode) { + case 'ERR_0' : + errorMsg = { + title: Locale.strings.authErrors.LOGIN_FAILED_TITLE, + content: Locale.strings.authErrors.ERR_0 + }; + break; + } + } else { + Ext.Msg.alert(Locale.strings.error, Locale.strings.serverFailure); + } + + if (!loginView.isVisible()) { + loginView.show(); + } + loginView.loginFailed(); + Ext.Msg.alert(errorMsg.title, errorMsg.content); + }); }, - - - - /** - * Starts the registration procedure calling the related web service. - * If the registration is successful the user is created and can now login. - * Otherwise a message is shown to the user. - */ - register : function(cmp){ + prepareRegister: function(cmp) { // cmp is the registration button var form = cmp.up('form').getForm(), modal = cmp.up('window'), - loginManager = this, + me = this, preferencesManager = this.getController('PreferencesManager'); if (form.isValid()){ values = form.getValues(); if (modal.checkPasswords()){ - // call the service to check the user login - var requestUrl = Utilities.getAjaxUrl({ - 'requestedService' : Statics.services.userManager, - 'requestedAction' : 'Create_User', - 'userName' : values.email, - 'password': values.password, - 'userFullName': values.name - }); - // Give a waiting feedback to the user modal.setLoading(true); - // get the doc - Ext.Ajax.request({ - url : requestUrl, - success : function(response, opts) { - var jsonData, - errorCode; - - try { - // Watch out for malformed JSON - jsonData = Ext.decode(response.responseText); - } catch (e) { - jsonData = {success : false}; - } - - // Read the error code sent by the server (if any) - errorCode = jsonData.msg; - - // login the user - if(jsonData.success == 'true') - { - Ext.Msg.alert(Locale.strings.registrationOk, Locale.strings.registrationOkMessage); - modal.setLoading(false); - modal.close(); - - // Create the user'spreferences - preferencesManager.setUserPreferences( - { - username: values.email, - userFullName: values.name, - password: values.password, - editorLanguage: Locale.strings.languageCode - }, true); - } - else { - modal.setLoading(false); - - // Handle different type of server-side errors - switch (errorCode) { - - case 'ERR_1' : - Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, - Locale.strings.authErrors.ERR_1); - modal.registrationFailed(); - break; - - case 'ERR_2' : - Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, - Locale.strings.authErrors.ERR_2); - modal.registrationFailed(); - break; - - default : - Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, - 'Undefined error'); - modal.registrationFailed(); - } - + me.register(values.email, values.password, values.name, function(data) { + Ext.Msg.alert(Locale.strings.registrationOk, Locale.strings.registrationOkMessage); + modal.setLoading(false); + modal.close(); + // Create the user'spreferences + preferencesManager.setUserPreferences({ + username : values.email, + userFullName : values.name, + password : values.password, + editorLanguage : Locale.strings.languageCode + }, true); + }, function(data) { + var errorCode; + + if (Ext.isObject(data)) { + errorCode = data.msg; + // Handle different type of server-side errors + switch (errorCode) { + case 'ERR_1' : + Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, Locale.strings.authErrors.ERR_1); + break; + + case 'ERR_2' : + Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, Locale.strings.authErrors.ERR_2); + break; + + default : + Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, 'Undefined error'); } - }, - - failure : function(response, opts) { - modal.setLoading(false); - Ext.Msg.alert('server-side failure with status code ' + response.status); + } else { + Ext.Msg.alert(Locale.strings.authErrors.REGISTRATION_FAILED_TITLE, ' server-side failure'); } + modal.setLoading(false); + modal.registrationFailed(); }); } } else { modal.registrationFailed(); } + }, + /** + * Start the login procedure calling the related web service. + * If the login is successful it loads the editor + * otherwise it shows some message. + */ + login: function(username, password, success, failure) { + var me = this, requestUrl; + + if(!Ext.isString(username) || !Ext.isString(password) + || Ext.isEmpty(username.trim()) || Ext.isEmpty(password.trim())) { + Ext.callback(failure, me); + return; + } + + requestUrl = Utilities.getAjaxUrl({ + 'requestedService' : Statics.services.userManager, + 'requestedAction' : 'Login', + 'userName' : username, + 'password': password + }); + + + Ext.Ajax.request({ + url : requestUrl, + success : function(response, opts) { + var jsonData = Ext.decode(response.responseText, true); + if (!jsonData) { + Ext.callback(failure, me, [response.responseText]); + } else if (jsonData.success == 'true') { + Ext.callback(success, me, [jsonData]); + } else { // login data was wrong + Ext.callback(failure, me, [jsonData]); + } + }, + failure : function(response, opts) { + if (!response || !response.status) { + response = response || {}; + response.status = 'request timed-out'; + } + Ext.callback(failure, me, [response.status]); + } + }); + }, - + + /** + * Starts the registration procedure calling the related web service. + * If the registration is successful the user is created and can now login. + * Otherwise a message is shown to the user. + */ + + register : function(email, password, name, success, failure) { + var me = this, requestUrl; + + if(!Ext.isString(email) || !Ext.isString(password) || !Ext.isString(name) + || Ext.isEmpty(email.trim()) || Ext.isEmpty(password.trim()) || Ext.isEmpty(name.trim())) { + Ext.callback(failure, me); + return; + } + + requestUrl = Utilities.getAjaxUrl({ + 'requestedService' : Statics.services.userManager, + 'requestedAction' : 'Create_User', + 'userName' : email, + 'password' : password, + 'userFullName' : name + }); + + Ext.Ajax.request({ + url : requestUrl, + success : function(response, opts) { + var jsonData = Ext.decode(response.responseText, true); + if (!jsonData) { + Ext.callback(failure, me, [response.responseText]); + } else if (jsonData.success == 'true') { + Ext.callback(success, me, [jsonData]); + } else { + Ext.callback(failure, me, [jsonData]); + } + }, + failure : function(response, opts) { + Ext.callback(failure, me, [response.status]); + } + }); + }, + + /** + * Perform a logout cleaning whatever is needed from the + * localStorage. + * Refresh the page to force the user to login again. + */ + logout : function(){ + // Only remove user credentials + localStorage.removeItem('username'); + localStorage.removeItem('password'); + localStorage.removeItem('userCollection'); + localStorage.removeItem('documentContent'); + localStorage.removeItem('documentId'); + + // Refresh the page + window.location.reload(); + }, + /** * Show a form where the user can add his * registration details (e.g. username, password, email). @@ -407,7 +403,7 @@ Ext.define('LIME.controller.LoginManager', { password = localStorage.getItem('password'); if (user && password) { loginView.setData({username: user, password: password}); - this.login(); + this.prepareLogin(); } else { cmp.show(); } @@ -415,7 +411,7 @@ Ext.define('LIME.controller.LoginManager', { }, 'login button': { click: function(cmp) { - this.login(); + this.prepareLogin(); } }, 'box[cls=registration]': { @@ -436,7 +432,7 @@ Ext.define('LIME.controller.LoginManager', { }, 'registration button' : { - click : this.register + click : this.prepareRegister }, 'userButton': { diff --git a/app/controller/MainToolbar.js b/app/controller/MainToolbar.js index 956dca75..e47ad446 100644 --- a/app/controller/MainToolbar.js +++ b/app/controller/MainToolbar.js @@ -575,6 +575,7 @@ Ext.define('LIME.controller.MainToolbar', { } data = Ext.Object.merge(newWindow.tmpConfig, newWindow.getData()); this.createNewDocument(data); + newWindow.autoClosed = true; newWindow.close(); } }, diff --git a/app/controller/Marker.js b/app/controller/Marker.js index 8e62c3e2..de3c0409 100644 --- a/app/controller/Marker.js +++ b/app/controller/Marker.js @@ -55,159 +55,215 @@ */ Ext.define('LIME.controller.Marker', { - // extend the ext controller - extend : 'Ext.app.Controller', + // extend the ext controller + extend : 'Ext.app.Controller', - // set up the views - views : ['main.Editor'], + // set up the views + views : ['main.Editor'], - refs : [{ - ref : 'contextMenu', - selector : 'contextMenu' - }], + refs : [{ + ref : 'contextMenu', + selector : 'contextMenu' + }], - /** - * This method returns a well formed unique id for the marked element. - * For more information about the button id see {@link Ext.view.markingmenu.TreeButton} - * @param {String} buttonId The id of the button that was used to mark the element - * @returns {String} The unique id - */ - getMarkingId : function(buttonId) { - var markedElements = DocProperties.markedElements, - partialId = buttonId + DomUtils.elementIdSeparator, - counter = 1; - for (counter; markedElements[partialId + counter]; counter++); - return partialId + counter; - }, + /** + * This method returns a well formed unique id for the marked element. + * For more information about the button id see {@link Ext.view.markingmenu.TreeButton} + * @param {String} buttonId The id of the button that was used to mark the element + * @returns {String} The unique id + */ + getMarkingId : function(buttonId) { + var markedElements = DocProperties.markedElements, + partialId = buttonId + DomUtils.elementIdSeparator, + counter = 1; + for (counter; markedElements[partialId + counter]; counter++); + return partialId + counter; + }, - /** - * This function builds an id attribute starting from the given element's markingId. - * The build process is based on the hierarchy of the elements. - * The difference between this and {@link LIME.controller.Marker#getMarkingId} is that this id is - * specific to the language plugin currently in use while the latest is for development purposes. - * @param {HTMLElement} markedElement The element we have to set the attribute to - * @param {String} buttonId The id of the button that was used to mark the element - * @param {String} [prefix] The prefix for the attribute - * @returns {String} The language element unique id - */ - getLanguageMarkingId : function(markedElement, buttonId, prefix) { - var newId = buttonId.replace(DomUtils.vowelsRegex, ''), counter = markedElement.getAttribute(DomUtils.elementIdAttribute).split(DomUtils.elementIdSeparator)[1], - /* Retrieve all the parent nodes' ids */ - iterator = markedElement, parent = DomUtils.getFirstMarkedAncestor(iterator.parentNode); - if (parent) { - parentId = parent.getAttribute(prefix + DomUtils.langElementIdAttribute); - newId = parentId + '-' + newId; - } - return newId + counter; - }, - /** - * Wrap the currently selected node(s) into a specific block - * related to the given button. - * @param {TreeButton} button An istance of the button which was used to mark the block - * @return {HTMLElement[]} An array of the marked elements - */ - wrapBlock : function(button) { - var editorController = this.getController('Editor'), - // Get selection info from the editor - selection = editorController.getSelectionObject('html', { - start : DomUtils.blockRegex, - end : DomUtils.blockRegex - }, true), - selectionRange = editorController.getSelectionRange(); - // Get the list of the nodes between the first and last selected - // Notice: this excludes the last node if the selection has a strange end of range (e.g. 0) - lastNode = (selectionRange[1] == 0) ? selection.end.previousSibling : selection.end, - selectedNodes = DomUtils.getSiblings(selection.start, lastNode), - // Parse the wrapper element in order to determine where the content goes - parsedHtml = Interpreters.parseElement(button.waweConfig.pattern.wrapperElement, { - content : '' - }), - // Create a new HTMLElement to be used as the wrapper (they all are divs) - newElement = Ext.DomHelper.createDom({ - tag : 'div', - html : parsedHtml - }), - // Get a reference to the temporary element to be replaced from the actual content (the wrapped elements) - tempSelection = Ext.query('*[class*='+DomUtils.tempSelectionClass+']', newElement)[0]; - // Check for data integrity - if (!selectedNodes || selectedNodes.length == 0) - return []; - // Insert the wrapper just before the first of the selected elements - selectedNodes[0].parentNode.insertBefore(newElement, selectedNodes[0]); - // Wrap the nodes - if (tempSelection){ // temp selection could not exist if the element doesn't have a content - Ext.each(selectedNodes, function(node) { - tempSelection.parentNode.insertBefore(node, tempSelection); - }); - // Delete the (temporary) utility node - tempSelection.parentNode.removeChild(tempSelection); - // Avoid useless nested elements + /** + * This function builds an id attribute starting from the given element's markingId. + * The build process is based on the hierarchy of the elements. + * The difference between this and {@link LIME.controller.Marker#getMarkingId} is that this id is + * specific to the language plugin currently in use while the latest is for development purposes. + * @param {HTMLElement} markedElement The element we have to set the attribute to + * @param {String} buttonId The id of the button that was used to mark the element + * @param {String} [prefix] The prefix for the attribute + * @returns {String} The language element unique id + */ + getLanguageMarkingId : function(markedElement, buttonId, prefix) { + var newId = buttonId.replace(DomUtils.vowelsRegex, ''), counter = markedElement.getAttribute(DomUtils.elementIdAttribute).split(DomUtils.elementIdSeparator)[1], + /* Retrieve all the parent nodes' ids */ + iterator = markedElement, parent = DomUtils.getFirstMarkedAncestor(iterator.parentNode); + if (parent) { + parentId = parent.getAttribute(prefix + DomUtils.langElementIdAttribute); + newId = parentId + '-' + newId; } - newElement = editorController.domReplace(newElement.childNodes[0], newElement); - // Add breaking elements so that text can be inserted - this.addBreakingElements(newElement); - return [newElement]; - }, + return newId + counter; + }, + + /** + * This function is used by wrapBlock to wrap selected text + * into the wrapElement + * @param {HTMLELement} wrapElement, wrapper node + * @param {HTMLELemnet} tmpElement, temporary element inside wrapElement + */ + + wrapSelectedTextInNode: function(wrapElement, tmpElement) { + var lastNode, iterNode, nextSibling, isLast, + tempElements = [], + tmpClass = DomUtils.tempSelectionClass+"_wrapText", + editorController = this.getController('Editor'), + toMarkNodes = editorController.applyPattern('tempselection', { + inline : 'span', + classes : tmpClass + }); + + if (toMarkNodes.length) { + toMarkNodes[0].parentNode.insertBefore(wrapElement, toMarkNodes[0]); + lastNode = toMarkNodes[toMarkNodes.length - 1]; + iterNode = toMarkNodes[0]; + while (iterNode) { + nextSibling = iterNode.nextSibling, isLast = (iterNode == lastNode); + tmpElement.parentNode.insertBefore(iterNode, tmpElement); + iterNode = isLast ? false : nextSibling; + } + } + + tempElements = Ext.query('span[class~='+tmpClass+']', wrapElement); + // Unwrap text from temporary elements + Ext.each(tempElements, function(node) { + if(node.getAttribute("class") == tmpClass) { + DomUtils.unwrapNode(node); + } else { + Ext.fly(node).removeCls(tmpClass); + } + }); + }, + + /** + * Wrap the currently selected node(s) into a specific block + * related to the given button. + * @param {TreeButton} button An istance of the button which was used to mark the block + * @return {HTMLElement[]} An array of the marked elements + */ + wrapBlock : function(button) { + var editorController = this.getController('Editor'), + // Get selection info from the editor + selection = editorController.getSelectionObject('html', { + start : DomUtils.blockRegex, + end : DomUtils.blockRegex + }, true), + selectionRange = editorController.getSelectionRange(); + // Get the list of the nodes between the first and last selected + // Notice: this excludes the last node if the selection has a strange end of range (e.g. 0) + lastNode = (selectionRange[1] == 0) ? selection.end.previousSibling : selection.end, + selectedNodes = DomUtils.getSiblings(selection.start, lastNode), + // Parse the wrapper element in order to determine where the content goes + parsedHtml = Interpreters.parseElement(button.waweConfig.pattern.wrapperElement, { + content : '' + }), + // Create a new HTMLElement to be used as the wrapper (they all are divs) + newElement = Ext.DomHelper.createDom({ + tag : 'div', + html : parsedHtml + }), + // Get a reference to the temporary element to be replaced from the actual content (the wrapped elements) + tempSelection = Ext.query('*[class*='+DomUtils.tempSelectionClass+']', newElement)[0]; + + // Check for data integrity + if (!selectedNodes || selectedNodes.length == 0) { + //return []; + selectedNodes = [selection.node]; + } + + if(selection.text &&selectedNodes.length == 1 + && selectedNodes[0] == selection.start && selectedNodes[0] == selection.end) { + this.wrapSelectedTextInNode(newElement, tempSelection); + } else { + // Insert the wrapper just before the first of the selected elements + selectedNodes[0].parentNode.insertBefore(newElement, selectedNodes[0]); + // Wrap the nodes + if (tempSelection){ // temp selection could not exist if the element doesn't have a content + Ext.each(selectedNodes, function(node) { + tempSelection.parentNode.insertBefore(node, tempSelection); + }); + } + } + + // Delete the (temporary) utility node + if (tempSelection){ + tempSelection.parentNode.removeChild(tempSelection); + } + // Avoid useless nested elements + newElement = editorController.domReplace(newElement.childNodes[0], newElement); + // Add breaking elements so that text can be inserted + this.addBreakingElements(newElement); + return [newElement]; + }, - /** - * Mark one or multiple inlines related to the button used to mark. - * - * **Warning**: to provide a uniform interface, and void waste - * of code to check for differences, this method always returns an array of HTMLElement. - * Of course it's always possible to select a single element by using indices. - * @param {TreeButton} button An istance of the button which caused the marking - * @return {HTMLElement[]} An array of the marked elements - */ - wrapInline: function(button) { - var editorController = this.getController('Editor'), - // Creat temporary spans to be replaced - toMarkNodes = editorController.applyPattern('tempselection', { - inline : 'span', - classes : DomUtils.tempSelectionClass - }), - markedElements = [], - bogusNode, - isMarker = false, - //number of elements in the group - numberOfEls, nodesLength = toMarkNodes.length; - /* Temp nodes in toMarkNodes are separate span elements this loop - * try to group these elements that are siblings but they can be separated by
element(s). - * Each group will be marked and not each element, in this way - * we can mark as unique inline, elements that are rendered with multiple rows. - * Each iteration represents a group for this reason the "i" variable is incremented by "numberOfEls". - */ - for(var i = 0; i < nodesLength; i+=numberOfEls) { - var node = toMarkNodes[i], - extNode = new Ext.Element(node), - //Get html of wrapperElement - htmlContent = Interpreters.parseElement(button.waweConfig.pattern.wrapperElement, { - content : '' - }), - inlineWrapper; - bogusNode = extNode.up('[data-mce-bogus]'); - // An element without content e.g. eop element - if ((button.waweConfig.pattern.wrapperElement.indexOf(Interpreters.flags.content)==-1)) { - isMarker = true; - if (bogusNode) { - inlineWrapper = Ext.DomHelper.insertHtml("afterEnd", bogusNode.dom, htmlContent); - } else { - inlineWrapper = Ext.DomHelper.insertHtml("afterEnd", toMarkNodes[nodesLength-1], htmlContent); - } - } else { + /** + * Mark one or multiple inlines related to the button used to mark. + * + * **Warning**: to provide a uniform interface, and void waste + * of code to check for differences, this method always returns an array of HTMLElement. + * Of course it's always possible to select a single element by using indices. + * @param {TreeButton} button An istance of the button which caused the marking + * @return {HTMLElement[]} An array of the marked elements + */ + wrapInline: function(button) { + var editorController = this.getController('Editor'), + // Creat temporary spans to be replaced + toMarkNodes = editorController.applyPattern('tempselection', { + inline : 'span', + classes : DomUtils.tempSelectionClass + }), + markedElements = [], + bogusNode, + isMarker = false, + //number of elements in the group + numberOfEls, nodesLength = toMarkNodes.length; + /* Temp nodes in toMarkNodes are separate span elements this loop + * try to group these elements that are siblings but they can be separated by
element(s). + * Each group will be marked and not each element, in this way + * we can mark as unique inline, elements that are rendered with multiple rows. + * Each iteration represents a group for this reason the "i" variable is incremented by "numberOfEls". + */ + + for(var i = 0; i < nodesLength; i+=numberOfEls) { + var node = toMarkNodes[i], + extNode = new Ext.Element(node), + //Get html of wrapperElement + htmlContent = Interpreters.parseElement(button.waweConfig.pattern.wrapperElement, { + content : '' + }), + inlineWrapper; + bogusNode = extNode.up('[data-mce-bogus]'); + // An element without content e.g. eop element + if ((button.waweConfig.pattern.wrapperElement.indexOf(Interpreters.flags.content)==-1)) { + isMarker = true; + if (bogusNode) { + inlineWrapper = Ext.DomHelper.insertHtml("afterEnd", bogusNode.dom, htmlContent); + } else { + inlineWrapper = Ext.DomHelper.insertHtml("afterEnd", toMarkNodes[nodesLength-1], htmlContent); + } + } else { // Creation of group as dom element and put it before "node" that is the first element of this group inlineWrapper = Ext.DomHelper.insertHtml("beforeBegin", node, htmlContent); - } - var inlineExt = new Ext.Element(inlineWrapper), - next = extNode.next(); - //set the number of elements of this group to 1 this is the first element "node" - numberOfEls = 1; - //Add to the wrapper element the our temporal class - inlineExt.addCls(DomUtils.tempSelectionClass); - //Node temporal class is now useless - node.removeAttribute("class"); - if (!isMarker) { - //Append the first child to the group - inlineExt.appendChild(node); + } + var inlineExt = new Ext.Element(inlineWrapper), + next = extNode.next(); + + //set the number of elements of this group to 1 this is the first element "node" + numberOfEls = 1; + //Add to the wrapper element the our temporal class + inlineExt.addCls(DomUtils.tempSelectionClass); + //Node temporal class is now useless + node.removeAttribute("class"); + if (!isMarker) { + //Append the first child to the group + DomUtils.moveChildrenNodes(node, inlineExt.dom, true); + node.parentNode.removeChild(node); + //inlineExt.appendChild(node); //Finding other group elements that can exists only if the next sibling is a
while (next && next.is("br")) { var tmpBr = next; @@ -215,268 +271,353 @@ Ext.define('LIME.controller.Marker', { next = next.next(); //Check if the next sibling of
is the next element in the list of nodes to mark if(next && next.dom==toMarkNodes[i+numberOfEls]){ - groupEl = next.dom; + //if there is a group element clean and append it + if (next.dom) { + //append the
element to the group, we need to keep the original formatting + inlineExt.appendChild(tmpBr); + next.dom.removeAttribute("class"); + inlineExt.appendChild(next.dom); + } next = next.next(); numberOfEls++; } - //append the
element to the group, we need to keep the original formatting - inlineExt.appendChild(tmpBr); - //if there is a group element clean and append it - if (groupEl) { - groupEl.removeAttribute("class"); - inlineExt.appendChild(groupEl); - } } - } - markedElements.push(inlineWrapper); - if(isMarker) { - break; - } - } - return markedElements; - }, - /** - * This function retrieves the selected nodes set from the editor and mark - * them all according to the rule defined in the button's wrapperElement rule. - * Returns the list of the marked elements (useful in many cases). - * @param {TreeButton} button The button that was used to mark - * @param {Object} [attribute] The optional attribute (a name-value pair) to be set - * @return {Array} The array of the wrapped elements - */ - wrap : function(button, config) { - var editorController = this.getController('Editor'), - buttonPattern = button.waweConfig.pattern, - isBlock = DomUtils.blockTagRegex.test(buttonPattern.wrapperElement), - newElements = [], - selectedNode = editorController.getSelectedNode(), - firstMarkedNode = DomUtils.getFirstMarkedAncestor(selectedNode); - - if (selectedNode === editorController.getBody().firstChild){ - return []; - } - - if (!this.isAllowedElement(firstMarkedNode, button.waweConfig)) { - this.application.fireEvent(Statics.eventsNames.showNotification, { - content: new Ext.Template(Locale.strings.semanticError).apply({'name': ""+button.waweConfig.name+""}) - }); - return; - } - - // If the nodes have already been marked just exit - if (firstMarkedNode && DomUtils.getButtonIdByElementId(firstMarkedNode.getAttribute(DomUtils.elementIdAttribute)) == button.id) { - //Return a list contains the node - return [firstMarkedNode]; - } - if (isBlock) { - newElements = this.wrapBlock(button); - } else { - newElements = this.wrapInline(button); - } - // Common finilizing operations - Ext.each(newElements, function(newElement) { - // Wrap the element inside an Ext.Element - var extNode = new Ext.Element(newElement), - oldElement = newElement.cloneNode(true), - // Get a unique id for the marked element - markingId = this.getMarkingId(button.id), - idPrefix = button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix || '', - styleClass = buttonPattern.wrapperClass; - // Set the internal id - newElement.setAttribute(DomUtils.elementIdAttribute, markingId); - - /*This part has been moved on translating - // Set the language specific id (with the given prefix) - var langId = this.getLanguageMarkingId(newElement, button.id, idPrefix); - newElement.setAttribute(idPrefix + DomUtils.langElementIdAttribute, langId);*/ - // Set the class - newElement.setAttribute('class', buttonPattern.wrapperClass); - // Set the optional attribute - if (config.attribute && config.attribute.name && config.attribute.value) {// check if attribute has name and value - newElement.setAttribute(idPrefix + config.attribute.name, config.attribute.value); - } - // Add the style - editorController.applyAllStyles('*[class="' + styleClass + '"]', buttonPattern.wrapperStyle, button.waweConfig.shortLabel); - //var explorer = this.getController("Explorer"); - // Set the document properties - DocProperties.setMarkedElementProperties(markingId, { - button : button, - htmlElement : newElement - }); - // Avoid random cursor repositioning by using a bookmark - //var bm = editorController.getBookmark(); // BUG SAFARI (leave commented): The span used to set the bookmark is converted to an empty p and placed as the first child of the body - // Apply the wrapping rules - //Interpreters.wrappingRulesHandler(button, newElement); - //editorController.restoreBookmark(bm) - }, this); - // Warn of the changed nodes - - this.application.fireEvent('nodeChangedExternally', newElements, { - select : false, - scroll : false, - click : (config.silent)? false : true, - change : true, - silent: config.silent - }); - }, + } + markedElements.push(inlineWrapper); + if(isMarker) { + break; + } + } + return markedElements; + }, + /** + * This function retrieves the selected nodes set from the editor and mark + * them all according to the rule defined in the button's wrapperElement rule. + * Returns the list of the marked elements (useful in many cases). + * @param {TreeButton} button The button that was used to mark + * @param {Object} [attribute] The optional attribute (a name-value pair) to be set + * @return {Array} The array of the wrapped elements + */ + wrap : function(button, config) { + var editorController = this.getController('Editor'), + buttonPattern = button.waweConfig.pattern, + isBlock = DomUtils.blockTagRegex.test(buttonPattern.wrapperElement), + newElements = [], + selectedNode = editorController.getSelectedNode(), + firstMarkedNode = DomUtils.getFirstMarkedAncestor(selectedNode); + + if (!this.isAllowedElement(firstMarkedNode, button.waweConfig)) { + this.application.fireEvent(Statics.eventsNames.showNotification, { + content: new Ext.Template(Locale.strings.semanticError).apply({'name': ""+button.waweConfig.name+""}) + }); + return; + } + // If the nodes have already been marked just exit + if (firstMarkedNode && DomUtils.getButtonIdByElementId(firstMarkedNode.getAttribute(DomUtils.elementIdAttribute)) == button.id) { + //Return a list contains the node + return [firstMarkedNode]; + } + if (isBlock) { + newElements = this.wrapBlock(button); + } else { + newElements = this.wrapInline(button); + } + // Common finilizing operations + Ext.each(newElements, function(newElement) { + // Wrap the element inside an Ext.Element + var extNode = new Ext.Element(newElement), + oldElement = newElement.cloneNode(true), + // Get a unique id for the marked element + markingId = this.getMarkingId(button.id), + idPrefix = button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix || '', + styleClass = buttonPattern.wrapperClass; + // Set the internal id + newElement.setAttribute(DomUtils.elementIdAttribute, markingId); + + /*This part has been moved on translating + // Set the language specific id (with the given prefix) + var langId = this.getLanguageMarkingId(newElement, button.id, idPrefix); + newElement.setAttribute(idPrefix + DomUtils.langElementIdAttribute, langId);*/ + // Set the class + newElement.setAttribute('class', buttonPattern.wrapperClass); + // Set the optional attribute + if (config.attribute && config.attribute.name && config.attribute.value) {// check if attribute has name and value + newElement.setAttribute(idPrefix + config.attribute.name, config.attribute.value); + } + // Add the style + editorController.applyAllStyles('*[class="' + styleClass + '"]', buttonPattern.wrapperStyle, button.waweConfig.shortLabel); + //var explorer = this.getController("Explorer"); + // Set the document properties + DocProperties.setMarkedElementProperties(markingId, { + button : button, + htmlElement : newElement + }); + if(newElement.parentNode) { + var parent = newElement.parentNode, + cls = parent.getAttribute("class"); + if(cls && cls == DomUtils.toMarkNodeClass) { + if(parent.parentNode) { + while(parent.firstChild) { + parent.parentNode.insertBefore(parent.firstChild, parent); + } + parent.parentNode.removeChild(parent); + } + } + } + // Avoid random cursor repositioning by using a bookmark + //var bm = editorController.getBookmark(); // BUG SAFARI (leave commented): The span used to set the bookmark is converted to an empty p and placed as the first child of the body + // Apply the wrapping rules + //Interpreters.wrappingRulesHandler(button, newElement); + //editorController.restoreBookmark(bm) + }, this); + // Warn of the changed nodes + + this.application.fireEvent('nodeChangedExternally', newElements, { + select : false, + scroll : false, + click : (config.silent)? false : true, + change : true, + silent: config.silent + }); + + Ext.callback(config.callback, this, [button, newElements]); + }, - /** - * Simply remove a node attaching the children to the parent node - * @param {HTMLElement} markedNode The element to unmark - * @param {boolean} [unmarkChildren] - * @private - */ - unmarkNode : function(markedNode, unmarkChildren) { - if (unmarkChildren) { - var discendents = Ext.query("["+DomUtils.elementIdAttribute+"]", markedNode); - // Find all the marked children and unmark them - Ext.each(discendents, function(child){ - this.unmarkNode(child); - }, this); - } - var markedParent = markedNode.parentNode, - markedId = markedNode.getAttribute(DomUtils.elementIdAttribute), - extNode = new Ext.Element(markedNode), - nextSpaceP = extNode.next('.'+DomUtils.breakingElementClass), - prevSpaceP = extNode.prev('.'+DomUtils.breakingElementClass); - // Replace all the - while (markedNode.hasChildNodes()) { - markedNode.parentNode.insertBefore(markedNode.firstChild, markedNode); - } - if (nextSpaceP) { - nextSpaceP.remove(); - } + /** + * Simply remove a node attaching the children to the parent node + * @param {HTMLElement} markedNode The element to unmark + * @param {boolean} [unmarkChildren] + * @private + */ + unmarkNode : function(markedNode, unmarkChildren) { + var unmarkedChildIds = []; + if (unmarkChildren) { + var discendents = Ext.query("["+DomUtils.elementIdAttribute+"]", markedNode); + // Find all the marked children and unmark them + Ext.each(discendents, function(child){ + unmarkedChildIds = Ext.Array.merge(unmarkedChildIds, this.unmarkNode(child)); + }, this); + } + var markedParent = markedNode.parentNode, + markedId = markedNode.getAttribute(DomUtils.elementIdAttribute), + extNode = new Ext.Element(markedNode), + nextSpaceP = extNode.next('.'+DomUtils.breakingElementClass), + prevSpaceP = extNode.prev('.'+DomUtils.breakingElementClass); + // Replace all the + while (markedNode.hasChildNodes()) { + if(DomUtils.markedNodeIsPattern(markedNode, "inline")) { + if(markedNode.firstChild.nodeType == DomUtils.nodeType.TEXT) { + DomUtils.addSpacesInTextNode(markedNode.firstChild); + } else { + Ext.each(DomUtils.getTextNodes(markedNode.firstChild), function(node) { + DomUtils.addSpacesInTextNode(node); + }); + + } + } + markedNode.parentNode.insertBefore(markedNode.firstChild, markedNode); + } + if(markedNode.parentNode) markedNode.parentNode.normalize(); + + if (nextSpaceP) { + nextSpaceP.remove(); + } - if (prevSpaceP) { - var prevSibling = prevSpaceP.prev(); - //Remove the space p if the previous sibling is not marked - if(!prevSibling || !prevSibling.getAttribute(DomUtils.elementIdAttribute)){ - prevSpaceP.remove(); - } - } + if (prevSpaceP) { + var prevSibling = prevSpaceP.prev(); + //Remove the space p if the previous sibling is not marked + if(!prevSibling || !prevSibling.getAttribute(DomUtils.elementIdAttribute)){ + prevSpaceP.remove(); + } + } - markedNode.parentNode.removeChild(markedNode); - // Remove any reference to the removed node - delete DocProperties.markedElements[markedId]; - }, - - /** - * Handler for the unmark feature, uses unmarkNode to really unmark the node(s) - * @param {HTMLElement} node The node to start from - * @param {Boolean} unmarkChildren True if also the children has to be unmarked - * TODO: remove spans after unmark! - */ - unmark: function(node, unmarkChildren) { - // If a marked node could not be found we just have to - var selectedNodes = this.getController("Editor").getSelectionObject("html", null, true); - var start = DomUtils.getFirstMarkedAncestor(selectedNodes.start), - end = DomUtils.getFirstMarkedAncestor(selectedNodes.end), - siblings = DomUtils.getSiblings(start, end), - // Check what kind of operations we have to perform on the unmarked node - eventConfig = {change : true, click : true}, - markedParent = (start)? start.parentNode : end.parentNode; - // Check the siblings - if (siblings){ - // If the node is not marked delete it from the array - siblings = siblings.filter(function(node){ - if (node && (node.nodeType != DomUtils.nodeType.ELEMENT || !node.getAttribute(DomUtils.elementIdAttribute))){ - return false; - } else { - return true; - } - }); - } else { - // If not siblings were found it means that only one node, or none at all, is marked - start? siblings = [start] : siblings = [end]; - } - // Now we actually unmark the nodes - Ext.each(siblings, function(node){ - var markedId = node.getAttribute(DomUtils.elementIdAttribute); - this.unmarkNode(node, unmarkChildren); - if (unmarkChildren) { - this.application.fireEvent('nodeRemoved', markedId); - } - }, this); - // If nodes were removed just focus the just unmarked node - if (unmarkChildren) { - eventConfig.change = false; - } - this.application.fireEvent('nodeChangedExternally', markedParent, eventConfig); - }, - /** - * This function mark nodes passed in config according to the rule defined - * in the button's wrapperElement rule. - * This function is used by parsers for fast marking. - * @param {TreeButton} button The button that was used to mark - * @param {Object} config - */ - autoWrap : function(button, config){ - if(!config.nodes | !button) - return; - var editorController = this.getController('Editor'), - buttonPattern = button.waweConfig.pattern, - isBlock = DomUtils.blockTagRegex.test(buttonPattern.wrapperElement), - idPrefix = button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix || '', - styleClass = buttonPattern.wrapperClass; - Ext.each(config.nodes,function(newElement,index){ - var extNode = new Ext.Element(newElement), - // Get a unique id for the marked element - markingId = this.getMarkingId(button.id), - attrName,attrValue, - firstMarkedNode = DomUtils.getFirstMarkedAncestor(newElement); - - newElement.removeAttribute("class"); - if (firstMarkedNode && DomUtils.getButtonIdByElementId(firstMarkedNode.getAttribute(DomUtils.elementIdAttribute)) == button.id) { - return; - } - newElement.setAttribute(DomUtils.elementIdAttribute, markingId); - // Set the internal id - newElement.setAttribute('class', buttonPattern.wrapperClass); - // Set the optional attribute - if (config.attributes && (attrName = config.attributes[index].name) && (attrValue = config.attributes[index].value)) {// check if attribute has name and value - newElement.setAttribute(idPrefix + attrName, attrValue); - } - // Add the style - editorController.applyAllStyles('*[class="' + styleClass + '"]', buttonPattern.wrapperStyle, button.waweConfig.shortLabel); + markedNode.parentNode.removeChild(markedNode); + // Remove any reference to the removed node + delete DocProperties.markedElements[markedId]; + + return Ext.Array.merge(markedId, unmarkedChildIds); + }, + + /** + * OLD FUNCTION + * + * Handler for the unmark feature, uses unmarkNode to really unmark the node(s) + * @param {HTMLElement} node The node to start from + * @param {Boolean} unmarkChildren True if also the children has to be unmarked + * TODO: remove spans after unmark! + */ + unmark: function(node, unmarkChildren) { + // If a marked node could not be found we just have to + var selectedNodes = this.getController("Editor").getSelectionObject("html", null, true); + var start = DomUtils.getFirstMarkedAncestor(selectedNodes.start), + end = DomUtils.getFirstMarkedAncestor(selectedNodes.end), + siblings = DomUtils.getSiblings(start, end), + // Check what kind of operations we have to perform on the unmarked node + eventConfig = {change : true, click : true}, + markedParent = (start)? start.parentNode : end.parentNode, + unmarkedNodeIds = []; + // Check the siblings + if (siblings){ + // If the node is not marked delete it from the array + siblings = siblings.filter(function(node){ + if (node && (node.nodeType != DomUtils.nodeType.ELEMENT || !node.getAttribute(DomUtils.elementIdAttribute))){ + return false; + } else { + return true; + } + }); + } else { + // If not siblings were found it means that only one node, or none at all, is marked + start? siblings = [start] : siblings = [end]; + } + // Now we actually unmark the nodes + Ext.each(siblings, function(node){ + var markedId = node.getAttribute(DomUtils.elementIdAttribute); + unmarkedNodeIds = Ext.Array.merge(unmarkedNodeIds, this.unmarkNode(node, unmarkChildren)); + /*if (unmarkChildren) { // TODO: search this event + this.application.fireEvent('nodeRemoved', markedId); + }*/ + }, this); + // If nodes were removed just focus the just unmarked node + /*if (unmarkChildren) { + eventConfig.change = false; + }*/ + this.application.fireEvent('nodeChangedExternally', markedParent, eventConfig); + this.application.fireEvent(Statics.eventsNames.unmarkedNodes, unmarkedNodeIds); + }, + + + + unmarkNodes: function(nodes, unmarkChildren) { + var me = this, parents = [], documentEl = me.getController("Editor").getDocumentElement(), + unmarkedNodeIds = []; + Ext.each(nodes, function(node) { + var parent = DomUtils.getFirstMarkedAncestor(node.parentNode); + if(parent && parents.indexOf(parent) == -1) parents.push(parent); + unmarkedNodeIds = Ext.Array.merge(unmarkedNodeIds, me.unmarkNode(node, unmarkChildren)); + }); + if(parents.length) { + Ext.each(parents, function(parent) { + me.application.fireEvent('nodeChangedExternally', parent, {change : true}); + }); + } else { + me.application.fireEvent('nodeChangedExternally', documentEl, {change : true}); + } + me.application.fireEvent(Statics.eventsNames.unmarkedNodes, unmarkedNodeIds); + }, + + wrapChildrenInWrapperElement: function(node, pattern) { + var htmlContent = Interpreters.parseElement(pattern.wrapperElement, { + content : '' + }), newNode = Ext.DomHelper.insertHtml("beforeBegin", node, htmlContent); + DomUtils.moveChildrenNodes(node, newNode); + return node.appendChild(newNode); + }, + + wrapElementInWrapperElement: function(node, pattern) { + var htmlContent = Interpreters.parseElement(pattern.wrapperElement, { + content : '' + }), newNode = Ext.DomHelper.insertHtml("beforeBegin", node, htmlContent); + newNode.appendChild(node); + return newNode; + }, + + /** + * This function mark nodes passed in config according to the rule defined + * in the button's wrapperElement rule. + * This function is used by parsers for fast marking. + * @param {TreeButton} button The button that was used to mark + * @param {Object} config + */ + autoWrap : function(button, config){ + if(!config.nodes | !button) + return; + var editorController = this.getController('Editor'), + buttonPattern = button.waweConfig.pattern, + isBlock = DomUtils.blockTagRegex.test(buttonPattern.wrapperElement), + idPrefix = button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix || '', + styleClass = buttonPattern.wrapperClass, markedElements = []; + + Ext.each(config.nodes,function(newElement,index){ + var markingId = this.getMarkingId(button.id), + attrName,attrValue, + firstMarkedNode = DomUtils.getFirstMarkedAncestor(newElement), + checkType = new RegExp("^<"+newElement.nodeName+">", 'i'); + newElement.removeAttribute("class"); + if (firstMarkedNode && DomUtils.getButtonIdByElementId(firstMarkedNode.getAttribute(DomUtils.elementIdAttribute)) == button.id) { + return; + } + + if(!DomUtils.isSameNodeWithHtml(newElement, buttonPattern.wrapperElement)) { + if(buttonPattern.pattern == "inline") { + if(newElement.children.length == 1 && DomUtils.isSameNodeWithHtml(newElement.firstChild, buttonPattern.wrapperElement)) { + newElement = newElement.firstChild; + } else { + newElement = this.wrapChildrenInWrapperElement(newElement, buttonPattern); + } + } else { + newElement = this.wrapElementInWrapperElement(newElement, buttonPattern); + } + } + + newElement.removeAttribute("class"); + newElement.setAttribute(DomUtils.elementIdAttribute, markingId); + // Set the internal id + newElement.setAttribute('class', buttonPattern.wrapperClass); + // Set the optional attribute + if (config.attributes && (attrName = config.attributes[index].name) && (attrValue = config.attributes[index].value)) {// check if attribute has name and value + newElement.setAttribute(idPrefix + attrName, attrValue); + } + // Add the style + editorController.applyAllStyles('*[class="' + styleClass + '"]', buttonPattern.wrapperStyle, button.waweConfig.shortLabel); - if(isBlock){ - this.addBreakingElements(newElement); - } - // Set the document properties - DocProperties.setMarkedElementProperties(markingId, { - button : button, - htmlElement : newElement - }); - },this); - if (!config.noEvent) { - this.application.fireEvent('nodeChangedExternally', config.nodes, { + if(isBlock){ + this.addBreakingElements(newElement); + } + // Set the document properties + DocProperties.setMarkedElementProperties(markingId, { + button : button, + htmlElement : newElement + }); + markedElements.push(newElement); + },this); + + Ext.callback(config.onFinish, this, [markedElements]); + + if (!config.noEvent) { + this.application.fireEvent('nodeChangedExternally', markedElements, { select : false, scroll : false, click : (config.silent)? false : true, change : true, silent: config.silent }); - } - }, - - /** - * This function adds breaking elements before and/or after the node so that text can be inserted - * @param {HTMLElement} node - */ - addBreakingElements : function(node){ - var breakingElementString = "

"; - Ext.DomHelper.insertHtml('afterEnd',node, breakingElementString); - // Add a breaking element also above the marked element but only if there isn't another breaking element - if (!node.previousSibling || node.previousSibling.getAttribute("class") != DomUtils.breakingElementClass){ - Ext.DomHelper.insertHtml('beforeBegin',node, breakingElementString); - } - }, - - isAllowedElement: function(parent, buttonConfig) { - var languageData = this.getStore("LanguagesPlugin").getData(), - documentRoot = this.getController("Editor").getBody(), - semanticRules = languageData.semanticRules, - elements, elementRules, parentId, parentConfig, parentRules, childrenRules; - if (languageData.semanticRules && languageData.semanticRules.elements) { + } + }, + + /** + * This function adds breaking elements before and/or after the node so that text can be inserted + * @param {HTMLElement} node + */ + addBreakingElements : function(node){ + //var breakingElementString = "

"; + var breakingElementString = DomUtils.getBreakingElementHtml(); + Ext.DomHelper.insertHtml('afterEnd',node, breakingElementString); + Ext.DomHelper.insertHtml('afterBegin',node, breakingElementString); + Ext.DomHelper.insertHtml('beforeEnd',node, breakingElementString); + // Add a breaking element also above the marked element but only if there isn't another breaking element + if (!node.previousSibling || node.previousSibling.nodeName != "BR" && node.previousSibling.getAttribute && node.previousSibling.getAttribute("class") != DomUtils.breakingElementClass){ + Ext.DomHelper.insertHtml('beforeBegin',node, breakingElementString); + } + }, + + isAllowedElement: function(parent, buttonConfig) { + return true; //Temporary disable rules + var languageData = this.getStore("LanguagesPlugin").getData(), + documentRoot = this.getController("Editor").getBody(), + semanticRules = languageData.semanticRules, + elements, elementRules, parentId, parentConfig, parentRules, childrenRules; + if (languageData.semanticRules && languageData.semanticRules.elements) { elements = languageData.semanticRules.elements; elementRules = elements[buttonConfig.name]; if (parent) { @@ -501,37 +642,38 @@ Ext.define('LIME.controller.Marker', { if (elementRules.cardinality > 0 && elementRules.cardinality <= this.getNumberOfChildrenByClass(documentRoot, buttonConfig.name, true)) { return false; } - } - } - - return true; - }, - - getNumberOfChildrenByClass: function(node, childClass, includeDescendant) { - var extNode = new Ext.Element(node), - childrenNumber = 0, - children = extNode.query("*[class~="+childClass+"]"); - - return children.length; - }, - - searchObjInArrayByAttribute: function(array, attrName, attrValue) { - var aLength = array.length, i; - - for(i = 0; i < aLength; i++) { - if(array[i][attrName] == attrValue) { - return array[i]; - } - } - - return null; - }, + } + } + + return true; + }, + + getNumberOfChildrenByClass: function(node, childClass, includeDescendant) { + var extNode = new Ext.Element(node), + childrenNumber = 0, + children = extNode.query("*[class~="+childClass+"]"); + + return children.length; + }, + + searchObjInArrayByAttribute: function(array, attrName, attrValue) { + var aLength = array.length, i; + + for(i = 0; i < aLength; i++) { + if(array[i][attrName] == attrValue) { + return array[i]; + } + } + + return null; + }, - init : function() { - // Listens for marking inputs - this.application.on({ - markingMenuClicked : {fn: this.wrap, scope:this}, - markingRequest : {fn: this.autoWrap, scope:this} - }); - } + init : function() { + // Listens for marking inputs + this.application.on({ + markingMenuClicked : {fn: this.wrap, scope:this}, + markingRequest : {fn: this.autoWrap, scope:this} + }); + this.application.on(Statics.eventsNames.unmarkNodes, this.unmarkNodes, this); + } }); diff --git a/app/controller/MarkingMenu.js b/app/controller/MarkingMenu.js index 7a44ba6d..82cb7644 100644 --- a/app/controller/MarkingMenu.js +++ b/app/controller/MarkingMenu.js @@ -1,40 +1,40 @@ /* * Copyright (c) 2014 - Copyright holders CIRSFID and Department of * Computer Science and Engineering of the University of Bologna - * - * Authors: + * + * Authors: * Monica Palmirani – CIRSFID of the University of Bologna * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna * Luca Cervone – CIRSFID of the University of Bologna - * + * * Permission is hereby granted to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: - * + * * The Software can be used by anyone for purposes without commercial gain, * including scientific, individual, and charity purposes. If it is used * for purposes having commercial gains, an agreement with the copyright * holders is required. The above copyright notice and this permission * notice shall be included in all copies or substantial portions of the * Software. - * + * * Except as contained in this notice, the name(s) of the above copyright * holders and authors shall not be used in advertising or otherwise to * promote the sale, use or other dealings in this Software without prior * written authorization. - * + * * The end-user documentation included with the redistribution, if any, * must include the following acknowledgment: "This product includes * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, + * Computer Science and Engineering) and its authors (Monica Palmirani, * Fabio Vitali, Luca Cervone)", in the same place and form as other * third-party acknowledgments. Alternatively, this acknowledgment may * appear in the software itself, in the same form and location as other * such third-party acknowledgments. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -71,7 +71,7 @@ Ext.define('LIME.controller.MarkingMenu', { }], /** - * @property {Object} buttonsReferences + * @property {Object} buttonsReferences * An object which contains a reference to each button created. Useful * to create sequenced unique ids. */ @@ -89,12 +89,12 @@ Ext.define('LIME.controller.MarkingMenu', { /** * Build the root of the marking buttons - * based on a static configuration file + * based on a static configuration file * loaded at runtime by {@link LIME.store.LanguagesPlugin} */ buildButtonsStructure : function(pluginData) { var me = this, // Save the scope, - root = this.getMarkingMenu().down('*[cls~=structure]'), + root = this.getMarkingMenu().down('*[cls~=structure]'), rootElements = pluginData.markupMenuRules.rootElements, commonElements = pluginData.markupMenuRules.commonElements, common = this.getMarkingMenu().down('*[cls~=commons]'), @@ -103,24 +103,20 @@ Ext.define('LIME.controller.MarkingMenu', { sortButtons = function(btn1, btn2) { return btn1.waweConfig.name > btn2.waweConfig.name; }; - + this.buttonsReferences = {}; root.removeAll(); common.removeAll(); - + for(var i=0; i idLength) ? + (allowOnlyInPaths[i].indexOf(id) != -1) : (id.indexOf(allowOnlyInPaths[i]) != -1); + if(can) { + allow = true; + break; + } + } + return Ext.Array.contains(notAllowedPaths, id) || !allow; + }), notAllowedRecords = store.queryBy(function(record, id) { + return Ext.Array.contains(notAllowedPaths, id); + }); + recordsForbidden.each(function(record) { + view.addRowCls(record.index, 'forbidden-row'); + record.notSelectable = true; + }); + notAllowedRecords.each(function(record) { + var recordEl = cmp.getView().getEl().down("[data-recordindex="+record.index+"]"); + view.addRowCls(record.index, 'forbidden-cell'); + if(recordEl) { + Ext.callback(config.notAllowedPathRender, false, [recordEl, record]); + } + record.notSelectable = true; + }); + }; + afterAddColumn = function(cmp) { + cmp.addListener("beforeselect", function(selModel, record, index) { + return (record.notSelectable) ? false : true; + }); + }; + } + + Ext.widget('newOpenfileMain', { + pathToOpen : config.path, + afterAddColumn : afterAddColumn, + onLoad : onLoad, + onOpen : Ext.bind(config.callback, config.scope) + }).show(); }, + openDocumentByUri: function(config) { + var me = this, + fullPath = DocProperties.documentInfo.originalDocId || DocProperties.documentInfo.docId, indexPath; + if (fullPath && config.path) { + indexPath = fullPath.indexOf(config.path); + if(indexPath != -1) { + config.path = fullPath.substr(0, indexPath+config.path.length); + } else { + indexPath = Utilities.globalIndexOf("/", fullPath); + if(indexPath.length>4) { + config.path = fullPath.substr(0, indexPath[4]) + config.path; + } + } + } + config.callback = function(document) { + me.openDocument(document.id); + }; + config.scope = me; + me.selectDocument(config); + }, init : function() { // save a reference to the controller var me = this; me.application.on(Statics.eventsNames.selectDocument, this.selectDocument, this); + me.application.on(Statics.eventsNames.openDocument, this.openDocumentByUri, this); // set up the control this.control({ @@ -548,10 +646,30 @@ Ext.define('LIME.controller.Storage', { }, 'listFilesPanel': { activated: function(cmp) { - var me = this, listViews = cmp.query("openFileListView"); - Ext.each(listViews, function(listView) { - me.loadOpenFileListData(listView); - }); + var me = this, listViews = cmp.query("openFileListView"), + relatedWindow = cmp.up("window"), path, + onStoreLoad = function(store, cmp) { + var recordIndex = store.findBy(function(record, id) { + return (path.indexOf(id) != -1); + }), record, fullPath; + if(recordIndex != -1) { + record = store.getAt(recordIndex); + fullPath = record.get("id"); + cmp.getView().select(recordIndex); + me.fileListViewClick(cmp, record, false, false, false, false, onStoreLoad); + } + }; + if(relatedWindow && relatedWindow.pathToOpen) { + path = relatedWindow.pathToOpen || ""; + me.loadOpenFileListData(listViews[0], false, function(store, cmp) { + Ext.callback(onStoreLoad, false, [store, cmp]); + Ext.callback(relatedWindow.onLoad, false, [store, cmp]); + }); + } else { + Ext.each(listViews, function(listView) { + me.loadOpenFileListData(listView, false, relatedWindow.onLoad); + }); + } } }, 'saveFileListView': { @@ -576,7 +694,6 @@ Ext.define('LIME.controller.Storage', { if (columnConfig && columnConfig.editor) { column.editor = columnConfig.editor; } - }, itemclick: this.fileListViewClick, recordChanged: function(cmp, record, silent) { @@ -625,6 +742,13 @@ Ext.define('LIME.controller.Storage', { }, 'newSavefileMain newSavefileToolbarOpenButton': { click: this.saveDocument + }, + 'newDocument' : { + close: function(cmp, option) { + if(!cmp.autoClosed) { + me.application.fireEvent(Statics.eventsNames.progressEnd); + } + } } }); } diff --git a/app/controller/WidgetManager.js b/app/controller/WidgetManager.js new file mode 100644 index 00000000..5329cd56 --- /dev/null +++ b/app/controller/WidgetManager.js @@ -0,0 +1,297 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/* + * This controller manages widgets of marked elements. + * It takes care of creating, updating, showing and hiding of widgets. + * It also adds a tab in ContextPanel which contains the widgets. + * */ + +Ext.define('LIME.controller.WidgetManager', { + extend : 'Ext.app.Controller', + + views: ['widgets.MarkedElementWidget'], + refs : [{ + selector: 'contextPanel', + ref: 'contextPanel' + }, { + selector: 'markedElementWidget', + ref: 'markedElementWidget' + }], + + tabGroupName: "widgetManager", + + /* + * Wrapper function for creating widgets + * + * @param {String} id The id of the widget + * @param {Object} config The configuration of the widget, created by Interpreters.parseWidget + * @return {markedElementWidget} Created widget + * */ + createWidget: function(id, config) { + var newWidget = Ext.widget('markedElementWidget', { + items : config.list, + id : id, + width: "40%", + title : config.title, + attributes : config.attributes + }); + return newWidget; + }, + + /* + * This function is called when a node is focused. + * If the focused node has a widget, the widget is created and added to the tab. + * In the end it opens the context panel if there is a widget or closes it otherwise. + * @param {HTMLElement} node The focused node + * */ + onNodeFocused: function(node) { + var widgetConfig = DocProperties.getNodeWidget(node), + elId = DomUtils.getElementId(node), + panelHeight, widget; + if(widgetConfig && elId) { + if(!this.tab.getChildByElement(elId)) { + this.tab.removeAll(true); + widget = this.createWidget(elId, widgetConfig); + this.setWidgetContent(widget); + this.tab.add(widget); + } + // Calculates the height of the panel base on numer of fields in the widget + panelHeight = (widgetConfig.list.length*30)+70; + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + true, this.tabGroupName, panelHeight); + } else { + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + false, this.tabGroupName); + } + }, + + /* + * Wrapper function to create and add a tab to the context panel. + * */ + addTab: function() { + var cmp = Ext.widget("panel", { + title: "Widgets", + padding: 5, + border: 0, + name: this.tabGroupName, + groupName: this.tabGroupName + }); + this.tab = cmp; + this.application.fireEvent(Statics.eventsNames.addContextPanelTab, cmp); + return cmp; + }, + + /* + * This function sets the content of a widget. + * It fills out all the fields of the widget with extracted data + * from attributes of the associated html node. + * + * @param {markedElementWidget} widget + * */ + + setWidgetContent: function(widget) { + var me = this, markedElement = DocProperties.getMarkedElement(widget.id), + fields = widget.query('textfield'); + + Ext.each(fields, function(field) { + var value = markedElement.htmlElement.getAttribute(field.name); + if (value) { + me.setWidgetFieldValue(widget, field, value); + } + }); + + if (widget.attributes) { + Ext.Object.each(widget.attributes, function(attribute, obj) { + var value, values; + if (obj.tpl && obj.separator) { + var tpl = new Ext.Template(obj.tpl), + tplValues = tpl.html.match(tpl.re); + value = markedElement.htmlElement.getAttribute(obj.name); + if(Ext.String.startsWith(value, obj.separator)) { + value = value.substring(obj.separator.length); + } + if (value) { + values = value.split(obj.separator); + for(var i=0; i
', selectorsInitId: 'pathSelector_', elementLinkTemplate : '%el', elementTemplate : '%el', + items:[{ + xtype: "panel", + margin: 0, + padding: 0, + style: {borderRadius:"0px",margin:"0px", border:'0px'}, + frame: true, + flex: 1 + }], /** * This function builds a path from elements and set it to the view. * @param {Object[]} elements @@ -89,11 +99,10 @@ Ext.define('LIME.view.main.editor.Path', { counter++; } var pathView = this; - this.update(this.initialPath+new_html,false,function(){pathView.fireEvent("update");}); + this.down("panel").update(this.initialPath+new_html,false,function(){pathView.fireEvent("update");}); }, initComponent: function(){ this.initialPath = Locale.strings.mainEditorPath +': '; - this.html = Locale.strings.mainEditorPath +': '; this.callParent(arguments); } }); diff --git a/app/view/main/editor/Uri.js b/app/view/main/editor/Uri.js new file mode 100644 index 00000000..0f029cec --- /dev/null +++ b/app/view/main/editor/Uri.js @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/** + * This view implements a URI viewer of the document. + */ +Ext.define('LIME.view.main.editor.Uri', { + extend : 'Ext.Panel', + // set the alias + alias : 'widget.mainEditorUri', + frame : true, + + linkTemplate: '{text}', + style : { + borderRadius : "0px", + margin : "0px", + border : '0px' + }, + + setUri : function(uri) { + var me = this, parties, uriHtml = "", partiesLength, + linkTpl = new Ext.Template(me.linkTemplate), + partialUri = ""; + me.update(""); + me.removeAll(true); + parties = uri.split("/"); + partiesLength = parties.length; + if (partiesLength < 2) { + me.applyHtml(uri); + } else { + Ext.each(parties, function(text, index) { + partialUri+= text+"/"; + uriHtml += (index != partiesLength - 1) ? linkTpl.apply({id: partialUri, text: text})+"/" : text; + }); + me.applyHtml(uriHtml); + } + }, + + applyHtml: function(html) { + var me = this; + me.update(html,false,function(){me.fireEvent("update");}); + } +}); diff --git a/app/view/markingmenu/TreeButton.js b/app/view/markingmenu/TreeButton.js index 227b59ff..f856f816 100644 --- a/app/view/markingmenu/TreeButton.js +++ b/app/view/markingmenu/TreeButton.js @@ -54,9 +54,7 @@ Ext.define('LIME.view.markingmenu.TreeButton', { requires : ['LIME.view.markingmenu.treebutton.Expander', 'LIME.view.markingmenu.treebutton.Name', - 'LIME.view.markingmenu.treebutton.Children', - 'LIME.view.markingmenu.treebutton.Widgets', - 'LIME.view.markingmenu.menuwidgets.MenuWidget'], + 'LIME.view.markingmenu.treebutton.Children'], border : false, margin:"4 2 4 2", @@ -81,9 +79,6 @@ Ext.define('LIME.view.markingmenu.TreeButton', { xtype : 'treeButtonChildren', // Hidden by default hidden : true - },{ - // Wrapper for the widgets - xtype : 'treeButtonWidgets' }], @@ -167,24 +162,6 @@ Ext.define('LIME.view.markingmenu.TreeButton', { return null; }, - /** - * This function returns a reference to the widget container - * @returns {LIME.view.markingmenu.treebutton.Widgets} This TreeButton's widgets container - */ - getWidgets : function(){ - return this.down("treeButtonWidgets"); - }, - - /** - * Returns a particular widget belonging to this button or to one of its children - * @param {String} id The id of the widget - * @returns {LIME.markingmenu.menuwidgets.MenuWidget} A reference to the widget or null if no widgets were found - */ - getWidget : function(id, children){ - var widget = this.queryById(id); - return widget; - }, - /** * This function returns a reference to the children container * @returns {LIME.view.markingmenu.treebutton.Children} This TreeButton's Children @@ -274,124 +251,7 @@ Ext.define('LIME.view.markingmenu.TreeButton', { hideChildren : function(animate){ var expander = this.down('treeButtonExpander'); if (expander) { - expander.hideChildren(false, this, animate); - } - }, - - /** - - * This function shows the widget related to this button. - * If highlight is true the shown widget is highlighted. - * If childWidgets is set this function looks for children's - * widgets and show them (even if the children are not visible). - * It's useful for nested marked elements with widgets. - * @param {String} widgetId The widget to show - * @param {Boolean} [highlight] - * @param {String[]} [childWidgets] - * @param {Boolean} [hidden] - * @return {Ext.panel.Panel} - */ - showWidget : function(widgetId, highlight, childWidgets, hidden){ - var newWidget = null, - children = this.down('treeButtonChildren').items.items; - // Check if the widgets set exists - this.widgetsSet = this.widgetsSet || {}; - // Check if this button has at least one widget, otherwise iterate on the children - if (childWidgets){ - // The main button has no widgets but its children have, let's show them! - Ext.each(childWidgets, function(childWidget){ - children.forEach(function(child){ - if (childWidget.indexOf(child.id) != -1){ - child.showWidget(childWidget); - } - }); - }); - } - // If a widget with this id already exists just show it, otherwise create it - if (this.waweConfig.widgetConfig && !this.widgetsSet[widgetId]){ - // generic xtype - var itemsList = this.waweConfig.widgetConfig.list; - newWidget = Ext.widget('menuWidget', { - items : itemsList, - id : widgetId, - title : this.waweConfig.widgetConfig.title, - attributes : this.waweConfig.widgetConfig.attributes - }); - // We take advantage of the equality between widgetId and the id of the marked element - newWidget.setContent(widgetId); - if (hidden) newWidget.hide(); - // Add the just created widget to the global list - this.widgetsSet[widgetId] = newWidget; - this.down('treeButtonWidgets').add(newWidget); - } else if (this.waweConfig.widgetConfig){ - newWidget = this.widgetsSet[widgetId]; - if (newWidget) { - //Update content of widget - newWidget.setContent(widgetId); - if (!newWidget.isVisible()){ - newWidget.show(); - } - } - } - if (highlight && newWidget && newWidget.el){ - //newWidget.el.frame("#ff0000", 3, { duration: 250 }); - newWidget.animate({ - duration : 1000, - keyframes : { - 25 : { - left : 5 - }, - 75 : { - left : -5 - }, - 100 : { - left : 0 - } - } - }); - } - return newWidget; - }, - - - /** - * This function hides the widgets of the TreeButton - * either from a given list or all of them (if the list - * is not specified). - * @param {String[]} idList - */ - hideWidgets : function(idList){ - if (!this.waweConfig.widgetConfig) return; // Nothing to do - if (!idList){ - // Hide all the widgets - for (var widget in this.widgetsSet){ - this.widgetsSet[widget].hide(); - } - } else { - // Hide only the specified ones - for (var widget in this.widgetsSet){ - if (idList.indexOf(widget)){ - this.widgetsSet[widget].hide(); - } - } - } - }, - - /** - * This function destroys a widget with the given id. - * If no id is specified all the widgets of this button are destroyed. - * @param {String} widgetId The id of the widget to destroy - */ - deleteWidgets : function(widgetId){ - var widgetsSet = this.widgetsSet; - for (var widget in widgetsSet){ - if (!widgetId || widgetId == widget){ - // Delete the component - this.remove(widgetsSet[widget]); - //Ext.destroy(widgetsSet[widget]); --> takes too much time - // Delete the property from the widgetsSet - delete widgetsSet[widget]; - } + expander.hideChildren(this, animate); } }, /** diff --git a/app/view/markingmenu/menuwidgets/MenuWidget.js b/app/view/markingmenu/menuwidgets/MenuWidget.js deleted file mode 100644 index 72b78db0..00000000 --- a/app/view/markingmenu/menuwidgets/MenuWidget.js +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2014 - Copyright holders CIRSFID and Department of - * Computer Science and Engineering of the University of Bologna - * - * Authors: - * Monica Palmirani – CIRSFID of the University of Bologna - * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna - * Luca Cervone – CIRSFID of the University of Bologna - * - * Permission is hereby granted to any person obtaining a copy of this - * software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The Software can be used by anyone for purposes without commercial gain, - * including scientific, individual, and charity purposes. If it is used - * for purposes having commercial gains, an agreement with the copyright - * holders is required. The above copyright notice and this permission - * notice shall be included in all copies or substantial portions of the - * Software. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders and authors shall not be used in advertising or otherwise to - * promote the sale, use or other dealings in this Software without prior - * written authorization. - * - * The end-user documentation included with the redistribution, if any, - * must include the following acknowledgment: "This product includes - * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, - * Fabio Vitali, Luca Cervone)", in the same place and form as other - * third-party acknowledgments. Alternatively, this acknowledgment may - * appear in the software itself, in the same form and location as other - * such third-party acknowledgments. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * This is implementation of widget for Marking Menu - */ -Ext.define('LIME.view.markingmenu.menuwidgets.MenuWidget', { - extend : 'Ext.form.Panel', - alias : 'widget.menuWidget', - collapsible : true, - frame : true, - fieldDefaults : { - msgTarget : 'side', - labelWidth : 30 - }, - tools : [{ - type : 'search', - hidden:true, - tooltip : 'Try to recognize automatically' - }], - defaults : { - anchor : '100%' - }, - margin:"4 0 0 0", - - /** - *Set content of this widget from HTMLElement identified by elementId or from content variable - * @param {String} elementId - * @param {String} [content] - */ - setContent : function(elementId, content) { - var textField, - fields = this.query('textfield'), - attributes = this.attributes, - value; - if(content) { - textField = this.down('textfield'), - value = content; - this.setFieldValue(textField, value); - } else { - Ext.each(fields, function(field) { - var value = DocProperties.markedElements[elementId].htmlElement.getAttribute(field.name); - if (value) { - this.setFieldValue(field, value); - } - }, this); - if (attributes) { - Ext.Object.each(attributes, function(attribute, obj) { - var value, values; - if (obj.tpl && obj.separator) { - var tpl = new Ext.Template(obj.tpl), - tplValues = tpl.html.match(tpl.re); - value = DocProperties.markedElements[elementId].htmlElement.getAttribute(obj.name); - if(Ext.String.startsWith(value, obj.separator)) { - value = value.substring(obj.separator.length); - } - if (value) { - values = value.split(obj.separator); - for(var i=0; i0;){q=(1<0;){r=l[s];q[r]=c[r]}return q},d=function(v,y,R,q,x,F,w,O,t,H,B){var r=function A(){return this.constructor.apply(this,arguments)||null},Q=r,s={enumerableMembers:q&b,onCreated:B,onBeforeCreated:e,aliases:O},E=R.alternateClassName||[],M=Ext.global,I,L,N,D,K,U,T,u,J,z,P,G,C,S;for(N=l.length;N-->0;){T=l[N];r[T]=c[T]}if(R.$isFunction){R=R(r)}s.data=R;z=R.statics,R.$className=v;if("$className" in R){r.$className=R.$className}r.extend(y);J=r.prototype;r.xtype=R.xtype=x[0];if(x){J.xtypes=x}J.xtypesChain=F;J.xtypesMap=w;R.alias=O;Q.triggerExtended(r,R,s);if(R.onClassExtended){r.onExtended(R.onClassExtended,r);delete R.onClassExtended}if(z){for(P in z){if(z.hasOwnProperty(P)){S=z[P];if(S&&S.$isFunction&&!S.$isClass&&S!==Ext.emptyFn&&S!==Ext.identityFn){r[P]=C=S;C.$owner=r;C.$name=P}r[P]=S}}}delete R.statics;if(R.inheritableStatics){r.addInheritableStatics(R.inheritableStatics)}if(J.onClassExtended){Q.onExtended(J.onClassExtended,Q);delete J.onClassExtended}if(R.config){g(r,R)}s.onBeforeCreated(r,s.data,s);for(N=0,K=t&&t.length;N0){r--;p[r]="var Ext=window."+Ext.name+";"+p[r]}}i=p.join("");q=o[i];if(!q){q=Function.prototype.constructor.apply(Function.prototype,p);o[i]=q}return q},functionFactory:function(){var p=this,i=Array.prototype.slice.call(arguments),o;if(Ext.isSandboxed){o=i.length;if(o>0){o--;i[o]="var Ext=window."+Ext.name+";"+i[o]}}return Function.prototype.constructor.apply(Function.prototype,i)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(i){throw new Error(i)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(p){var i=Ext.app.namespaces,o;for(o in p){if(p.hasOwnProperty(o)){i[o]=true}}},addNamespaces:function(q){var r=Ext.app.namespaces,p,o;if(!Ext.isArray(q)){q=[q]}for(p=0,o=q.length;pi.length&&(p+"."===o.substring(0,p.length+1))){i=p}}return i===""?undefined:i}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;ce){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,i=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(r,q){return e[q]},m=function(r,q){return(q in a)?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(r,q){if(r===null||r===undefined||q===null||q===undefined){return false}return q.length<=r.length};return{insert:function(t,u,r){if(!t){return u}if(!u){return t}var q=t.length;if(!r&&r!==0){r=q}if(r<0){r*=-1;if(r>=q){r=0}else{r=q-r}}if(r===0){t=u+t}else{if(r>=t.length){t+=u}else{t=t.substr(0,r)+u+t.substr(r)}}return t},startsWith:function(t,u,r){var q=c(t,u);if(q){if(r){t=t.toLowerCase();u=u.toLowerCase()}q=t.lastIndexOf(u,0)===0}return q},endsWith:function(u,r,t){var q=c(u,r);if(q){if(t){u=u.toLowerCase();r=r.toLowerCase()}q=u.indexOf(r,u.length-r.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return(!q)?q:String(q).replace(h,g)},htmlDecode:function(q){return(!q)?q:String(q).replace(d,m)},addCharacterEntities:function(r){var q=[],u=[],s,t;for(s in r){t=r[s];a[s]=t;e[t]=s;q.push(t);u.push(s)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+u.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&":"&",">":">","<":"<",""":'"',"'":"'"})},urlAppend:function(r,q){if(!Ext.isEmpty(q)){return r+(r.indexOf("?")===-1?"?":"&")+q}return r},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(s,q,t){if(s&&s.length>q){if(t){var u=s.substr(0,q-2),r=Math.max(u.lastIndexOf(" "),u.lastIndexOf("."),u.lastIndexOf("!"),u.lastIndexOf("?"));if(r!==-1&&r>=(q-15)){return u.substr(0,r)+"..."}}return s.substr(0,q-3)+"..."}return s},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(r,s,q){return r===s?q:s},leftPad:function(r,s,t){var q=String(r);t=t||" ";while(q.lengthe)?e:d)},snap:function(h,e,g,i){var d;if(h===undefined||h=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,i)},snapInRange:function(h,d,g,i){var e;g=(g||0);if(h===undefined||h=d){h+=d}}if(i!==undefined){if(h>(i=b.snapInRange(i,d,g))){h=i}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,p=g.slice,r=(function(){var B=[],e,A=20;if(!B.splice){return false}while(A--){B.push("A")}B.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=B.length;B.splice(13,0,"XXX");if(e+1!=B.length){return false}return true}()),k="forEach" in g,v="map" in g,q="indexOf" in g,z="every" in g,c="some" in g,d="filter" in g,o=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),l=true,a,x,u,w;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(t){l=false}function n(A,e){return(e<0)?Math.max(0,A.length+e):Math.min(A.length,e)}function y(H,G,A,K){var L=K?K.length:0,C=H.length,I=n(H,G),F,J,B,e,D,E;if(I===C){if(L){H.push.apply(H,K)}}else{F=Math.min(A,C-I);J=I+F;B=J+L-F;e=C-J;D=C-F;if(BJ){for(E=e;E--;){H[B+E]=H[J+E]}}}if(L&&I===D){H.length=D;H.push.apply(H,K)}else{H.length=D+L;for(E=0;E-1;A--){if(C.call(B||E[A],E[A],A,E)===false){return A}}}return true},forEach:k?function(B,A,e){B.forEach(A,e)}:function(D,B,A){var e=0,C=D.length;for(;ee){e=B}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(D){var A=0,e,C,B;for(e=0,C=D.length;e0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,i,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(i);if(!g||(a>=b)){h()}else{i=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,l,d){var c=b.toQueryObjects,k=[],g,h;if(Ext.isArray(l)){for(g=0,h=l.length;g0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p daysInMonth) {","d = daysInMonth;","}","}","h = from(h, from(def.h, dt.getHours()));","i = from(i, from(def.i, dt.getMinutes()));","s = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||d.now()))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(i,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,r)).getDate())}s.setDate(m);s.setMonth(o.getMonth()+r);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,r)).getDate())}s.setDate(m);s.setFullYear(o.getFullYear()+r);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(s);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=(d.isLeapYear(s)?366:365);p=1000*60*60*24*m;break}if(p){s.setTime(s.getTime()+p*q)}}return s},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,t=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],r=t.length,n=q.length,o,u,v;for(v=0;v0){for(e=0;e0){if(A===z){return C[A]}B=C[A];z=z.substring(A.length+1)}if(B.length>0){B+="/"}return B.replace(c,"/")+z.replace(g,"/")+".js"},getPrefix:function(A){var C=l.config.paths,B,z="";if(C.hasOwnProperty(A)){return A}for(B in C){if(C.hasOwnProperty(B)&&B+"."===A.substring(0,B.length+1)){if(B.length>z.length){z=B}}}return z},isAClassNameWithAKnownPrefix:function(z){var A=l.getPrefix(z);return A!==""&&A!==z},require:function(B,A,z,C){if(A){A.call(z)}},syncRequire:function(){},exclude:function(z){return{require:function(C,B,A){return l.require(C,B,A,z)},syncRequire:function(C,B,A){return l.syncRequire(C,B,A,z)}}},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}C.call(B)}});var r=[],s={},v={},t={},q={},x=[],y=[],i={},m=function(z,A){return A.priority-z.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:r,isClassFileLoaded:s,isFileLoaded:v,readyListeners:x,optionalRequires:y,requiresMap:i,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:t,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var D=r.length,A,C,z,B;if(!D&&!l.scriptsLoading){return l.triggerReady()}for(A=0;Al.numLoadedFiles){continue}for(z=0;z=200&&D<300)||(D===304)){if(!Ext.isIE){E="\n//@ sourceURL="+A}Ext.globalEval(J.responseText+E);H.call(K)}else{}}J=null}},syncRequire:function(){var z=l.syncModeEnabled;if(!z){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!z){l.syncModeEnabled=false}l.refreshQueue()},require:function(R,I,C,E){var K={},B={},H=[],T=[],Q=[],A=[],G,S,M,L,z,F,P,O,N,J,D;if(E){E=(typeof E==="string")?[E]:E;for(O=0,J=E.length;O0){H=b.getNamesByExpression(z);for(N=0,D=H.length;N0){G=function(){var V=[],U,W;for(U=0,W=A.length;U0){T=b.getNamesByExpression(L);D=T.length;for(N=0;N0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((Q.length>1)?"es":"")+": "+Q.join(", "))}}else{G.call(C);return l}S=l.syncModeEnabled;if(!S){r.push({requires:Q.slice(),callback:G,scope:C})}J=Q.length;for(O=0;Owindow.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b]+>/gi,i=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,k=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(l){return l!==undefined?l:""},defaultValue:function(m,l){return m!==undefined&&m!==""?m:l},substr:"ab".substr(-1)!="b"?function(m,o,l){var n=String(m);return(o<0)?n.substr(Math.max(n.length+o,0),l):n.substr(o,l)}:function(m,n,l){return String(m).substr(n,l)},lowercase:function(l){return String(l).toLowerCase()},uppercase:function(l){return String(l).toUpperCase()},usMoney:function(l){return g.currency(l,"$",2)},currency:function(n,p,m,l){var r="",q=",0",o=0;n=n-0;if(n<0){n=-n;r="-"}m=Ext.isDefined(m)?m:g.currencyPrecision;q+=(m>0?".":"");for(;o2){}else{if(r.length===2){p=r[1].length;x=b.test(r[1])}}l=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(m?",thousandSeparator,thousands=[],j,n,i":"")+(s?',formatString="'+o+'",formatPattern=/[\\d,\\.#]+/':"")+(x?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+p+");"];if(m){if(p){l[l.length]='parts=fnum.split(".");';l[l.length]="fnum=parts[0];"}l[l.length]="if(v>=1000) {";l[l.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(m){m=m||0;if(typeof m==="number"){return{top:m,right:m,bottom:m,left:m}}var n=m.split(" "),l=n.length;if(l==1){n[1]=n[2]=n[3]=n[0]}else{if(l==2){n[2]=n[0];n[3]=n[1]}else{if(l==3){n[3]=n[1]}}}return{top:parseInt(n[0],10)||0,right:parseInt(n[1],10)||0,bottom:parseInt(n[2],10)||0,left:parseInt(n[3],10)||0}},escapeRegex:function(l){return l.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var n=this,e=n.tasks,a=Ext.Date.now(),o=1e+99,l=e.length,c,p,h,b,d,g;n.timerId=null;n.firing=true;for(h=0;hc){o=c}}}if(p){n.tasks=p}n.firing=false;if(n.tasks.length){n.startTimer(o-a,Ext.Date.now())}if(n.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e',''," ({childCount} children)","",''," ({depth} deep)","",'',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","",""].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth','
',"",'
','
',"
",'
','
'].join("");p.body.appendChild(d)}g=c[m];while(h--){k=i[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(l,n){var k=["webkit","Moz","o","ms","khtml"],m="TransitionEnd",d=[k[0]+m,"transitionend",k[2]+m,k[3]+m,k[4]+m],h=k.length,g=0,e=false;for(;g

";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",i="linear-gradient(left top, black, white)",h="-moz-"+i,e="-ms-"+i,g="-o-"+i,n=[m+l,m+i,m+h,m+e,m+g];d.style.cssText=n.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,k){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['
','
',"
"].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,i){i.innerHTML='
';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(k,m,l,i){if(h){g.cancel()}a=k||a,e=m||e;d=l||d;b=i||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(q,s,u){var o=this,p,k,r,e,t,n,h,m,l,g;s=s||o.observable;if(!o.isListening(q,s)){k=o.createListener(q,s,u);if(o.firing){o.listeners=o.listeners.slice(0)}p=o.listeners;m=h=p.length;r=u&&u.priority;t=o._highestNegativePriorityIndex;n=(t!==undefined);if(r){e=(r<0);if(!e||n){for(l=(e?t:0);l0){m.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h111&&k.keyCode<124){k.keyCode=-1}}catch(l){}}},getRelatedTarget:function(k){k=k.browserEvent||k;var l=k.relatedTarget;if(!l){if(b.mouseLeaveRe.test(k.type)){l=k.toElement}else{if(b.mouseEnterRe.test(k.type)){l=k.fromElement}}}return b.resolveTextNode(l)},getPageX:function(k){return b.getPageXY(k)[0]},getPageY:function(k){return b.getPageXY(k)[1]},getPageXY:function(m){m=m.browserEvent||m;var l=m.pageX,o=m.pageY,n=h.documentElement,k=h.body;if(!l&&l!==0){l=m.clientX+(n&&n.scrollLeft||k&&k.scrollLeft||0)-(n&&n.clientLeft||k&&k.clientLeft||0);o=m.clientY+(n&&n.scrollTop||k&&k.scrollTop||0)-(n&&n.clientTop||k&&k.clientTop||0)}return[l,o]},getTarget:function(k){k=k.browserEvent||k;return b.resolveTextNode(k.target||k.srcElement)},resolveTextNode:Ext.isGecko?function(l){if(l){var k=HTMLElement.prototype.toString.call(l);if(k!=="[xpconnect wrapped native prototype]"&&k!=="[object XULElement]"){return l.nodeType==3?l.parentNode:l}}}:function(k){return k&&k.nodeType==3?k.parentNode:k},curWidth:0,curHeight:0,onWindowResize:function(n,m,l){var k=b.resizeEvent;if(!k){b.resizeEvent=k=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}k.addListener(n,m,l)},fireResize:function(){var k=Ext.Element.getViewWidth(),l=Ext.Element.getViewHeight();if(b.curHeight!=l||b.curWidth!=k){b.curHeight=l;b.curWidth=k;b.resizeEvent.fire(k,l)}},removeResizeListener:function(m,l){var k=b.resizeEvent;if(k){k.removeListener(m,l)}},onWindowUnload:function(n,m,l){var k=b.unloadEvent;if(!k){b.unloadEvent=k=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(n){k.addListener(n,m,l)}},fireUnload:function(){try{h=g=undefined;var p,l,n,m,k;b.unloadEvent.fire();if(Ext.isGecko3){p=Ext.ComponentQuery.query("gridview");l=0;n=p.length;for(;l=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var k=true;try{document.documentElement.doScroll("left")}catch(l){k=false}if(k&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return k},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var k=document.readyState;if(b.readyStatesRe.test(k)){b.onReadyEvent({type:k})}},bindReadyEvent:function(){var k=true;if(b.hasBoundOnReady){return}try{k=window.frameElement===undefined}catch(l){k=false}if(!k||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(m,l,k){Ext.Loader.onReady(m,l,true,k)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();Ext.setVersion("ext-theme-base","4.2.1");Ext.setVersion("ext-theme-classic","4.2.1");Ext.setVersion("ext-theme-neutral","4.2.1");(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(l,i,h){var k=function(m,n){return i.apply(h,[m].concat(n))};this.captureArgs(l,k,h)},captureArgs:function(k,i,h){k.fireEventArgs=Ext.Function.createInterceptor(k.fireEventArgs,i,h)},observe:function(h,i){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(i)){h.on(i)}}return h},prepareClass:function(k,i){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||(i&&i.HasListeners)||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var i=this;Ext.apply(i,h);if(!i.hasListeners){i.hasListeners=new i.HasListeners()}i.events=i.events||{};if(i.listeners){i.on(i.listeners);i.listeners=null}if(i.bubbleEvents){i.enableBubble(i.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,r,k){var m=this,o=m.managedListeners=m.managedListeners||[],i,h;if(typeof l!=="string"){h=arguments.length>4?r:l;r=l;for(l in r){if(r.hasOwnProperty(l)){i=r[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,i.fn||i,i.scope||r.scope||q,i.fn?i:h,true)}}}if(r&&r.destroyable){return new b(m,p,r)}}else{if(typeof n==="string"){q=q||m;n=Ext.resolveMethod(n,q)}o.push({item:p,ename:l,fn:n,scope:q,options:r});p.on(l,n,q,r);if(!k&&r&&r.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(r,m,p,s){var o=this,t,k,q,h,n,l;if(typeof m!=="string"){t=m;for(m in t){if(t.hasOwnProperty(m)){k=t[m];if(!o.eventOptionsRe.test(m)){o.removeManagedListener(r,m,k.fn||k,k.scope||t.scope||s)}}}}else{q=o.managedListeners?o.managedListeners.slice():[];if(typeof p==="string"){s=s||o;p=Ext.resolveMethod(p,s)}for(n=0,h=q.length;n=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(l,i,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(i,h,g);return k},createMouseEvent:function(v,t,n,m,p,l,i,k,g,s,r,o,q){var h=v.createEvent("MouseEvents"),u=v.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(t,n,m,u,p,l,i,l,i,k,g,s,r,o,q)}else{h=v.createEvent("UIEvents");h.initEvent(t,n,m);h.view=u;h.detail=p;h.screenX=l;h.screenY=i;h.clientX=l;h.clientY=i;h.ctrlKey=k;h.altKey=g;h.metaKey=r;h.shiftKey=s;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,i,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,i,h,g,k);return m},fireEvent:function(i,g,h){i.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,i,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(u,t,n,m,p,l,i,k,g,s,r,o,q){var h=u.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=i;h.clientX=l;h.clientY=i;h.ctrlKey=k;h.altKey=g;h.shiftKey=s;h.metaKey=r;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,i){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(i,g,h){i.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(i,k){var h=k[0],g=k[1];e[i]=function(n,l){var m=d.createHtmlEvent(i,h,g);d.fireEvent(n,i,m)}});function b(i,h){var g=(i!="mousemove");return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,i,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,i,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(i,k){var h=k[0],g=k[1];e[i]=function(n,l){var m=d.createUIEvent(n.ownerDocument,i,h,g,1);d.fireEvent(n,i,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var i=this,h=e[i.type]||a,g=k?(k.dom||k):i.getTarget();g=d.fixTarget(g);h(g,i)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g")}else{b.push(">");if((a=k.tpl)){a.applyOut(k.tplData,b)}if((a=k.html)){b.push(a)}if((a=k.cn||k.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[l]||(c[l]=""))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,i=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(i||k){m=c.activeElement||b;e=m&&m.tagName;if((k&&e=="TEXTAREA")||(i&&e=="INPUT"&&m.type=="text")){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(i){var k=i.elements||(document.forms[i]||Ext.getDom(i)).elements,u=false,t=encodeURIComponent,n="",m=k.length,p,g,s,w,v,q,l,r,h;for(q=0;q0?t:0},getWidth:function(t){var v=this.dom,u=t?(v.clientWidth-this.getPadding("lr")):v.offsetWidth;return u>0?u:0},setWidth:function(t){var u=this;u.dom.style.width=d.addUnits(t);return u},setHeight:function(t){var u=this;u.dom.style.height=d.addUnits(t);return u},getBorderWidth:function(t){return this.addStyles(t,m)},getPadding:function(t){return this.addStyles(t,g)},margins:o,applyStyles:function(v){if(v){var u,t,w=this.dom;if(typeof v=="function"){v=v.call()}if(typeof v=="string"){v=Ext.util.Format.trim(v).split(/\s*(?::|;)\s*/);for(u=0,t=v.length;u'+u+""):""});B=z.getSize();w.mask=D;if(v===document.body){B.height=window.innerHeight;if(z.orientationHandler){Ext.EventManager.unOrientationChange(z.orientationHandler,z)}z.orientationHandler=function(){B=z.getSize();B.height=window.innerHeight;D.setSize(B)};Ext.EventManager.onOrientationChange(z.orientationHandler,z)}D.setSize(B);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.mask,v=Ext.baseCSSPrefix;if(t){t.remove();delete w.mask}u.removeCls([v+"masked",v+"masked-relative"]);if(u.dom===document.body){Ext.EventManager.unOrientationChange(u.orientationHandler,u);delete u.orientationHandler}}});Ext.onReady(function(){var B=Ext.supports,t,z,x,u,A;function y(G,D,F,C){var E=C[this.name]||"";return c.test(E)?"transparent":E}function w(I,F,H,E){var C=E.marginRight,D,G;if(C!="0px"){D=I.style;G=D.display;D.display="inline-block";C=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,null)).marginRight;D.display=G}return C}function v(J,G,I,F){var C=F.marginRight,E,D,H;if(C!="0px"){E=J.style;D=d.getRightMarginFixCleaner(J);H=E.display;E.display="inline-block";C=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,"")).marginRight;E.display=H;D()}return C}t=d.prototype.styleHooks;if(B.init){B.init()}if(!B.RightMargin){t.marginRight=t["margin-right"]={name:"marginRight",get:(B.DisplayChangeInputSelectionBug||B.DisplayChangeTextAreaSelectionBug)?v:w}}if(!B.TransparentColor){z=["background-color","border-color","color","outline-color"];for(x=z.length;x--;){u=z[x];A=d.normalize(u);t[u]=t[A]={name:A,get:y}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var i=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof i){if(c!=i.docEl&&c!=i.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return i.select(c)}else{if(c===k){if(!i.docEl){b=i.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);i.addToCache(b)}return i.docEl}else{if(c===window){if(!i.winEl){i.winEl=Ext.Object.chain(d.prototype);i.winEl.dom=window;i.winEl.id=Ext.id(window);i.addToCache(i.winEl)}return i.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g",o=""+h,l=c+"",e=""+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(r,x){var s,A=document,v,y,t,z,w,u;if(Ext.isArray(r)){s=A.createDocumentFragment();for(w=0,u=r.length;w1){for(;c]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {"," "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {"," return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,i,d,g,c;if(!a){return null}e=a[1];i=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(i&&h.useFormat){d=d?","+d:"";if(i.substr(0,5)!="this."){i="fm."+i+"("}else{i+="("}}else{return c}return i+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="text";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}:function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n};function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}return result};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-\.]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)===0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l===0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f===0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;ia.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,i=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[i]=e;h[i]=e}else{b={to:{}};b.to[i]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var n=this,l=n.dom,i=n.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=i[0]+b.scrollLeft,o=i[1]+b.scrollTop,a=o+l.offsetHeight,p=g+l.offsetWidth,s=b.clientHeight,r=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),k=r+s,q=d+b.clientWidth,m;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){n.scrollChildFly.attach(l).highlight()}}},c)}else{n.scrollChildFly.attach(l).highlight()}}if(l.offsetHeight>s||ok){m=a-s}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("top",m,c)}if(e!==false){m=null;if(l.offsetWidth>b.clientWidth||gq){m=p-b.clientWidth}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("left",m,c)}}return n},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(k,a,c){if(!this.isScrollable()){return false}var i=this,e=i.dom,h=k==="r"||k==="l"?"left":"top",b=false,d,g;if(k==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=i.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=i.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var s=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",u="hidden",r="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",v="originalClip",b=/#document|body/i,w,g,p,d,t,i,x;if(!o||!o.getComputedStyle){s.prototype.getStyle=function(C,B){var O=this,J=O.dom,M=typeof C!="string",k=O.styleHooks,z=C,A=z,I=1,E=B,N,F,y,D,H,K,G;if(M){y={};z=A[0];G=0;if(!(I=A.length)){return y}}if(!J||J.documentElement){return y||""}F=J.style;if(B){K=F}else{K=J.currentStyle;if(!K){E=true;K=F}}do{D=k[z];if(!D){k[z]=D={name:s.normalize(z)}}if(D.get){H=D.get(J,O,E,K)}else{N=D.name;if(D.canThrow){try{H=K[N]}catch(L){H=""}}else{H=K?K[N]:""}}if(!M){return H}y[z]=H;z=A[++G]}while(G0&&C<0.5){k++}}}if(A){k-=z.getBorderWidth("tb")+z.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,C){var A=this,D=A.dom,B=A.isStyle("display","none"),z,y,E;if(B){return 0}if(C&&Ext.supports.BoundingClientRect){z=D.getBoundingClientRect();y=(A.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(z.bottom-z.top):(z.right-z.left)}else{y=D.offsetWidth}if(Ext.supports.Direct2DBug&&!A.vertical){E=A.adjustDirect2DDimension(h);if(C){y+=E}else{if(E>0&&E<0.5){y++}}}if(k){y-=A.getBorderWidth("lr")+A.getPadding("lr")}return(y<0)?0:y},setWidth:function(y,k){var z=this;y=z.adjustWidth(y);if(!k||!z.anim){z.dom.style.width=z.addUnits(y)}else{if(!Ext.isObject(k)){k={}}z.animate(Ext.applyIf({to:{width:y}},k))}return z},setHeight:function(k,y){var z=this;k=z.adjustHeight(k);if(!y||!z.anim){z.dom.style.height=z.addUnits(k)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{height:k}},y))}return z},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(z,k,y){var A=this;if(Ext.isObject(z)){y=k;k=z.height;z=z.width}z=A.adjustWidth(z);k=A.adjustHeight(k);if(!y||!A.anim){A.dom.style.width=A.addUnits(z);A.dom.style.height=A.addUnits(k)}else{if(y===true){y={}}A.animate(Ext.applyIf({to:{width:z,height:k}},y))}return A},getViewSize:function(){var z=this,A=z.dom,y=b.test(A.nodeName),k;if(y){k={width:s.getViewWidth(),height:s.getViewHeight()}}else{k={width:A.clientWidth,height:A.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("lr")+y.getPadding("lr"))}return(z&&k<0)?0:k},adjustHeight:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("tb")+y.getPadding("tb"))}return(z&&k<0)?0:k},getColor:function(y,z,E){var B=this.getStyle(y),A=E||E===""?E:"#",D,k,C=0;if(!B||(/transparent|inherit/.test(B))){return z}if(/^r/.test(B)){B=B.slice(4,B.length-1).split(",");k=B.length;for(;C5?A.toLowerCase():z)},setOpacity:function(y,k){var z=this;if(!z.dom){return z}if(!k||!z.anim){z.setStyle("opacity",y)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}z.animate(Ext.applyIf({to:{opacity:y}},k))}return z},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(z){var E=this,y=E.dom,C=E.getStyle("display"),B=y.style.display,F=y.style.position,D=z===h?0:1,k=y.currentStyle,A;if(C==="inline"){y.style.display="inline-block"}y.style.position=C.match(q)?"absolute":"static";A=(parseFloat(k[z])||parseFloat(k.msTransformOrigin.split(" ")[D])*2)%1;y.style.position=F;if(C==="inline"){y.style.display=B}return A},clip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(!z[e]){z[e]=true;k=y.getStyle([l,n,m]);z[v]={o:k[l],x:k[n],y:k[m]};y.setStyle(l,u);y.setStyle(n,u);y.setStyle(m,u)}return y},unclip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(z[e]){z[e]=false;k=z[v];if(k.o){y.setStyle(l,k.o)}if(k.x){y.setStyle(n,k.x)}if(k.y){y.setStyle(m,k.y)}}return y},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var y=Ext.get(this.insertHtml("beforeBegin","
"+Ext.String.format(s.boxMarkup,k)+"
"));Ext.DomQuery.selectNode("."+k+"-mc",y.dom).appendChild(this.dom);return y},getComputedHeight:function(){var y=this,k=Math.max(y.dom.offsetHeight,y.dom.clientHeight);if(!k){k=parseFloat(y.getStyle(r))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("tb")}}return k},getComputedWidth:function(){var y=this,k=Math.max(y.dom.offsetWidth,y.dom.clientWidth);if(!k){k=parseFloat(y.getStyle(h))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("lr")}}return k},getFrameWidth:function(y,k){return(k&&this.isBorderBox())?0:(this.getPadding(y)+this.getBorderWidth(y))},addClsOnOver:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.hover(function(){if(k&&C.call(y||A,A)===false){return}Ext.fly(B,a).addCls(z)},function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnFocus:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("focus",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z)});A.on("blur",function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnClick:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("mousedown",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z);var E=Ext.getDoc(),D=function(){Ext.fly(B,a).removeCls(z);E.removeListener("mouseup",D)};E.on("mouseup",D)});return A},getStyleSize:function(){var B=this,C=this.dom,y=b.test(C.nodeName),A,k,z;if(y){return{width:s.getViewWidth(),height:s.getViewHeight()}}A=B.getStyle([r,h],true);if(A.width&&A.width!="auto"){k=parseFloat(A.width);if(B.isBorderBox()){k-=B.getFrameWidth("lr")}}if(A.height&&A.height!="auto"){z=parseFloat(A.height);if(B.isBorderBox()){z-=B.getFrameWidth("tb")}}return{width:k||B.getWidth(true),height:z||B.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(s.unselectableCls);k.addCls(s.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(s.selectableCls);k.addCls(s.unselectableCls);return k},setVertical:function(B,y){var A=this,z=s.prototype,k;A.vertical=true;if(y){A.addCls(A.verticalCls=y)}A.setWidth=z.setHeight;A.setHeight=z.setWidth;if(!Ext.isIE9m){A.getWidth=z.getHeight;A.getHeight=z.getWidth}A.styleHooks=(B===270)?s.prototype.verticalStyleHooks270:s.prototype.verticalStyleHooks90},setHorizontal:function(){var y=this,k=y.verticalCls;delete y.vertical;if(k){delete y.verticalCls;y.removeCls(k)}delete y.setWidth;delete y.setHeight;if(!Ext.isIE9m){delete y.getWidth;delete y.getHeight}delete y.styleHooks}});s.prototype.styleHooks=w=Ext.dom.AbstractElement.prototype.styleHooks;s.prototype.verticalStyleHooks90=g=Ext.Object.chain(s.prototype.styleHooks);s.prototype.verticalStyleHooks270=p=Ext.Object.chain(s.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){w.fontSize=w["font-size"]={name:"fontSize",canThrow:true};w.fontStyle=w["font-style"]={name:"fontStyle",canThrow:true};w.fontFamily=w["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(A,y,z,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];t=d.length;while(t--){i=d[t];x="border"+i+"Width";w["border-"+i.toLowerCase()+"-width"]=w[x]={name:x,styleName:"border"+i+"Style",get:c}}}Ext.getDoc().on("selectstart",function(B,D){var C=document.documentElement,A=s.selectableCls,z=s.unselectableCls,k=D&&D.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(D&&D.nodeType===1&&D!==C){var y=Ext.fly(D);if(y.hasCls(A)){return}if(y.hasCls(z)){B.stopEvent();return}D=D.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,i=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:i});Ext.EventManager.onWindowResize(c,null);if(i){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,i,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+i,n[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(k,D,e){var E=this,B=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,F=document,C=F.documentElement,p=F.body,A=(C.scrollLeft||p.scrollLeft||0),w=(C.scrollTop||p.scrollTop||0),a,h,t,g,u,v,r,s,z,q,o,b,c,i,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];D=(!D||D=="?"?"tl-bl?":(!(/-/).test(D)&&D!==""?"tl-"+D:D||"tl-bl")).toLowerCase();D=E.convertPositionSpec(D);a=D.match(E._alignRe);q=a[1];o=a[2];z=!!a[3];h=E.getAnchorXY(q,true);t=E.getAnchorToXY(k,o,false);n=t[0]-h[0]+e[0];l=t[1]-h[1]+e[1];if(z){g=E.getWidth();u=E.getHeight();v=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);i=o.charAt(0);m=o.charAt(o.length-1);r=((b=="t"&&i=="b")||(b=="b"&&i=="t"));s=((c=="r"&&m=="l")||(c=="l"&&m=="r"));if(n+g>B+A){n=s?v.left-g:B+A-g}if(nd+w){l=r?v.top-u:d+w-u}if(le.right){d=true;b[0]=(e.right-i.right)}if(i.left+b[0]e.bottom){d=true;b[1]=(e.bottom-i.bottom)}if(i.top+b[1]0||q.scrollLeft>0){t[++p]=q}}return t};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(s,r){var p=this;r=r||p.dom;try{if(Number(s)){Ext.defer(p.focus,s,p,[null,r])}else{r.focus()}}catch(q){}return p},blur:function(){var p=this,r=p.dom;if(r!==document.body){try{r.blur()}catch(q){}return p}else{return p.focus(undefined,r)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,s,r){var t=this;t.on("mouseenter",q,s||t.dom,r);t.on("mouseleave",p,s||t.dom,r);return t},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(p,r){var s=this.dom,q;if(r){q=typeof s[r+":"+p];if(q!="undefined"&&q!="unknown"){return s[r+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return s[p]||null}:function(p,q){var r=this.dom;if(q){return r.getAttributeNS(q,p)||r.getAttribute(q+":"+p)}return r.getAttribute(p)||r[p]||null},cacheScrollValues:function(){var t=this,s,r,q,u=[],p=function(){for(q=0;q]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='
';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e
';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g";for(;v\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:r},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];i.Query=Ext.extend(Object,{constructor:function(s){s=s||{};Ext.apply(this,s)},execute:function(t){var v=this.operations,w=0,x=v.length,u,s;if(!t){s=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(t)){s=t}else{if(t.isMixedCollection){s=t.items}}}for(;w1){for(v=0,w=x.length;v0){s.push(t[0])}return s},last:function(u){var s=u.length,t=[];if(s>0){t.push(u[s-1])}return t},focusable:function(t){var s=t.length,v=[],u=0,w;for(;u1){w=v.length;for(u=0;u=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},1,0,0,0,0,0,[Ext.util,"Filter"],function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]}));(Ext.cmd.derive("Ext.util.AbstractMixedCollection",Ext.Base,{isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(c,d){var a=this.length,b;if(arguments.length===1){b=this.insert(a,c)}else{b=this.insert(a,c,d)}return b},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c2){a=this.doInsert(b,[c],[d])}else{a=this.doInsert(b,[c])}a=a[0]}return a},doInsert:function(k,p,o){var m=this,b,c,g,l=p.length,a=l,e=m.hasListeners.add,d,h={},n,r,q;if(o!=null){m.useLinearSearch=true}else{o=p;p=new Array(l);for(g=0;g=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var k=this,b,l,g,e,c,d;if(h=0){if(!a){a=1}e=Math.min(h+a,k.length);a=e-h;d=e===k.length;c=d&&k.indexGeneration===k.generation;for(g=h;g=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(!this.map.hasOwnProperty(a)){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=e.keys,a=c.length,b;for(b=0;bb){e=true;g=i;i=b;b=g}if(i<0){i=0}if(b==null||b>=a){b=a-1}c=d.slice(i,b+1);if(e&&c.length){c.reverse()}return c},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var k=this,a=new k.self(k.initialConfig),h=k.keys,b=k.items,g=b.length,c;a.getKey=k.getKey;for(c=0;ce?1:(g>1;h=d(e,b[c]);if(h>=0){i=c+1}else{if(h<0){a=c-1}}}return i},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],i;h.suspendEvents();for(i in d){a[d[i]]=b[i]}for(c=0;ce?1:(g=d.duration),e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}},1,0,0,0,0,[["queue",Ext.fx.Queue]],[Ext.fx,"Manager"],0));(Ext.cmd.derive("Ext.fx.Animator",Ext.Base,{isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,m=[],k=h.to||{},b=h.duration,n,a,c,g,l,e;for(l in d){if(d.hasOwnProperty(l)&&h.animKeyFramesRE.test(l)){e={attrs:Ext.apply(d[l],k)};if(l=="from"){l=0}else{if(l=="to"){l=100}}e.pct=parseInt(l,10);m.push(e)}}Ext.Array.sort(m,h.sorter);g=m.length;for(c=0;c0},isRunning:function(){return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Animator"],0));(Ext.cmd.derive("Ext.fx.CubicBezier",Ext.Base,{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,i){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(r){return((a*r+m)*r+k)*r}function c(r,u){var s=e(r,u);return((q*s+l)*s+h)*s}function e(r,z){var y,w,u,s,v,t;for(u=r,t=0;t<8;t++){s=g(u)-r;if(Math.abs(s)w){return w}while(ys){y=u}else{w=u}u=(w-y)/2+y}return u}return c(p,1/(200*i))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}},0,0,0,0,0,0,[Ext.fx,"CubicBezier"],0));Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var i=0.07813-m/2,o=-0.25,p=g(0.0066+i*i),s=p-i,l=d(a(s),1/3)*(s<0?-1:1),r=-p-i,k=d(a(r),1/3)*(r<0?-1:1),u=l+k+0.25;return d(1-u,2)*3*u*0.1+(1-u)*3*u*u+u*u*u},easeIn:function(i){return d(i,1.7)},easeOut:function(i){return d(i,0.48)},easeInOut:function(s){var m=0.48-s/1.04,l=g(0.1734+m*m),i=l-m,r=d(a(i),1/3)*(i<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=r+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(i){return i*i*((c+1)*i-c)},backOut:function(i){i=i-1;return i*i*((c+1)*i+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,i=k/4;return d(2,-10*l)*b((l-i)*(2*h)/k)+1},elasticOut:function(i){return 1-Ext.fx.Easing.elasticIn(1-i)},bounceIn:function(i){return 1-Ext.fx.Easing.bounceOut(1-i)},bounceOut:function(o){var k=7.5625,m=2.75,i;if(o<(1/m)){i=k*o*o}else{if(o<(2/m)){o-=(1.5/m);i=k*o*o+0.75}else{if(o<(2.5/m)){o-=(2.25/m);i=k*o*o+0.9375}else{o-=(2.625/m);i=k*o*o+0.984375}}}return i}},function(){var k=Ext.fx.Easing.self,i=k.prototype;k.implement({"back-in":i.backIn,"back-out":i.backOut,"ease-in":i.easeIn,"ease-out":i.easeOut,"elastic-in":i.elasticIn,"elastic-out":i.elasticOut,"bounce-in":i.bounceIn,"bounce-out":i.bounceOut,"ease-in-out":i.easeInOut})})});(Ext.cmd.derive("Ext.draw.Color",Ext.Base,{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,i=k.g/255,m=k.b/255,n=Math.max(a,i,m),d=Math.min(a,i,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=(c<0.5)?o/(n+d):o/(2-n-d);if(a==n){e=60*(i-m)/o}else{if(i==n){e=120+60*(m-a)/o}else{e=240+60*(a-i)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(i){var c,e,d,a,h=parseInt;if((i.length==4||i.length==7)&&i.substr(0,1)==="#"){c=i.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(i.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=i.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,p,d){var a,b,c,e,n=[],o=Math.abs,k=Math.floor;if(p==0||g==null){n=[d,d,d]}else{g/=60;a=p*(1-o(2*d-1));b=a*(1-o(g-2*k(g/2)-1));c=d-a/2;switch(k(g)){case 0:n=[a,b,0];break;case 1:n=[b,a,0];break;case 2:n=[0,a,b];break;case 3:n=[0,b,a];break;case 4:n=[b,0,a];break;case 5:n=[a,0,b];break}n=[n[0]+c,n[1]+c,n[2]+c]}return new Ext.draw.Color(n[0]*255,n[1]*255,n[2]*255)}},3,0,0,0,0,0,[Ext.draw,"Color"],function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})}));(Ext.cmd.derive("Ext.draw.Draw",Ext.Base,{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var i=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&i.push(+l)});if(h=="m"&&i.length>2){c.push([e].concat(Ext.Array.splice(i,0,2)));h="l";e=(e=="m")?"l":"L"}while(i.length>=d[h]){c.push([e].concat(Ext.Array.splice(i,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;k.x=a[g-2];k.y=a[g-1];k.bx=parseFloat(a[g-4])||k.x;k.by=parseFloat(a[g-3])||k.y}return h},interpolatePaths:function(s,m){var k=this,d=k.pathToAbsolute(s),n=k.pathToAbsolute(m),o={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,t){if(p[t].length>7){p[t].shift();var u=p[t];while(u.length){Ext.Array.splice(p,t++,0,["C"].concat(Ext.Array.splice(u,0,6)))}Ext.Array.erase(p,t,1);q=Math.max(d.length,n.length||0)}},c=function(w,v,t,p,u){if(w&&v&&w[u][0]=="M"&&v[u][0]!="M"){Ext.Array.splice(v,u,0,["M",p.x,p.y]);t.bx=0;t.by=0;t.x=w[u][1];t.y=w[u][2];q=Math.max(d.length,n.length||0)}},h,q,g,r,e,l;for(h=0,q=Math.max(d.length,n.length||0);h1){ab=W(ab);I=ab*I;G=ab*G}c=I*I;S=G*G;V=(o==g?-1:1)*W(v((c*S-c*O*O-S*P*P)/(c*O*O+S*P*P)));D=V*I*O/G+(u+s)/2;C=V*-G*P/I+(ag+af)/2;n=p(((ag-C)/G).toFixed(7));m=p(((af-C)/G).toFixed(7));n=um){n=n-d*2}if(!g&&m>n){m=m-d*2}}else{n=B[0];m=B[1];D=B[2];C=B[3]}r=m-n;if(v(r)>F){E=m;H=s;q=af;m=n+F*(g&&m>n?1:-1);s=D+I*U(m);af=C+G*a(m);N=w.arc2curve(s,af,I,G,A,0,g,H,q,[m,E,D,C])}r=m-n;l=U(n);ae=a(n);e=U(m);ad=a(m);Q=K.tan(r/4);T=4/3*I*Q;R=4/3*G*Q;ac=[u,ag];aa=[u+T*ae,ag-R*l];Z=[s+T*ad,af-R*e];X=[s,af];aa[0]=2*ac[0]-aa[0];aa[1]=2*ac[1]-aa[1];if(B){return[aa,Z,X].concat(N)}else{N=[aa,Z,X].concat(N).join().split(",");M=[];L=N.length;for(Y=0;Y(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],i=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*i-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*i-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k0){w.push(g)}}else{k=u-3*t+3*o-n;q=2*(u-t-t+o);h=u-t;v=q*q-4*k*h;e=k+k;if(v===0){g=q/e;if(g<1&&g>0){w.push(g)}}else{if(v>0){x=Math.sqrt(v);g=(x+q)/e;if(g<1&&g>0){w.push(g)}g=(q-x)/e;if(g<1&&g>0){w.push(g)}}}}l=Math.min(u,n);p=Math.max(u,n);for(m=0;m=d&&k>=v)||(k<=d&&k<=v)){h=m=s}else{h=g((l-e)/n(k-d));if(ds){c-=q}h+=c;m+=c;p=l-u*a(h);o=k+u*b(h);y=l+t*a(m);x=k+t*b(m);if((k>d&&od)){p+=n(d-o)*(p-l)/(o-k);o=d}if((k>v&&xv)){y-=n(v-x)*(y-l)/(x-k);x=v}return{x1:p,y1:o,x2:y,y2:x}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,s,t=1,h=o.length,d=1,l=g,k=e,w,v,u,m,r,n,b;for(;t0){r=Math.floor((p-(o/10))/o)*o}if(v){for(q=0;q=0){d=0;while(d>p){d-=e;a++}p=+d.toFixed(10);d=0;while(d=15){k=1;if(++e>11){i++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){i++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){i++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(i);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,i=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*i),Math.sin(c*i)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}},0,0,0,0,0,0,[Ext.draw,"Draw"],0));(Ext.cmd.derive("Ext.fx.PropertyHandler",Ext.Base,{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,i){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(i)&&!e&&this.pixelDefaultsRE.test(i)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e=d){m=d;a=true}if(i.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}i.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Anim"],0));Ext.enableFx=true;(Ext.cmd.derive("Ext.util.Animate",Ext.Base,{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},0,0,0,0,0,0,[Ext.util,"Animate"],function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()}));(Ext.cmd.derive("Ext.util.ElementContainer",Ext.Base,{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),k,l,d,c,h;k=(a||e.id)+"-";for(d=g.length;d--;){l=g[d];if(typeof l=="string"){h=b.getById(k+l)}else{if((c=l.select)){h=Ext.select(c,true,b.dom)}else{if((c=l.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(l.id||(k+l.itemId))}}l=l.name}e[l]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(p){var l=this,q=p.$childEls,n,d,b,k,o,h,a,c,e,g,m;if(!q){g=p.superclass;if(g){g=g.self;c=[g.$childEls||l.getClassChildEls(g)];m=g.prototype.mixins||{}}else{c=[];m={}}e=p.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!m.hasOwnProperty(a)){o=h[a].self;c.push(o.$childEls||l.getClassChildEls(o))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d','
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation">
','
','
',"",'
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","
",'
','
','','
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation">
','
','
',"
","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'','',"",'','','',"","","",'','",'',"",'',"",'','','',"","","
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}"," {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">
","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},i=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}i.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,i){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,i)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var k=this,m=k.autoEl,g=k.getFrameInfo(),b={tag:"div",tpl:g?k.initFramingTpl(g.table):k.initRenderTpl()},a=k.protoEl,c,e,h,n,d,l;k.initStyles(a);a.writeTo(b);a.flush();if(Ext.isString(m)){b.tag=m}else{Ext.apply(b,m)}b.id=k.id;if(b.tpl){if(g){e=k.frameElNames;h=e.length;b.tplData=l=k.getFrameRenderData();l.renderData=k.initRenderData();d=l.fgid;for(c=0;c table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var x=this,p=x.frameInfoCache,e=x.getFramingInfoCls()+"-frameInfo",y=p[e],q=Math.max,o,l,t,n,z,g,k,b,c,m,h,s,u,i,a,d,w,r,v;if(y==null){o=Ext.fly(x.getStyleProxy(e),"frame-style-el");t=o.getStyle("font-family");if(t){t=t.split("-");d=parseInt(t[1],10);w=parseInt(t[2],10);r=parseInt(t[3],10);v=parseInt(t[4],10);b=parseInt(t[5],10);c=parseInt(t[6],10);m=parseInt(t[7],10);h=parseInt(t[8],10);s=parseInt(t[9],10);u=parseInt(t[10],10);i=parseInt(t[11],10);a=parseInt(t[12],10);n=q(b,q(d,w));z=q(c,q(w,r));g=q(m,q(v,r));k=q(h,q(d,v));y={table:t[0].charAt(0)==="t",vertical:t[0].charAt(1)==="v",top:n,right:z,bottom:g,left:k,width:k+z,height:n+g,maxWidth:q(n,z,g,k),border:{top:b,right:c,bottom:m,left:h,width:h+c,height:b+m},padding:{top:s,right:u,bottom:i,left:a,width:a+u,height:s+i},radius:{tl:d,tr:w,br:r,bl:v}}}else{y=false}p[e]=y}x.frame=!!y;x.frameSize=y;return y},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}},0,0,0,0,0,0,[Ext.util,"Renderable"],0));(Ext.cmd.derive("Ext.state.Provider",Ext.Base,{prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,i;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(i=0;ie){r=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=u.el.getStyle("overtflow");if(k!=="hidden"){u.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(u.width);t=!Ext.isNumber(u.height);u.setSize(n,r);u.el.setSize(q,e);if(b){delete u.width}if(t){delete u.height}}if(g){d.width=a}if(m){d.height=l}}i=u.constrain;p=u.constrainHeader;if(i||p){u.constrain=u.constrainHeader=false;s=c.callback;c.callback=function(){u.constrain=i;u.constrainHeader=p;if(s){s.call(c.scope||u,arguments)}if(k!=="hidden"){u.el.setStyle("overflow",k)}}}return u.mixins.animate.animate.apply(u,arguments)},setHiddenState:function(a){var b=this.getHierarchyState();this.hidden=a;if(a){b.hidden=true}else{delete b.hidden}},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var k=this,h=k.ownerCt,a,g,e,c;if(d&&k.is(b)){return k}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,k)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,k){var b=this,c=b.ownerCt,l,e,h,g,a;if(k&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g=8){a=new XDomainRequest()}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var i=this,l=e.xhr,c=i.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){i.processXdrResponse(d,l)}if(e.binary){d.responseBytes=i.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(l){var c=l.response,k=l.responseBody,b,g,a,d;if(l instanceof Ext.data.flash.BinaryXhr){b=l.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=new VBArray(k).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(l.responseBody,b=[])}else{b=[];g=l.responseText;a=g.length;for(d=0;d1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},beforeLayout:function(){this.callParent(arguments);if(this.floating){this.onBeforeFloatLayout()}},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:(c.constrain||c.draggable.constrain)?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container)):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if((a===true)&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if((a===true)&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||(c.floating&&!e&&c.isHierarchicallyHidden())){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;Ext.suspendLayouts();if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();Ext.resumeLayouts();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}else{Ext.resumeLayouts(true)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,i=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:i.getX(),y:i.getY(),width:i.dom.offsetWidth,height:i.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};i.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;i.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=(d.fireEvent("beforehide",d)!==false);if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(h,a,e){var g=this,c,d,b;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){b={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!h){g.afterHide(a,e)}},afterHide:function(a,b){var c=this,d=Ext.Element.getActiveElement();c.hiddenByLayout=null;Ext.AbstractComponent.prototype.onHide.call(c);if(d===c.el||c.el.contains(d)){Ext.fly(d).blur()}Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c=0){n=o[l].splitterDelta;if(i.getAt(h+n)!==a){i.remove(a);h=i.indexOf(k);if(n>0){++h}i.insert(h,a)}}}if(m){if(e){k.expand(false)}b.remove(m);k.placeholder=null;if(e){k.collapse(null,false)}}b.updateLayout();Ext.resumeLayouts(true);k.fireEventArgs("changeregion",[k,d])}else{k.region=l}}return d},setRegionWeight:function(d){var c=this,b=c.getOwningBorderContainer(),e=c.placeholder,a=c.weight;if(d!==a){if(c.fireEventArgs("beforechangeweight",[c,d])!==false){c.weight=d;if(e){e.weight=d}if(b){b.updateLayout()}c.fireEventArgs("changeweight",[c,a])}}return a}});(Ext.cmd.derive("Ext.ElementLoader",Ext.Base,{statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"ElementLoader"],0));(Ext.cmd.derive("Ext.ComponentLoader",Ext.ElementLoader,{statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var i=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){i=false}if(i){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return i}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,"ComponentLoader"],0));(Ext.cmd.derive("Ext.layout.SizeModel",Ext.Base,{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},1,0,0,0,0,0,[Ext.layout,"SizeModel"],function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c','
',"{%this.renderBody(out,values)%}","
","","{% } else if (values.shrinkWrapWidth) { %}",'',"",'","","
',"{%this.renderBody(out,values)%}",'
',"
","{% } else { %}",'
','
',"{%this.renderBody(out,values)%}",'
',"
","
","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['',"",'","","
',"
"],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(h){var m=this,c=m.outerCt,l=m.lastOuterCtWidth||"",k=m.lastOuterCtHeight||"",n=m.lastOuterCtTableLayout||"",b=h.state,o,g,i,p,d,a,e;m.callParent(arguments);i=p=d="";if(!h.widthModel.shrinkWrap&&m.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=m.getOverflowYStyle(h);if(g==="auto"||g==="scroll"){a=true}}if(!a){i="100%"}e=m.owner.hierarchyStateInner;o=m.getOverflowXStyle(h);d=(e.inShrinkWrapTable||o==="auto"||o==="scroll")?"":"fixed"}if(!h.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){p="100%"}if((i!==l)||m.hasOuterCtPxWidth){c.setStyle("width",i);m.lastOuterCtWidth=i;m.hasOuterCtPxWidth=false}if(d!==n){c.setStyle("table-layout",d);m.lastOuterCtTableLayout=d}if((p!==k)||m.hasOuterCtPxHeight){c.setStyle("height",p);m.lastOuterCtHeight=p;m.hasOuterCtPxHeight=false}if(m.hasInnerCtPxHeight){m.innerCt.setStyle("height","");m.hasInnerCtPxHeight=false}b.overflowAdjust=b.overflowAdjust||m.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=((g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0)),c=(a&1)||undefined,h=(a&2)||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,i;e=(h.getOverflowXStyle(c)==="auto");d=(h.getOverflowYStyle(c)==="auto");if(e||d){a=Ext.getScrollbarSize();i=c.overflowContext.el.dom;g=0;if(i.scrollWidth>i.clientWidth){g|=1}if(i.scrollHeight>i.clientHeight){g|=2}b=(d&&(g&2))?a.width:0;k=(e&&(g&1))?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",a.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&((a.shrinkWrap&1)||(a.floating&&!a.width))){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,l,d,k;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();l=h.innerCt.dom.childNodes;d=l.length;for(;ck.dom.clientHeight)){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);t.hasOuterCtPxWidth=true}if(i&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){s=true}if(((Ext.isIE8&&Ext.isStrict)||Ext.isIE7m&&Ext.isStrict&&r)){h=true;c=!Ext.isIE8}if((s||h)&&p&&(k.dom.scrollWidth>k.dom.clientWidth)){i=Math.max(i-q.height,0)}if(s){d.outerCtContext.setProp("height",i+g.height);t.hasOuterCtPxHeight=true}if(h){if(c){i+=g.height}d.innerCtContext.setProp("height",i);t.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!r&&(l==="auto")){a=(e==="auto")?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,["layout.auto","layout.autocontainer"],0,[Ext.layout.container,"Auto"],function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26}));(Ext.cmd.derive("Ext.ZIndexManager",Ext.Base,{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e=0&&a[c].hidden;--c){}if((b=a[c])){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},1,0,0,0,0,0,[Ext,"ZIndexManager",Ext,"WindowGroup"],function(){Ext.WindowManager=Ext.WindowMgr=new this()}));(Ext.cmd.derive("Ext.Queryable",Ext.Base,{isQueryable:true,query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d "+a)[0]||null},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},getRefItems:function(){return[]}},0,0,0,0,0,0,[Ext,"Queryable"],0));(Ext.cmd.derive("Ext.container.AbstractContainer",Ext.Component,{renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:false,autoDestroy:true,defaultType:"panel",detachOnRemove:true,isContainer:true,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",defaultLayoutType:"auto",initComponent:function(){var a=this;a.addEvents("afterlayout","beforeadd","beforeremove","add","remove");a.callParent();a.getLayout();a.initItems()},initItems:function(){var b=this,a=b.items;b.items=new Ext.util.AbstractMixedCollection(false,b.getComponentId);b.floatingItems=new Ext.util.MixedCollection(false,b.getComponentId);if(a){if(!Ext.isArray(a)){a=[a]}b.add(a)}},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var a=this.getLayout();if(a){a.finishRender()}},beforeRender:function(){var b=this,a=b.getLayout(),c;b.callParent();if(!a.initialized){a.initLayout()}c=a.targetCls;if(c){b.applyTargetCls(c)}},applyTargetCls:function(a){this.addCls(a)},afterComponentLayout:function(){var b=this.floatingItems.items,a=b.length,d,c;this.callParent(arguments);for(d=0;d=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((l=g[h]).isFocusable()){return[l]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,k;for(;gd.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(i,b,p){var k=this,a=b||k,q=i.getKey(),g=Ext.EventObject,l=i.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,i;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");i=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);i.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(i){if(e.focusedCmp===a){return e.navigateSiblings(i,e,a)}else{return e.navigateSiblings(i)}};Ext.iterate(g,function(k,i){b[k]=function(m){var l=h(m);if(Ext.isFunction(i)&&i.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"FocusManager",Ext,"FocusMgr"],0));(Ext.cmd.derive("Ext.Img",Ext.Component,{autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}},0,["image","imagecomponent"],["component","image","box","imagecomponent"],{component:true,image:true,box:true,imagecomponent:true},["widget.image","widget.imagecomponent"],0,[Ext,"Img"],0));(Ext.cmd.derive("Ext.util.Bindable",Ext.Base,{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,"Bindable"],0));(Ext.cmd.derive("Ext.LoadMask",Ext.Component,{msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['
','
',"
"],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}},1,["loadmask"],["component","box","loadmask"],{component:true,box:true,loadmask:true},["widget.loadmask"],[["floating",Ext.util.Floating],["bindable",Ext.util.Bindable]],[Ext,"LoadMask"],0));(Ext.cmd.derive("Ext.data.association.Association",Ext.Base,{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],i=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=i;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+(++h.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}},1,0,0,0,0,0,[Ext.data.association,"Association",Ext.data,"Association"],0));(Ext.cmd.derive("Ext.ModelManager",Ext.AbstractManager,{alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},unregisterType:function(a){delete this.types[a]},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d','
{text}
',"",'
','','
',"
{text}
","
","
","
"],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||" ",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}},0,["progressbar"],["component","progressbar","box"],{component:true,progressbar:true,box:true},["widget.progressbar"],0,[Ext,"ProgressBar"],0));(Ext.cmd.derive("Ext.ShadowPool",Ext.Base,{singleton:true,markup:(function(){return Ext.String.format('',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b0;){q[d].hasListeners._incr_(n)}t=k[n]||(k[n]={});t=t[c]||(t[c]={});h=t[g.id]||(t[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}},1,0,0,0,0,0,[Ext.app,"EventDomain"],0));(Ext.cmd.derive("Ext.app.domain.Component",Ext.app.EventDomain,{singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}},1,0,0,0,0,0,[Ext.app.domain,"Component"],0));(Ext.cmd.derive("Ext.app.EventBus",Ext.Base,{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}},1,0,0,0,0,0,[Ext.app,"EventBus"],0));(Ext.cmd.derive("Ext.data.StoreManager",Ext.util.MixedCollection,{alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d',' ,__field{#} = fields.map["{name}"]\n',"",";\n","return function(dest, source, record) {\n",'','{% var fieldAccessExpression = this.createFieldAccessExpression(values, "__field" + xindex, "source");'," if (fieldAccessExpression) { %}",' value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','',' dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n',''," if (value === undefined) {\n"," if (me.applyDefaults) {\n",'',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',""," };\n"," } else {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," };\n",""," if (value !== undefined) {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," }\n","","{% } else { %}",'','',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',"","","{% } %}","",'',' if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n',' record.{["internalId"]} = internalId;\n'," }\n","","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=function(){return c.createFieldAccessExpression.apply(c,arguments)};return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data.reader,"Reader",Ext.data,"Reader",Ext.data,"DataReader"],function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})}));(Ext.cmd.derive("Ext.data.reader.Json",Ext.data.reader.Reader,{alternateClassName:"Ext.data.JsonReader",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(p,d,e){var b=p.mapping,n=b||b===0,c=n?b:p.name,q,g;if(b===false){return}if(typeof c==="function"){q=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||((g=String(c).search(a))<0)){if(!n||isNaN(c)){c='"'+c+'"'}q=e+"["+c+"]"}else{if(g===0){q=e+c}else{var k=c.split("."),m=k.length,l=1,o=e+"."+k[0],h=[o];for(;l1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty],a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(c==null){c=g.name}if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}},1,0,0,0,["writer.base"],0,[Ext.data.writer,"Writer",Ext.data,"DataWriter",Ext.data,"Writer"],0));(Ext.cmd.derive("Ext.data.writer.Json",Ext.data.writer.Writer,{alternateClassName:"Ext.data.JsonWriter",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(i,m){var n={};n[i]=m;return n};for(;e0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}},0,0,0,0,["writer.json"],0,[Ext.data.writer,"Json",Ext.data,"JsonWriter"],0));(Ext.cmd.derive("Ext.data.proxy.Proxy",Ext.Base,{alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,isSynchronous:false,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,i;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n1){if(k.action=="update"||a[0].clientIdProperty){m=new Ext.util.MixedCollection();m.addAll(o);for(h=a.length;h--;){b=a[h];e=m.findBy(k.matchClientRec,b);l=b.copyFrom(e);if(n){c.push(l)}}}else{for(d=0,g=a.length;d0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a,b=this;if(!b.isDestroyed){b.clearListeners();if(b.storeId){Ext.data.StoreManager.unregister(b)}b.clearData();b.data=b.tree=b.sorters=b.filters=b.groupers=null;if(b.reader){b.reader.destroyReader()}b.proxy=b.reader=b.writer=null;b.isDestroyed=true;if(b.implicitModel){a=Ext.getClassName(b.model);Ext.undefine(a);Ext.ModelManager.unregisterType(a)}else{b.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(i){g[g.length]=i.serialize();c=true})}if(e.sorters){e.sorters.each(function(i){if(b&&!e.groupers.contains(i)){h[h.length]=i.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(i){d[d.length]=i.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.autoLoad&&(e.remoteSort||e.remoteGroup||e.remoteFilter)){if(e.autoLoad===true){e.reload()}else{e.reload(e.autoLoad)}}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}},1,0,0,0,0,[["observable",Ext.util.Observable],["sortable",Ext.util.Sortable]],[Ext.data,"AbstractStore"],0));(Ext.cmd.derive("Ext.app.domain.Store",Ext.app.EventDomain,{singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}},1,0,0,0,0,0,[Ext.app.domain,"Store"],0));(Ext.cmd.derive("Ext.app.Controller",Ext.Base,{statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,i;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||((i=l.exec(m))&&i[1]);if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},finishInit:function(g){var d=this,e=d.controllers,b,c,a;if(d._initialized&&e&&e.length){for(c=0,a=e.length;c[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"None",Ext.layout.boxOverflow,"None"],0));(Ext.cmd.derive("Ext.toolbar.Item",Ext.Component,{alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,["tbitem"],["tbitem","component","box"],{tbitem:true,component:true,box:true},["widget.tbitem"],0,[Ext.toolbar,"Item",Ext.Toolbar,"Item"],0));(Ext.cmd.derive("Ext.toolbar.Separator",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false},0,["tbseparator"],["tbitem","component","box","tbseparator"],{tbitem:true,component:true,box:true,tbseparator:true},["widget.tbseparator"],0,[Ext.toolbar,"Separator",Ext.Toolbar,"Separator"],0));(Ext.cmd.derive("Ext.button.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(!a.initialized){Ext.getDoc().on({keydown:a.onDocumentKeyDown,mouseup:a.onDocumentMouseUp,scope:a});a.initialized=true}},onDocumentKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},onButtonMousedown:function(a,c){var b=this.pressedButton;if(b){b.onMouseUp(c)}this.pressedButton=a},onDocumentMouseUp:function(b){var a=this.pressedButton;if(a){a.onMouseUp(b);this.pressedButton=null}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;ad){h=s.constrainedMax;o=d}else{if(kd){g=s.constrainedMax;n=d}else{if(k0){a.hideAll()}},a)},hideAll:function(){var c=this.active,b,a,d;if(c&&c.length>0){b=Ext.Array.slice(c.items);d=b.length;for(a=0;a50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getDoc().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,k,e,h;if(c&&g){k=a[c];e=k.length;for(;b/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var h=this,c=h.owner,i=d.btnElContext,g=d.btnInnerElContext,m=d.btnWrapContext,e=Math.max,b,k,l,a;h.callParent(arguments);if(d.heightModel.shrinkWrap){l=c.btnEl.getHeight();if(d.isHtmlText){h.centerInnerEl(d,l);h.ieCenterIcon(d,l)}}else{b=d.getProp("height");if(b){k=b-d.getFrameInfo().height-d.getPaddingInfo().height;l=k;if((c.menu||c.split)&&c.arrowAlign==="bottom"){l-=m.getPaddingInfo().bottom}a=l;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=g.getPaddingInfo().height}m.setProp("height",e(0,k));i.setProp("height",e(0,l));if(d.isHtmlText){h.centerInnerEl(d,l)}else{g.setProp("line-height",e(0,a)+"px")}h.ieCenterIcon(d,l)}else{if(b!==0){h.done=false}}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&(da){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}},0,0,0,0,["layout.button"],0,[Ext.layout.component,"Button"],0));(Ext.cmd.derive("Ext.util.TextMetrics",Ext.Base,{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,d){var c=this,b=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});c.measure=b;if(a){c.bind(a)}b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(d){b.setWidth(d)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},1,0,0,0,0,0,[Ext.util,"TextMetrics"],function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})}));(Ext.cmd.derive("Ext.button.Button",Ext.Component,{alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,tabIndex:0,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:[' {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",'','',""],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.autoEl={tag:"a",role:"button",hidefocus:"on",unselectable:"on"};a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a;if(b.iconCls||b.icon||b.glyph){a=[b.text?"icon-text-"+b.iconAlign:"icon"]}else{if(b.text){a=["noicon"]}else{a=[]}}if(b.pressed){a[a.length]=b.pressedCls}return a},beforeRender:function(){var b=this,c=b.autoEl,a=b.getHref(),d=b.hrefTarget;if(!b.disabled){c.tabIndex=b.tabIndex}if(a){c.href=a;if(d){c.target=d}}b.callParent();b.oldCls=b.getComponentCls();b.addClsWithUI(b.oldCls);Ext.applyIf(b.renderData,b.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||" "}},setHref:function(a){this.href=a;this.el.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.el.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b);d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.el.id},c));b.tooltip=c}else{b.el.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.el;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||" ");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.el)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=(c.arrowAlign==="right")?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h(None)',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,k=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;cb){k=r.target;p.menuItems.push(k);k.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(k){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,i){return l.isXType("buttongroup")&&!(i instanceof Ext.toolbar.Separator)};k.suspendLayouts();h.clearMenu();k.removeAll();for(;d=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.names,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt[h.scrollTo](h.beforeScrollX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var i=this,e=i.layout,c=e.owner,h=e.names,a,d,g;k=i.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=i.getMaxScrollPosition()}else{a=i.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=(i.layout.innerCt[h.getWidth]()-d[h.width])}}}}if(g!==undefined){i.scrollTo(g,b)}}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),i=a+c.innerCt[g.getWidth]();return{hiddenStart:ei,fullyVisible:e>a&&d=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(athis.right)},isOutOfBoundY:function(a){return(athis.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}},3,0,0,0,0,0,[Ext.util,"Region"],0));(Ext.cmd.derive("Ext.dd.DragDropManager",Ext.Base,{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(a){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;cc.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(v,n){var x=this,g=x.dragCurrent,c,p,t=v.getPoint(),d,m,o=[],h=[],l=[],a=[],w=[],u=[],k,b,r,s,q;if(!g||g.isLocked()){return}if(!x.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();p=c.style.top;c.style.top="-10000px";k=v.getXY();v.target=document.elementFromPoint(k[0],k[1]);c.style.top=p}for(r in x.dragOvers){d=x.dragOvers[r];if(!x.isTypeOfDD(d)){continue}if(x.notifyOccluded){if(!this.isOverTarget(t,d,x.mode)){l.push(d)}}else{if(!v.within(d.getEl())){l.push(d)}}h[r]=true;delete x.dragOvers[r]}for(q in g.groups){if("string"!=typeof q){continue}for(r in x.ids[q]){d=x.ids[q][r];if(x.isTypeOfDD(d)&&(m=d.getEl())&&(d.isTarget)&&(!d.isLocked())&&(Ext.fly(m).isVisible(true))&&((d!=g)||(g.ignoreSelf===false))){if(x.notifyOccluded){if((d.zIndex=x.getZIndex(m))!==-1){b=true}o.push(d)}else{if(v.within(d.getEl())){o.push(d);break}}}}}if(b){Ext.Array.sort(o,x.byZIndex)}for(r=0,s=o.length;r','
',"{%this.renderBody(out, values)%}","
","","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,i=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=(h=="stretch"),a=(h=="stretchmax"),m=l.constrainAlign;if(!q&&(e||g||c||(m&&!a))){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){i=i.flex}}return i[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,i=n.target,q=m.target,r=0,c,o,h,d,p,g;h=i[k]||l;d=q[k]||l;c=i[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){r=h-d}if(r===0&&p){r=o-c}}return r},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(l){var v=this,m=l.boxNames,a=m.widthModel,d=m.heightModel,c=l.boxOptions.align.nostretch,p=0,b=l.childItems,r=b.length,t=[],n=0,k=m.minWidth,g=v._percentageRe,s=0,u=0,e,o,q,h;while(r--){o=b[r];e=o.target;if(o[a].calculated){o.flex=q=e.flex;if(q){p+=q;t.push(o);n+=e[k]||0}else{h=g.exec(e[m.width]);o.percentageParallel=parseFloat(h[1])/100;++s}}if(c&&o[d].calculated){h=g.exec(e[m.height]);o.percentagePerpendicular=parseFloat(h[1])/100;++u}}l.flexedItems=t;l.flexedMinSize=n;l.totalFlex=p;l.percentageWidths=s;l.percentageHeights=u;Ext.Array.sort(t,v.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(l,o,b){var G=this,A=o.width,a=l.childItems,t=o.beforeX,d=o.afterX,r=o.setWidth,B=a.length,y=l.flexedItems,s=y.length,w=l.boxOptions.pack,n=G.padding,h=b.targetSize[A],C=0,e=n[t],F=e+n[d]+G.scrollOffset+(G.reserveOffset?G.availableSpaceOffset:0),x=Ext.getScrollbarSize()[o.width],v,m,g,z,p,u,E,q,D,c,k;if(x&&G.scrollPerpendicular&&l.parallelSizeModel.shrinkWrap&&!l.boxOptions.align.stretch&&!l.perpendicularSizeModel.shrinkWrap){if(!l.state.perpendicularDone){return false}D=true}for(v=0;vb.targetSize[o.height])){q+=x;l[o.hasOverflowY]=true;l.target.componentLayout[o.setWidthInDom]=true;l[o.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}l[o.setContentWidth](q);return true},calculatePerpendicular:function(v,L,A){var u=this,d=v.perpendicularSizeModel.shrinkWrap,b=A.targetSize,k=v.childItems,z=k.length,n=Math.max,m=L.height,o=L.setHeight,h=L.beforeY,t=L.y,I=u.padding,l=I[h],p=b[m]-l-I[L.afterY],F=v.boxOptions.align,q=F.stretch,r=F.stretchmax,O=F.center,N=F.bottom,H=u.constrainAlign,G=0,C=0,E=u.onBeforeConstrainInvalidateChild,B=u.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,y,J,D,w,x,c,s,e,M,K,g;if(q||((O||N)&&!d)){if(isNaN(p)){return false}}if(u.scrollParallel&&A.tooNarrow){if(d){K=true}else{p-=a;A.targetSize[m]-=a}}if(q){c=p}else{for(J=0;Jp){s.invalidate({before:E,after:B,layout:u,childHeight:p,names:L});v.state.parallelDone=false}if(isNaN(G=n(G,D+w,s.target[L.minHeight]||0))){return false}}if(K){G+=a;v[L.hasOverflowX]=true;v.target.componentLayout[L.setHeightInDom]=true;v[L.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=v.stretchMaxPartner;if(e){v.setProp("maxChildHeight",G);M=e.childItems;if(M&&M.length){G=n(G,e.getProp("maxChildHeight"));if(isNaN(G)){return false}}}v[L.setContentHeight](G+u.padding[m]+v.targetContext.getPaddingInfo()[m]);if(K){G-=a}A.maxSize=G;if(r){c=G}else{if(O||N||C){if(H){c=d?G:p}else{c=d?G:n(p,G)}c-=v.innerCtContext.getBorderInfo()[m]}}}for(J=0;J0){y=l+Math[u.alignRoundingMethod](x/2)}}else{if(N){y=n(0,c-y-s.props[m])}}}s.setProp(t,y)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,l,n){var m=this,h=l.height,o=l.width,g=c.childItems,a=g.length,q=n.maxSize,p=m.onBeforeStretchMaxInvalidateChild,e=m.onAfterStretchMaxInvalidateChild,r,k,d,b;for(d=0;d":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar";b.addCls(b.baseCls+"-toolbar")}}if(b instanceof Ext.toolbar.Separator){b.setUI((c.vertical)?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}},0,["toolbar"],["toolbar","component","container","box"],{toolbar:true,component:true,container:true,box:true},["widget.toolbar"],0,[Ext.toolbar,"Toolbar",Ext,"Toolbar"],0));(Ext.cmd.derive("Ext.panel.AbstractPanel",Ext.container.Container,{baseCls:Ext.baseCSSPrefix+"panel",isPanel:true,contentPaddingProperty:"bodyPadding",shrinkWrapDock:false,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",(Ext.isIE7m||Ext.isIEQuirks)?'
':"",'
{bodyCls}',' {baseCls}-body-{ui}',' {parent.baseCls}-body-{parent.ui}-{.}','{childElCls}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values);%}","
","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox((b.bodyPadding===true)?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}},0,0,["component","container","box"],{component:true,container:true,box:true},0,[["docking",Ext.container.DockingContainer]],[Ext.panel,"AbstractPanel"],0));(Ext.cmd.derive("Ext.panel.Header",Ext.container.Container,{isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['
{parent.baseCls}-body-{parent.ui}-{.}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
"],headingTpl:['{title}'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:(c?c.length:0),b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||" ";g.tools=g.tools||[];c=g.items=(c?Ext.Array.slice(c):[]);g.orientation=g.orientation||"horizontal";g.dock=(g.dock)?g.dock:(g.orientation=="horizontal")?"top":"left";if(d?(!d.border&&!d.frame):!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?("text-align:"+g.titleAlign):"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=(g.orientation=="vertical")?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.lengthb){if(l){m.removeCls(d)}m.addCls(n)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var c=this,b=c.callParent(),a=c.ownerCt;if(!c.expanding&&(a&&a.collapsed)||c.isCollapsedExpander){b+="-"+a.collapsedCls}return b+"-"+c.dock}},0,["header"],["component","container","box","header"],{component:true,container:true,box:true,header:true},["widget.header"],0,[Ext.panel,"Header"],0));(Ext.cmd.derive("Ext.dd.DragDrop",Ext.Base,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(i,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(i),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(c,b){var a=this;if((a.primaryButtonOnly&&c.button!=0)||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DragDrop"],0));(Ext.cmd.derive("Ext.dd.DD",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),i=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:i.getDocumentWidth(),height:i.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,i=(o+q-l-this.deltaY),g=(b+d-m-this.deltaX),c=40,a=(document.all)?80:30;if(k>o&&i0&&l-qb&&g0&&m-dthis.maxX){a=this.maxX}}if(this.constrainY){if(dthis.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){this.callParent();this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}},3,0,0,0,0,0,[Ext.dd,"DD"],0));(Ext.cmd.derive("Ext.dd.DDProxy",Ext.dd.DD,{statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent();this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl(),a=this.getDragEl(),b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl(),a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DDProxy"],0));(Ext.cmd.derive("Ext.dd.StatusProxy",Ext.Component,{animRepair:false,childEls:["ghost"],renderTpl:['
'],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.dd,"StatusProxy"],0));(Ext.cmd.derive("Ext.dd.DragSource",Ext.dd.DDProxy,{dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(c,b,d){var a=this;if(!b){b=c;c=null;d=b.getTarget().id}if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}a.proxy.repair(a.getRepairXY(b,a.dragData),a.afterRepair,a);if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}},1,0,0,0,0,0,[Ext.dd,"DragSource"],0));(Ext.cmd.derive("Ext.panel.Proxy",Ext.Base,{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}},1,0,0,0,0,0,[Ext.panel,"Proxy",Ext.dd,"PanelProxy"],0));(Ext.cmd.derive("Ext.panel.DD",Ext.dd.DragSource,{constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}}},1,0,0,0,0,0,[Ext.panel,"DD"],0));(Ext.cmd.derive("Ext.util.Memento",Ext.Base,(function(){function d(i,h,k,g){i[g?g+k:k]=h[k]}function c(h,g,i){delete h[i]}function e(l,k,m,i){var g=i?i+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,i,g){if(Ext.isDefined(g)){h[i]=g}else{delete h[i]}}function b(h,n,m,i,k){if(n){if(Ext.isArray(i)){var l,g=i.length;for(l=0;la){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]i){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return(k.targetXY)?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(d){var c=this,b=c.delegate,a;if(c.disabled||d.within(c.target.dom,true)){return}a=b?d.getTarget(b):true;if(a){c.triggerElement=a;c.triggerEvent=d;c.clearTimer("hide");c.targetXY=d.getXY();c.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}},1,0,0,0,0,[["animate",Ext.util.Animate]],[Ext.draw,"CompositeSprite"],0));(Ext.cmd.derive("Ext.draw.Surface",Ext.Base,{separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c1,a,d,c,h,g;if(k||Ext.isArray(b[0])){a=k?b:b[0];d=[];for(c=0,h=a.length;ch){b=i-1}else{if(a-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,i,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;i=h/b;c=a/k;l=Math.min(c,i);if(k*l=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var l=this,h=l.getLayoutItems(),p,q=[],r=Ext.apply({tag:"table",role:"presentation",cls:l.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:q}},l.tableAttrs),c=l.tdAttrs,d=l.needsDivWrap(),e,g=h.length,o,n,k,b,a,m;p=l.calculateCells(h);for(e=0;e0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isQueryable){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var l=this,k,h,c=l.handleAdd,a=l.handleRemove,d,e;if(g.isContainer){g.on("add",c,l);g.on("dockedadd",c,l);g.on("remove",a,l);g.on("dockedremove",a,l)}if(b!==true){k=g.query(l.selector);for(d=0,h=k.length;d]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}},0,0,0,0,0,0,[Ext.data,"SortTypes"],0));(Ext.cmd.derive("Ext.data.Types",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext.data,"Types"],function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(b)}return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){if(typeof b==="number"){return b}return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})}));(Ext.cmd.derive("Ext.data.Field",Ext.Base,{isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true},1,0,0,0,["data.field"],0,[Ext.data,"Field"],0));(Ext.cmd.derive("Ext.data.Errors",Ext.util.MixedCollection,{isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;ba)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}},0,0,0,0,0,0,[Ext.data,"validations"],0));(Ext.cmd.derive("Ext.data.Model",Ext.Base,{alternateClassName:"Ext.data.Record",compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,G){var F=this,H=Ext.getClassName(g),u=g.prototype,A=g.prototype.superclass,k=G.validations||[],w=G.fields||[],h,p=G.associations||[],e=function(J,L){var K=0,I,M;if(J){J=Ext.Array.from(J);for(I=J.length;K0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d0){b=p.data.items;h=b.length;for(r=0;r0;if(l){if(d){w[c]=u[0].property;w[n]=u[0].direction||"ASC"}else{w[c]=x.encodeSorters(u)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}w[e]=a[k].property;w[p]=a[k].direction}else{w[e]=x.encodeSorters(a)}}if(r&&o&&o.length>0){w[r]=x.encodeFilters(o)}return w},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}},1,0,0,0,["proxy.server"],0,[Ext.data.proxy,"Server",Ext.data,"ServerProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Ajax",Ext.data.proxy.Server,{alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,i,g){c.processResponse(i,a,d,g,e,b)}}},0,0,0,0,["proxy.ajax"],0,[Ext.data.proxy,"Ajax",Ext.data,"HttpProxy",Ext.data,"AjaxProxy"],function(){Ext.data.HttpProxy=this}));(Ext.cmd.derive("Ext.data.proxy.Client",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,"Client",Ext.data,"ClientProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Memory",Ext.data.proxy.Client,{alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(i,k||g,[c])},clear:Ext.emptyFn},1,0,0,0,["proxy.memory"],0,[Ext.data.proxy,"Memory",Ext.data,"MemoryProxy"],0));(Ext.cmd.derive("Ext.util.LruCache",Ext.util.HashMap,{constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}},1,0,0,0,0,0,[Ext.util,"LruCache"],0));(Ext.cmd.derive("Ext.data.PageMap",Ext.util.LruCache,{clear:function(a){var b=this;b.pageMapGeneration=(b.pageMapGeneration||0)+1;b.callParent(arguments)},forEach:function(k,m){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,l,e,g;for(c=0;c0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],l={},g,h,k,e;for(e=0;e-1){r.push({record:b,index:g})}if(d){d.remove(b)}}r=Ext.Array.sort(r,function(w,i){var y=w.index,x=i.index;return y===i.index2?0:(yb-1)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c=h.totalCount)?d:g;i=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(i,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(i,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c0){c=b[0].get(g)}for(;d0){a=c[0].get(g)}for(;da){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||(b.isLoaded()&&!b.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,m,d){var k=this,e,h,g,l,b,n={isLast:true,parentId:k.getId(),depth:(k.data.depth||0)+1};if(Ext.isArray(c)){k.callStore("suspendAutoSync");for(e=0,h=c.length-1;e0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d0){e=[];for(d=0;db.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(c){var b=this,a=b.active;Ext.getDoc().un({mousemove:b.onMouseMove,mouseup:b.onMouseUp,selectstart:b.stopSelect,scope:b});b.clearStart();b.active=false;if(a){b.onEnd(c);b.fireEvent("dragend",b,c)}b._constrainRegion=Ext.EventObject.dragTracked=null},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);this.timer=null}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.lefta.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top0);if(k){u.widthModel=u.heightModel=null;b=w.getSizeModel(m&&m.widthModel.pairsByHeightOrdinal[m.heightModel.ordinal]);if(h){u.sizeModel=b}u.widthModel=b.width;u.heightModel=b.height;if(m&&!u.isComponentChild){m.remainingChildDimensions+=2}}else{if(a){u.recoverProp("x",a,d);u.recoverProp("y",a,d);if(u.widthModel.calculated){u.recoverProp("width",a,d)}else{if("width" in a){++t}}if(u.heightModel.calculated){u.recoverProp("height",a,d)}else{if("height" in a){++t}}if(m&&!u.isComponentChild){m.remainingChildDimensions+=t}}}if(a&&q&&q.manageMargins){u.recoverProp("margin-top",a,d);u.recoverProp("margin-right",a,d);u.recoverProp("margin-bottom",a,d);u.recoverProp("margin-left",a,d)}if(c){l=c.heightModel;s=c.widthModel;if(s&&l&&g&&x){if(g.shrinkWrap&&x.shrinkWrap){if(s.constrainedMax&&l.constrainedMin){l=null}}}if(s){u.widthModel=s}if(l){u.heightModel=l}if(c.state){Ext.apply(u.state,c.state)}}return v},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",i=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=i[g]||(i[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var o=this,c=o.previousSize,l,n,e,h,g,d,i,m,k,a,b;if(c){l=o.target;n=l.layout&&l.layout.animate;if(n){e=Ext.isNumber(n)?n:n.duration}h=Ext.Object.getKeys(o.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},n);for(d=0,i=0,m=h.length;i0||m>0)){if(!x.frameBodyContext){u=x.paddingInfo.width;l=x.paddingInfo.height}if(q){q=s(parseInt(q,10)-(x.borderInfo.width+u),0);i.width=q+"px";++h}if(m){m=s(parseInt(m,10)-(x.borderInfo.height+l),0);i.height=m+"px";++h}}if(x.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&x.hasOverflowY)||(a=m!==undefined&&x.hasOverflowX)){p=x.isAbsolute;if(p===undefined){p=false;n=x.target.getTargetEl();t=n.getStyle("position");if(t=="absolute"){t=n.getStyle("box-sizing");p=(t=="border-box")}x.isAbsolute=p}if(p){r=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+r.width;i.width=q+"px";++h}if(a){m=parseInt(m,10)+r.height;i.height=m+"px";++h}}}}if(h){c.setStyle(i)}}},1,0,0,0,0,0,[Ext.layout,"ContextItem"],function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}}));(Ext.cmd.derive("Ext.layout.Context",Ext.Base,{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(l,a,n){var q=this,h=l,m=!l.isComponent,b=m?h.length:1,d,c,p,o,g,t,r,s,u,e;for(d=0;d0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;ei.zindex){i.shim.setStyle("z-index",i.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=(g[0])+"px";d.top=(g[1])+"px";d.width=(a.width)+"px";d.height=(a.height)+"px"}else{c.setSize(n,e);c[i.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>i.zindex){i.shim.setStyle("z-index",i.zindex-2)}c.show();c.setSize(n,e);c[i.localXYNames.set](l,k)}}}return i},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),i=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((i+k)>g+m.left){i=g-k-a;d=true}if((e+c)>b+m.top){e=b-c-a;d=true}if(i-1)&&(q[p] in g)){q[p]=g[q[p]]}if(p=="hidden"&&s.type=="text"){continue}if(p in t){c.dom.setAttribute(p,t[p](q[p],s,n))}else{c.dom.setAttribute(p,q[p])}}}if(s.type=="text"){n.tuneText(s,q)}s.dirtyFont=false;b=k.style;if(b){c.setStyle(b)}s.dirty=false;if(Ext.isSafari3){n.webkitRect.show();setTimeout(function(){n.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,m=Ext.isSafari&&!Ext.isStrict,k,g,l,c,b;b=e.gradientsMap||{};if(!m){if(h.type=="linear"){k=e.createSvgElement("linearGradient");k.setAttribute("x1",a[0]);k.setAttribute("y1",a[1]);k.setAttribute("x2",a[2]);k.setAttribute("y2",a[3])}else{k=e.createSvgElement("radialGradient");k.setAttribute("cx",h.centerX);k.setAttribute("cy",h.centerY);k.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){k.setAttribute("fx",h.focalX);k.setAttribute("fy",h.focalY)}}k.id=h.id;e.getDefs().appendChild(k);for(c=0;c"},text:function(v){var s=v.attr,r=c.exec(s.font),x=(r&&r[1])||"12",q=(r&&r[3])||"Arial",w=s.text,u=(Ext.isFF3_0||Ext.isFF3_5)?2:4,p="",t;v.getBBox();p+='';p+=Ext.htmlEncode(w)+"";t=d({x:s.x,y:s.y,"font-size":x,"font-family":q,"font-weight":s["font-weight"],"text-anchor":s["text-anchor"],fill:s.fill||"#000","fill-opacity":s.opacity,transform:v.matrix.toSvg()});return""+p+""},rect:function(q){var p=q.attr,r=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return""},circle:function(q){var p=q.attr,r=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return""},image:function(q){var p=q.attr,r=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return""}},a=function(){var p='';p+='';return p},m=function(){var x='',q="",I,G,w,r,H,K,A,y,u,z,C,p,L,v,F,D,J,E,t,s;w=g.items.items;G=w.length;H=function(P){var W=P.childNodes,T=W.length,S=0,Q,R,M="",N,V,O,U;for(;S0){M+=H(N)}M+=""}return M};if(g.getDefs){q=H(g.getDefs())}else{y=g.gradientsColl;if(y){u=y.keys;z=y.items;C=0;p=u.length}for(;C';var B=r.colors.replace(k,"rgb($1|$2|$3)");B=B.replace(h,"rgba($1|$2|$3|$4)");K=B.split(",");for(F=0,J=K.length;F'}q+=""}}x+=""+q+"";x+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});E=new Array(G);for(F=0;F";return x},d=function(r){var q="",p;for(p in r){if(r.hasOwnProperty(p)&&r[p]!=null){q+=p+'="'+r[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}},0,0,0,0,0,0,[Ext.draw.engine,"SvgExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Vml",Ext.draw.Surface,{engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(v,x,p){var w=[],i=x.toLowerCase()=="m",r=b[x];p.replace(e,function(y){if(i&&w.length===2){r+=w+b[x=="m"?"l":"L"];w=[]}w.push(Math.round(y*s))});return r+w});return m}}o=g(t);m=[];for(k=0,q=o.length;k")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);i.bbox.plain=null;i.bbox.transform=null;i.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(z,J){var I=this,b=I.getBBox(z,true),k=b.x+b.width*0.5,h=b.y+b.height*0.5,C=new Ext.draw.Matrix(),r=z.transformations,w=r.length,D=0,p=0,d=1,c=1,o="",g=z.el,F=g.dom,A=F.style,a=I.zoom,l=z.skew,E=I.viewBoxShift,H,G,t,m,s,q,B,x,v,u,e,n;for(;D32767){n[0]=32767}else{if(n[0]<-32768){n[0]=-32768}}if(n[1]>32767){n[1]=32767}else{if(n[1]<-32768){n[1]=-32768}}l.offset=n}else{A.filter=C.toFilter();A.left=Math.min(C.x(b.x,b.y),C.x(b.x+b.width,b.y),C.x(b.x,b.y+b.height),C.x(b.x+b.width,b.y+b.height))+"px";A.top=Math.min(C.y(b.x,b.y),C.y(b.x+b.width,b.y),C.y(b.x,b.y+b.height),C.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],k=Ext.create("Ext.util.MixedCollection"),m,e,b,h,l,c;k.addAll(g.stops);k.sortByKey("ASC",function(n,i){n=parseInt(n,10);i=parseInt(i,10);return n>i?1:(nid="{id}"
class="{inputRowCls}">','','',"{beforeLabelTpl}",' class="{labelCls}"',' style="{labelStyle}"',' unselectable="on"',">","{beforeLabelTextTpl}",'{fieldLabel}{labelSeparator}',"{afterLabelTextTpl}","","{afterLabelTpl}","","
",'',"{beforeBodyEl}","","{beforeLabelTpl}",'","{afterLabelTpl}","","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","","{afterBodyEl}","","",'',"","",'',"{afterBodyEl}","","","",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['','
  • {.}
',"
"],plaintextActiveErrorsTpl:['','\n{.}',""],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",inputRowCls:Ext.baseCSSPrefix+"form-item-input-row",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","extraFieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget","inputRowCls"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.getFieldLabel()&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}},0,0,0,0,0,0,[Ext.form,"Labelable"],0));(Ext.cmd.derive("Ext.form.field.Field",Ext.Base,{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,0,0,0,0,0,[Ext.form.field,"Field"],0));(Ext.cmd.derive("Ext.layout.component.field.Field",Ext.layout.component.Auto,{type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var i=Ext.layout.component.field.Field.tip,k;if(i&&i.isVisible()){k=i.activeTarget;if(k&&k.el===h.getActionEl().dom){i.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var i=h.errorEl;if(i){i.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,i){var n=i.errorEl,k=i.sideErrorCell,h=i.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":i.getActiveError()||""});if(i.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&i.autoFitErrors){k.setDisplayed(h)}i.bodyEl.dom.colSpan=i.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,i=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(i);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,i,k;if(l.target.hasActiveError()){i=l.errorContext;k=i.props;h=k.height;if(h===undefined){k.height=h=i.el.getHeight()}}return h}},e),qtip:c({prepare:function(i,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(i,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(i,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}},0,0,0,0,["layout.field"],0,[Ext.layout.component.field,"Field"],0));(Ext.cmd.derive("Ext.form.field.Base",Ext.Component,{alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:[' name="{name}"
',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' placeholder="{placeholder}"','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}a.addCls(Ext.baseCSSPrefix+"form-type-"+a.inputType)},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,i=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(i){g.mon(i,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;hg.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(i&&!i.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(i,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){i=i===e?0:i;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(i,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",i);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}},0,["textfield"],["field","textfield","component","box"],{field:true,textfield:true,component:true,box:true},["widget.textfield"],0,[Ext.form.field,"Text",Ext.form,"TextField",Ext.form,"Text"],0));(Ext.cmd.derive("Ext.layout.component.field.TextArea",Ext.layout.component.field.Text,{type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,i,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;i=a.inputEl;d=i.getWidth(true);h=Ext.util.Format.htmlEncode(i.dom.value)||" ";h+=a.growAppend;h=h.replace(/\n/g,"
");k=Ext.util.TextMetrics.measure(i,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}},0,0,0,0,["layout.textareafield"],0,[Ext.layout.component.field,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.TextArea",Ext.form.field.Text,{alternateClassName:"Ext.form.TextArea",fieldSubTpl:['",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a&&typeof a==="string"){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}},0,["textarea","textareafield"],["field","textfield","component","textarea","box","textareafield"],{field:true,textfield:true,component:true,textarea:true,box:true,textareafield:true},["widget.textarea","widget.textareafield"],0,[Ext.form.field,"TextArea",Ext.form,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.Display",Ext.form.field.Base,{alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['
style="{fieldStyle}"',' class="{fieldCls}">{value}
',{compiled:true,disableFormats:true}],readOnly:true,fieldCls:Ext.baseCSSPrefix+"form-display-field",fieldBodyCls:Ext.baseCSSPrefix+"form-display-field-body",htmlEncode:false,noWrap:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}},0,["displayfield"],["displayfield","field","component","box"],{displayfield:true,field:true,component:true,box:true},["widget.displayfield"],0,[Ext.form.field,"Display",Ext.form,"DisplayField",Ext.form,"Display"],0));(Ext.cmd.derive("Ext.layout.container.Anchor",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var k=this,a=0,g,l,e,d,b,h;k.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d{%this.renderContainer(out,values)%}',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=(b.labelWidth+b.labelPad)}b.callParent(arguments);if(b.combineLabels){a.oldHideLabel=a.hideLabel;a.hideLabel=true}b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){if(c.combineLabels){a.hideLabel=a.oldHideLabel}c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,i,d,k,b,g,h;for(c=0;c","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","
",' tabIndex="{tabIdx}"
',' disabled="disabled"',' style="{fieldStyle}"',' {ariaAttrs}',' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />',"","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",extraFieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",inputTypeAttr:"button",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,inputTypeAttr:a.inputTypeAttr})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b style="{bodyStyle}">',"{%this.renderContainer(out,values);%}",""],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.initFieldAncestor();b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}b.initMonitor()},initPadding:function(e){var c=this,a=c.getProtoBody(),d=c.padding,b;if(d!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){d=c.parseBox(d);b=Ext.Element.parseBox(0);b.top=d.top;d.top=0;a.setStyle("padding",c.unitizeBox(b))}e.setStyle("padding",c.unitizeBox(d))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(b){delete c.getHierarchyState().collapsed}else{c.getHierarchyState().collapsed=true}if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}},0,["fieldset"],["component","container","box","fieldset"],{component:true,container:true,box:true,fieldset:true},["widget.fieldset"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldSet"],0));(Ext.cmd.derive("Ext.form.Panel",Ext.panel.Panel,{alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c'+d+""+c.getTriggerMarkup()+""},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,k=(e.readOnly||e.hideTrigger),a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(k?"display:none;":""),l=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:l,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,i=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(i,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(i,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g1){b=[];for(k=0;k=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(n,d,o){var k=this,m=k.store,c=k.selected.items,p,g,h,e,a,l,b;if(k.isLocked()){return}p=k.normalizeRowRange(n,d);n=p[0];d=p[1];e=[];for(g=n;g<=d;g++){if(!k.isSelected(m.getAt(g))){e.push(m.getAt(g))}}if(!o){a=[];k.suspendChanges();for(g=0,h=c.length;gd){a.push(b)}}for(g=0,h=a.length;gb){d=b;b=c;c=d}return[c,b]},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,m,l){var h=this,b=h.selected,k=false,n,d,g,e,c;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!m&&b.getCount()>0){n=h.deselectDuringSelect(a,b.getRange(),l);if(n[0]){h.maybeFireSelectionChange(n[1]>0&&!l);return}}c=function(){b.add(e);k=true};for(d=0;d0&&!l);return g===m},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected,e;if(d.locked){return}if(d.isSelected(a)){return}if(c.getCount()){d.suspendChanges();if(!d.doDeselect(d.lastSelected,b)){d.resumeChanges();return}d.resumeChanges()}e=function(){c.add(a);d.lastSelected=a;g=true};d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;if(c!==a){d.lastFocused=c;d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.suspendChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(d,c){var g=this,b=g.store,e,a;a=g.normalizeRowRange(d,c);d=a[0];c=a[1];for(e=d;e<=c;e++){if(!g.isSelected(b.getAt(e))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}},1,0,0,0,0,0,[Ext.selection,"DataViewModel"],0));(Ext.cmd.derive("Ext.view.AbstractView",Ext.Component,{inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('
{1}
',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite()}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var d=this,b=d.loadMask,c=d.getMaskStore(),a={target:d,msg:d.loadingText,msgCls:d.loadingCls,useMsg:d.loadingUseMsg,store:c};d.callParent(arguments);if(b&&!c.proxy.isSynchronous){if(Ext.isObject(b)){a=Ext.apply(a,b)}d.loadMask=new Ext.LoadMask(a);d.loadMask.on({scope:d,beforeshow:d.onMaskBeforeShow,hide:d.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var k=this,b=k.bufferRender(c,d,true),g=k.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||((d===0)?0:(b.length-1));for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){this.refreshView()},refreshView:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh()}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;ch.bottom){a=c.bottom-h.bottom}}if(c.lefth.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}},0,["dataview"],["component","box","dataview"],{component:true,box:true,dataview:true},["widget.dataview"],0,[Ext.view,"View",Ext,"DataView"],0));(Ext.cmd.derive("Ext.layout.component.BoundList",Ext.layout.component.Auto,{type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}},0,0,0,0,["layout.boundlist"],0,[Ext.layout.component,"BoundList"],0));(Ext.cmd.derive("Ext.toolbar.TextItem",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}},0,["tbtext"],["tbitem","component","box","tbtext"],{tbitem:true,component:true,box:true,tbtext:true},["widget.tbtext"],0,[Ext.toolbar,"TextItem",Ext.Toolbar,"TextItem"],0));(Ext.cmd.derive("Ext.form.field.Spinner",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'
',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'"+c.getTriggerMarkup()+"
'+d+"
"},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=(a.readOnly||a.hideTrigger);return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}},0,["spinnerfield"],["field","trigger","textfield","component","box","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,spinnerfield:true,triggerfield:true},["widget.spinnerfield"],0,[Ext.form.field,"Spinner",Ext.form,"Spinner"],0));(Ext.cmd.derive("Ext.form.field.Number",Ext.form.field.Spinner,{alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowExponential:true,allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(ab.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||dc.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowExponential){c+=a.decimalSeparator+"e+-"}else{if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}},0,["numberfield"],["field","trigger","textfield","component","box","numberfield","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,numberfield:true,spinnerfield:true,triggerfield:true},["widget.numberfield"],0,[Ext.form.field,"Number",Ext.form,"NumberField",Ext.form,"Number"],0));(Ext.cmd.derive("Ext.toolbar.Paging",Ext.toolbar.Toolbar,{alternateClassName:"Ext.PagingToolbar",displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var h=this,d,b,c,a,g,i,e;g=h.store.getCount();i=g===0;if(!i){d=h.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(h.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(h.afterPageText,0)}Ext.suspendLayouts();e=h.child("#afterTextItem");if(e){e.setText(a)}e=h.getInputItem();if(e){e.setDisabled(i).setValue(b)}h.setChildDisabled("#first",b===1||i);h.setChildDisabled("#prev",b===1||i);h.setChildDisabled("#next",b===c||i);h.setChildDisabled("#last",b===c||i);h.setChildDisabled("#refresh",false);h.updateInfo();Ext.resumeLayouts(true);if(h.rendered){h.fireEvent("change",h,d)}},setChildDisabled:function(a,b){var c=this.child(a);if(c){c.setDisabled(b)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.setChildDisabled("#refresh",false)},getInputItem:function(){return this.child("#inputItem")},readPageFromInput:function(b){var c=this.getInputItem(),d=false,a;if(c){a=c.getValue();d=parseInt(a,10);if(!a||isNaN(d)){c.setValue(b.currentPage);return false}}return d},onPagingFocus:function(){var a=this.getInputItem();if(a){a.select()}},onPagingBlur:function(c){var b=this.getInputItem(),a;if(b){a=this.getPageData().currentPage;b.setValue(a)}},onPagingKeyDown:function(i,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;i.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){i.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered){this.setChildDisabled("#refresh",true)}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}},0,["pagingtoolbar"],["toolbar","component","container","pagingtoolbar","box"],{toolbar:true,component:true,container:true,pagingtoolbar:true,box:true},["widget.pagingtoolbar"],[["bindable",Ext.util.Bindable]],[Ext.toolbar,"Paging",Ext,"PagingToolbar"],0));(Ext.cmd.derive("Ext.view.BoundList",Ext.view.View,{alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['
',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";if(b.trackOver){b.overItemCls=a+"-item-over"}b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('
    ','
  • '+b.getInnerTpl(b.displayField)+"
  • ","
")}else{if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField||this.callParent()},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var c=this,a=c.tpl,b=c.pagingToolbar,d=c.rendered;a.field=c.pickerField;a.store=c.store;c.callParent();a.field=a.store=null;if(d&&b&&b.rendered&&!c.preserveScrollOnRefresh){c.el.appendChild(b.el)}if(d&&Ext.isIE6&&Ext.isStrict){c.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}},0,["boundlist"],["component","boundlist","box","dataview"],{component:true,boundlist:true,box:true,dataview:true},["widget.boundlist"],[["queryable",Ext.Queryable]],[Ext.view,"BoundList",Ext,"BoundList"],0));(Ext.cmd.derive("Ext.view.BoundListKeyNav",Ext.util.KeyNav,{constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=cc){c=g;l=o}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(l+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' name="{name}"',' placeholder="{placeholder}"',' size="{size}"',' maxlength="{maxLength}"',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,anyMatch:false,caseSensitive:false,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : values["'+e.displayField+'"]]}'+e.delimiter+"")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(this.queryFilter&&!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;if(c.queryFilter){c.store.removeFilter(c.queryFilter)}if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(b,a,d){var c=this;if(c.ignoreSelection>0){--c.ignoreSelection}if(d&&!b.lastOptions.rawQuery){if(c.value==null){if(c.store.getCount()){c.doAutoSelect()}else{c.setValue(c.value)}}else{c.setValue(c.value)}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(e,b,d){var c=this,a=c.beforeQuery({query:e||"",rawQuery:d,forceAll:b,combo:c,cancel:false});if(a===false||a.cancel){return false}if(c.queryCaching&&a.query===c.lastQuery){c.expand()}else{c.lastQuery=a.query;if(c.queryMode==="local"){c.doLocalQuery(a)}else{c.doRemoteQuery(a)}}return true},beforeQuery:function(a){var b=this;if(b.fireEvent("beforequery",a)===false){a.cancel=true}else{if(!a.cancel){if(a.query.length0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{if(a.triggerAction==="last"){a.doQuery(a.lastQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){Ext.destroy(this.listKeyNav);this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){if(!this.expanding){this.alignPicker()}this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(i){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(i);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true,g;if(e&&e.isModel&&b===true&&c){g=!c.getSelectionModel().isSelected(e)}d.setValue(e,true);if(g){d.fireEvent("select",d,e)}},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(n,e){var l=this,c=l.valueNotFoundText,o=l.inputEl,g,k,h,a,m=[],b=[],d=[];if(l.store.loading){l.value=n;l.setHiddenValue(l.value);return l}n=Ext.Array.from(n);for(g=0,k=n.length;g0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(l[0]);--c}while(c=0){g.push(i)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}},0,["combobox","combo"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.combo","widget.combobox"],[["bindable",Ext.util.Bindable]],[Ext.form.field,"ComboBox",Ext.form,"ComboBox"],0));(Ext.cmd.derive("Ext.picker.Month",Ext.Component,{alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['
','
','','
','{.}',"
","
","
",'
','
','
','',"
",'
','',"
","
",'','
','{.}',"
","
","
",'
',"
",'','
{%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}
","
"],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;cd.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((be+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c','",'','','','","","",'','',"{#:this.isEndOfWeek}",'","","","
','
{.:this.firstInitial}
',"
','',"
",'','',"","",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";if(!b.format){b.format=Ext.Date.defaultFormat}if(!b.dayNames){b.dayNames=Ext.Date.dayNames}b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:function(d){if(d.altKey){c.showPrevYear()}else{c.showPrevMonth()}},pageDown:function(d){if(d.altKey){c.showNextYear()}else{c.showNextMonth()}},tab:function(d){c.doCancelFieldFocus=true;c.handleTabClick(d);delete c.doCancelFieldFocus;return true},enter:function(d){d.stopPropagation();return true},home:function(d){c.update(a.getFirstDateOfMonth(c.activeDate))},end:function(d){c.update(a.getLastDateOfMonth(c.activeDate))}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},handleTabClick:function(d){var c=this,a=c.getSelectedDate(c.activeDate),b=c.handler;if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},getSelectedDate:function(a){var d=this,i=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,i=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;bw||(D&&y&&D.test(p.dateFormat(G,y)))||(I&&I.indexOf(G.getDay())!=-1));if(!F.disabled){F.todayBtn.setDisabled(a);F.todayKeyListener.setDisabled(a)}}o=function(i,J){t=+p.clearTime(s,true);i.title=p.format(s,b);i.firstChild.dateValue=t;if(t==A){J+=" "+F.todayCls;i.title=F.todayText;F.todayElSpan=Ext.DomHelper.append(i.firstChild,{tag:"span",cls:Ext.baseCSSPrefix+"hide-clip",html:F.todayText},true)}if(t==n){J+=" "+F.selectedCls;F.fireEvent("highlightitem",F,i);if(e&&F.floating){Ext.fly(i.firstChild).focus(50)}}if(tw){J+=" "+H;i.title=F.maxText}else{if(I&&I.indexOf(s.getDay())!==-1){i.title=C;J+=" "+H}else{if(D&&y){k=p.dateFormat(s,y);if(D.test(k)){i.title=u.replace("%0",k);J+=" "+H}}}}}i.className=J+" "+F.cellCls};for(;x=m){q=(++E);c=F.nextCls}else{q=x-h+1;c=F.activeCls}}d[x].innerHTML=q;s.setDate(s.getDate()+1);o(g[x],c)}F.monthBtn.setText(Ext.Date.format(B,F.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},0,["datepicker"],["datepicker","component","box"],{datepicker:true,component:true,box:true},["widget.datepicker"],0,[Ext.picker,"Date",Ext,"DatePicker"],0));(Ext.cmd.derive("Ext.form.field.Date",Ext.form.field.Picker,{alternateClassName:["Ext.form.DateField","Ext.form.Date"],format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;hl(h).getTime()){p.push(q(k.maxText,k.formatDate(h)))}if(o){m=r.getDay();for(;e0){l=Math.floor(c/2);i=c-l;d.titleContext.setProp("padding-top",l);d.titleContext.setProp("padding-bottom",i)}}}else{e=b.titleEl.getHeight();d.setProp("innerHeight",a-e,false)}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerContext){d.triggerContext.setHeight(e)}},measureContentHeight:function(a){return a.el.dom.offsetHeight},publishOwnerHeight:function(b,a){this.callParent(arguments);if((Ext.isIE6||Ext.isIEQuirks)&&b.triggerContext){b.triggerContext.setHeight(a)}},publishInnerWidth:function(a,b){if(!a.hasRawContent){a.setProp("innerWidth",b-a.getBorderInfo().width,false)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(!c.hasRawContent){if(this.owner.noWrap||c.hasDomProp("width")){return b+this.owner.titleEl.getHeight()+c.getBorderInfo().height}return null}return a},calculateOwnerWidthFromContentWidth:function(g,b){var a=this.owner,e=Math.max(b,a.textEl.getWidth()+g.titleContext.getPaddingInfo().width),d=g.getPaddingInfo().width,c=this.getTriggerOffset(a,g);return e+d+c},getTriggerOffset:function(a,c){var b=0;if(c.widthModel.shrinkWrap&&!a.menuDisabled){if(a.query(">:not([hidden])").length===0){b=a.self.triggerElWidth}}return b}},0,0,0,0,["layout.columncomponent"],0,[Ext.grid,"ColumnComponentLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnLayout",Ext.layout.container.HBox,{type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){if(!this.scrollbarWidth){this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width}this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var k=this,b=k.owner,a=k.grid,l=a.view,h=k.getVisibleItems(),g=h.length,d=k.firstHeaderCls,n=k.lastHeaderCls,e,m;if(a.lockable){if(b.up("tablepanel")===l.normalGrid){l=l.normalGrid.getView()}else{l=null}}for(e=0;eb){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}}return a},getColumnContainerSize:function(g){var i=g.paddingContext.getPaddingInfo(),b=0,e=0,h,d,c,a;if(!g.widthModel.shrinkWrap){++e;c=g.getProp("innerWidth");h=(typeof c=="number");if(h){++b;c-=i.width;if(c<0){c=0}}}if(!g.heightModel.shrinkWrap){++e;a=g.getProp("innerHeight");d=(typeof a=="number");if(d){++b;a-=i.height;if(a<0){a=0}}}return{width:c,height:a,needed:e,got:b,gotAll:b==e,gotWidth:h,gotHeight:d}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if((b!=null)&&!d.owner.isColumn){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}},0,0,0,0,["layout.gridcolumn"],0,[Ext.grid,"ColumnLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnManager",Ext.Base,{alternateClassName:["Ext.grid.ColumnModel"],columns:null,constructor:function(b,a){this.headerCt=b;if(a){this.secondHeaderCt=a}},getColumns:function(){if(!this.columns){this.cacheColumns()}return this.columns},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getColumns(),a)},getHeaderAtIndex:function(a){var b=this.getColumns();return b.length?b[a]:null},getHeaderById:function(e){var c=this.getColumns(),a=c.length,b,d;for(b=0;b'+a.view.emptyText+""}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(h,k,l,a,i,d,c,m){var g=this,b;if(i!==-1){b=g.columnManager.getColumns()[i];return b.processEvent.apply(b,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.view.refresh();this.delayScroll()},onHeaderShow:function(a,b){this.view.refresh();this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,i=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e)}g.fireEvent("beforereconfigure",g,b,e,i,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&(b=Ext.StoreManager.lookup(b))!==i){if(g.store){g.unbindStore()}d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,i,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}},0,["tablepanel"],["panel","component","tablepanel","container","box"],{panel:true,component:true,tablepanel:true,container:true,box:true},["widget.tablepanel"],0,[Ext.panel,"Table"],0));(Ext.cmd.derive("Ext.util.CSS",Ext.Base,function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(i,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=i}else{try{l.appendChild(d.createTextNode(i))}catch(k){l.cssText=i}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||d.styleSheets[d.styleSheets.length-1])}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(i,g){var h;c.removeStyleSheet(i);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",i);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,l){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var k=h.selectorText,i,g;if(k){k=k.split(",");i=k.length;for(g=0;g=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var k=this,a=k.elements,e,h,c,l;if(g===undefined){g=k.count}else{g=Math.min(k.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,l=g;h=h.startIndex&&k<=h.endIndex){m[m.length]=k}}Ext.Array.sort(m);e=m.length}else{if(mh.endIndex){return}e=1;m=[m]}for(g=i=m[0],b=0;g<=h.endIndex;g++,i++){if(b=h.startIndex){d=a[g]=a[i];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,m,c){var l=this,a=l.elements,o=e.length,h,d,b,g,k=l.view.getNodeContainer(),n=document.createDocumentFragment();if(m==-1){for(h=(l.endIndex-c)+1;h<=l.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}l.endIndex-=c;g=l.view.bufferRender(e,l.startIndex-=o);for(h=0;h',"{[view.renderColumnSizer(out)]}","{[view.renderTHead(values, out)]}","{[view.renderTFoot(values, out)]}",'',"{%","view.renderRows(values.rows, values.viewStartIndex, out);","%}","","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'','{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","",{priority:0}],cellTpl:['','
{style}">{value}
',"",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly();b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null;b.beforeOverItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,s,k,m,r,q;if(n.rendered&&o!==a){s=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=s.length;g-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,c;g.view=this;g.columns=this.ownerCt.columnManager.getColumns();for(c=0;c')}},renderRow:function(g,a,e){var i=this,d=a===-1,h=i.selModel,m=i.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=i.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=i.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=i.ownerCt.columnManager.getColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected){if(h.isRowSelected(a+1)){c.push(i.beforeSelectedItemCls)}if(h.isRowSelected(g)){c.push(i.selectedItemCls)}}if(i.stripeRows&&a%2!==0){b.push(i.altRowCls)}if(i.getRowClass){l=i.getRowClass(g,a,null,i.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,i,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=i;k.cellIndex=i;k.align=c.align;k.tdCls=c.tdCls;k.innerCls=c.innerCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,i,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=(o==null||o==="")?" ":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,i)){b[m++]=(l.selectedCellCls)}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a&&b.el.isAncestor(a)&&b.isRowStyleFirst(a)){b.getRowStyleTableEl(a).removeCls(b.tableOverFirstCls)}if(c&&b.isRowStyleFirst(c)){b.getRowStyleTableEl(c).addCls(b.tableOverFirstCls)}b.callParent(arguments)},onRowSelect:function(b){var a=this;a.addRowCls(b,a.selectedItemCls);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).addCls(a.tableSelectedFirstCls)}else{a.addRowCls(b-1,a.beforeSelectedItemCls)}},onRowDeselect:function(b){var a=this;a.removeRowCls(b,[a.selectedItemCls,a.focusedItemCls]);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).removeCls([a.tableFocusedFirstCls,a.tableSelectedFirstCls])}else{a.removeRowCls(b-1,[a.beforeFocusedItemCls,a.beforeSelectedItemCls])}},onCellSelect:function(b){var a=this.getCellByPosition(b);if(a){a.addCls(this.selectedCellCls);this.scrollCellIntoView(a)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.ownerCt.columnManager.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()&&(a=b.getNode(b.all.item(0).dom,true))){b.focusRow(a)}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).addCls(c.tableFocusedFirstCls)}else{c.addRowCls(d-1,c.beforeFocusedItemCls)}if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).removeCls(c.tableFocusedFirstCls)}else{c.removeRowCls(d-1,c.beforeFocusedItemCls)}}if((Ext.isIE6||Ext.isIE7)&&!c.ownerCt.rowLines){c.repaintRow(d)}},focus:function(d,b){var c=this,a=Ext.isIE&&!b,e;if(a){e=c.el.dom.scrollLeft}this.callParent(arguments);if(a){c.el.dom.scrollLeft=e}},focusRow:function(g,b){var d=this,c,e=d.ownerCt&&d.ownerCt.collapsed,a;if(d.isVisible(true)&&!e&&(g=d.getNode(g,true))){d.scrollRowIntoView(g);a=d.getRecord(g);c=d.indexInStore(g);d.selModel.setLastFocused(a);d.focusedRow=g;d.focus(false,b,function(){d.fireEvent("rowfocus",a,g,c)})}},scrollRowIntoView:function(a){a=this.getNode(a,true);if(a){Ext.fly(a).scrollIntoView(this.el,false)}},focusCell:function(b){var d=this,a=d.getCellByPosition(b),c=d.getRecord(b.row);d.focusRow(c);if(a){d.scrollCellIntoView(a);d.fireEvent("cellfocus",c,a,b)}},scrollCellIntoView:function(a){if(a.row!=null&&a.column!=null){a=this.getCellByPosition(a)}if(a){Ext.fly(a).scrollIntoView(this.el,true)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(g,c,m,r){var v=this,o=v.rowTpl,i,s,b,l,n,t,u,e,p,q,k,d,w,h,a;if(v.viewReady){b=v.getNodeByRecord(c,false);if(b){p=v.overItemCls;q=v.overItemCls;k=v.focusedItemCls;d=v.beforeFocusedItemCls;w=v.selectedItemCls;h=v.beforeSelectedItemCls;i=v.indexInStore(c);s=Ext.fly(b,"_internal");l=v.createRowElement(c,i);if(s.hasCls(p)){Ext.fly(l).addCls(p)}if(s.hasCls(q)){Ext.fly(l).addCls(q)}if(s.hasCls(k)){Ext.fly(l).addCls(k)}if(s.hasCls(d)){Ext.fly(l).addCls(d)}if(s.hasCls(w)){Ext.fly(l).addCls(w)}if(s.hasCls(h)){Ext.fly(l).addCls(h)}a=v.ownerCt.columnManager.getColumns();if(Ext.isIE9m&&b.mergeAttributes){b.mergeAttributes(l,true)}else{n=l.attributes;t=n.length;for(e=0;e0){m=g.getCellPaddingAfter(n[0])}a.setWidth(1);k=d.textEl.dom.offsetWidth+d.titleEl.getPadding("lr");for(;c=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,i=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=(a<0)?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){i+=k;m=d}}while(i!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=(c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount()),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return new Ext.grid.CellContext(this).setPosition(a,b)},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();bg.viewSize){if(ce.startIndex){d.refreshView()}else{g.stretchView(d,g.getScrollHeight())}}else{d.callParent([b,a,c])}},onRemove:function(b,a,d){var c=this,e=c.bufferedRenderer;c.callParent([b,a,d]);if(c.rendered&&e){if(c.dataSource.getCount()>e.viewSize){c.refreshView()}else{e.stretchView(c,e.getScrollHeight())}}},onDataRefresh:function(){var a=this;if(a.bufferedRenderer){a.all.clear();a.bufferedRenderer.onStoreClear()}a.callParent()}});(Ext.cmd.derive("Ext.view.DropZone",Ext.dd.DropZone,{indicatorHtml:'
',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(l){var k=l.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!k){d=l.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,i=g.view,h=g.getPosition(d,b),l=i.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-i.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(i.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(i,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",i,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",i,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}},1,0,0,0,0,0,[Ext.view,"DropZone"],0));(Ext.cmd.derive("Ext.grid.ViewDropZone",Ext.view.DropZone,{indicatorHtml:'
',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var k=this.view,l=k.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;cn){q-=1}}Ext.suspendLayouts();if(l){a.move(n,q)}else{u.remove(r,false);a.insert(q,r)}if(a.isGroupHeader){if(!l){r.savedFlex=r.flex;delete r.flex;r.width=g}}else{if(r.savedFlex){r.flex=r.savedFlex;delete r.width}}k.purgeCache();Ext.resumeLayouts(true);k.onHeaderMoved(r,o,b,t)}}}}},1,0,0,0,0,0,[Ext.grid.header,"DropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderReorderer",Ext.AbstractPlugin,{init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}},0,0,0,0,["plugin.gridheaderreorderer"],0,[Ext.grid.plugin,"HeaderReorderer"],0));(Ext.cmd.derive("Ext.grid.header.Container",Ext.container.Container,{border:true,baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isColumn){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isColumn&&(!a.items||a.items.length===0)){a.isContainer=false;a.layout={type:"container",calculate:Ext.emptyFn}}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretch"},a.initialConfig.layout);if(a.isRootHeader){a.grid.columnManager=a.columnManager=new Ext.grid.ColumnManager(a)}}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var n=this,l=n.items.items,k=l.length,g=0,b=e.length,m,d,a,h;for(m=0;mgridcolumn[hideable]"),h=a.length,d;for(;b{text}
{%this.renderContainer(out,values)%}',dataIndex:null,text:" ",menuText:null,emptyCellText:" ",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,isColumn:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",clickTargetName:"titleEl",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(b.header!=null){b.text=b.header;b.header=null}if(!b.triStateSort){b.possibleSortStates.length=2}if(b.columns!=null){b.isGroupHeader=true;b.items=b.columns;b.columns=b.flex=b.width=null;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=b.resizable=false;b.align="center"}else{if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:b.clickTargetName,click:b.onTitleElClick,contextmenu:b.onTitleElContextMenu,mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b};if(b.resizable){a.dblclick=b.onTitleElDblClick}b.on(a)},onAdd:function(a){if(a.isColumn){a.isSubHeader=true;a.addCls(this.groupSubHeaderCls)}if(this.hidden){a.hide()}this.callParent(arguments)},onRemove:function(a){if(a.isSubHeader){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls)}this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this;a.applyColumnsState(b.columns);if(b.hidden!=null){a.hidden=b.hidden}if(b.locked!=null){a.locked=b.locked}if(b.sortable!=null){a.sortable=b.sortable}if(b.width!=null){a.flex=null;a.width=b.width}else{if(b.flex!=null){a.width=null;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},isLocked:function(){return this.locked||!!this.up("[isColumn][locked]","[isRootHeader]")},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var k=this,e=k.getOwnerHeaderCt(),b=k.ownerCt,a,l,h,g,d;if(!k.isVisible()){return k}if(!e){k.callParent();return k}if(e.forceFit){k.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(k.flex){k.savedWidth=k.getWidth();k.flex=null}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==k){k.ownerCt.hide();return}}Ext.suspendLayouts();if(k.isGroupHeader){h=k.items.items;for(d=0,g=h.length;dl.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(l.forceFit){n=Ext.ComponentQuery.query(":not([flex])",l.getVisibleGridColumns());if(n.length){o.width=o.savedWidth||o.width||q}else{n=l.getVisibleGridColumns();m=n.length;c=o.visibleSiblingCount;b=(o.savedWidth||o.width||q);b=Math.min(b*(c/m),q,Math.max(a-(m*q),q));o.width=null;o.flex=b;a-=b;e=0;for(k=0;kActions",sortable:false,innerCls:Ext.baseCSSPrefix+"grid-cell-inner-action-col",constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e"}return k},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,r){var i=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(i.actionIdRe))){q=i.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||i.origScope||i,n,b,l,q,d):false);if(q&&!a){if(k=="click"||(o==h.ENTER||o==h.SPACE)){m=q.handler||i.handler;if(m){m.call(q.scope||i.origScope||i,n,b,l,q,h,d,r)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return i.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}},1,["actioncolumn"],["component","gridcolumn","container","actioncolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,actioncolumn:true,box:true,headercontainer:true},["widget.actioncolumn"],0,[Ext.grid.column,"Action",Ext.grid,"ActionColumn"],0));(Ext.cmd.derive("Ext.grid.locking.HeaderContainer",Ext.grid.header.Container,{constructor:function(d){var c=this,a,b,h=[],g=d.lockedGrid,e=d.normalGrid;c.lockable=d;c.callParent();g.columnManager.rootColumns=e.columnManager.rootColumns=d.columnManager=c.columnManager=new Ext.grid.ColumnManager(g.headerCt,e.headerCt);a=g.headerCt.events;for(b in a){if(a.hasOwnProperty(b)){h.push(b)}}c.relayEvents(g.headerCt,h);c.relayEvents(e.headerCt,h)},getRefItems:function(){return this.lockable.lockedGrid.headerCt.getRefItems().concat(this.lockable.normalGrid.headerCt.getRefItems())},getGridColumns:function(){return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns())},getColumnsState:function(){var b=this,a=b.lockable.lockedGrid.headerCt.getColumnsState(),c=b.lockable.normalGrid.headerCt.getColumnsState();return a.concat(c)},applyColumnsState:function(h){var q=this,e=q.lockable.lockedGrid,g=e.headerCt,o=q.lockable.normalGrid.headerCt,r=Ext.Array.toValueMap(g.items.items,"headerId"),k=Ext.Array.toValueMap(o.items.items,"headerId"),n=[],p=[],m=1,b=h.length,l,a,d,c;for(l=0;l>#normalHeaderCt",items:k},g={itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt",items:d},m={lockedWidth:0,locked:a,normal:g};if(Ext.isObject(c)){Ext.applyIf(a,c);Ext.applyIf(g,c);Ext.apply(l,c);c=c.items}for(e=0,h=c.length;ea.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(i){var d=this,h=-d.scrollDelta,a=h*i.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){i.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),k=b.all.slice(),c=g.length,h;if(k.length===c){for(a=0;a','
','',h.join(""),"
","
",""].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var i=this,a=i.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=i.all,n,d=i.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return i.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-i.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){i.onExpand(k)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var i=this,g=i.animQueue,a=k.getId(),c=i.getNode(k),h=c?i.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(i.singleExpand){i.ensureSingleExpand(k)}if(h===-1){return}e=i.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;i.fireEvent("afteritemexpand",k,h,c);i.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:i.expandDuration,listeners:{afteranimate:function(){var m=l.query(i.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();i.refreshSize();delete i.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;i.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,i=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[i]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[i]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c0?1:-1;if(Math.abs(c)>=20||(a!==g.lastScrollDirection)){g.lastScrollDirection=a;g.handleViewScroll(g.lastScrollDirection);h=true}}if(!h){if(g.lockingPartner&&g.lockingPartner.scrollTop!==b){g.lockingPartner.view.el.dom.scrollTop=b}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,i=e.viewSize,a=(b.buffered?b.getTotalCount():b.getCount()),d,c;if(h==-1){if(g.startIndex){if((e.getFirstVisibleRowIndex()-g.startIndex)o.endIndex||eo.endIndex){a=Math.max(b-o.startIndex,0);if(k.variableRowHeight){n=o.item(o.startIndex+a,true).offsetTop}o.scroll(Ext.Array.slice(h,o.endIndex+1-b),1,a,b,e);if(k.variableRowHeight){l=k.bodyTop+n}else{l=g}}else{a=Math.max(o.endIndex-e,0);d=o.startIndex;o.scroll(Ext.Array.slice(h,0,o.startIndex-b),-1,a,b,e);if(k.variableRowHeight){l=k.bodyTop-o.item(d,true).offsetTop}else{l=g}}}k.position=k.scrollTop;if(m.positionBody){k.setBodyTop(l,g)}if(i&&!i.disabled&&!c){i.onRangeFetched(h,b,e,true);if(i.scrollTop!==k.scrollTop){i.view.el.dom.scrollTop=k.scrollTop}}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(b.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,i=h.view,m=i.all,a=m.elements,d=i.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+i.body.getHeight()g||i.bodyTop+k.body.getHeight()g){return i.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return i.getLastVisibleRowIndex(e+1,c,b,g)}}}return i.getFirstVisibleRowIndex()+Math.ceil(d/i.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return this.scrollHeight=Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}},0,0,0,0,["plugin.bufferedrenderer"],0,[Ext.grid.plugin,"BufferedRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.Editing",Ext.AbstractPlugin,{clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.columnManager.getColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var d=this,g,e=a.length,b;for(g=0;g','
 ',"
",""],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var a=this,b=a.getCollapseTarget();a.callParent();if(b.collapsed){a.addCls(a.collapsedClsInternal)}if(!a.canResize){a.addCls(a.baseCls+"-noresize")}Ext.applyIf(a.renderData,{collapseDir:a.getCollapseDirection(),collapsible:a.collapsible||b.collapsible});a.protoEl.unselectable()},onRender:function(){var b=this,a;b.callParent(arguments);if(b.performCollapse!==false){if(b.renderData.collapsible){b.mon(b.collapseEl,"click",b.toggleTargetCmp,b)}if(b.collapseOnDblClick){b.mon(b.el,"dblclick",b.toggleTargetCmp,b)}}b.mon(b.getCollapseTarget(),{collapse:b.onTargetCollapse,expand:b.onTargetExpand,beforeexpand:b.onBeforeTargetExpand,beforecollapse:b.onBeforeTargetCollapse,scope:b});if(b.canResize){b.tracker=Ext.create(b.getTrackerConfig());b.relayEvents(b.tracker,["beforedragstart","dragstart","dragend"])}a=b.collapseEl;if(a){a.lastCollapseDirCls=b.collapseDirProps[b.collapseDirection].cls}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)===b.indexOf(g)-1)<<1|Number(d==="hbox")}else{a=Number(g.collapseTarget==="prev")<<1|Number(d==="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.setOrientation((c==="top"||c==="bottom")?"horizontal":"vertical");return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget==="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},collapseDirProps:{top:{cls:Ext.baseCSSPrefix+"layout-split-top"},right:{cls:Ext.baseCSSPrefix+"layout-split-right"},bottom:{cls:Ext.baseCSSPrefix+"layout-split-bottom"},left:{cls:Ext.baseCSSPrefix+"layout-split-left"}},orientationProps:{horizontal:{opposite:"vertical",fixedAxis:"height",stretchedAxis:"width"},vertical:{opposite:"horizontal",fixedAxis:"width",stretchedAxis:"height"}},applyCollapseDirection:function(){var c=this,b=c.collapseEl,d=c.collapseDirProps[c.collapseDirection],a;if(b){a=b.lastCollapseDirCls;if(a){b.removeCls(a)}b.addCls(b.lastCollapseDirCls=d.cls)}},applyOrientation:function(){var e=this,c=e.orientation,d=e.orientationProps[c],g=e.size,b=d.fixedAxis,h=d.stretchedAxis,a=e.baseCls+"-";e[c]=true;e[d.opposite]=false;if(!e.hasOwnProperty(b)||e[b]==="100%"){e[b]=g}if(!e.hasOwnProperty(h)||e[h]===g){e[h]="100%"}e.removeCls(a+d.opposite);e.addCls(a+c)},setOrientation:function(a){var b=this;if(b.orientation!==a){b.orientation=a;b.applyOrientation()}},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}},0,["splitter"],["component","box","splitter"],{component:true,box:true,splitter:true},["widget.splitter"],0,[Ext.resizer,"Splitter"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitter",Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}},0,["bordersplitter"],["bordersplitter","component","box","splitter"],{bordersplitter:true,component:true,box:true,splitter:true},["widget.bordersplitter"],0,[Ext.resizer,"BorderSplitter"],0));(Ext.cmd.derive("Ext.layout.container.Border",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",isBorderLayout:true,padding:undefined,percentageRe:/(\d+)%/,horzMarginProp:"left",padOnContainerProp:"left",padNotOnContainerProp:"right",axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(n,b,x){var v=this,c=v.axisProps[x],s=!c.horizontal,m=c.sizeProp,q=0,a=n.childItems,g=a.length,u,r,p,h,t,e,l,o,d,w,k;for(r=0;r',"{text}","",' target="{hrefTarget}"',' hidefocus="true"',' unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'",'{text}','',"",""],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(c){var b=this,a=b.clickHideDelay;if(!b.href){c.stopEvent()}if(b.disabled){return}if(b.hideOnClick){if(!a){b.deferHideParentMenus()}else{b.deferHideParentMenusTimer=Ext.defer(b.deferHideParentMenus,a,b)}}Ext.callback(b.handler,b.scope||b,[b,c]);b.fireEvent("click",b,c);if(!b.hideOnClick){b.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}},0,["menuitem"],["component","menuitem","box"],{component:true,menuitem:true,box:true},["widget.menuitem"],[["queryable",Ext.Queryable]],[Ext.menu,"Item",Ext.menu,"TextItem"],0));(Ext.cmd.derive("Ext.menu.CheckItem",Ext.menu.Item,{checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['',"{text}","","{%var showCheckbox = values.showCheckbox,",' rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','target="{hrefTarget}" hidefocus="true" unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','","{%} else if (showCheckbox){%}",'',"{%}%}",'style="margin-right: 17px;" >{text}',"{%if (rightCheckbox) {%}",'',"{%} else if (values.arrowCls) {%}",'',"{%}%}","",""],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){a.showCheckbox=false;if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||(Ext.isIE9&&Ext.isStrict))&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}},0,["menucheckitem"],["component","menucheckitem","menuitem","box"],{component:true,menucheckitem:true,menuitem:true,box:true},["widget.menucheckitem"],0,[Ext.menu,"CheckItem"],0));(Ext.cmd.derive("Ext.menu.KeyNav",Ext.util.KeyNav,{constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,i=g+b,d=e.length,c=0,k;while(c=d){i=0}}k=e.getAt(i);if(a.canActivateItem(k)){a.setActiveItem(k);break}i+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}},1,0,0,0,0,0,[Ext.menu,"KeyNav"],0));(Ext.cmd.derive("Ext.menu.Separator",Ext.menu.Item,{canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:" ",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}},0,["menuseparator"],["component","menuseparator","menuitem","box"],{component:true,menuseparator:true,menuitem:true,box:true},["widget.menuseparator"],0,[Ext.menu,"Separator"],0));(Ext.cmd.derive("Ext.menu.Menu",Ext.panel.Panel,{enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden;b.constrain=false}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:" "})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,i=h.getRelatedTarget(),b=!g.el.contains(i),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},beforeShow:function(){var b=this,a;if(b.floating){b.savedMaxHeight=b.maxHeight;a=b.container.getViewSize().height;b.maxHeight=Math.min(b.maxHeight||a,a)}b.callParent(arguments)},afterShow:function(){var a=this;a.callParent(arguments);if(a.floating){a.maxHeight=a.savedMaxHeight}},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,i=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-i;if(k>a){h=e-i}else{if(gb){h=b-k}}}}d.setY(h)}},0,["menu"],["panel","component","container","menu","box"],{panel:true,component:true,container:true,menu:true,box:true},["widget.menu"],0,[Ext.menu,"Menu"],0));(Ext.cmd.derive("Ext.panel.Tool",Ext.Component,{isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:[''],toolOwner:null,tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}if(a.handler){Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a])}else{if(a.callback){Ext.callback(a.callback,a.scope||a,[a.toolOwner||a.ownerCt,a,c])}}a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}},0,["tool"],["component","tool","box"],{component:true,tool:true,box:true},["widget.tool"],0,[Ext.panel,"Tool"],0));(Ext.cmd.derive("Ext.resizer.SplitterTracker",Ext.dd.DragTracker,{enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:" "});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(i){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=i.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),i=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:i};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+i,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-i,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(o,h){var q=this,a=q.getSplitter(),k=a.orientation,r=q.getPrevCmp(),p=q.getNextCmp(),b=a.ownerCt,m=b.query(">[flex]"),n=m.length,c=k==="vertical",l=0,g=c?"width":"height",d=0,s,t;for(;lr){w=r}}if(w-n<2){return null}o=new Ext.util.Region(q,y,l,g);z.constraintAdjusters[z.getCollapseDirection()](o,n,w,a);z.dragInfo={minRange:n,maxRange:w,targetSize:b};return o},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var l=this,b=l.splitter,a=b.collapseTarget,n=b.neighbors,d=l.getSplitter().collapseEl,k=h.getTarget(),c=n.length,g,m;if(d&&k===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;gc){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,i,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(t,n){var u=this,c=u.activeResizeHandle.region,g=u.getOffset(u.constrainTo?"dragTarget":null),l=u.startBox,h,q=0,v=0,k,r,a=0,x=0,w,o=g[0]<0?"right":"left",s=g[1]<0?"down":"up",i,b,d,p,m;c=u.convertRegionName(c);switch(c){case"south":v=g[1];b=2;break;case"north":v=-g[1];x=-v;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":v=-g[1];x=-v;q=g[0];i=[l.x,l.y+l.height];b=3;break;case"southeast":v=g[1];q=g[0];i=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;v=g[1];i=[l.x+l.width,l.y];b=3;break;case"northwest":v=-g[1];x=-v;q=-g[0];a=-q;i=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+v,x:l.x+a,y:l.y+x};k=Ext.Number.snap(d.width,u.widthIncrement);r=Ext.Number.snap(d.height,u.heightIncrement);if(k!=d.width||r!=d.height){switch(c){case"northeast":d.y-=r-d.height;break;case"north":d.y-=r-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=r-d.height}d.width=k;d.height=r}if(d.widthu.maxWidth){d.width=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{u.lastX=d.x}if(d.heightu.maxHeight){d.height=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight);if(x){d.y=l.y+(l.height-d.height)}}else{u.lastY=d.y}if(u.preserveRatio||t.shiftKey){h=u.startBox.width/u.startBox.height;p=Math.min(Math.max(u.minHeight,d.width/h),u.maxHeight);m=Math.min(Math.max(u.minWidth,d.height*h),u.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{w=Math.abs(i[0]-this.lastXY[0])/Math.abs(i[1]-this.lastXY[1]);if(w>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(v===0){s="none"}if(q===0){o="none"}u.resize(d,{horizontal:o,vertical:s},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}},1,0,0,0,0,0,[Ext.resizer,"ResizeTracker"],0));(Ext.cmd.derive("Ext.resizer.Resizer",Ext.Base,{alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var n=this,k,r,t,s=n.handles,c,q,g,d=0,p,o=[],h,a,e,m,l=Ext.dom.Element.unselectableCls;n.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){k=b;b=arguments[1]||{};b.target=k}n.mixins.observable.constructor.call(n,b);k=n.target;if(k){if(k.isComponent){k.addClsWithUI("resizable");n.el=k.getEl();if(k.minWidth){n.minWidth=k.minWidth}if(k.minHeight){n.minHeight=k.minHeight}if(k.maxWidth){n.maxWidth=k.maxWidth}if(k.maxHeight){n.maxHeight=k.maxHeight}if(k.floating){if(!n.hasOwnProperty("handles")){n.handles="n ne e se s sw w nw"}}}else{n.el=n.target=Ext.get(k)}}else{n.target=n.el=Ext.get(n.el)}t=n.el.dom.tagName.toUpperCase();if(t=="TEXTAREA"||t=="IMG"||t=="TABLE"){n.originalTarget=n.target;r=n.el;e=r.getBox();n.target=n.el=n.el.wrap({cls:n.wrapCls,id:n.el.id+"-rzwrap",style:r.getStyles("margin-top","margin-bottom")});n.el.setPositioning(r.getPositioning());r.clearPositioning();n.el.setBox(e);r.setStyle("position","absolute")}n.el.position();if(n.pinned){n.el.addCls(n.pinnedCls)}n.resizeTracker=new Ext.resizer.ResizeTracker({disabled:n.disabled,target:n.target,constrainTo:n.constrainTo,overCls:n.overCls,throttle:n.throttle,originalTarget:n.originalTarget,delegate:"."+n.handleCls,dynamic:n.dynamic,preserveRatio:n.preserveRatio,heightIncrement:n.heightIncrement,widthIncrement:n.widthIncrement,minHeight:n.minHeight,maxHeight:n.maxHeight,minWidth:n.minWidth,maxWidth:n.maxWidth});n.resizeTracker.on({mousedown:n.onBeforeResize,drag:n.onResize,dragend:n.onResizeEnd,scope:n});if(n.handles=="all"){n.handles="n s e w ne nw se sw"}s=n.handles=n.handles.split(n.delimiterRe);q=n.possiblePositions;g=s.length;c=n.handleCls+" "+n.handleCls+"-{0}";if(n.target.isComponent){m=n.target.baseCls;c+=" "+m+"-handle "+m+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+m+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+n.el.getHeight()+'px"':"";for(;d")}}Ext.DomHelper.append(n.el,o.join(""));for(d=0;dk.row){return}for(c=0;c-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,i,c,a;if(e){i=g.nextSelection;c="select"}else{i=g.lastSelection||g.noSelection;c="deselect"}a=i.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,i.row,i.column))!==false&&h()!==false){if(e){a.focusRow(b,true);a.onCellSelect(i)}else{a.onCellDeselect(i);delete g.selection}if(!d){g.fireEvent(c,g,b,i.row,i.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.record,a.columnHeader)){c.wasEditing=false}else{c.wasEditing=true}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a,b){this.setCurrentPosition(a,b)}},1,0,0,0,["selection.cellmodel"],0,[Ext.selection,"CellModel"],0));(Ext.cmd.derive("Ext.selection.RowModel",Ext.selection.Model,{deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},onVetoUIEvent:function(g,c,a,i,d,h,b){if(g=="mousedown"){this.mousedownAction=!this.isSelected(b)}},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,l,a){var k=this,m=k.views,d=m.length,b=m[0].indexOf(g),h=c?"select":"deselect",e=0;if((l||k.fireEvent("before"+h,k,g,b))!==false&&a()!==false){for(;e0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},3,0,0,0,0,0,[Ext.util,"Point"],function(){this.prototype.translate=Ext.util.Region.prototype.translateBy}));(Ext.cmd.derive("Ext.tab.Bar",Ext.panel.Header,{baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['
{baseCls}-body-{ui} {parent.baseCls}-body-{parent.ui}-{.}" style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
",'
{baseCls}-strip-{ui}',' {parent.baseCls}-strip-{parent.ui}-{.}','">',"
"],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",c.lastBox.width+"px")}}}else{if(this.dock==="left"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",-c.lastBox.height+"px")}}}}}},getLayout:function(){var a=this;a.layout.type=(a.orientation==="horizontal")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,i,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{i=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=i&&Ext.getCmp(i.id);b=c&&c.closeEl&&(g===c.closeEl.dom)}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var B=this,x=B.items.items,e=x.length,p=B.layout.innerCt,v=p.getXY(),u=new Ext.util.Point(g[0],g[1]),w=0,y,b,a,q,z,k,h,d,s,m,l,o,n,t,r,A,c;for(;w1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}},0,["tabbar"],["component","tabbar","container","box","header"],{component:true,tabbar:true,container:true,box:true,header:true},["widget.tabbar"],0,[Ext.tab,"Bar"],0));(Ext.cmd.derive("Ext.tree.Column",Ext.grid.column.Column,{tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,iconCls:Ext.baseCSSPrefix+"tree-icon",checkboxCls:Ext.baseCSSPrefix+"tree-checkbox",elbowCls:Ext.baseCSSPrefix+"tree-elbow",expanderCls:Ext.baseCSSPrefix+"tree-expander",textCls:Ext.baseCSSPrefix+"tree-node-text",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-treecolumn",isTreeColumn:true,cellTpl:['','lineempty"/>',"",'-end-plus {expanderCls}"/>','','aria-checked="true" ','class="{childCls} {checkboxCls} {checkboxCls}-checked"/>',"",'leafparent {iconCls}"','style="background-image:url({icon})"/>','','{value}',"",'{value}',""],initComponent:function(){var a=this;a.origRenderer=a.renderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(m,a,e,b,d,n,k){var i=this,p=e.get("cls"),h=i.origRenderer,c=e.data,l=e.parentNode,o=k.rootVisible,q=[],g;if(p){a.tdCls+=" "+p}while(l&&(o||l.data.depth>0)){g=l.data;q[o?g.depth:g.depth-1]=g.isLast?0:1;l=l.parentNode}return i.getTpl("cellTpl").apply({record:e,baseIconCls:i.iconCls,iconCls:c.iconCls,icon:c.icon,checkboxCls:i.checkboxCls,checked:c.checked,elbowCls:i.elbowCls,expanderCls:i.expanderCls,textCls:i.textCls,leaf:c.leaf,expandable:e.isExpandable(),isLast:c.isLast,blankUrl:Ext.BLANK_IMAGE_URL,href:c.href,hrefTarget:c.hrefTarget,lines:q,metaData:a,childCls:i.getChildCls?i.getChildCls()+" ":"",value:h?h.apply(i.origScope,arguments):m})}},0,["treecolumn"],["component","gridcolumn","container","treecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,treecolumn:true,box:true,headercontainer:true},["widget.treecolumn"],0,[Ext.tree,"Column"],0));(Ext.cmd.derive("Ext.selection.CheckboxModel",Ext.selection.RowModel,{mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(b){var c=this,a;c.callParent(arguments);if(!c.hasLockedHeader()||b.headerCt.lockedCt){if(c.showHeaderCheckbox!==false){b.headerCt.on("headerclick",c.onHeaderClick,c)}c.addCheckbox(b,true);a=b.ownerCt;if(b.headerCt.lockedCt){a=a.ownerCt}c.mon(a,"reconfigure",c.onReconfigure,c)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b '},processSelection:function(b,a,h,d,i){var g=this,c=i.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,i);g.setSelectionMode(k)}else{g.selectWithEvent(a,i)}},onSelectChange:function(){this.callParent(arguments);if(!this.suspendChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.suspendChange){this.updateHeaderState()}this.callParent(arguments)},resumeChanges:function(){this.callParent();if(!this.suspendChange){this.updateHeaderState()}},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),k=g.views,l=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;l=true;for(c=0,d=b.getCount();c1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,i||b,[true,m]);return}}Ext.callback(g,i||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,i||b,[true,c])}else{Ext.callback(g,i||b,[false,null])}}}},1,["treepanel"],["panel","component","tablepanel","container","box","treepanel"],{panel:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.treepanel"],0,[Ext.tree,"Panel",Ext.tree,"TreePanel",Ext,"TreePanel"],0));(Ext.cmd.derive("Ext.view.DragZone",Ext.dd.DragZone,{containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){if(b.focusRow){b.focusRow(a)}this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}},1,0,0,0,0,0,[Ext.view,"DragZone"],0));(Ext.cmd.derive("Ext.util.Grouper",Ext.util.Sorter,{isGrouper:true,getGroupString:function(a){return a.get(this.property)}},0,0,0,0,0,0,[Ext.util,"Grouper"],0));(Ext.cmd.derive("Ext.ux.TabCloseMenu",Ext.Base,{closeTabText:"Close Tab",showCloseOthers:true,closeOthersTabsText:"Close Other Tabs",showCloseAll:true,closeAllTabsText:"Close All Tabs",extraItemsHead:null,extraItemsTail:null,constructor:function(a){this.addEvents("aftermenu","beforemenu");this.mixins.observable.constructor.call(this,a)},init:function(a){this.tabPanel=a;this.tabBar=a.down("tabbar");this.mon(this.tabPanel,{scope:this,afterlayout:this.onAfterLayout,single:true})},onAfterLayout:function(){this.mon(this.tabBar.el,{scope:this,contextmenu:this.onContextMenu,delegate:".x-tab"})},onBeforeDestroy:function(){Ext.destroy(this.menu);this.callParent(arguments)},onContextMenu:function(d,g){var c=this,h=c.createMenu(),e=true,i=true,b=c.tabBar.getChildByElement(g),a=c.tabBar.items.indexOf(b);c.item=c.tabPanel.getComponent(a);h.child('*[text="'+c.closeTabText+'"]').setDisabled(!c.item.closable);if(c.showCloseAll||c.showCloseOthers){c.tabPanel.items.each(function(k){if(k.closable){e=false;if(k!=c.item){i=false;return false}}return true});if(c.showCloseAll){h.child('*[text="'+c.closeAllTabsText+'"]').setDisabled(e)}if(c.showCloseOthers){h.child('*[text="'+c.closeOthersTabsText+'"]').setDisabled(i)}}d.preventDefault();c.fireEvent("beforemenu",h,c.item,c);h.showAt(d.getXY())},createMenu:function(){var b=this;if(!b.menu){var a=[{text:b.closeTabText,scope:b,handler:b.onClose}];if(b.showCloseAll||b.showCloseOthers){a.push("-")}if(b.showCloseOthers){a.push({text:b.closeOthersTabsText,scope:b,handler:b.onCloseOthers})}if(b.showCloseAll){a.push({text:b.closeAllTabsText,scope:b,handler:b.onCloseAll})}if(b.extraItemsHead){a=b.extraItemsHead.concat(a)}if(b.extraItemsTail){a=a.concat(b.extraItemsTail)}b.menu=Ext.create("Ext.menu.Menu",{items:a,listeners:{hide:b.onHideMenu,scope:b}})}return b.menu},onHideMenu:function(){var a=this;a.item=null;a.fireEvent("aftermenu",a.menu,a)},onClose:function(){this.tabPanel.remove(this.item)},onCloseOthers:function(){this.doClose(true)},onCloseAll:function(){this.doClose(false)},doClose:function(b){var a=[];this.tabPanel.items.each(function(c){if(c.closable){if(!b||c!=this.item){a.push(c)}}},this);Ext.each(a,function(c){this.tabPanel.remove(c)},this)}},1,0,0,0,["plugin.tabclosemenu"],[["observable",Ext.util.Observable]],[Ext.ux,"TabCloseMenu"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Expander",Ext.button.Button,{expandedText:"▼",collapsedText:"►",border:false,leafText:" ",listeners:{click:function(b){var a=b.up("treeButton");if(a.childrenShown){b.hideChildren(true,a);b.up("treeButton").updateLayout()}else{b.showChildren(a)}b.updateLayout()}},showChildren:function(c){if(c.getChildren().length!=0){var b=this.up("markingMenu");if(b.shown.indexOf(c)==-1){var a=c.getChildrenContainer();b.shown.push(c);a.hidden=false;a.el.show();c.childrenShown=true;this.setTextFast(this.expandedText)}}},hideChildren:function(k,c){if((c.getChildren().length==0||c.getChildrenContainer().hidden)&&c.getWidgets().items.items.length==0){return}var b=this.up("markingMenu"),g=b.shown.indexOf(c),e=c.getChildrenContainer(),a=e.items.items;if(g!=-1){for(var d in a){var h=a[d].getExpander();if(!k){a[d].hideWidgets();h.hideChildren(k,a[d])}}e.hidden=true;e.el.hide();c.childrenShown=false;this.setTextFast(this.collapsedText);b.shown.splice(g,1)}},setTextFast:function(a){this.text=a;this.btnInnerEl.update(a)}},0,["treeButtonExpander"],["button","component","treeButtonExpander","box"],{button:true,component:true,treeButtonExpander:true,box:true},["widget.treeButtonExpander"],0,[LIME.view.markingmenu.treebutton,"Expander"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Name",Ext.button.Button,{textAlign:"left"},0,["treeButtonName"],["treeButtonName","button","component","box"],{treeButtonName:true,button:true,component:true,box:true},["widget.treeButtonName"],0,[LIME.view.markingmenu.treebutton,"Name"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Children",Ext.container.Container,{},0,["treeButtonChildren"],["component","container","box","treeButtonChildren"],{component:true,container:true,box:true,treeButtonChildren:true},["widget.treeButtonChildren"],0,[LIME.view.markingmenu.treebutton,"Children"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Widgets",Ext.container.Container,{},0,["treeButtonWidgets"],["component","container","treeButtonWidgets","box"],{component:true,container:true,treeButtonWidgets:true,box:true},["widget.treeButtonWidgets"],0,[LIME.view.markingmenu.treebutton,"Widgets"],0));(Ext.cmd.derive("LIME.view.markingmenu.menuwidgets.MenuWidget",Ext.form.Panel,{collapsible:true,frame:true,fieldDefaults:{msgTarget:"side",labelWidth:30},tools:[{type:"search",hidden:true,tooltip:"Try to recognize automatically"}],defaults:{anchor:"100%"},margin:"4 0 0 0",setContent:function(d,e){var b,a=this.query("textfield"),c=this.attributes,g;if(e){b=this.down("textfield"),g=e;this.setFieldValue(b,g)}else{Ext.each(a,function(i){var h=DocProperties.markedElements[d].htmlElement.getAttribute(i.name);if(h){this.setFieldValue(i,h)}},this);if(c){Ext.Object.each(c,function(h,k){var p,r;if(k.tpl&&k.separator){var m=new Ext.Template(k.tpl),o=m.html.match(m.re);p=DocProperties.markedElements[d].htmlElement.getAttribute(k.name);if(Ext.String.startsWith(p,k.separator)){p=p.substring(k.separator.length)}if(p){r=p.split(k.separator);for(var l=0;l',init:function(){this.callParent(arguments);this.cmp.tpl=new Ext.Template(['"]);this.setSrc(this.src)},setSrc:function(a){if(a&&(!this.url||a!=this.url)){this.cmp.update({url:a});this.url=a}},getIframe:function(){return this.cmp.body.down("iframe",true)},getIfameDoc:function(){var a=this.getIframe(),b;if(a){b=a.contentDocument||a.contentWindow.document}return b},setLoading:function(){var a=this.getIframe();if(a.doc){a.doc.body.innerHTML=this.loadingHtml}},addCssLink:function(b){var d=this,c=this.getIframe(),a,e=function(){var g=d.getIfameDoc();a=g.createElement("link");a.href=b;a.rel="stylesheet";a.type="text/css";g.head.appendChild(a)};if(c){c.onload=e;e()}}},0,0,0,0,["plugin.iframe"],0,[Ext.ux,"Iframe"],0));(Ext.cmd.derive("LIME.controller.CustomizationManager",Ext.app.Controller,{views:["MarkingMenu","Ext.ux.Iframe"],customCallbacks:{},customMenuItems:{},refs:[{selector:"appViewport",ref:"appViewport"}],onLanguageLoaded:function(){var a=this,b=Ext.Array.merge(Config.customDefaultControllers,Config.customControllers);a.customCallbacks={};if(b){Ext.each(b,function(c){var d=a.getController(c);Ext.callback(d.onInitPlugin,d)})}},callCallback:function(d,a){var c=this,b=c.fullNameToName(d.self.getName());if(c.customCallbacks[b]&&c.customCallbacks[b][a]){c.customCallbacks[b][a](d)}},fullNameToName:function(a){var b=a.lastIndexOf(".");return a.substring(b+1)},beforeCreation:function(c,g,e){var d=this,b=Ext.clone(g),a=Config.getCustomViews(c);Ext.each(a,function(h){if(Ext.isFunction(h.beforeCreation)){try{b=Ext.bind(h.beforeCreation,h)(b)}catch(i){Ext.log({level:"warn"},"Exception beforeCreation plugin of "+c,i)}}});b=b||g;b.cls=g.cls;if(Ext.isFunction(e)){e(b)}},addMenuItem:function(a,d,b){var g=this,c=g.getController("MainToolbar"),e;e=c.addMenuItem(d,b);if(e){g.customMenuItems[a.id]=g.customMenuItems[a.id]||[];g.customMenuItems[a.id].push(e)}},removeCustomMenuItems:function(a){var b=this;Ext.each(b.customMenuItems[a.id],function(c){c.parentMenu.remove(c)});b.customMenuItems[a.id]=[]},init:function(){var a=this;a.application.on(Statics.eventsNames.languageLoaded,a.onLanguageLoaded,a);a.application.on(Statics.eventsNames.beforeCreation,a.beforeCreation,a);a.application.on("addMenuItem",a.addMenuItem,a);Config.beforeSetLanguage=function(b,c){if(Config.customControllers){Ext.each(Config.customControllers,function(d){var e=a.getController(d);a.removeCustomMenuItems(e);Ext.callback(e.onRemoveController,e)})}Ext.callback(c)};a.control({markingMenu:{afterrender:function(b){a.callCallback(b,"afterCreation")}}})}},0,0,0,0,0,0,[LIME.controller,"CustomizationManager"],0));(Ext.cmd.derive("Ext.ux.upload.Basic",Ext.util.Observable,{autoStart:true,autoRemoveUploaded:true,statusQueuedText:"Ready to upload",statusUploadingText:"Uploading ({0}%)",statusFailedText:"Error",statusDoneText:"Complete",statusInvalidSizeText:"File too large",statusInvalidExtensionText:"Invalid file type",configs:{uploader:{runtimes:"",url:"",browse_button:null,container:null,max_file_size:"128mb",resize:"",flash_swf_url:"",silverlight_xap_url:"",filters:[],chunk_size:null,unique_names:true,multipart:true,multipart_params:{},multi_selection:true,drop_element:null,required_features:null}},constructor:function(a,b){var c=this;c.owner=a;c.success=[];c.failed=[];Ext.apply(c,b.listeners);c.uploaderConfig=Ext.apply(c,b.uploader,c.configs.uploader);c.addEvents("beforestart","uploadready","uploadstarted","uploadcomplete","uploaderror","filesadded","beforeupload","fileuploaded","updateprogress","uploadprogress","storeempty");Ext.define("Ext.ux.upload.Model",{extend:"Ext.data.Model",fields:["id","loaded","name","size","percent","status","msg"]});c.store=Ext.create("Ext.data.JsonStore",{model:"Ext.ux.upload.Model",listeners:{load:c.onStoreLoad,remove:c.onStoreRemove,update:c.onStoreUpdate,scope:c}});c.actions={textStatus:Ext.create("Ext.Action",{text:"uploader not initialized"}),add:Ext.create("Ext.Action",{text:b.addButtonText||"Add files",iconCls:b.addButtonCls,disabled:false}),start:Ext.create("Ext.Action",{text:b.uploadButtonText||"Start",disabled:true,iconCls:b.uploadButtonCls,handler:c.start,scope:c}),cancel:Ext.create("Ext.Action",{text:b.cancelButtonText||"Cancel",disabled:true,iconCls:b.cancelButtonCls,handler:c.cancel,scope:c}),removeUploaded:Ext.create("Ext.Action",{text:b.deleteUploadedText||"Remove uploaded",disabled:true,handler:c.removeUploaded,scope:c}),removeAll:Ext.create("Ext.Action",{text:b.deleteAllText||"Remove all",disabled:true,handler:c.removeAll,scope:c})};c.callParent()},initialize:function(){var a=this;if(!a.initialized){a.initialized=true;a.initializeUploader()}},destroy:function(){this.clearListeners()},setUploadPath:function(a){this.uploadpath=a},removeAll:function(){this.store.data.each(function(a){this.removeFile(a.get("id"))},this)},removeUploaded:function(){this.store.each(function(a){if(a&&a.get("status")==5){this.removeFile(a.get("id"))}},this)},removeFile:function(c){var b=this,a=b.uploader.getFile(c);if(a){b.uploader.removeFile(a)}else{b.store.remove(b.store.getById(c))}},cancel:function(){var a=this;a.uploader.stop();a.actions.start.setDisabled(a.store.data.length==0)},start:function(){var a=this;a.fireEvent("beforestart",a);if(a.multipart_params){a.uploader.settings.multipart_params=a.multipart_params}a.uploader.start()},initializeUploader:function(){var me=this;if(!me.uploaderConfig.runtimes){var runtimes=["html5"];me.uploaderConfig.flash_swf_url&&runtimes.push("flash");me.uploaderConfig.silverlight_xap_url&&runtimes.push("silverlight");runtimes.push("html4");me.uploaderConfig.runtimes=runtimes.join(",")}me.uploader=Ext.create("plupload.Uploader",me.uploaderConfig);Ext.each(["Init","ChunkUploaded","FilesAdded","FilesRemoved","FileUploaded","PostInit","QueueChanged","Refresh","StateChanged","BeforeUpload","UploadFile","UploadProgress","Error"],function(v){me.uploader.bind(v,eval("me._"+v),me)},me);me.uploader.init()},updateProgress:function(){var g=this,k=g.uploader.total,b=Ext.util.Format.fileSize(k.bytesPerSec),h=g.store.data.length,c=g.failed.length,i=g.success.length,e=c+i,a=h-i-c,d=k.percent;g.fireEvent("updateprogress",g,h,d,e,i,c,a,b)},updateStore:function(a){var b=this,c=b.store.getById(a.id);if(!a.msg){a.msg=""}if(c){c.data=a;c.commit()}else{b.store.loadData([a],true)}},onStoreLoad:function(c,a,b){this.updateProgress()},onStoreRemove:function(c,a,b){var d=this;if(!c.data.length){d.actions.start.setDisabled(true);d.actions.removeUploaded.setDisabled(true);d.actions.removeAll.setDisabled(true);d.uploader.total.reset();d.fireEvent("storeempty",d)}var e=a.get("id");Ext.each(d.success,function(g){if(g&&g.id==e){Ext.Array.remove(d.success,g)}},d);Ext.each(d.failed,function(g){if(g&&g.id==e){Ext.Array.remove(d.failed,g)}},d);d.updateProgress()},onStoreUpdate:function(c,a,b){a.data=this.fileMsg(a.data);this.updateProgress()},fileMsg:function(a){var b=this;if(a.status&&a.server_error!=1){switch(a.status){case 1:a.msg=b.statusQueuedText;break;case 2:a.msg=Ext.String.format(b.statusUploadingText,a.percent);break;case 4:a.msg=a.msg||b.statusFailedText;break;case 5:a.msg=b.statusDoneText;break}}return a},_Init:function(b,a){this.runtime=a.runtime;this.owner.enable(true);this.fireEvent("uploadready",this)},_BeforeUpload:function(b,a){this.fireEvent("beforeupload",this,b,a)},_ChunkUploaded:function(){},_FilesAdded:function(c,b){var a=this;if(a.uploaderConfig.multi_selection!=true){if(a.store.data.length==1){return false}b=[b[0]];c.files=[b[0]]}a.actions.removeUploaded.setDisabled(false);a.actions.removeAll.setDisabled(false);a.actions.start.setDisabled(c.state==2);Ext.each(b,function(d){a.updateStore(d)},a);if(a.fireEvent("filesadded",a,b)!==false){if(a.autoStart&&c.state!=2){Ext.defer(function(){a.start()},300)}}},_FilesRemoved:function(b,a){Ext.each(a,function(c){this.store.remove(this.store.getById(c.id))},this)},_FileUploaded:function(e,c,a){var d=this,b=Ext.JSON.decode(a.response);if(b.success==true){c.server_error=0;c.content=b.html;c.response=b;d.success.push(c);d.fireEvent("fileuploaded",d,c,b)}else{if(b.message){c.msg=''+b.message+""}c.server_error=1;c.content=b.html;c.response=b;d.failed.push(c);d.fireEvent("uploaderror",d,Ext.apply(a,{file:c}))}this.updateStore(c)},_PostInit:function(a){},_QueueChanged:function(a){},_Refresh:function(a){Ext.each(a.files,function(b){this.updateStore(b)},this)},_StateChanged:function(a){if(a.state==2){this.fireEvent("uploadstarted",this);this.actions.cancel.setDisabled(false);this.actions.start.setDisabled(true)}else{this.fireEvent("uploadcomplete",this,this.success,this.failed);if(this.autoRemoveUploaded){this.removeUploaded()}this.actions.cancel.setDisabled(true);this.actions.start.setDisabled(this.store.data.length==0)}},_UploadFile:function(b,a){},_UploadProgress:function(g,c){var e=this,a=c.name,b=c.size,d=c.percent;e.fireEvent("uploadprogress",e,c,a,b,d);if(c.server_error){c.status=4}e.updateStore(c)},_Error:function(b,a){if(a.file){a.file.status=4;if(a.code==-600){a.file.msg=Ext.String.format('{0}',this.statusInvalidSizeText)}else{if(a.code==-700){a.file.msg=Ext.String.format('{0}',this.statusInvalidExtensionText)}else{a.file.msg=Ext.String.format('{2} ({0}: {1})',a.code,a.details,a.message)}}this.failed.push(a.file);this.updateStore(a.file)}this.fireEvent("uploaderror",this,a)}},1,0,0,0,0,0,[Ext.ux.upload,"Basic"],0));(Ext.cmd.derive("Ext.ux.upload.Button",Ext.button.Button,{disabled:true,constructor:function(a){var b=this;a=a||{};Ext.applyIf(a.uploader,{browse_button:a.id||Ext.id(b)});b.callParent([a])},initComponent:function(){var a=this,b;a.callParent();a.uploader=a.createUploader();if(a.uploader.drop_element&&(b=Ext.getCmp(a.uploader.drop_element))){b.addListener("afterRender",function(){a.uploader.initialize()},{single:true,scope:a})}else{a.listeners={afterRender:{fn:function(){a.uploader.initialize()},single:true,scope:a}}}a.relayEvents(a.uploader,["beforestart","uploadready","uploadstarted","uploadcomplete","uploaderror","filesadded","beforeupload","fileuploaded","updateprogress","uploadprogress","storeempty"])},createUploader:function(){return Ext.create("Ext.ux.upload.Basic",this,Ext.applyIf({listeners:{}},this.initialConfig))}},1,["uploadbutton"],["uploadbutton","button","component","box"],{uploadbutton:true,button:true,component:true,box:true},["widget.uploadbutton"],0,[Ext.ux.upload,"Button"],0));(Ext.cmd.derive("Ext.ux.upload.plugin.Uploader",Ext.AbstractPlugin,{constructor:function(a){var b=this;Ext.apply(b,a);b.callParent(arguments)},init:function(b){var a=this,c=b.uploader;b.on({filesadded:{fn:function(e,d){e.start()},scope:a},updateprogress:{fn:function(h,l,i,k,m,g,d,e){var n=Ext.String.format("Upload {0}% ({1} von {2})",i,k,l)},scope:a},uploadcomplete:{fn:function(g,h,d){var e;if(h.length!=0){e=h[0];if(b.mainUploader&&b.finishEvent){b.mainUploader.fireEvent(b.finishEvent,e.content,e)}}},scope:a}})}},1,0,0,0,["plugin.ux.upload.uploader"],0,[Ext.ux.upload.plugin,"Uploader"],0));(Ext.cmd.derive("LIME.view.modal.Uploader",Ext.window.Window,{layout:{type:"vbox",align:"center"},border:false,modal:true,icon:"resources/images/icons/import-icon.png",uploadUrl:null,uploadParams:{},setViewProperties:function(e,h){var e=e||{},c=e.fieldLabel||this.fieldLabel||"File",d=e.buttonSelectLabel||this.buttonSelectLabel||"Select File...",g=e.buttonSubmitLabel||this.buttonSubmitLabel||"Upload",a=e.dragDropLabel||this.dragDropLabel||"Drop your file here",i=this,b;this.uploadUrl=e.uploadUrl||this.uploadUrl;this.uploadParams=e.uploadParams||this.uploadParams;b=[{xtype:"uploadbutton",text:g,height:50,margin:"10px 0 10px 0",plugins:[{ptype:"ux.upload.uploader",mainUploader:i}],mainUploader:i,finishEvent:"uploadEnd",errorEvent:"uploadError",uploader:{url:this.uploadUrl,multipart_params:this.uploadParams,autoStart:true,max_file_size:"2020mb",drop_element:"dropArea",statusQueuedText:"Ready to upload",statusUploadingText:"Uploading ({0}%)",statusFailedText:'Error',statusDoneText:'Complete',statusInvalidSizeText:"File too large",statusInvalidExtensionText:"Invalid file type"}},{xtype:"panel",id:"dropArea",minHeight:200,frame:true,style:{border:"2px dashed #99BCE8",marginTop:"5px",marginLeft:"0px",marginRight:"0px"},layout:{type:"hbox",align:"middle",pack:"center"},items:[{xtype:"panel",frame:true,style:{border:"0px"},html:a}]}];this.removeAll();this.add(b);if(h){this.update()}},listeners:{beforerender:function(){this.setViewProperties();if(Ext.isIE9){this.down("#dropArea").hide()}},afterrender:function(b){var a=b.down("uploadbutton");Ext.defer(function(){a.uploader.uploader.refresh()},300,this)}}},0,["uploader"],["panel","window","component","container","uploader","box"],{panel:true,window:true,component:true,container:true,uploader:true,box:true},["widget.uploader"],0,[LIME.view.modal,"Uploader"],0));(Ext.cmd.derive("LIME.controller.DocumentUploader",Ext.app.Controller,{views:["modal.Uploader"],refs:[{ref:"uploader",selector:"uploader"}],fileDispatcher:function(c,e,g,d){switch(c.type){case"text/plain":case"text/html":var b=new FileReader(),a=this;b.onload=function(h){var i=h.target.result;Ext.callback(g,d,[i,e])};b.readAsText(c);break;default:Ext.Msg.alert(Locale.strings.error,Locale.strings.typeNotSupported);break}},uploadCallback:function(c,b,d,a){if(Ext.isString(c)){Ext.callback(d,a,[c,b])}else{this.fileDispatcher(c,b,d,a)}},init:function(){var a=this.application;this.control({uploader:{uploadEnd:function(c,b){var e=this,d=this.getUploader();if(c){e.uploadCallback(c,b,d.uploadCallback,d.callbackScope);d.close()}},close:function(b){b.down("uploadbutton").uploader.uploader.destroy()}},"uploader uploadbutton":{beforeupload:function(){var b=this.getUploader();a.fireEvent(Statics.eventsNames.progressStart,null,{value:0.5,text:Locale.strings.progressBar.loadingDocument})},uploadcomplete:function(){a.fireEvent(Statics.eventsNames.progressEnd)},uploaderror:function(c,b){var d=b.file.content;if(!d||(d!==undefined&&d.length==0)){d=Locale.strings.uploadError}Ext.Msg.alert(Locale.strings.error,d)}}})}},0,0,0,0,0,0,[LIME.controller,"DocumentUploader"],0));(Ext.cmd.derive("LIME.view.modal.Registration",Ext.window.Window,{layout:"auto",draggable:false,resizable:false,border:false,width:300,registrationFailed:function(){var b=this,d=b.getPosition()[0],c=20,a=this.down("form").getForm();b.animate({duration:500,keyframes:{25:{left:d+c},75:{left:d-c},100:{left:d}}})},checkPasswords:function(){var c=this.down("form").getForm(),a=c.findField("password"),d=c.findField("passwordConfirmation"),b=Locale.strings.passwordsDontMatch;if(a.value!=d.value){a.markInvalid(b);d.markInvalid(b);this.registrationFailed();return false}else{return true}},initComponent:function(){this.title=Locale.strings.userRegistration;this.items=[{xtype:"toolbar",items:["->",{xtype:"languageSelectionBox"}]},{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{emptyText:"Full name",name:"name",allowBlank:false},{emptyText:"Email",name:"email",regex:/^([\w\-\'\-]+)(\.[\w-\'\-]+)*@([\w\-]+\.){1,5}([A-Za-z]){2,4}$/,allowBlank:false},{emptyText:"Password",inputType:"password",name:"password",allowBlank:false},{emptyText:"Password (repeat)",inputType:"password",name:"passwordConfirmation",allowBlank:false}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"button",minWidth:100,text:Locale.strings.register}]}]}];this.callParent(arguments)}},0,["registration"],["panel","window","component","container","box","registration"],{panel:true,window:true,component:true,container:true,box:true,registration:true},["widget.registration"],0,[LIME.view.modal,"Registration"],0));(Ext.cmd.derive("LIME.view.modal.Login",Ext.window.Window,{layout:"auto",closable:false,draggable:false,resizable:false,border:false,bodyStyle:{"background-color":"#C9CEDB"},width:300,getData:function(){var a=this.down("form").getValues();return a},resetData:function(){var a=this.down("form").getForm();a.reset()},loginFailed:function(){var b=this,d=b.getPosition()[0],c=20,a=this.down("form").getForm();b.resetData();a.findField("username").markInvalid(Locale.strings.fieldIsInvalid);a.findField("password").markInvalid(Locale.strings.fieldIsInvalid);b.animate({duration:500,keyframes:{25:{left:d+c},75:{left:d-c},100:{left:d}}})},setData:function(a){var b=this.down("form").getForm();b.setValues(a)},initComponent:function(){this.title=Locale.strings.login;this.items=[{xtype:"toolbar",items:["->",{xtype:"languageSelectionBox"}]},{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{xtype:"checkbox",boxLabel:Locale.strings.guestLogin},{emptyText:"Email",name:"username",allowBlank:false},{emptyText:"Password",inputType:"password",name:"password",allowBlank:false}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"container",layout:"vbox",items:[{xtype:"button",minWidth:100,text:Locale.strings.login},{xtype:"box",cls:"registration",style:{marginTop:"10px"},autoEl:{tag:"a",href:"#",html:Locale.strings.register}},{xtype:"box",cls:"forgotPassword",style:{marginTop:"10px"},autoEl:{tag:"a",href:"#",html:Locale.strings.forgotPassword}}]},"->"]}]}];this.callParent(arguments)}},0,["login"],["panel","window","component","container","login","box"],{panel:true,window:true,component:true,container:true,login:true,box:true},["widget.login"],0,[LIME.view.modal,"Login"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LogoutButton",Ext.button.Button,{icon:"resources/images/icons/logout-icon-small.png",initComponent:function(){this.text=Locale.strings.userLogout;this.callParent(arguments)}},0,["logoutButton"],["button","component","box","logoutButton"],{button:true,component:true,box:true,logoutButton:true},["widget.logoutButton"],0,[LIME.view.maintoolbar,"LogoutButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.UserButton",Ext.button.Button,{icon:"resources/images/icons/user_small.png",initComponent:function(){this.tpl=Locale.strings.userWelcome+" {name}";this.menu={xtype:"menu",plain:true,items:{xtype:"buttongroup",title:Locale.strings.userOptions,columns:2,defaults:{xtype:"button",scale:"large",iconAlign:"left"},items:[{xtype:"image",rowspan:2,src:"resources/images/icons/user_medium.png",width:70,height:48,autoEl:"div"},{text:Locale.strings.userSettings,width:100,scale:"medium",icon:"resources/images/icons/settings.png"},{xtype:"logoutButton",width:100,scale:"medium"}]},listeners:{mouseleave:function(d,c,a){var b=d.up("userButton");d.hide();b.removeClsWithUI(b.focusCls)}}},this.callParent(arguments)}},0,["userButton"],["userButton","button","component","box"],{userButton:true,button:true,component:true,box:true},["widget.userButton"],0,[LIME.view.maintoolbar,"UserButton"],0));(Ext.cmd.derive("LIME.controller.LoginManager",Ext.app.Controller,{views:["modal.Login","modal.Registration","maintoolbar.UserButton"],refs:[{selector:"viewport",ref:"viewport"},{selector:"login",ref:"login"},{selector:"userButton",ref:"userButton"}],userInfo:["username","password","userCollection","editorLanguage"],startEditor:function(){var a=this.getViewport();this.cleanViewport();this.addViewportItems(a.editorItems)},showLogin:function(){var a=this.getViewport();this.cleanViewport();this.addViewportItems(a.loginItems)},cleanViewport:function(){var a=this.getViewport();a.removeAll(true)},addViewportItems:function(b){var a=this.getViewport();b=Ext.Array.merge(b,a.commonItems);a.add(b)},isLoggedIn:function(){for(var a=0;a'}return c}}],width:195,displayField:"name",initComponent:function(){var a=this;Ext.apply(a,{store:a.buildStore(a)});a.callParent(arguments)},buildStore:function(a){return Ext.create("LIME.store.OpenFile")}},0,["openFileListView"],["panel","component","tablepanel","container","grid","box","openFileListView","gridpanel"],{panel:true,component:true,tablepanel:true,container:true,grid:true,box:true,openFileListView:true,gridpanel:true},["widget.openFileListView"],0,[LIME.view.modal.newOpenfile,"ListView"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.ListFilesPanel",Ext.panel.Panel,{layout:{type:"hbox",align:"stretch"},autoScroll:true,border:false,margin:2,items:[{xtype:"openFileListView",path:"root"},{xtype:"openFileListView"},{xtype:"openFileListView"}]},0,["listFilesPanel"],["panel","component","container","box","listFilesPanel"],{panel:true,component:true,container:true,box:true,listFilesPanel:true},["widget.listFilesPanel"],0,[LIME.view.modal.newOpenfile,"ListFilesPanel"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.toolbar.CancelButton",Ext.Button,{icon:"resources/images/icons/cancel.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthCancelButtonLabel;this.tooltip=Locale.strings.openFileWindowSouthCancelButtonTooltip;this.callParent(arguments)}},0,["newOpenfileToolbarCancelButton"],["button","component","newOpenfileToolbarCancelButton","box"],{button:true,component:true,newOpenfileToolbarCancelButton:true,box:true},["widget.newOpenfileToolbarCancelButton"],0,[LIME.view.modal.newOpenfile.toolbar,"CancelButton"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.toolbar.OpenButton",Ext.Button,{icon:"resources/images/icons/accept.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthOpenButtonLabel;this.tooltip=Locale.strings.openFileWindowSouthOpenButtonTooltip;this.callParent(arguments)}},0,["newOpenfileToolbarOpenButton"],["button","component","box","newOpenfileToolbarOpenButton"],{button:true,component:true,box:true,newOpenfileToolbarOpenButton:true},["widget.newOpenfileToolbarOpenButton"],0,[LIME.view.modal.newOpenfile.toolbar,"OpenButton"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.Toolbar",Ext.Toolbar,{items:["->",{xtype:"tbspacer"},{xtype:"newOpenfileToolbarCancelButton"},{xtype:"tbseparator"},{xtype:"tbspacer"},{xtype:"newOpenfileToolbarOpenButton"}]},0,["newOpenfileToolbar"],["toolbar","component","container","box","newOpenfileToolbar"],{toolbar:true,component:true,container:true,box:true,newOpenfileToolbar:true},["widget.newOpenfileToolbar"],0,[LIME.view.modal.newOpenfile,"Toolbar"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.Main",Ext.window.Window,{fullTitle:new Ext.Template("{title} {url}"),closable:true,modal:true,width:601,minWidth:400,height:450,layout:"border",items:[{xtype:"listFilesPanel",region:"center"},{xtype:"newOpenfileToolbar",region:"south",margin:2}],initComponent:function(){this.title=Locale.strings.openFileWindowMainTitle;this.callParent(arguments)}},0,["newOpenfileMain"],["panel","window","component","container","box","newOpenfileMain"],{panel:true,window:true,component:true,container:true,box:true,newOpenfileMain:true},["widget.newOpenfileMain"],0,[LIME.view.modal.newOpenfile,"Main"],0));(Ext.cmd.derive("LIME.view.DocumentTypeSelector",Ext.form.field.ComboBox,{name:"docType",displayField:"name",queryMode:"local",typeAhead:true,store:"DocumentTypes",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.type;this.callParent(arguments)}},0,["docTypeSelector"],["field","trigger","combobox","docTypeSelector","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,docTypeSelector:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.docTypeSelector"],0,[LIME.view,"DocumentTypeSelector"],0));(Ext.cmd.derive("LIME.view.DocumentLangSelector",Ext.form.field.ComboBox,{name:"docLang",valueField:"code",displayField:"name",queryMode:"local",typeAhead:true,store:"DocumentLanguages",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.language;this.callParent(arguments)}},0,["docLangSelector"],["field","trigger","combobox","textfield","pickerfield","component","docLangSelector","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,docLangSelector:true,combo:true,box:true,triggerfield:true},["widget.docLangSelector"],0,[LIME.view,"DocumentLangSelector"],0));(Ext.cmd.derive("LIME.view.generic.MetadataForm",Ext.form.Panel,{type:null,frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},toRemove:{work:["docLang","docName"],expression:["nationality","docType","number","docName"],manifestation:["nationality","docType","number","docLang"]},constructor:function(a){this.initConfig(a);this.items=[{xtype:"nationalitySelector",name:"nationality"},{xtype:"docTypeSelector",name:"docType"},{emptyText:Locale.strings.date,name:"date",xtype:"datefield",allowBlank:false},{emptyText:Locale.strings.number,name:"number",xtype:"textfield",allowBlank:false},{emptyText:Locale.strings.name,name:"docName",xtype:"textfield",allowBlank:false},{xtype:"docLangSelector",name:"docLang"}],this.callParent(arguments)},defaultType:"textfield",listeners:{afterrender:function(e){var d=e.type,c;switch(d){case"work":c=e.toRemove.work;break;case"expression":c=e.toRemove.expression;break;case"manifestation":c=e.toRemove.manifestation;break}for(var b=0;b",{xtype:"button",minWidth:100,text:Locale.strings.saveDocumentButtonLabel}]}],this.callParent(arguments)}},1,["saveAs"],["panel","saveAs","window","component","container","box"],{panel:true,saveAs:true,window:true,component:true,container:true,box:true},["widget.saveAs"],0,[LIME.view.modal,"SaveAs"],0));(Ext.cmd.derive("LIME.view.DocumentMarkingLanguageSelector",Ext.form.field.ComboBox,{name:"docMarkingLanguage",displayField:"name",queryMode:"local",typeAhead:true,store:"MarkupLanguages",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.markupLanguage;this.callParent(arguments)}},0,["docMarkingLanguageSelector"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","docMarkingLanguageSelector","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,docMarkingLanguageSelector:true,triggerfield:true},["widget.docMarkingLanguageSelector"],0,[LIME.view,"DocumentMarkingLanguageSelector"],0));(Ext.cmd.derive("LIME.view.LocaleSelector",Ext.form.field.ComboBox,{name:"docLocale",emptyText:"Locale",valueField:"name",displayField:"name",queryMode:"local",store:"Locales",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false},0,["docLocaleSelector"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","docLocaleSelector","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,docLocaleSelector:true,triggerfield:true},["widget.docLocaleSelector"],0,[LIME.view,"LocaleSelector"],0));(Ext.cmd.derive("LIME.view.modal.NewDocument",Ext.window.Window,{layout:"auto",draggable:true,border:false,modal:true,width:200,getData:function(){var a=this.down("form").getForm();if(!a.isValid()){return null}return a.getValues(false,false,false,true)},initComponent:function(){this.title=Locale.strings.newDocument,this.items=[{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{xtype:"docMarkingLanguageSelector",cls:"syncType"},{xtype:"docTypeSelector",cls:"syncLocale",hidden:true},{xtype:"docLocaleSelector",hidden:true},{xtype:"docLangSelector"}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"button",minWidth:100,text:Locale.strings.ok}]}]}];this.callParent(arguments)}},0,["newDocument"],["newDocument","panel","window","component","container","box"],{newDocument:true,panel:true,window:true,component:true,container:true,box:true},["widget.newDocument"],0,[LIME.view.modal,"NewDocument"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.ListView",Ext.grid.Panel,{selType:"cellmodel",width:195,displayField:"name",plugins:[{ptype:"cellediting",pluginId:"cellediting",listeners:{beforeedit:function(b,c,a){return(c.record.data.cls==b.newFieldRecordId)},edit:function(b,c){var a=c.record.data.name;if(Ext.isDate(a)){a=Ext.Date.format(a,"Y-m-d");c.record.set("name",a);c.value=a}b.getCmp().fireEvent("recordChanged",b.getCmp(),c.record)}}}],initComponent:function(){var a=this;Ext.apply(a,{store:a.buildStore(a)});a.columns=[{text:Locale.strings.folderLabel,dataIndex:"name",flex:1,renderer:function(d,c,b){if(!b.data.leaf){d='
'+d+'
'}return d},editor:{xtype:"textfield",selectOnFocus:true,allowBlank:false}}],a.callParent(arguments)},buildStore:function(a){return Ext.create("LIME.store.OpenFile")}},0,["saveFileListView"],["panel","saveFileListView","component","tablepanel","container","grid","box","gridpanel"],{panel:true,saveFileListView:true,component:true,tablepanel:true,container:true,grid:true,box:true,gridpanel:true},["widget.saveFileListView"],0,[LIME.view.modal.newSavefile,"ListView"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.ContextualButton",Ext.Button,{fullText:new Ext.Template("{operation} {what}"),fileIcon:"resources/images/icons/page_white_add.png",folderIcon:"resources/images/icons/folder_add.png",initComponent:function(){this.text=Locale.strings.newLabel;this.callParent(arguments)}},0,["newSavefileToolbarContextualButton"],["button","component","box","newSavefileToolbarContextualButton"],{button:true,component:true,box:true,newSavefileToolbarContextualButton:true},["widget.newSavefileToolbarContextualButton"],0,[LIME.view.modal.newSavefile.toolbar,"ContextualButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.CancelButton",Ext.Button,{icon:"resources/images/icons/cancel.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthCancelButtonLabel;this.callParent(arguments)}},0,["newSavefileToolbarCancelButton"],["newSavefileToolbarCancelButton","button","component","box"],{newSavefileToolbarCancelButton:true,button:true,component:true,box:true},["widget.newSavefileToolbarCancelButton"],0,[LIME.view.modal.newSavefile.toolbar,"CancelButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.SaveButton",Ext.Button,{icon:"resources/images/icons/accept.png",initComponent:function(){this.text=Locale.strings.saveDocumentButtonLabel;this.tooltip=Locale.strings.saveDocumentButtonTooltip;this.callParent(arguments)}},0,["newSavefileToolbarOpenButton"],["newSavefileToolbarOpenButton","button","component","box"],{newSavefileToolbarOpenButton:true,button:true,component:true,box:true},["widget.newSavefileToolbarOpenButton"],0,[LIME.view.modal.newSavefile.toolbar,"SaveButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.Toolbar",Ext.Toolbar,{items:[{xtype:"newSavefileToolbarContextualButton"},"->",{xtype:"tbspacer"},{xtype:"newSavefileToolbarCancelButton"},{xtype:"tbseparator"},{xtype:"tbspacer"},{xtype:"newSavefileToolbarOpenButton"}]},0,["newSavefileToolbar"],["toolbar","component","container","newSavefileToolbar","box"],{toolbar:true,component:true,container:true,newSavefileToolbar:true,box:true},["widget.newSavefileToolbar"],0,[LIME.view.modal.newSavefile,"Toolbar"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.Main",Ext.window.Window,{fullTitle:new Ext.Template("{title} {url}"),closable:true,modal:false,width:601,minWidth:400,height:450,layout:"border",items:[{xtype:"panel",layout:{type:"hbox",align:"stretch"},autoScroll:true,border:false,region:"center",margin:2,items:[{xtype:"saveFileListView",path:"root",filter:true},{xtype:"saveFileListView"},{xtype:"saveFileListView"}]},{xtype:"newSavefileToolbar",region:"south",margin:2}],initComponent:function(){this.title=Locale.strings.saveFileWindowMainTitle;this.callParent(arguments)}},0,["newSavefileMain"],["panel","window","component","container","box","newSavefileMain"],{panel:true,window:true,component:true,container:true,box:true,newSavefileMain:true},["widget.newSavefileMain"],0,[LIME.view.modal.newSavefile,"Main"],0));(Ext.cmd.derive("LIME.view.maintoolbar.OpenDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/folder_page.png",initComponent:function(){this.text=Locale.strings.openDocumentButtonLabel;this.tooltip=Locale.strings.openDocumentButtonTooltip;this.callParent(arguments)}},0,["openDocumentButton"],["component","menuitem","box","openDocumentButton"],{component:true,menuitem:true,box:true,openDocumentButton:true},["widget.openDocumentButton"],0,[LIME.view.maintoolbar,"OpenDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.NewDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/page_white_text.png",initComponent:function(){this.text=Locale.strings.newDocument;this.tooltip=Locale.strings.newDocumentTip;this.callParent(arguments)}},0,["newDocumentButton"],["component","menuitem","box","newDocumentButton"],{component:true,menuitem:true,box:true,newDocumentButton:true},["widget.newDocumentButton"],0,[LIME.view.maintoolbar,"NewDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveAsMenu",Ext.menu.Item,{icon:"resources/images/icons/script_save.png",initComponent:function(){this.text=Locale.strings.saveAsMenuLabel;this.tooltip=Locale.strings.saveAsMenuTooltip;this.menu={xtype:"menu",plain:true,items:[{xtype:"menuitem",metaType:"newManifestation",text:Locale.strings.newManifestation},{xtype:"menuseparator"},{xtype:"menuitem",metaType:"newWork",text:Locale.strings.newWork},{xtype:"menuitem",metaType:"newExpression",text:Locale.strings.newExpression}]},this.callParent(arguments)}},0,["saveAsMenu"],["saveAsMenu","component","menuitem","box"],{saveAsMenu:true,component:true,menuitem:true,box:true},["widget.saveAsMenu"],0,[LIME.view.maintoolbar,"SaveAsMenu"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/page_save.png",initComponent:function(){this.text=Locale.strings.saveDocumentButtonLabel;this.tooltip=Locale.strings.saveDocumentButtonTooltip;this.callParent(arguments)}},0,["saveDocumentButton"],["saveDocumentButton","component","menuitem","box"],{saveDocumentButton:true,component:true,menuitem:true,box:true},["widget.saveDocumentButton"],0,[LIME.view.maintoolbar,"SaveDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveAsDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/script_save.png",initComponent:function(){this.text=Locale.strings.saveAsMenuLabel;this.tooltip=Locale.strings.saveAsMenuTooltip;this.callParent(arguments)}},0,["saveAsDocumentButton"],["component","menuitem","box","saveAsDocumentButton"],{component:true,menuitem:true,box:true,saveAsDocumentButton:true},["widget.saveAsDocumentButton"],0,[LIME.view.maintoolbar,"SaveAsDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.FileMenuButton",Ext.Button,{initComponent:function(){this.text=Locale.strings.fileMenuButton,this.menu={xtype:"menu",plain:true,items:[{xtype:"newDocumentButton"},{xtype:"openDocumentButton"},"-",{xtype:"saveDocumentButton"},{xtype:"saveAsDocumentButton"}]},this.callParent(arguments)}},0,["fileMenuButton"],["button","component","box","fileMenuButton"],{button:true,component:true,box:true,fileMenuButton:true},["widget.fileMenuButton"],0,[LIME.view.maintoolbar,"FileMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.DocumentMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true},initComponent:function(){this.text=Locale.strings.documentMenuButton;this.callParent(arguments)}},0,["documentMenuButton"],["button","component","documentMenuButton","box"],{button:true,component:true,documentMenuButton:true,box:true},["widget.documentMenuButton"],0,[LIME.view.maintoolbar,"DocumentMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.EditMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true},initComponent:function(){this.text=Locale.strings.editMenuButton;this.callParent(arguments)}},0,["editMenuButton"],["editMenuButton","button","component","box"],{editMenuButton:true,button:true,component:true,box:true},["widget.editMenuButton"],0,[LIME.view.maintoolbar,"EditMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LanguageSelectionMenu",Ext.menu.Item,{store:"Languages",displayField:"language",queryMode:"local",initComponent:function(){this.text=Locale.strings.languageSelectionBoxEmptyText;this.callParent(arguments)}},0,["languageSelectionMenu"],["component","menuitem","box","languageSelectionMenu"],{component:true,menuitem:true,box:true,languageSelectionMenu:true},["widget.languageSelectionMenu"],0,[LIME.view.maintoolbar,"LanguageSelectionMenu"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LocaleSelector",Ext.menu.Item,{store:"Locales",displayField:"name",queryMode:"local",initComponent:function(){this.text=Locale.strings.localeEmptyText;this.callParent(arguments)}},0,["localeSelector"],["localeSelector","component","menuitem","box"],{localeSelector:true,component:true,menuitem:true,box:true},["widget.localeSelector"],0,[LIME.view.maintoolbar,"LocaleSelector"],0));(Ext.cmd.derive("LIME.view.maintoolbar.PreferencesMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true,items:[{xtype:"languageSelectionMenu"}]},initComponent:function(){this.text=Locale.strings.preferencesMenuButton;this.callParent(arguments)}},0,["preferencesMenuButton"],["button","component","box","preferencesMenuButton"],{button:true,component:true,box:true,preferencesMenuButton:true},["widget.preferencesMenuButton"],0,[LIME.view.maintoolbar,"PreferencesMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.WindowMenuButton",Ext.Button,{checkedIcon:"resources/images/icons/tick.png",setCheckIcon:function(b,c){var a=(c===undefined)?this.checkedIcon:Ext.BLANK_IMAGE_URL;if(b){this.newSetIcon(b,a)}},newSetIcon:function(d,b){b=b||"";var c=d,a=c.iconEl;c.icon=b;if(a){a.setStyle("background-image",b?"url("+b+")":"")}return c},initComponent:function(){this.text=Locale.strings.windowMenuButton;this.menu={xtype:"menu",plain:true,items:[{id:"showViews",text:Locale.strings.menuShowView}]},this.callParent(arguments)}},0,["windowMenuButton"],["button","component","box","windowMenuButton"],{button:true,component:true,box:true,windowMenuButton:true},["widget.windowMenuButton"],0,[LIME.view.maintoolbar,"WindowMenuButton"],0));(Ext.cmd.derive("LIME.view.MainToolbar",Ext.toolbar.Toolbar,{id:"mainToolbar",items:[{xtype:"image",src:"resources/images/icons/logo_lime_small.png",style:{padding:"0px !important"},margin:2,width:30},{xtype:"fileMenuButton"},{xtype:"editMenuButton"},{xtype:"documentMenuButton"},{xtype:"preferencesMenuButton"},{xtype:"windowMenuButton"},"->",{xtype:"userButton"}]},0,["mainToolbar"],["mainToolbar","toolbar","component","container","box"],{mainToolbar:true,toolbar:true,component:true,container:true,box:true},["widget.mainToolbar"],0,[LIME.view,"MainToolbar"],0));(Ext.cmd.derive("Ext.ux.TabCloseMenuImproved",Ext.ux.TabCloseMenu,{onClose:function(){if(this.item){this.item.close()}},onHideMenu:function(){var a=this;a.fireEvent("aftermenu",a.menu,a)},doClose:function(b){var a=[];this.tabPanel.items.each(function(c){if(c.closable){if(!b||c!=this.item){a.push(c)}}},this);Ext.each(a,function(c){c.close()},this)}},0,0,0,0,["plugin.tabclosemenuimproved"],0,[Ext.ux,"TabCloseMenuImproved"],0));(Ext.cmd.derive("Ext.ux.form.field.TinyMCEWindowManager",Ext.Base,{constructor:function(a){tinymce.WindowManager.call(this,a.editor)},alert:function(b,a,c){Ext.MessageBox.alert("",b,function(){if(!Ext.isEmpty(a)){a.call(this)}},c)},confirm:function(b,a,c){Ext.MessageBox.confirm("",b,function(d){if(!Ext.isEmpty(a)){a.call(this,d=="yes")}},c)},open:function(a,c){a=a||{};c=c||{};if(!a.type){this.bookmark=this.editor.selection.getBookmark("simple")}a.width=parseInt(a.width||320);a.height=parseInt(a.height||240)+(tinymce.isIE?8:0);a.min_width=parseInt(a.min_width||150);a.min_height=parseInt(a.min_height||100);a.max_width=parseInt(a.max_width||2000);a.max_height=parseInt(a.max_height||2000);a.movable=true;a.resizable=true;c.mce_width=a.width;c.mce_height=a.height;c.mce_inline=true;this.features=a;this.params=c;var b=Ext.create("Ext.window.Window",{title:a.name,width:a.width,height:a.height,minWidth:a.min_width,minHeight:a.min_height,resizable:true,maximizable:a.maximizable,minimizable:a.minimizable,modal:true,stateful:false,constrain:true,layout:"fit",items:[Ext.create("Ext.Component",{autoEl:{tag:"iframe",border:"0",frameborder:"0",src:a.url||a.file},style:"border-width: 0px;"})]});c.mce_window_id=b.getId();b.show(null,function(){if(this.editor.fullscreen_is_enabled){b.zIndexManager.setBase(200000)}if(a.left&&a.top){b.setPagePosition(a.left,a.top)}var d=b.getPosition();a.left=d[0];a.top=d[1];this.onOpen.dispatch(this,a,c)},this);b.toFront(true);return b},close:function(b){if(!b.tinyMCEPopup||!b.tinyMCEPopup.id){tinymce.WindowManager.prototype.close.call(this,b);return}var a=Ext.getCmp(b.tinyMCEPopup.id);if(a){this.onClose.dispatch(this);a.close()}},setTitle:function(c,b){if(!c.tinyMCEPopup||!c.tinyMCEPopup.id){tinymce.WindowManager.prototype.setTitle.call(this,c,b);return}var a=Ext.getCmp(c.tinyMCEPopup.id);if(a){a.setTitle(b)}},resizeBy:function(b,d,e){var a=Ext.getCmp(e);if(a){var c=a.getSize();a.setSize(c.width+b,c.height+d)}},focus:function(a){}},1,0,0,0,0,0,[Ext.ux.form.field,"TinyMCEWindowManager"],0));(Ext.cmd.derive("Ext.ux.form.field.TinyMCE",Ext.form.field.TextArea,{config:{height:170},cicciobello:1,hideBorder:false,inProgress:false,lastWidth:0,lastHeight:0,statics:{tinyMCEInitialized:false,globalSettings:{accessibility_focus:false,language:"en",mode:"exact",skin:"extjs",theme:"advanced",plugins:"autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",theme_advanced_buttons1:"newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",theme_advanced_buttons2:"cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",theme_advanced_buttons3:"tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",theme_advanced_buttons4:"insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_resize_horizontal:false,theme_advanced_resizing:true,width:"100%"},setGlobalSettings:function(a){Ext.apply(this.globalSettings,a)}},constructor:function(a){var b=this;a.height=(a.height&&a.height>=b.config.height)?a.height:b.config.height;Ext.applyIf(a.tinymceConfig,b.statics().globalSettings);b.addEvents({editorcreated:true});b.callParent([a])},initComponent:function(){var a=this;a.callParent(arguments);a.on("resize",function(d,c,b){if(!c||!b){return}a.lastWidth=c;a.lastHeight=(!a.editor)?a.inputEl.getHeight():b;if(!a.editor){a.initEditor()}else{a.setEditorSize(a.lastWidth,a.lastHeight)}},a)},initEditor:function(){var a=this;if(a.inProgress){return}a.inProgress=true;a.tinymceConfig.elements=a.getInputId();a.tinymceConfig.mode="exact";a.tinymceConfig.height=a.lastHeight-5;a.tinymceConfig.setup=function(b){b.on("init",function(d){a.inProgress=false});b.on("keypress",Ext.Function.createBuffered(a.validate,250,a));b.on("postRender",function(d){var e;a.editor=b;window.b=a.editor;b.windowManager=new Ext.ux.form.field.TinyMCEWindowManager({editor:a.editor});a.iframeEl=Ext.get(a.editor.id+"_ifr");e=a.editor.id.substring(0,a.editor.id.lastIndexOf("-"));a.tableEl=Ext.get(e);a.edToolbar=a.tableEl.down(".mce-toolbar");a.edStatusbar=a.tableEl.down(".mce-statusbar");if(a.hideBorder){a.tableEl.setStyle("border","0px");a.tableEl.down(".mce-tinymce").setStyle("border","0px")}Ext.Function.defer(function(){if(a.tableEl.getHeight()!=a.lastHeight-5){a.setEditorSize(a.lastWidth,a.lastHeight)}},10,a);a.fireEvent("editorcreated",a.editor,a)});try{a.tinymceConfig.mysetup(b)}catch(c){}};tinymce.init(a.tinymceConfig)},setEditorSize:function(c,a){var d=this,b=a-2;if(!d.editor||!d.rendered){return}if(d.edToolbar){b-=d.edToolbar.getHeight()}if(d.edStatusbar){b-=d.edStatusbar.getHeight()}d.iframeEl.setHeight(b);d.tableEl.setHeight(a);d.inputEl.setHeight(a)},isDirty:function(){var a=this;if(a.disabled||!a.rendered){return false}return a.editor&&a.editor.initialized&&a.editor.isDirty()},getValue:function(){if(this.editor){return this.editor.getContent()}return this.value},setValue:function(b){var a=this;a.value=b;if(a.rendered){a.withEd(function(){a.editor.undoManager.clear();a.editor.setContent(b===null||b===undefined?"":b);a.editor.startContent=a.editor.getContent({format:"raw"});a.validate()})}},getSubmitData:function(){var a={};a[this.getName()]=this.getValue();return a},insertValueAtCursor:function(b){var a=this;if(a.editor&&a.editor.initialized){a.editor.execCommand("mceInsertContent",false,b)}},onDestroy:function(){var a=this;if(a.editor){a.editor.destroy()}a.callParent(arguments)},getEditor:function(){return this.editor},getRawValue:function(){var a=this;return(!a.editor||!a.editor.initialized)?Ext.valueFrom(a.value,""):a.editor.getContent()},disable:function(){var a=this;a.withEd(function(){var b=a.editor;tinymce.each(b.controlManager.controls,function(d){d.setDisabled(true)});tinymce.dom.Event.clear(b.getBody());tinymce.dom.Event.clear(b.getWin());tinymce.dom.Event.clear(b.getDoc());tinymce.dom.Event.clear(b.formElement);b.onExecCommand.listeners=[];a.iframeEl.dom.contentDocument.body.contentEditable=false;a.iframeEl.addCls("x-form-field x-form-text")});return a.callParent(arguments)},enable:function(){var a=this;a.withEd(function(){var b=a.editor;b.bindNativeEvents();tinymce.each(b.controlManager.controls,function(d){d.setDisabled(false)});b.nodeChanged();a.iframeEl.dom.contentDocument.body.contentEditable=true;a.iframeEl.removeCls("x-form-field x-form-text")});return a.callParent(arguments)},withEd:function(b){var a=this;if(!a.editor){a.on("editorcreated",function(){a.withEd(b)},a)}else{if(a.editor.initialized){b.call(a)}else{a.editor.on("init",function(c){Ext.Function.defer(b,10,a)})}}},validateValue:function(b){var a=this;if(Ext.isFunction(a.validator)){var d=a.validator(b);if(d!==true){a.markInvalid(d);return false}}if(b.length<1||b===a.emptyText){if(a.allowBlank){a.clearInvalid();return true}else{a.markInvalid(a.blankText);return false}}if(b.lengtha.maxLength){a.markInvalid(Ext.String.format(a.maxLengthText,a.maxLength));return false}else{a.clearInvalid()}if(a.vtype){var c=Ext.form.field.VTypes;if(!c[a.vtype](b,a)){a.markInvalid(a.vtypeText||c[a.vtype+"Text"]);return false}}if(a.regex&&!a.regex.test(b)){a.markInvalid(a.regexText);return false}return true}},1,["tinymcefield"],["field","textfield","tinymcefield","component","textarea","box","textareafield"],{field:true,textfield:true,tinymcefield:true,component:true,textarea:true,box:true,textareafield:true},["widget.tinymcefield"],0,[Ext.ux.form.field,"TinyMCE"],0));(Ext.cmd.derive("LIME.view.main.Editor",Ext.container.Container,{layout:"fit",items:[{xtype:"tinymcefield",hideBorder:true}]},0,["mainEditor"],["component","container","mainEditor","box"],{component:true,container:true,mainEditor:true,box:true},["widget.mainEditor"],0,[LIME.view.main,"Editor"],0));(Ext.cmd.derive("LIME.view.ContextMenu",Ext.menu.Menu,{items:[{text:"Unmark",separator:true,icon:"resources/images/icons/delete.png",menu:{items:[{id:"unmarkThis",text:"Unmark this element"},{id:"unmarkAll",text:"Unmark this element and its children"}]}}]},0,["contextMenu"],["panel","contextMenu","component","container","menu","box"],{panel:true,contextMenu:true,component:true,container:true,menu:true,box:true},["widget.contextMenu"],0,[LIME.view,"ContextMenu"],0));(Ext.cmd.derive("LIME.view.main.editor.Path",Ext.Panel,{id:"path",layout:"fit",width:"100%",frame:true,style:{borderRadius:"0px",margin:"0px",border:"0px"},separator:' > ',selectorsInitId:"pathSelector_",elementLinkTemplate:'%el',elementTemplate:"%el",setPath:function(g){var k="";var b=0;for(var e=(g.length-1);e>=0;e--){var a=g[e].name;var c=this.selectorsInitId+b;var h=DomUtils.getNodeExtraInfo(g[e].node,"hcontainer");if(h){a+=" ("+h+")"}if(g[e].node){k+=this.elementLinkTemplate.replace("%el",a).replace("%id",c)}else{k+=this.elementTemplate.replace("%el",a)}if(e!=0){k+=this.separator}if(!this.elements){this.elements={}}this.elements[c]=g[e].node;b++}var d=this;this.update(this.initialPath+k,false,function(){d.fireEvent("update")})},initComponent:function(){this.initialPath=Locale.strings.mainEditorPath+": ";this.html=Locale.strings.mainEditorPath+": ";this.callParent(arguments)}},0,["mainEditorPath"],["panel","mainEditorPath","component","container","box"],{panel:true,mainEditorPath:true,component:true,container:true,box:true},["widget.mainEditorPath"],0,[LIME.view.main.editor,"Path"],0));(Ext.cmd.derive("LIME.view.Main",Ext.tab.Panel,{id:"editorTab",style:{padding:"0px",margin:"0px"},initComponent:function(){this.items=[{layout:"border",padding:0,margin:0,border:0,title:Locale.getString("mainEditor"),items:[{region:"center",xtype:"mainEditor"},{region:"south",border:0,xtype:"panel",layout:{type:"hbox",align:"stretch"},frame:true,style:{borderRadius:"0px",margin:"0px",border:"0px",padding:0},items:[{xtype:"mainEditorPath"}]}]}];this.plugins={ptype:"tabclosemenuimproved",closeTabText:Locale.getString("closeTabText"),closeOthersTabsText:Locale.getString("closeOthersTabsText"),closeAllTabsText:Locale.getString("closeAllTabsText")};this.callParent(arguments)}},0,["main"],["tabpanel","panel","component","container","box","main"],{tabpanel:true,panel:true,component:true,container:true,box:true,main:true},["widget.main"],0,[LIME.view,"Main"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LanguageSelectionBox",Ext.form.field.ComboBox,{store:"Languages",displayField:"language",queryMode:"local",hideLabel:true,initComponent:function(){this.emptyText=Locale.strings.languageSelectionBoxEmptyText;this.callParent(arguments)}},0,["languageSelectionBox"],["field","trigger","combobox","textfield","pickerfield","component","languageSelectionBox","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,languageSelectionBox:true,combo:true,box:true,triggerfield:true},["widget.languageSelectionBox"],0,[LIME.view.maintoolbar,"LanguageSelectionBox"],0));(Ext.cmd.derive("LIME.controller.MainToolbar",Ext.app.Controller,{refs:[{selector:"openDocumentButton",ref:"openDocumentButton"},{selector:"modalOpenfileMain",ref:"openFileWindowMain"},{selector:"languageSelectionBox",ref:"LanguagesComboBox"},{ref:"downloadManager",selector:"downloadManager"},{ref:"documentUploader",selector:"documentUploader"},{ref:"main",selector:"main"},{ref:"windowMenuButton",selector:"windowMenuButton"},{ref:"fileMenuButton",selector:"fileMenuButton"},{ref:"saveDocumentButton",selector:"saveDocumentButton"},{ref:"saveAsDocumentButton",selector:"saveAsDocumentButton"},{ref:"saveAsMenu",selector:"saveAsMenu"},{ref:"windowMenuButton",selector:"windowMenuButton"},{ref:"mainToolbar",selector:"mainToolbar"}],views:["MainToolbar","Main","maintoolbar.OpenDocumentButton","maintoolbar.LocaleSelector","maintoolbar.LanguageSelectionBox","maintoolbar.LanguageSelectionMenu","modal.newOpenfile.Main","modal.newSavefile.Main","maintoolbar.FileMenuButton","maintoolbar.DocumentMenuButton","maintoolbar.WindowMenuButton","modal.SaveAs","modal.NewDocument"],createNewDocument:function(d){var c=this.application,b=DocProperties.currentEditorFile.id,a={docText:d.docText||"",docId:""};if(Ext.isEmpty(b)){}c.fireEvent(Statics.eventsNames.loadDocument,Ext.Object.merge(a,d))},highlightFileMenu:function(){var b=this.getFileMenuButton(),a=b.getEl();return setInterval(function(){a.frame("#ff0000",1,{duration:1000})},1000)},selectLanguage:function(a){var d=a.record.get("code"),b=this.getController("PreferencesManager");var c=function(e){Utilities.changeLanguage(d)};b.setUserPreferences({defaultLanguage:d},false,c)},selectLocale:function(b){var a=b.record.get("locale");var c=this.getController("PreferencesManager");var d=Ext.urlDecode(window.location.search);d.locale=a;var e=function(){window.location.search=Ext.Object.toQueryString(d)};c.setUserPreferences({defaultLocale:a},false,e)},addTab:function(c){var a=this.getMain(),b;if(c&&!a.down(c)){b=Utilities.createWidget({xtype:c,closable:true});if(b){a.add(b)}else{Ext.log({level:"error"},"Error creating tab "+c)}}},setAllowedViews:function(){var d=this.getWindowMenuButton(),h=d.menu.down("*[id=showViews]"),c=this.getStore("LanguagesPlugin").getData(),g=this.getController("PreferencesManager"),a=g.userPreferences.views,i={xtype:"menu",plain:true,items:[]};if(c.viewConfigs){var b=c.viewConfigs.allowedViews,e;Ext.each(b,function(k){widget=Utilities.createWidget(k);if(widget){e=(a.indexOf(k)!=-1)?d.checkedIcon:Ext.BLANK_IMAGE_URL;i.items.push({text:widget.menuText||widget.title,openElement:k,icon:e});Ext.destroy(widget)}});h.setMenu(i)}},onMetadataChange:function(){var a=this.getSaveDocumentButton(),b=this.getSaveAsDocumentButton();if(DocProperties.getDocumentUri()){a.enable()}else{a.disable()}},onLanguageLoaded:function(){var e=this,c=e.getMain(),b=Config.getLanguageConfig().customViews,g=e.getController("PreferencesManager"),a=g.userPreferences.views;e.setAllowedViews();for(var d in a){this.addTab(a[d])}},addMenuItem:function(g,b){var e=this.getMainToolbar(),h,i=e.down(g.menu+" menu"),a=g.before||g.after,d=-1,c=g.posIndex||-1;if(i&&!i.down("*[name="+b.name+"]")){h=i.add(b);if(a){d=i.items.indexOf(i.down(a));d=(d!=-1)?d:i.items.indexOf(i.down("*[name="+a+"]"))}if(d!=-1||c!=-1){c=(c!=-1)?c:(d+((g.before)?0:1));if(c!=-1){i.move(h,c)}}}return h},init:function(){var a=this;this.application.on(Statics.eventsNames.frbrChanged,this.onMetadataChange,this);this.application.on(Statics.eventsNames.languageLoaded,this.onLanguageLoaded,this);this.control({openDocumentButton:{click:function(){Ext.widget("newOpenfileMain").show()}},languageSelectionBox:{afterrender:function(c){var b=Ext.getStore("Languages").findRecord("code",Locale.strings.languageCode,null,null,null,true);if(b){c.setValue(b.data.language)}},select:{fn:function(b,c){var d=c[0].get("code");Utilities.changeLanguage(d)}}},languageSelectionMenu:{beforerender:function(d){var g=Ext.create("Ext.menu.Menu"),e=this.getStore(d.store),b=e.findRecord("code",Locale.strings.languageCode,null,null,null,true),c;if(b){c=b.get("code")}e.each(function(h){g.add({text:h.get(d.displayField),record:h,handler:this.selectLanguage,checked:(h.get("code")==c)?true:false,group:"languages",scope:this})},this);d.setMenu(g)}},localeSelector:{beforerender:function(b){var e=Ext.create("Ext.menu.Menu"),d=this.getStore(b.store),c=Ext.urlDecode(window.location.search).locale;d.each(function(g){if(g.get("status")!="disabled"){e.add({text:g.get(b.displayField),record:g,handler:this.selectLocale,checked:(g.get("locale")==c)?true:false,group:"locales",scope:this})}else{e.add(''+g.get(b.displayField)+"")}},this);b.setMenu(e)}},logoutButton:{click:function(){var b=this.getController("LoginManager");confirm=Ext.Msg.confirm(Locale.strings.warning,Locale.strings.logoutWarning,function(c){if(c=="yes"){b.logout()}})}},"saveAsMenu menuitem":{click:function(d){var b,c={};switch(d.metaType){case"newWork":break;case"newExpression":c={toHide:["work"]};break;case"newManifestation":c={toHide:["work","expression"]};break}b=Ext.widget("saveAs",c);b.show()}},"[cls=editorTab]":{added:function(d){var e=this.getController("PreferencesManager"),g=this.getWindowMenuButton(),b=e.userPreferences.views,h=d.getXType(),c=g.menu.down("*[openElement="+d.xtype+"]");if(c){c.icon=g.checkedIcon}if(b&&b.indexOf(h)==-1){e.setUserPreferences({views:b.concat([h])})}},close:function(b){var c=this.getWindowMenuButton();c.setCheckIcon(c.menu.down("*[openElement="+b.xtype+"]"),true)},removed:function(b){var d=this.getController("PreferencesManager"),g=this.getWindowMenuButton();try{d.setUserPreferences({views:d.userPreferences.views.filter(function(e){if(e==b.getXType()){return false}else{return true}})})}catch(c){Ext.log({level:"error"},c)}}},"saveAs button":{click:function(c){var e=c.up("window"),b=e.getData(),d={};if(b){if(b.work){d.docType=b.work.docType}if(b.expression){d.docLang=b.expression.docLang}DocProperties.setDocumentInfo(d);DocProperties.setFrbr(b);this.getController("Editor").saveDocument({view:e})}}},newDocumentButton:{click:function(b){var c=Ext.widget("newDocument");c.show()}},"docMarkingLanguageSelector[cls=syncType]":{change:function(e,g){var c,b,d;if(e.up("window").onlyLanguage){return}c=e.up("window").down("docTypeSelector"),b=this.getStore("DocumentTypes"),d=Config.getDocTypesByLang(g);if(d){b.loadData(d);c.allowBlank=false;c.show()}else{b.removeAll();c.allowBlank=true;c.hide()}}},"docMarkingLanguageSelector[cls=syncTypeCollection]":{change:function(h,i){var c=this.getStore("DocumentTypes"),d=Config.getDocTypesByLang(i),g=h.up("window"),e=g.down("docLocaleSelector"),k=this.getStore("Locales"),b;if(d){c.loadData(d);b=Config.getLocaleByDocType(i,"documentCollection");if(b){k.loadData(b);e.allowBlank=false;e.show()}else{k.removeAll();e.allowBlank=true;e.hide()}}else{c.removeAll()}}},"docTypeSelector[cls=syncLocale]":{change:function(e,g){var d=e.up("window"),c=d.down("docLocaleSelector"),i=this.getStore("Locales"),h=d.down("docMarkingLanguageSelector").getValue(),b=Config.getLocaleByDocType(h,g);if(b){i.loadData(b);c.allowBlank=false;c.show()}else{i.removeAll();c.allowBlank=true;c.hide()}}},"newDocument button":{click:function(c){var e=c.up("window"),b=this.getStore("DocumentLanguages"),d={};if(!e.tmpConfig){e.tmpConfig={};DocProperties.clearMetadata(this.application)}d=Ext.Object.merge(e.tmpConfig,e.getData());this.createNewDocument(d);e.close()}},newDocument:{afterrender:function(c){var d=c,b=d.tmpConfig;if(b){if(b.docMarkingLanguage&&!c.onlyLanguage){d.down("docMarkingLanguageSelector").setValue(b.docMarkingLanguage)}if(b.docType){d.down("docTypeSelector").setValue(b.docType)}if(b.docLang){d.down("docLangSelector").setValue(b.docLang)}if(b.docLocale){d.down("docLocaleSelector").setValue(b.docLocale)}}if(c.onlyLanguage){d.down("docTypeSelector").hide();d.down("docTypeSelector").allowBlank=true;d.down("docLangSelector").hide();d.down("docLangSelector").allowBlank=true;d.down("docLocaleSelector").hide();d.down("docLocaleSelector").allowBlank=true}}},saveDocumentButton:{click:function(){this.getController("Editor").autoSaveContent(true)}},fileMenuButton:{afterrender:function(){this.getSaveDocumentButton().disable()}},"windowMenuButton *[id=showViews]":{beforerender:function(){this.setAllowedViews()}},"windowMenuButton menuitem":{click:function(d){var b=this.getMain(),e=this.getWindowMenuButton(),c=b.down(d.openElement);if(c){c.close()}else{this.addTab(d.openElement);e.setCheckIcon(d)}}},saveAsDocumentButton:{click:function(){Ext.widget("newSavefileMain").show()}},"mainToolbar button":{afterrender:function(b){if(b.menu&&!b.menu.items.getCount()){b.hide()}}},"mainToolbar button menu":{add:function(c){var b=c.up();if(b&&b.isHidden()){b.show()}},remove:function(c){var b=c.up();if(b&&!c.items.getCount()){b.hide()}}}})}},0,0,0,0,0,0,[LIME.controller,"MainToolbar"],0));(Ext.cmd.derive("LIME.Locale",Ext.Base,{singleton:true,alternateClassName:"Locale",config:{lang:"en",defaultLang:"en"},strings:{},pStrings:{},constructor:function(){this.detectLanguage();this.loadLanguage()},setPluginStrings:function(b,a){this.pStrings[b]=a},getString:function(a,b){if(b&&this.pStrings[b]){if(this.pStrings[b][this.lang]){return this.pStrings[b][this.lang][a]}if(this.pStrings[b][this.getDefaultLang()]){return this.pStrings[b][this.getDefaultLang()][a]}}return this.strings[a]},detectLanguage:function(){var a=Ext.urlDecode(window.location.search.substring(0)).lang;if(!(a==null||a==undefined||Ext.isEmpty(a))){this.initConfig({lang:a.toLowerCase()})}},loadLanguage:function(){var b="config/locale/lang-"+this.config.lang+".json";var a="config/locale/ext/ext-lang-"+this.config.lang+".js";Ext.Ajax.request({url:b,async:false,scope:this,success:function(c,d){try{this.strings=Ext.decode(c.responseText)}catch(g){alert("Fatal error on loading localization files")}},failure:function(c,d){alert("Fatal error on loading localization files")}});Ext.Loader.loadScript({url:a})}},1,0,0,0,0,0,[LIME,"Locale",0,"Locale"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.VersionSelector",Ext.form.FieldContainer,{name:"docVersion",layout:"hbox",width:190,combineErrors:true,msgTarget:"side",allowBlank:false,initComponent:function(){var a=this;if(!a.langCfg){a.langCfg={}}if(!a.dateCfg){a.dateCfg={}}a.buildField();a.callParent();a.dateField=a.down("datefield");a.langField=a.down("docLangSelector");a.langField.on("blur",a.onFieldsBlur,a);a.langField.on("specialkey",a.onFieldsSpecialKey,a);a.dateField.on("specialkey",a.onFieldsSpecialKey,a);a.dateField.on("blur",a.onFieldsBlur,a);a.initField()},buildField:function(){var a=this;a.items=[Ext.apply({xtype:"docLangSelector",width:85},a.langCfg),{xtype:"displayfield",value:"@"},Ext.apply({xtype:"datefield",submitValue:false,width:85,format:"Y-m-d"},a.dateCfg)]},getValue:function(){var c=this,d,b=c.dateField.getSubmitValue(),a=c.dateField.format,e=c.langField.getSubmitValue();if(e){b=(b)?b:"";d=e+"@"+b}return(d)?d:""},setValue:function(c){var b=this,d="@",a;if(c){a=c.indexOf(d);if(a!=-1){b.dateField.setValue(c.substring(a+1));b.langField.setValue(c.substring(0,a))}else{b.langField.setValue(c)}}},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={},value=a.getValue(),b[a.getName()]=""+value?Ext.Date.format(value,a.submitFormat):null}return b},getFormat:function(){var a=this;return(a.dateField.submitFormat||a.dateField.format)},onFieldsSpecialKey:function(b,a){if(a.getKey()==a.ENTER&&this.langField.getSubmitValue()){b.up("docVersionSelector").fireEvent("blur",a)}},onFieldsBlur:function(c,a,b){var d;if(!a){return}d=new Ext.Element(a.getTarget());if(!(d.is(".x-form-field")||d.is(".x-form-date-trigger"))&&this.langField.getSubmitValue()){c.up("docVersionSelector").fireEvent("blur",a,b)}}},0,["docVersionSelector"],["component","container","fieldcontainer","box","docVersionSelector"],{component:true,container:true,fieldcontainer:true,box:true,docVersionSelector:true},["widget.docVersionSelector"],[["field",Ext.form.field.Field]],[LIME.view.modal.newSavefile,"VersionSelector"],0));(Ext.cmd.derive("LIME.controller.Storage",Ext.app.Controller,{views:["modal.newOpenfile.Main","modal.newSavefile.Main","modal.newSavefile.VersionSelector"],refs:[{selector:"newOpenfileToolbarOpenButton",ref:"newOpenfileToolbarOpenButton"},{selector:"newOpenfileToolbarCancelButton",ref:"newOpenfileToolbarCancelButton"}],storageColumns:[{text:Locale.strings.folderLabel,fieldName:"folder",defaultValue:"my_documents",getValue:function(){return this.defaultValue}},{text:Locale.strings.countryLabel,editor:{xtype:"nationalitySelector",selectOnFocus:true},fieldName:"nationality",getValue:function(){return((DocProperties.frbr&&DocProperties.frbr.work)?DocProperties.frbr.work[this.fieldName]:false)||DocProperties.documentInfo.docLocale}},{text:Locale.strings.docTypeLabel,editor:{xtype:"docTypeSelector",selectOnFocus:true},fieldName:"docType",getValue:function(){return DocProperties.documentInfo[this.fieldName]}},{text:Locale.strings.docDateLabel,editor:{xtype:"datefield",allowBlank:false,selectOnFocus:true,format:"Y-m-d"},fieldName:"date",getValue:function(){return(DocProperties.frbr&&DocProperties.frbr.work)?Ext.Date.format(DocProperties.frbr.work.date,this.editor.format):""}},{text:Locale.strings.docNumberLabel,fieldName:"number",getValue:function(){var b=(DocProperties.getDocumentUri())?DocProperties.getDocumentUri().split("/"):[],a=(b[0]==Ext.emptyString)?b[4]:b[3];a=(a)?a:Ext.emptyString.toString();return a}},{text:Locale.strings.versionLabel,fieldName:"version",editor:{xtype:"docVersionSelector",selectOnFocus:true},getValue:function(){return DocProperties.documentInfo.docLang+"@"+((DocProperties.frbr)?((DocProperties.frbr.expression)?Ext.Date.format(DocProperties.frbr.expression.date,"Y-m-d"):""):"")}},{text:Locale.strings.fileLabel,fieldName:"docName",defaultValue:"new",getValue:function(){return this.defaultValue}}],newCloseWindow:function(b){var c=this;var a=b.up("window");a.close()},newGetSelectedDocument:function(b){var c=this,a=b.up("window");if(a.selectedFile){if(Ext.isFunction(a.onOpen)){a.onOpen(a.selectedFile.data);a.close()}else{c.openDocument(a.selectedFile.data.id,a)}}},getSelectedDocument:function(b){var d=this,a=b.up("modalOpenfileMain").down("modalOpenfileExplorer").getSelectionModel().selected.items;if(a.length>0){var c=a[0];if(c.isLeaf()){d.openDocument(c.data.id)}}},openDocument:function(d,h){var l=this,i=l.getController("Editor"),c=this.application,e=this.getController("Language");this.application.fireEvent(Statics.eventsNames.progressStart,null,{value:0.1,text:Locale.strings.progressBar.openingDocument});var g={requestedFile:d,userName:localStorage.getItem("username"),userPassword:localStorage.getItem("password")},b=Utilities.getAjaxUrl(Ext.Object.merge(g,{requestedService:Statics.services.getFileMetadata})),k=Utilities.getAjaxUrl(Ext.Object.merge(g,{requestedService:Statics.services.getFileContent})),m=this.getController("PreferencesManager"),a={};Ext.Ajax.request({url:b,async:false,success:function(n,o){DocProperties.clearMetadata(c);a=e.parseMetadata(n.responseXML,n.responseText)},failure:function(n,o){Ext.Msg.alert("server-side failure with status code "+n.status)}});Ext.Ajax.request({url:k,success:function(n,q){var p=d,o=d.split("/");if(o[4]&&o[4].indexOf("examples")!=-1){p=""}if(n.responseXML&&!a.docMarkingLanguage){a.docMarkingLanguage=n.responseXML.documentElement.getAttribute(DocProperties.markingLanguageAttribute)}c.fireEvent(Statics.eventsNames.loadDocument,Ext.Object.merge(a,{docText:n.responseText,docId:p}));m.setUserPreferences({lastOpened:p});if(h){h.close()}},failure:function(n,o){this.application.fireEvent(Statics.eventsNames.progressEnd);Ext.Msg.alert("server-side failure with status code "+n.status)}})},loadOpenFileListData:function(b,c,d){var a=b.getStore();if(a&&(b.path||c)){a.requestNode=c||b.path;a.load({scope:this,callback:function(g,e,h){b.reconfigure(a);if(Ext.isFunction(d)){d(a)}}})}},removeUselessListViews:function(b,a){var c=b;while(c){if(c!=b){a.remove(c)}c=b.nextNode("grid[addedDyn]")}},scrollToListView:function(b,a){b.getEl().scrollIntoView(a.body,true,true)},setColumnText:function(a,b){var c=this.storageColumns[b];a.indexInParent=b;if(c){a.columns[0].setText(c.text)}},fileListViewClick:function(m,d,p,g,h,i){var c=d.getData(),r=c.id,l,k=m.up("window"),b=k.down("button[dynamicDisable]"),o=k.down("listFilesPanel")||k.down("panel"),a=m.up("grid")||m,n,q={};if(d.data.leaf){if(b){b.enable()}k.selectedFile=d;k.activeList=a}else{if(b){b.disable()}l=m.nextNode(a.xtype);if(!l){if(Ext.isFunction(k.onAddColumn)){q=k.onAddColumn(this.storageColumns[a.indexInParent+1])}q=Ext.merge(q,{addedDyn:true,indexInParent:a.indexInParent+1});l=o.add(Ext.widget(a.xtype,q))}this.removeUselessListViews(l,o);Ext.each(o.query(a.xtype),function(s,e){if(s==a){n=e}else{if((n!=null)&&(e>n)){s.getSelectionModel().deselectAll();s.getStore().removeAll()}}if(s==l){this.setColumnText(l,e);this.setContextualButton(k,e)}},this);l.userClick=(p)?true:false;this.loadOpenFileListData(l,r);this.scrollToListView(l,o);k.activeList=l}if(!k.avoidTitleUpdate){this.updateTitle(k,c.path)}CMP=m},updateTitle:function(d,c){var a=RegExp("(/([a-z]{3}))\\."),b=c.match(a);if(b){c=c.replace(a,"$1@")}d.setTitle(d.fullTitle.apply({title:d.originalTitle,url:c}))},initFileWindow:function(a){a.originalTitle=a.title;a.setTitle(a.fullTitle.apply({title:a.originalTitle}));Ext.each(a.query("grid"),function(c,b){this.setColumnText(c,b)},this)},setContextualButton:function(c,a){var b=c.down("newSavefileToolbarContextualButton");if(!b){return}b.originalText=(!b.originalText)?b.text:b.originalText;b.setText(b.fullText.apply({operation:b.originalText,what:this.storageColumns[a].text}));if(a==(this.storageColumns.length-1)){b.setIcon(b.fileIcon);b.isFile=true}else{b.setIcon(b.folderIcon)}},contextualButtonClick:function(b){var c=b.up("window"),a=c.activeList;if(!a){a=c.down("grid")}this.createRecord(a,this.columnValues[a.indexInParent],true)},saveDocument:function(l){var k=l.up("window"),i=k.query("grid"),m={},h={},g="@",e,d,c,a=k.activeList.getSelectionModel().getSelection()[0],n,b=RegExp("(/([a-z]{3}))@");Ext.each(i,function(o,p){var q=o.getSelectionModel().getSelection()[0],r;if(q){r=q.getData();m[this.storageColumns[p].fieldName]=(r.originalName)?r.originalName:r.name}},this);e=m.version.indexOf(g);if(e!=-1){d=m.version.substring(e+1);c=m.version.substring(0,e)}else{c=m.version}h.work={nationality:m.nationality,docType:m.docType,date:m.date,docNumber:m.docNumber};h.expression={date:d,docLang:c};h.manifestation={docName:m.docName};DocProperties.setDocumentInfo({folder:m.folder});DocProperties.setFrbr(h);n=a.getData().path;this.getController("Editor").saveDocument({view:k,path:n})},fillInFields:function(b){var d,c;this.columnValues=[];for(var a=0;a1&&a){this.focusNode(a,d);this.lastFocused=a}else{this.focusNode(c,d);this.lastFocused=c}},focusNode:function(a,c){if(!a){return}if(c.select){this.selectNode(a)}if(c.scroll){a.scrollIntoView()}if(c.highlight){var b=new Ext.Element(a);b.highlight("FFFF00",{duration:800})}if(c.change){this.getEditor().undoManager.add();this.changed=true;this.application.fireEvent("editorDomChange",a,"partial")}if(c.click){this.application.fireEvent("editorDomNodeFocused",a)}},selectNode:function(a){this.getEditor().selection.select(a)},setSelectionContent:function(a){this.getEditor().selection.setContent(a)},setElementAttribute:function(a,b,d){var c=a;var e=(Ext.isString(c))?Ext.query("*["+DomUtils.elementIdAttribute+"="+c+"]",this.getDom())[0]:c;if(e){e.setAttribute(b,d);if(d==""){e.removeAttribute(b)}this.getEditorComponent().fireEvent("change",this.getEditor());return true}else{return false}},getSelectionContent:function(a){if(!a){a="html"}return this.getEditor().selection.getContent({format:a})},getBody:function(){return this.getEditor().getBody()},getDom:function(){return this.getEditor().dom.doc},getDocHtml:function(){var a=this.getDom().documentElement;return DomUtils.serializeToString(a)},getSelectedNode:function(b,a){var c=this.getEditor().selection.getNode();if(b){return DomUtils.getFirstMarkedAncestor(c)}else{if(a){return DomUtils.getNodeByName(c,a)}else{return c}}},getSelectionObject:function(d,k,c){k=k||{start:null,end:null,current:null};var b=this.getEditor().selection.getStart();var m=this.getEditor().selection.getEnd();var l=this.getEditor().selection.getNode();if(k.start){b=DomUtils.getNodeByName(b,k.start)}if(k.end){m=DomUtils.getNodeByName(m,k.end)}if(c){var n=DomUtils.nestingLevel(b);var a=DomUtils.nestingLevel(m);var h=Math.abs(n-a);if(n0){c.fireEvent("nodeFocusedExternally",n[0],{select:true,scroll:true,click:true})}}};Ext.each(l,function(m){m.onclick=clickLinker},this);Ext.each(b,function(n,q){var m=n.getAttribute(DomUtils.elementIdAttribute),u;var r=DomUtils.getButtonIdByElementId(m);var p=Ext.getCmp(r);if(!p){if(m.indexOf(DomUtils.elementIdSeparator)==-1){var s=h.getButtonsByName(m)||h.getButtonsByName(n.getAttribute(d.getLanguagePrefix()+"name")),t;if(s){t=Ext.Object.getKeys(s);if(t.length){r=t[0];p=s[r];m=e.getMarkingId(r)}}}if(!p){Ext.MessageBox.alert("FATAL ERROR!!","The button with id "+r+" is missing!");return}}DocProperties.setMarkedElementProperties(m,{button:p,htmlElement:n});n.removeAttribute("style");n.setAttribute(DomUtils.elementIdAttribute,m);var o=p.waweConfig.pattern.wrapperClass;this.applyAllStyles('*[class="'+o+'"]',p.waweConfig.pattern.wrapperStyle,p.waweConfig.shortLabel)},this);if(Ext.isString(a)){DocProperties.setDocId(a)}this.application.fireEvent("editorDomChange",g.getBody());this.application.fireEvent(Statics.eventsNames.documentLoaded)},setContent:function(a){this.getEditor().setContent(a)},domReplace:function(a,b){if(Ext.isArray(b)){b[0].parentNode.insertBefore(a,b[0]);Ext.each(b,function(c){c.parentNode.removeChild(c)})}else{this.getEditor().dom.replace(a,b)}return a},splitContent:function(b,e){var d=[];var c=b;while(c.length>e){var a=c.split(e)}},saveDocument:function(a){var b=this;this.application.fireEvent(Statics.eventsNames.translateRequest,function(c){c=c.replace('',"");b.saveDocumentText(c,a)},{complete:true})},saveDocumentText:function(n,v){var i=this.application,u,g=this.getController("LoginManager").getUserInfo(),h=this.getController("PreferencesManager"),o=this.getController("Language"),c=DocProperties.frbr,s=DocProperties.documentInfo,b={},w,y,t=this,a=this.getDom(),x=DocProperties.documentInfo.docId||Ext.emptyString,l,m=new XMLSerializer(),p=new Ext.Template("/{nationality}/{docType}/{date}/{number}/{docLang}@/{docName}"),q=new Ext.Template("/{docLang}@/{docName}"),k=(v)?v.view:null,d;if(v.path){x=v.path}if(!v||!v.autosave){y=c.manifestation.docName;d=x.substring(1);d=d.substring(d.indexOf("/"));w=o.buildMetadata(c,true,d)}else{w=o.buildInternalMetadata(true)}i.fireEvent(Statics.eventsNames.beforeSave,{editorDom:a,metadataDom:w,documentInfo:DocProperties.documentInfo});try{l=m.serializeToString(w)}catch(r){l=Ext.emptyString}u={userName:g.username,fileContent:n,metadata:l};i.fireEvent(Statics.eventsNames.saveDocument,x,u,function(e,A){var B=e.responseText,z;if(B[B.length-1]=="1"){B=B.substring(0,(B.length-1))}z=JSON.parse(B);if(!v||!v.autosave){if(k){k.close()}var C=Locale.strings.savedToTpl;Ext.Msg.alert({title:Locale.strings.saveAs,msg:new Ext.Template(C).apply({docName:y,docUrl:A.replace(y,"")})})}i.fireEvent(Statics.eventsNames.afterSave,{editorDom:a,metadataDom:w,documentInfo:DocProperties.documentInfo});if(z.path){DocProperties.setDocId(z.path);h.setUserPreferences({lastOpened:z.path})}})},autoSaveContent:function(a){if(!a&&!this.changed){return}this.changed=false;this.saveDocument({silent:true,autosave:true})},tinyInit:function(b,c){var a=this,d=b.getController("MainToolbar");a.onPreSave=c;userPreferences=b.getController("PreferencesManager").getUserPreferences();if(!userPreferences.lastOpened){Ext.Ajax.request({url:Statics.editorStartContentUrl,success:function(e){var h=d.highlightFileMenu();var g=Ext.widget("window",{height:400,width:800,modal:true,resizable:false,closable:false,layout:{type:"vbox",align:"center"},title:Locale.strings.welcome,items:[{xtype:"panel",width:800,height:320,html:e.responseText},{xtype:"button",text:Locale.strings.continueStr,style:{width:"150px",height:"40px",margin:"5px 5px 5px 5px"},handler:function(i){clearInterval(h);i.up("window").close()}}]}).show()}})}else{b.restoreSession()}},setPath:function(e){var d=[];var c=DocProperties.getDocClassList().split(" ");if(e){var b=e;var a=b.getAttribute("class");if(a){while(b&&(a.indexOf(c[0])==-1)){a=b.getAttribute("class");a=a.split(" ");d.push({node:b,name:a[(a.length-1)]});b=DomUtils.getFirstMarkedAncestor(b.parentNode)}}}d.push({node:null,name:c[1]});this.getMain().down("mainEditorPath").setPath(d)},restoreSession:function(){var g,d=this.application,a;var b=this,c=b.getController("PreferencesManager").getUserPreferences(),e=b.getController("Storage");if(c.lastOpened){e.openDocument(c.lastOpened)}},disableEditor:function(){this.getBody().setAttribute("contenteditable",false)},enableEditor:function(){this.getBody().setAttribute("contenteditable",true)},init:function(){this.application.on({nodeFocusedExternally:this.focus,nodeChangedExternally:this.focus,editorDomNodeFocused:this.setPath,scope:this});this.application.on(Statics.eventsNames.loadDocument,this.beforeLoadDocument,this);this.application.on(Statics.eventsNames.disableEditing,this.disableEditor,this);this.application.on(Statics.eventsNames.enableEditing,this.enableEditor,this);var a=this;var b=this.getController("Marker");this.control({"contextMenu menuitem":{click:function(c,d){var h=c.parentMenu.getXType(),g=c.id;if(h!="contextMenu"){try{switch(g){case"unmarkThis":b.unmark(this.getSelectedNode());break;case"unmarkAll":b.unmark(this.getSelectedNode(),true);break}}catch(d){Ext.log({level:"error"},d)}}else{}}},mainEditorPath:{update:function(){var c=Ext.query(".pathSelectors");var d=this.getMainEditorPath().elements;Ext.select(".pathSelectors").on("click",function(e,i){var g=i.getAttribute("id");if(g&&d[g]){var h=d[g];this.getController("Editor").focusNode(h,{select:true,scroll:true,click:true})}},this)}},mainEditor:{click:function(c,h,g){var d=this;this.getContextMenu().hide();if(Ext.Object.getSize(g)==0){g=a.getSelectedNode(true)}this.lastFocused=g;d.application.fireEvent("editorDomNodeFocused",g)},change:function(g,l){var d=g.getBody(),h=DocProperties.getDocClassList(),i=Ext.query("*[class="+h+"]",d)[0],k=this.getExplorer();if(!i){var c=d.innerHTML;d.innerHTML="";var m=Ext.DomHelper.createDom(Ext.Object.merge(this.defaultElement,{cls:h,html:c}));d.appendChild(m)}g.undoManager.add();this.changed=true},setcontent:function(g,l){var o=this.getExplorer(),h=this.getBody(),c=DocProperties.getDocClassList(),i=DocProperties.documentBaseClass,n=Ext.query("*[class~="+i+"]",h)[0];if(!DocProperties.getDocType()){return}if(!n){var m=h.innerHTML;h.innerHTML="";var k=Ext.DomHelper.createDom(Ext.Object.merge(this.defaultElement,{cls:c,html:m}));h.appendChild(k)}else{var d=n.getAttribute("class");if(!d||d.indexOf(c)==-1){n.setAttribute("class",c)}}this.changed=true;this.application.fireEvent("editorDomChange",h)},beforerender:function(){var e=this,g=e.getMainEditor(),c=e.getEditorComponent();__tinyInit=function(){var h=this;Ext.bind(e.tinyInit,h,[e,Ext.bind(e.autoSaveContent,e)])()};var d={tinymceConfig:{doctype:"",theme:"modern",schema:"html5",element_format:"xhtml",forced_root_blocks:false,content_css:"resources/tiny_mce/css/content.css",mode:"textareas",entity_encoding:"raw",width:"100%",height:"100%",resizable:false,relative_urls:false,nonbreaking_force_tab:true,statusbar:false,plugins:"compat3x, code, tinyautosave, table, link, image, searchreplace, jbimages",valid_elements:"*[*]",language:Locale.getLang(),toolbar:"undo redo | bold italic strikethrough | bullist numlist outdent indent | table | link image jbimages | searchreplace",mysetup:function(h){h.on("change",function(i){g.fireEvent("change",h,i)});h.on("setcontent",function(i){g.fireEvent("setcontent",h,i)});h.on("click",function(i){if(i.which==1){g.fireEvent("click",h,i)}});h.on("contextmenu",function(i){g.fireEvent("contextmenu",h,i)});h.on("paste",function(i){})},tinyautosave_oninit:"__tinyInit",tinyautosave_minlength:10,tinyautosave_interval_seconds:10}};if(!WaweDebug){d.tinymceConfig.menubar=false}Ext.apply(c,d)}}})}},1,0,0,0,0,0,[LIME.controller,"Editor"],0));(Ext.cmd.derive("LIME.Global",Ext.Base,{singleton:true,alternateClassName:"Config",uxPath:"LIME.ux",extensionScripts:["LoadPlugin","Language","SavePlugin","TranslatePlugin"],language:"default",pluginBaseDir:"languagesPlugins",pluginClientLibs:"client",pluginServerLibs:"server",pluginStructureFile:"structure.json",pluginClientStructureFile:"structure.json",pluginClientStringsFile:"strings.json",pluginStructure:{},customizationViews:{},customDefaultControllers:[],allLanguages:[{name:"default"}],languages:[],getDependences:function(){return Ext.Array.map(this.extensionScripts,function(a){return this.uxPath+"."+a},this)},load:function(){Ext.Loader.setPath(this.uxPath,this.getPluginLibsPath());Ext.syncRequire(this.getDependences());Ext.Ajax.request({url:"languagesPlugins/config.json",async:false,scope:this,success:function(a,c){var b;try{b=Ext.decode(a.responseText,true);if(b){Ext.Array.push(this.allLanguages,b.languages);this.languages=b.languages;this.loadPluginStructure();this.loadLanguage()}else{Ext.log({level:"error"},"language config (languagesPlugins/config.json) decode error!")}}catch(d){alert(Locale.strings.error)}},failure:function(a,b){alert(Locale.strings.error)}})},loadPluginStructure:function(){Ext.each(this.allLanguages,function(c){var b=c.name,a=this.getPluginStructureUrl(b);Ext.Ajax.request({async:false,url:a,scope:this,success:function(d){var e=Ext.decode(d.responseText,true);if(e){e.name=b;this.pluginStructure[b]=e}else{Ext.log({level:"error"},"Language ("+b+") structure decode error! ")}}})},this)},loadLanguage:function(g){var d=this,a,c=function(){if(!--a){var h=function(){Config.loadedFinish=true;Ext.callback(g,d)};d.loadClientPlugins(h)}else{Config.loadedFinish=false}},b=Ext.Array.clone(this.extensionScripts),e=this.getLanguageConfig();d.initClientPlugins();if(this.customScript){Ext.each(this.customScript,function(h){delete window[h];delete window[h+"Custom"]});this.customScript=[]}if(e){if(e.customViews){this.customScript=e.customViews;Ext.Array.push(b,e.customViews)}}Ext.Loader.setPath(this.uxPath,this.getPluginLibsPath());a=b.length;Ext.each(b,function(h){d.loadScript(this.getPluginLibsPath()+"/"+h+".js",c,c)},this)},loadScript:function(b,c,a){Ext.Loader.loadScript({url:b,onLoad:function(){Ext.callback(c,this)},onError:function(){Ext.callback(a,this)},scope:this})},loadClientPlugins:function(e){var c=this,d=this.getLanguageConfig(),a,b=function(){if(!--a){Ext.callback(e,c)}};if(d&&d.plugins&&d.plugins.length){a=d.plugins.length;Ext.each(d.plugins,function(g){c.loadClientPlugin(g,b)})}else{Ext.callback(e,c)}},initClientPlugins:function(){this.customControllers=[];this.customizationViews={}},loadClientPlugin:function(b,i){var e=this,d=e.getPluginLibsPath()+"/"+b+"/",h=d+e.pluginClientStructureFile,a,g=e.getLanguageConfig(),c=function(){if(!--a){Ext.callback(i,e)}};Ext.Ajax.request({async:false,url:h,scope:e,success:function(k){var m=Ext.decode(k.responseText,true),l=[];if(m){if(m.views){Ext.Array.push(l,m.views)}if(m.controllers){if(g.name=="default"){Ext.Array.push(e.customDefaultControllers,m.controllers)}else{Ext.Array.push(e.customControllers,m.controllers)}Ext.Array.push(l,m.controllers)}e.loadClientPluginStrings(b,d);a=l.length;Ext.each(l,function(n){var o=d+n+".js";e.loadScript(o,c,c)},e)}else{Ext.log({level:"error"},"Error loading structure of plugin: "+b);Ext.callback(i,e)}},failure:function(){Ext.callback(i,e)}})},loadClientPluginStrings:function(a,c){var b=c+this.pluginClientStringsFile;Ext.Ajax.request({async:false,url:b,scope:this,success:function(d){var e=Ext.decode(d.responseText,true);Locale.setPluginStrings(a,e)}})},addCustomView:function(a){var b=a.getViewToCustomize();if(b){this.customizationViews[b]=this.customizationViews[b]||[];this.customizationViews[b].push(a)}},getCustomViews:function(a){return this.customizationViews[a]},getPluginStructureUrl:function(a){return this.pluginBaseDir+"/"+a+"/"+this.pluginStructureFile},getPluginLibsPath:function(){return this.getLanguagePath()+this.pluginClientLibs},getLanguageConfig:function(a){return this.pluginStructure[(a)?a:this.language]},setLanguage:function(d,c){var a=this;a.language=d;if(Ext.isFunction(this.beforeSetLanguage)){var b=Ext.bind(function(){a.loadLanguage(c)},a);this.beforeSetLanguage(d,b)}else{this.loadLanguage(c)}},getLanguage:function(){return this.language},getLanguagePath:function(){return this.pluginBaseDir+"/"+this.language+"/"},getLanguageSchemaPath:function(){return this.getLanguagePath()+"schema.xsd"},getLocaleByDocType:function(d,c){var a=this.getDocTypesByLang(d);for(var b=0;bi.waweConfig.name};this.buttonsReferences={};l.removeAll();e.removeAll();for(var d=0;d'}),newElement=Ext.DomHelper.createDom({tag:"div",html:parsedHtml}),tempSelection=Ext.query("*[class*="+DomUtils.tempSelectionClass+"]",newElement)[0];if(!selectedNodes||selectedNodes.length==0){return[]}selectedNodes[0].parentNode.insertBefore(newElement,selectedNodes[0]);if(tempSelection){Ext.each(selectedNodes,function(e){tempSelection.parentNode.insertBefore(e,tempSelection)});tempSelection.parentNode.removeChild(tempSelection)}newElement=a.domReplace(newElement.childNodes[0],newElement);this.addBreakingElements(newElement);return[newElement]},wrapInline:function(m){var n=this.getController("Editor"),r=n.applyPattern("tempselection",{inline:"span",classes:DomUtils.tempSelectionClass}),e=[],s,b=false,o,q=r.length;for(var k=0;k"+h.waweConfig.name+""})});return}if(c&&DomUtils.getButtonIdByElementId(c.getAttribute(DomUtils.elementIdAttribute))==h.id){return[c]}if(a){d=this.wrapBlock(h)}else{d=this.wrapInline(h)}Ext.each(d,function(p){var o=new Ext.Element(p),l=p.cloneNode(true),n=this.getMarkingId(h.id),m=h.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||"",k=e.wrapperClass;p.setAttribute(DomUtils.elementIdAttribute,n);p.setAttribute("class",e.wrapperClass);if(g.attribute&&g.attribute.name&&g.attribute.value){p.setAttribute(m+g.attribute.name,g.attribute.value)}b.applyAllStyles('*[class="'+k+'"]',e.wrapperStyle,h.waweConfig.shortLabel);DocProperties.setMarkedElementProperties(n,{button:h,htmlElement:p})},this);this.application.fireEvent("nodeChangedExternally",d,{select:false,scroll:false,click:(g.silent)?false:true,change:true,silent:g.silent})},unmarkNode:function(b,c){if(c){var k=Ext.query("["+DomUtils.elementIdAttribute+"]",b);Ext.each(k,function(l){this.unmarkNode(l)},this)}var d=b.parentNode,e=b.getAttribute(DomUtils.elementIdAttribute),a=new Ext.Element(b),h=a.next("."+DomUtils.breakingElementClass),g=a.prev("."+DomUtils.breakingElementClass);while(b.hasChildNodes()){b.parentNode.insertBefore(b.firstChild,b)}if(h){h.remove()}if(g){var i=g.prev();if(!i||!i.getAttribute(DomUtils.elementIdAttribute)){g.remove()}}b.parentNode.removeChild(b);delete DocProperties.markedElements[e]},unmark:function(d,g){var i=this.getController("Editor").getSelectionObject("html",null,true);var h=DomUtils.getFirstMarkedAncestor(i.start),b=DomUtils.getFirstMarkedAncestor(i.end),e=DomUtils.getSiblings(h,b),a={change:true,click:true},c=(h)?h.parentNode:b.parentNode;if(e){e=e.filter(function(k){if(k&&(k.nodeType!=DomUtils.nodeType.ELEMENT||!k.getAttribute(DomUtils.elementIdAttribute))){return false}else{return true}})}else{h?e=[h]:e=[b]}Ext.each(e,function(k){var l=k.getAttribute(DomUtils.elementIdAttribute);this.unmarkNode(k,g);if(g){this.application.fireEvent("nodeRemoved",l)}},this);if(g){a.change=false}this.application.fireEvent("nodeChangedExternally",c,a)},autoWrap:function(g,e){if(!e.nodes|!g){return}var b=this.getController("Editor"),d=g.waweConfig.pattern,a=DomUtils.blockTagRegex.test(d.wrapperElement),h=g.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||"",c=d.wrapperClass;Ext.each(e.nodes,function(p,k){var o=new Ext.Element(p),m=this.getMarkingId(g.id),l,n,i=DomUtils.getFirstMarkedAncestor(p);p.removeAttribute("class");if(i&&DomUtils.getButtonIdByElementId(i.getAttribute(DomUtils.elementIdAttribute))==g.id){return}p.setAttribute(DomUtils.elementIdAttribute,m);p.setAttribute("class",d.wrapperClass);if(e.attributes&&(l=e.attributes[k].name)&&(n=e.attributes[k].value)){p.setAttribute(h+l,n)}b.applyAllStyles('*[class="'+c+'"]',d.wrapperStyle,g.waweConfig.shortLabel);if(a){this.addBreakingElements(p)}DocProperties.setMarkedElementProperties(m,{button:g,htmlElement:p})},this);if(!e.noEvent){this.application.fireEvent("nodeChangedExternally",e.nodes,{select:false,scroll:false,click:(e.silent)?false:true,change:true,silent:e.silent})}},addBreakingElements:function(a){var b='

';Ext.DomHelper.insertHtml("afterEnd",a,b);if(!a.previousSibling||a.previousSibling.getAttribute("class")!=DomUtils.breakingElementClass){Ext.DomHelper.insertHtml("beforeBegin",a,b)}},isAllowedElement:function(l,b){var c=this.getStore("LanguagesPlugin").getData(),k=this.getController("Editor").getBody(),d=c.semanticRules,a,g,e,m,h,i;if(c.semanticRules&&c.semanticRules.elements){a=c.semanticRules.elements;g=a[b.name];if(l){e=l.getAttribute(DomUtils.elementIdAttribute);if(DocProperties.markedElements[e]&&DocProperties.markedElements[e].button){m=DocProperties.markedElements[e].button.waweConfig;h=a[m.name];if(h&&h.children){i=h.children[b.name];if(i){if(i.cardinality>0&&i.cardinality<=this.getNumberOfChildrenByClass(l,b.name)){return false}}else{return true}}}}if(g){if(g.cardinality>0&&g.cardinality<=this.getNumberOfChildrenByClass(k,b.name,true)){return false}}}return true},getNumberOfChildrenByClass:function(d,a,c){var g=new Ext.Element(d),e=0,b=g.query("*[class~="+a+"]");return b.length},searchObjInArrayByAttribute:function(e,c,d){var b=e.length,a;for(a=0;a0){h=new Ext.Element(h[0]);h.scrollIntoView(a.items.items[0].getEl(),false,true)}break}}e=e.parentNode}},createTreeData:function(g,n,l){var q={},k=[];if(g&&g.el&&g.el.nodeType==DomUtils.nodeType.ELEMENT){var p=g.el.getAttribute("class");var a=g.el.getAttribute(DomUtils.elementIdAttribute);if(a&&DocProperties.markedElements[a]){var h=DocProperties.markedElements[a].button;wrapperClass=h.waweConfig.pattern.wrapperClass,newIcon='
',iconColor=h.waweConfig.pattern.styleObj["background-color"],iconStyle="height: 12px; width: 12px; -moz-border-radius: 6px; border-radius: 6px; background-color: "+iconColor+"; display: inline-block; vertical-align:middle; margin-right: 5px; margin-bottom: 1px; border: 1px solid #6D6D6D;";DomUtils.addStyle('*[class="'+this.iconBaseCls+" "+wrapperClass+'"]',iconStyle,document);if(p){var d=p.split(" ");var o=newIcon+d[(d.length-1)];q.icon=Statics.treeIcon[d[0]];var c=DomUtils.getNodeExtraInfo(g.el,"hcontainer");if(c){o+=" ("+c+")"}q.text=o}else{q.text=newIcon+a}q.cls=a}if(g.children){q.children=[];for(var e=0;e0){q.expanded=true;q.leaf=false}else{q.leaf=true}}return q}else{return null}},buildTree:function(d,c){var o=this,r=Ext.getStore("Explorer"),g=this.getExplorer(),q=r.getRootNode();try{if(c!="partial"||DomUtils.getFirstMarkedAncestor(d.parentNode)==null){var p=DocProperties.getDocClassList().split(" "),k=Ext.query("."+p[(p.length-1)],d.ownerDocument)[0],a=DomUtils.xmlToJson(k),i=this.createTreeData(a),b;if(Ext.isArray(i)){b={text:"root",children:i}}else{b=i}r.setRootNode(b)}else{var h=d;var n=null;while(!n&&h&&h.nodeType==DomUtils.nodeType.ELEMENT){var m=h.getAttribute(DomUtils.elementIdAttribute);if(m){if(q.findChild("cls",m,true)){n=h}}h=h.parentNode}var a;if(n){a=DomUtils.xmlToJson(n)}else{a=DomUtils.xmlToJson(d)}var i=this.createTreeData(a,null,null);if(!Ext.isArray(i)){i=[i]}Ext.each(i,function(s,e){var t=q.findChild("cls",s.cls,true);if(!t){q.insertChild(e,s);q.set("leaf",false);q.expand()}else{t.parentNode.replaceChild(s,t)}},this)}}catch(l){}},onChangeEditorMode:function(a){var b=this.getExplorer();if(a.sidebarsHidden){b.collapse()}else{b.expand()}},init:function(){this.application.on({editorDomChange:this.buildTree,editorDomNodeFocused:this.expandItem,scope:this});this.application.on(Statics.eventsNames.changedEditorMode,this.onChangeEditorMode,this);this.control({explorer:{itemclick:function(a,g,d,b,e){var c=DocProperties.markedElements[g.getData().cls];if(c){this.application.fireEvent("nodeFocusedExternally",c.htmlElement,{select:true,scroll:true,click:true})}},itemcontextmenu:function(a,k,g,b,h,d){var i=[],c=this.getContextMenu();h.preventDefault();a.fireEvent("itemclick",a,k,g,b,h,d);c.showAt(h.getXY())}}})}},0,0,0,0,0,0,[LIME.controller,"Explorer"],0));(Ext.cmd.derive("LIME.controller.Language",Ext.app.Controller,{views:["Main","main.editor.Path"],refs:[{ref:"main",selector:"main"}],metaTemplate:{outer:{identification:{FRBRWork:{FRBRcountry:{"@value":null}},FRBRExpression:{FRBRlanguage:{"@language":null}},FRBRManifestation:{}}},inner:{FRBRthis:{"@value":null},FRBRuri:{"@value":null},FRBRdate:{"@date":null,"@name":null},FRBRauthor:{"@href":null,"@as":null},componentInfo:{componentData:{"@id":null,"@href":null,"@name":null,"@showAs":null}}}},translateContent:function(g,q,o){var d=this,i=this.getController("Editor"),l=g.docDom,p=new Ext.Element(l),a=p.query(DomUtils.getTempClassesQuery()),c=p.query("*["+DomUtils.elementIdAttribute+"]"),n={};try{Ext.each(a,function(r){var e=r.getAttribute("class");if(e!=DomUtils.breakingElementClass||!r.hasChildNodes()){r.parentNode.removeChild(r)}});Ext.each(c,function(e){DomUtils.setLanguageMarkingId(e,n);Interpreters.wrappingRulesHandlerOnTranslate(e)},this)}catch(k){if(o&&Ext.isFunction(o.setLoading)){o.setLoading(false)}return}if(DocProperties.frbrDom){var m=p.down("*["+DocProperties.docIdAttribute+"]",true);var b=Ext.clone(DocProperties.frbrDom);b.setAttribute("class","meta");if(m&&!m.querySelector("*[class*=meta]")){m.insertBefore(b,m.firstChild)}}var h=i.serialize(p.dom);Language.translateContent(h,DocProperties.documentInfo.docMarkingLanguage,{success:function(e){var r=vkbeautify.xml(e);if(Ext.isFunction(q)){q.call(d,r)}if(o&&Ext.isFunction(o.setLoading)){o.setLoading(false)}},failure:function(){alert("error");if(o&&Ext.isFunction(o.setLoading)){o.setLoading(false)}}})},beforeTranslate:function(m,a,k){var b=this,h=this.getController("Editor"),c=TranslatePlugin.beforeTranslate,d=h.getContent().replace(/id="ext-gen(\d)+"/g,""),e={},g,l;if(k&&Ext.isFunction(k.setLoading)){k.setLoading(true)}var i=Ext.DomHelper.createDom({tag:"div",html:d});if(c){e.docDom=i;l=Ext.Function.bind(c,TranslatePlugin,[Ext.Object.merge(e,a)]);g=l();if(!g){g=e}}b.translateContent(g,m,k)},buildInternalMetadata:function(b){var d=document.createElement("div"),c=DocProperties.documentInfo,e;d.setAttribute("class",Statics.metadata.internalClass);e=Utilities.jsonToHtml(c);d.appendChild(e);if(b&&DocProperties.frbrDom){var a=document.createElement("div");a.setAttribute("class",Statics.metadata.containerClass);a.appendChild(d);a.appendChild(Ext.clone(DocProperties.frbrDom));return a}return d},buildMetadata:function(c,q,a){var r=new XMLSerializer(),h=document.createElement("div"),o=Ext.clone(this.metaTemplate),n=o.inner,p=o.outer,g=p.identification,m=g.FRBRWork,i=g.FRBRExpression,l=g.FRBRManifestation,t,s={workUri:"(.xml)|(%lang%@)/",workOnlyNumber:"/\\w{3}@.*$",expressionUri:"(.xml)"};h.setAttribute("class",Statics.metadata.containerClass);t=this.buildInternalMetadata(h);h.appendChild(t);for(var b in g){for(var d in n){g[b][d]=Ext.clone(n[d])}}if(c&&c.work&&c.expression&&c.manifestation){var k=new RegExp(s.expressionUri.replace("%lang%",c.expression.docLang),"gi");m.FRBRcountry["@value"]=c.work.nationality;m.FRBRthis["@value"]=a.replace(k,"");m.FRBRuri["@value"]=a.replace(new RegExp(s.workOnlyNumber,"gi"),"");m.FRBRdate["@date"]=c.work.date;i.FRBRthis["@value"]=a.replace(s.expressionUri,"");i.FRBRuri["@value"]=a.split(c.expression.docLang+"@")[0]+c.expression.docLang+"@";i.FRBRlanguage["@language"]=c.expression.docLang;i.FRBRdate["@date"]=c.expression.date;l.FRBRthis["@value"]=a;l.FRBRuri["@value"]=a}DocProperties.metadata=o;DocProperties.frbrDom=null;if(q){var e=Utilities.jsonToHtml(p);e.setAttribute("class",Statics.metadata.frbrClass);this.parseFrbrMetadata(e);h.appendChild(e);h.setAttribute("class",Statics.metadata.containerClass);return h}return p},parseMetadata:function(h,l){var n={},m;try{m=new Ext.Element(h)}catch(i){var b=new DOMParser();var o=b.parseFromString(l,"application/xml");m=new Ext.Element(o)}var d=m.down("*[class=internalMetadata]"),c,p,k,a,g;if(d){c=d.down("*[class=docLang]");p=d.down("*[class=docLocale]");k=d.down("*[class=docType]");docMarkingLanguage=d.down("*[class=docMarkingLanguage]");if(c&&c.dom.firstChild&&c.dom.firstChild.nodeValue){n.docLang=c.dom.firstChild.nodeValue}if(p&&p.dom.firstChild&&p.dom.firstChild.nodeValue){n.docLocale=p.dom.firstChild.nodeValue}if(k&&k.dom.firstChild&&k.dom.firstChild.nodeValue){n.docType=k.dom.firstChild.nodeValue}if(docMarkingLanguage&&docMarkingLanguage.dom.firstChild&&docMarkingLanguage.dom.firstChild.nodeValue){n.docMarkingLanguage=docMarkingLanguage.dom.firstChild.nodeValue}}g=m.down("*[class=frbr]",true);if(g){this.parseFrbrMetadata(g);n.nationality=DocProperties.frbr.work.nationality}return n},parseFrbrMetadata:function(d){var b=DocProperties.frbr,g=new Ext.Element(d);b.work={};b.expression={};b.manifestation={};DocProperties.frbrDom=d;var a=g.down("*[class=FRBRWork] *[class=FRBRcountry]",true);if(a){b.work.nationality=a.getAttribute("value")}var c=g.down("*[class=FRBRWork] *[class=FRBRdate]",true);if(c){b.work.date=new Date(c.getAttribute("date"))}var m=g.down("*[class=FRBRWork] *[class=FRBRuri]",true);if(m){b.work.FRBRuri=m.getAttribute("value")}var e=g.down("*[class=FRBRExpression] *[class=FRBRlanguage]",true);if(e){b.expression.docLang=e.getAttribute("language")}var h=g.down("*[class=FRBRExpression] *[class=FRBRdate]",true);if(h){b.expression.date=new Date(h.getAttribute("date"))}var k=g.down("*[class=FRBRExpression] *[class=FRBRuri]",true);if(k){b.expression.FRBRuri=k.getAttribute("value")}var l=g.down("*[class=FRBRManifestation] *[class=FRBRdate]",true);if(l){b.manifestation.date=new Date(l.getAttribute("date"))}var i=g.down("*[class=FRBRManifestation] *[class=FRBRuri]",true);if(i){b.manifestation.FRBRuri=i.getAttribute("value")}this.application.fireEvent(Statics.eventsNames.frbrChanged)},getLanguagePrefix:function(){var a=this.getStore("LanguagesPlugin").getData();return a.markupMenuRules.defaults.attributePrefix},saveDocument:function(b,c,d,a){var c=Ext.Object.merge(c,{requestedService:Statics.services.saveAs,file:b});Ext.Ajax.request({url:Utilities.getAjaxUrl(),params:c,scope:this,success:function(e){if(Ext.isFunction(d)){Ext.callback(d,a,[e,b])}}})},beforeLoad:function(c,p){var b=this.application,d=LoadPlugin.beforeLoad,k=new XMLSerializer(),g=c,o,i,a=new DOMParser(),n,m={},l=[];if(d&&!g.beforeLoaded){if(c.docText){try{i=a.parseFromString(c.docText,"application/xml");if(i.documentElement.tagName=="parsererror"||i.documentElement.querySelector("parseerror")||i.documentElement.querySelector("parsererror")){p(c);return}else{c.docDom=i}}catch(h){Ext.log({level:"error"},h);p(c);return}}o=Ext.Function.bind(d,LoadPlugin,[c]);g=o();if(g){g.beforeLoaded=true;if(g.metaResults){DocProperties.docsMeta={};Ext.each(g.metaResults,function(e,r){var q=e.docType;m[q]=m[q]+1||1;if(e.docDom){e.docDom.setAttribute(DocProperties.docIdAttribute,r)}q=(m[q]>1)?q+m[q]:q;l.push({name:q,docId:r});DocProperties.docsMeta[r]=e})}c.docText=(g.docDom)?k.serializeToString(g.docDom):c.docText;if(g.metaDom){this.parseFrbrMetadata(g.metaDom)}}else{g=c}}p(g)},afterLoad:function(b){var a=Ext.Function.bind(LoadPlugin.afterLoad,LoadPlugin,[b,this.application]);a()},beforeSave:function(b){var a=Ext.Function.bind(SavePlugin.beforeSave,SavePlugin,[b]);a()},afterSave:function(b){var a=Ext.Function.bind(SavePlugin.afterSave,SavePlugin,[b,this.application]);a()},init:function(){var a=this;this.application.on(Statics.eventsNames.translateRequest,this.beforeTranslate,this);this.application.on(Statics.eventsNames.documentLoaded,this.beforeTranslate,this);this.application.on(Statics.eventsNames.afterLoad,this.afterLoad,this);this.application.on(Statics.eventsNames.beforeLoad,this.beforeLoad,this);this.application.on(Statics.eventsNames.saveDocument,this.saveDocument,this);this.application.on(Statics.eventsNames.beforeSave,this.beforeSave,this);this.application.on(Statics.eventsNames.afterSave,this.afterSave,this);this.control({main:{tabchange:function(b,e,c){var d=this;Ext.defer(function(){d.application.fireEvent(Statics.eventsNames.changedEditorMode,{sidebarsHidden:e.notEditMode})},100)}}})}},0,0,0,0,0,0,[LIME.controller,"Language"],0));(Ext.cmd.derive("LIME.view.ProgressWindow",Ext.Window,{width:350,closable:false,resizable:false,collapsible:false,draggable:false,modal:true,items:[{xtype:"progressbar"}],initComponent:function(){this.title=Locale.strings.progressBar.title;this.callParent(arguments)}},0,["progressWindow"],["progressWindow","panel","window","component","container","box"],{progressWindow:true,panel:true,window:true,component:true,container:true,box:true},["widget.progressWindow"],0,[LIME.view,"ProgressWindow"],0));(Ext.cmd.derive("LIME.controller.ProgressWindow",Ext.app.Controller,{views:["ProgressWindow"],refs:[{selector:"progressWindow",ref:"progressWindow"}],progressStep:0.05,progressStart:function(b,a){var c=this.getProgressWindow();if(b&&Ext.isString(b)){c.setTitle(b)}if(!(a&&a.value&&a.text)){this.progressRawUpdate(0,Ext.emptyString,false)}else{this.progressRawUpdate(a.value,a.text)}c.show()},progressRawUpdate:function(b,d,a){var e=this.getProgressWindow(),c=e.down("progressbar");c.updateProgress(b,(Ext.isString(d))?d:null,a)},progressUpdate:function(b){var c=this.getProgressWindow(),a=c.down("progressbar");this.progressRawUpdate(a.value+this.progressStep,b,true)},progressEnd:function(){var b=this.getProgressWindow(),a=b.down("progressbar");b.hide()},init:function(){this.application.on(Statics.eventsNames.progressStart,this.progressStart,this);this.application.on(Statics.eventsNames.progressUpdate,this.progressUpdate,this);this.application.on(Statics.eventsNames.progressEnd,this.progressEnd,this)}},0,0,0,0,0,0,[LIME.controller,"ProgressWindow"],0));(Ext.cmd.derive("LIME.controller.PreferencesManager",Ext.app.Controller,{cached:false,userPreferences:{userFullName:null,defaultLanguage:null,defaultLocale:null,views:null,lastOpened:null},setUserPreferences:function(b,d,i){if(!b){throw"No preferences specified"}var g=this,e=this.getController("LoginManager"),a=e.getUserInfo(),c={requestedService:Statics.services.userPreferences,requestedAction:(d)?"Create_User_Preferences":"Set_User_Preferences",userName:b.username||a.username,password:b.password||a.password},h;for(pref in this.userPreferences){if(b[pref]){this.userPreferences[pref]=b[pref];if(Ext.isArray(b[pref])){b[pref]=b[pref].join(",")}c[pref]=b[pref]}else{if(Ext.isArray(this.userPreferences[pref])){c[pref]=this.userPreferences[pref].join(",")}else{c[pref]=(this.userPreferences[pref])?this.userPreferences[pref]:Ext.emptyString}}}h=Utilities.getAjaxUrl(c);if(d){Ext.Ajax.request({url:h,success:function(l){try{var k=JSON.parse(l.responseText)}catch(m){throw"Invalid JSON (Preferences)"}if(k.success!="true"){Ext.Msg.alert(Locale.strings.error,Locale.strings.noPreferences)}if(i){i(this.userPreferences)}},failure:function(k){Ext.Msg.alert(Locale.strings.error,Locale.strings.serverFailure)}})}else{Ext.Ajax.request({url:h,success:function(l){var k=JSON.parse(l.responseText);if(k.success!="true"){Ext.Msg.alert(Locale.strings.error,Locale.strings.noPreferences)}if(i){i(this.userPreferences)}},failure:function(k){Ext.Msg.alert(Locale.strings.error,Locale.strings.serverFailure)}})}},getUserPreferences:function(a,h){var d=this.getController("LoginManager"),g=this,c,b=d.getUserInfo(),e;if(!a&&!h){return g.userPreferences}if(g.cached){a({user:g.cached})}e=Utilities.getAjaxUrl({requestedService:Statics.services.userPreferences,requestedAction:"Get_User_Preferences",userName:b.username,password:b.password});Ext.Ajax.request({url:e,success:function(k){var i=JSON.parse(k.responseText);if(i.success!="true"){var l=i.msg;Ext.Msg.alert(Locale.strings.error,(Locale.strings.prefErrors[l])?Locale.strings.prefErrors[l]:Locale.strings.prefErrors.GENERIC)}if(a){g.userPreferences=i.user;c=g.userPreferences;if(c.views){c.views=c.views.view;if(!Ext.isArray(c.views)){c.views=[c.views]}}else{c.views=[]}g.cached=true;a(c)}},failure:function(i){Ext.Msg.alert(Locale.strings.error,Locale.strings.internalServerError);if(h){h(i)}}})},loadUserPreferences:function(d){var b=d,c=Locale.strings.languageCode,e=b.defaultLanguage,a=b.views;if(c!=e){this.setUserPreferences({defaultLanguage:c})}}},0,0,0,0,0,0,[LIME.controller,"PreferencesManager"],0));(Ext.cmd.derive("LIME.controller.Notification",Ext.app.Controller,{showNotification:function(a){var b=a.content,d="ux-notification-icon-information",c="ux-notification-icon-error";if(!this.nofification){this.nofification=Ext.create("widget.uxNotification",{title:Locale.strings.error,position:"tr",useXAxis:true,closeAction:"hide",autoClose:false,shadow:false,spacing:20,slideInDuration:1500,slideBackDuration:1500,slideInAnimation:"elasticIn",maxHeight:600,autoScroll:true,slideBackAnimation:"elasticIn"})}if(a.width){this.nofification.setWidth(a.width)}if(a.title){this.nofification.setTitle(a.title)}this.nofification.setIconCls((a.status)?d:c);this.nofification.update(b);this.nofification.show()},init:function(){this.application.on(Statics.eventsNames.showNotification,this.showNotification,this)}},0,0,0,0,0,0,[LIME.controller,"Notification"],0));(Ext.cmd.derive("LIME.store.Explorer",Ext.data.TreeStore,{autoLoad:true},0,0,0,0,0,0,[LIME.store,"Explorer"],0));(Ext.cmd.derive("LIME.store.Languages",Ext.data.Store,{fields:["code","language"],data:[{code:"en",language:"English"},{code:"es",language:"Spanish/Latin American"},{code:"it",language:"Italian"},{code:"ro",language:"Romanian"},{code:"ru",language:"Russian"}]},0,0,0,0,0,0,[LIME.store,"Languages"],0));(Ext.cmd.derive("LIME.model.OpenFile",Ext.data.Model,{proxy:{type:"ajax",reader:"xml"},fields:["path","id","text","cls","leaf","name","relPath","originalName"]},0,0,0,0,0,0,[LIME.model,"OpenFile"],0));(Ext.cmd.derive("LIME.store.OpenFile",Ext.data.Store,{model:"LIME.model.OpenFile",proxy:{type:"ajax",extraParams:{isXml:true},reader:{type:"xml",record:"node",idProperty:"id",totalRecords:"ajax-response"}},listeners:{beforeload:function(b,a,c){if(localStorage.getItem("userCollection")){this.getProxy().url=Utilities.getAjaxUrl({requestedService:Statics.services.listFiles,collection:localStorage.getItem("userCollection"),userName:localStorage.getItem("username"),password:localStorage.getItem("password"),node:b.requestNode})}else{return false}},load:function(c,b,e,d){var a=Ext.getStore("Nationalities");Ext.each(b,function(g){var h=a.findRecord("alpha-2",g.data.text,0,false,false,true);g.data.name=(h)?h.get("name"):g.data.text;if(g.data.name!=g.data.text){g.data.originalName=g.data.text}},this)}}},0,0,0,0,0,0,[LIME.store,"OpenFile"],0));(Ext.cmd.derive("LIME.store.Locales",Ext.data.Store,{fields:["name"]},0,0,0,0,0,0,[LIME.store,"Locales"],0));(Ext.cmd.derive("LIME.store.Nationalities",Ext.data.Store,{autoLoad:true,fields:["alpha-2","name"],proxy:{type:"ajax",url:"config/locale/countries.json",reader:{type:"json",root:"countries"}}},0,0,0,0,0,0,[LIME.store,"Nationalities"],0));(Ext.cmd.derive("LIME.store.DocumentTypes",Ext.data.Store,{fields:["name"]},0,0,0,0,0,0,[LIME.store,"DocumentTypes"],0));(Ext.cmd.derive("LIME.store.DocumentLanguages",Ext.data.Store,{autoLoad:true,fields:["code","name"],proxy:{type:"ajax",url:"config/locale/languages.json",reader:{type:"json",root:"languages"}}},0,0,0,0,0,0,[LIME.store,"DocumentLanguages"],0));(Ext.cmd.derive("LIME.store.MarkupLanguages",Ext.data.Store,{fields:["name"]},0,0,0,0,0,0,[LIME.store,"MarkupLanguages"],0));(Ext.cmd.derive("LIME.store.OpenedDocuments",Ext.data.TreeStore,{},0,0,0,0,0,0,[LIME.store,"OpenedDocuments"],0));(Ext.cmd.derive("LIME.Application",Ext.app.Application,{name:"LIME",controllers:["CustomizationManager","DocumentUploader","LoginManager","MainToolbar","Storage","Editor","MarkingMenu","Marker","Explorer","Language","ProgressWindow","PreferencesManager","Notification"],stores:["Explorer","Languages","OpenFile","LanguagesPlugin","Locales","Nationalities","DocumentTypes","DocumentLanguages","MarkupLanguages","OpenedDocuments"],launch:function(){this.secureLaunch()},secureLaunch:function(){if(!Config.loadedFinish){Ext.defer(this.secureLaunch,100,this)}else{this.getStore("MarkupLanguages").loadData(Config.languages);Ext.create("LIME.view.Viewport")}}},0,0,0,0,0,0,[LIME,"Application"],0));(Ext.cmd.derive("LIME.DocProperties",Ext.Base,{singleton:true,alternateClassName:"DocProperties",metadataClass:"limeMetadata",documentBaseClass:"document",docIdAttribute:"docid",markingLanguageAttribute:"markinglanguage",docClsTpl:new Ext.Template("document {docType}"),documentInfoTemplate:{nationality:null,docType:null,docLocale:null,date:null,number:null,docName:null,docLang:null,docMarkingLanguage:null,folder:null},frbrTemplate:{work:null,expression:null,manifestation:null},markedElements:{},currentEditorFile:{id:""},getDocType:function(){return this.documentInfo.docType},getDocClassList:function(){var a=this.documentInfo.docType;return this.docClsTpl.apply({docType:a})},getLang:function(){return this.documentInfo.docLang},removeAll:function(){this.markedElements={};this.currentEditorFile.id=""},setMarkedElementProperties:function(b,a){this.markedElements[b]=a},getMarkedElement:function(a){return this.markedElements[a]},setDocName:function(a){this.documentInfo.docName=a},setDocId:function(a){this.documentInfo.docId=a;this.currentEditorFile.id=a},setDocumentInfo:function(a){this.documentInfo=Ext.Object.merge(this.documentInfo,a)},setFrbr:function(a){var b=Ext.Object.merge(this.frbr,a);this.frbr=b},clearMetadata:function(a){this.initVars();a.fireEvent(Statics.eventsNames.frbrChanged)},getDocumentUri:function(){if(this.frbr&&this.frbr.manifestation){return this.frbr.manifestation.FRBRuri}return},initVars:function(){this.frbr=Ext.clone(this.frbrTemplate);this.documentInfo=Ext.clone(this.documentInfoTemplate);this.frbrDom=null},constructor:function(){this.initVars()}},1,0,0,0,0,0,[LIME,"DocProperties",0,"DocProperties"],0));(Ext.cmd.derive("LIME.DomUtils",Ext.Base,{singleton:true,alternateClassName:"DomUtils",tempParsingClass:"tempParsing",toRemoveClass:"useless",breakingElementClass:"breaking",tempSelectionClass:"tempSelection",elementIdAttribute:"internalId",langElementIdAttribute:"id",elementIdSeparator:"_",blockTagRegex:/<(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)(\/)?>/i,blockRegex:/^(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i,vowelsRegex:/([a, e, i, o, u]|[0-9]+)/gi,nodeType:{ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},appendChildren:function(e,d,c){var a=e;d=d.nextSibling;var b;do{b=a.nextSibling;c.appendChild(a);a=b}while(a!=d)},getTempClassesQuery:function(){return"."+this.tempSelectionClass+", ."+this.toRemoveClass+", ."+this.tempSelectionClass+", ."+this.breakingElementClass},getSiblings:function(c,a,g){if(!c||!a){return null}var b=c;var d=[];while(b!=a.nextSibling){var e=(Utilities.toType(g)=="regexp")?g.test(b.nodeName):b.nodeName.toLowerCase()==g;if(!g||e){d.push(b)}b=b.nextSibling}return d},moveChildrenNodes:function(b,a){while(a.firstChild){a.removeChild(a.firstChild)}while(b.firstChild){a.appendChild(b.firstChild)}},getNodeByName:function(a,b){var c=a;while(c.nodeName.toLowerCase()!="body"){var d=c.nodeName.toLowerCase();if((Utilities.toType(b)=="regexp")?b.test(d):(d==b.toLowerCase())){return c}c=c.parentNode}return null},isDescendant:function(a,c){var b=c.parentNode;while(b!=null){if(b==a){return true}b=b.parentNode}return false},nestingLevel:function(a){var b=1;while(a!=null){a=a.parentNode;b++}return b},xmlToJson:function(a){var d;if(a&&a.nodeType==DomUtils.nodeType.ELEMENT){d={};d.el=a;if(a&&a.hasChildNodes()){d.children=[];for(var b=0;b/gm,"")}if(d.length>o){d=d.substr(0,o)+"..."}}return d},getFirstMarkedAncestor:function(a){if(!a){return null}if(a&&a.nodeType==DomUtils.nodeType.ELEMENT&&a.getAttribute(DomUtils.elementIdAttribute)!=null){return a}a=(a.parentNode)?a.parentNode:null;while(a&&a.nodeType==DomUtils.nodeType.ELEMENT){if(a.getAttribute(DomUtils.elementIdAttribute)){return a}a=a.parentNode}return null},getMarkedChildrenId:function(b){var a=[];Ext.each(Ext.query("["+DomUtils.elementIdAttribute+"]",b),function(d){var c=d.getAttribute(DomUtils.elementIdAttribute);a.push(c)});return a},getButtonIdByElementId:function(a){if(!a){return null}return a.split(DomUtils.elementIdSeparator)[0]},getButtonByElement:function(c){var b,a;if(c&&c.getAttribute){b=c.getAttribute(DomUtils.elementIdAttribute);a=DocProperties.getMarkedElement(b);if(b&&a){return a.button}}return null},setLanguageMarkingId:function(h,e){var c="",b=h.getAttribute(this.elementIdAttribute);if(b&&DocProperties.markedElements[b]){var a=1,d=DocProperties.markedElements[b].button,g=d.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||"";if(h.getAttribute(g+this.langElementIdAttribute)){return}c=d.id.replace(this.vowelsRegex,""),parentMarked=this.getFirstMarkedAncestor(h.parentNode);if(parentMarked){parentId=parentMarked.getAttribute(g+this.langElementIdAttribute);if(!e[parentId]){e[parentId]={}}else{if(e[parentId][c]){a=e[parentId][c]}}e[parentId][c]=a+1;c=parentId+"-"+c}else{if(!e[c]){e[c]=a+1}else{a=e[c]}}c+=a}if(c!=""){h.setAttribute(g+this.langElementIdAttribute,c)}},findNodeByText:function(d,e,b){containsText=function(g){if(b&&Ext.Array.indexOf(b,g)!=-1){return NodeFilter.FILTER_REJECT}else{if(g.innerHTML.indexOf(d)!=-1){return NodeFilter.FILTER_ACCEPT}else{return NodeFilter.FILTER_SKIP}}};var a=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,containsText,false);var c;while(a.nextNode()){c=a.currentNode}return c},findTextNodes:function(d,g){containsText=function(e){if(e.textContent.indexOf(d)!=-1){return NodeFilter.FILTER_ACCEPT}else{return NodeFilter.FILTER_SKIP}};var a=g.ownerDocument.createTreeWalker(g,NodeFilter.SHOW_TEXT,containsText,false);var b=[];try{while(a.nextNode()){b.push(a.currentNode)}}catch(c){Ext.log({level:"error"},c)}return b},stringIndexesOf:function(c,b){c+="";b+="";var e=0,a=[],d=b.length;while(e!=-1){e=c.indexOf(b,e);if(e!=-1){a.push(e);e+=d}}return a},addStyle:function(b,h,g){var c=Ext.query("head",g)[0],e=Ext.query("style",c)[0];if(!e){e=g.createElement("style");c.appendChild(e)}if(e.innerHTML.indexOf(b+" {")==-1){var a=b+" {"+h+"}";var d=g.createTextNode(a);e.appendChild(d)}},parseFromString:function(b){var d=new DOMParser(),a;try{a=d.parseFromString(b,"application/xml");if(a.documentElement.tagName=="parsererror"||a.documentElement.querySelector("parseerror")||a.documentElement.querySelector("parsererror")){a=false}}catch(c){a=false}return a},serializeToString:function(b){var a=new XMLSerializer();return a.serializeToString(b)},getDocTypeByNode:function(b){var a=b.getAttribute("class").split(" ");return Ext.Array.difference(a,[DocProperties.documentBaseClass])[0]}},0,0,0,0,0,0,[LIME,"DomUtils",0,"DomUtils"],0));(Ext.cmd.derive("LIME.Interpreters",Ext.Base,{singleton:true,alternateClassName:"Interpreters",flags:{content:"&content;"},parsePattern:function(k,g,a){var c=Ext.clone(g);var h=a.pattern;var b=this.mergePattern(c,a);b.wrapperClass=this.parseClass(b.wrapperClass,k,h);if(b.remove){for(var d in b.remove){var e=b.remove[d];if(e.length>0){Ext.each(e,function(i){delete b[d][i]})}else{delete b[d]}}}return b},wrappingRulesHandlerOnTranslate:function(c){var d=this,a=c.getAttribute(DomUtils.elementIdAttribute);button=(DocProperties.markedElements[a])?DocProperties.markedElements[a].button:null,rules=(button)?button.waweConfig.pattern.wrapperRules:[],prefix=(button)?(button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||""):"";var b={headingElement:function(n,k,h){if(n.conditions.parentClassContains){var l=new Ext.Element(k),p=l.parent("."+n.conditions.parentClassContains),o=l.parent(".content"),g=p.down(".content");if(p&&o&&g&&g==o){l.insertBefore(o)}else{if(p&&!g){if(!d.headings){d.headings={};d.headings.list=[];p.insertFirst(l)}else{var i,m=p.query(d.headings.cls);Ext.each(m,function(q){if(q.parentNode==p.dom){i=q}},this);if(!i){p.insertFirst(l)}else{l.insertAfter(i)}}if(!Ext.Array.contains(d.headings.list,h.name)){d.headings.list.push(h.name);if(d.headings.list.length==1){d.headings.cls="."+h.name}else{d.headings.cls+=", ."+h.name}}}}}},applyAttributes:function(l,i){if(!l.values){Ext.log({level:"error"},'Couldn\'t apply the rule "applyAttributes". No values specified.')}var g=l.values;for(attribute in g){var k=g[attribute];var h=button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix+attribute;i.setAttribute(h,k)}},addWrapperElement:function(o,h){var i=Interpreters.getButtonConfig(o.type),k=new Ext.Element(h);if(o.type&&o.type=="mod"){var p=k.parent(".mod"),g=i.rules[Utilities.buttonFieldDefault].attributePrefix||"",q=k.parent(".content");if(!p&&q){var t=Interpreters.parseElement(i.pattern.wrapperElement,{content:""});var l=Ext.DomHelper.insertHtml("beforeBegin",q.dom,t),r=new Ext.Element(l);while(q.dom.firstChild){var m=q.dom.removeChild(q.dom.firstChild);l.appendChild(m)}l.setAttribute("class",i.pattern.wrapperClass);l.setAttribute(g+DomUtils.langElementIdAttribute,"mod1");q.appendChild(l)}}else{if(o.type&&o.type=="content"){var q=k.child(".content"),s=k.child(".hcontainer");if(!q&&!s){var t=Interpreters.parseElement(i.pattern.wrapperElement,{content:""}),n=Ext.DomHelper.createDom({tag:"div",html:t});if(n.firstChild){d.contentCounter=(d.contentCounter)?d.contentCounter+1:1;n.firstChild.setAttribute("class",i.pattern.wrapperClass);while(h.hasChildNodes()){n.firstChild.appendChild(h.firstChild)}h.appendChild(n.firstChild)}}}}}};for(rule in rules){var e=b[rule];if(e){e(rules[rule],c,button.waweConfig)}}},getButtonConfig:function(a){var l=Ext.getStore("LanguagesPlugin").getData(),e=l.markupMenu[a],b=l.patterns,k=l.markupMenuRules,h=k.elements[a]||{},i=(e.label)?e.label:a,d=null,g=null,c=null;if(!h[Utilities.buttonFieldDefault]){h[Utilities.buttonFieldDefault]=k.defaults}d=(h)?Interpreters.parseWidget(h):null;g=Interpreters.parsePattern(a,b[e.pattern],e);c={markupConfig:e,pattern:g,rules:h,widgetConfig:d,name:a,label:i};return c},mergePattern:function(h,b){var d=Utilities.mergeJson(Utilities.cssToJson(h.buttonStyle),Utilities.cssToJson(b.buttonStyle));b.buttonStyle=Utilities.jsonToCss(d);if(!Ext.isObject(h.wrapperStyle)){h.wrapperStyle={"this":h.wrapperStyle}}if(!Ext.isObject(b.wrapperStyle)){b.wrapperStyle={"this":b.wrapperStyle}}var k={};var g={};for(var e in b.wrapperStyle){var a=b.wrapperStyle[e];if(!Ext.isObject(a)){k[e]=Utilities.mergeJson(Utilities.cssToJson(h.wrapperStyle[e]),Utilities.cssToJson(a));g[e]=Utilities.jsonToCss(k[e])}else{k[e]={};g[e]={};for(var c in a){k[e][c]={};g[e][c]={};if(h.wrapperStyle[e]&&h.wrapperStyle[e][c]){k[e][c]=Utilities.mergeJson(Utilities.cssToJson(h.wrapperStyle[e][c]),Utilities.cssToJson(a[c]))}else{k[e][c]=Utilities.cssToJson(a[c])}g[e][c]=Utilities.jsonToCss(k[e][c])}}}b.wrapperStyle=g;h.styleObj=d;h.wrapperStyleObj=k;return Utilities.mergeJson(h,b)},parseElement:function(c,b){var a=c.wrapperElement;var d=c.replace(this.flags.content,b.content);return d},parseClass:function(a,d,c){var b=a;Ext.each(a.split(" "),function(h){var g=Utilities.wrapperClassPatterns[h];if(g){var e=g({patternName:c,elName:d});b=b.replace(h,e)}});return b},parseWidget:function(h){var e=h.askFor,l=h.attributes;var a=h[Utilities.buttonFieldDefault].attributePrefix||"";if(!e){return null}var g={list:[]};var k="";var m=Ext.Object.getSize(e);for(var c in e){var d=e[c];var b={};b.xtype=(Statics.widgetTypePatterns[d.type])?Statics.widgetTypePatterns[d.type]:"textfield";if(m>1){b.emptyText=d.label;if(k!=""){k+=", "}k+=d.label}else{k=d.label}if(d.insert&&d.insert.attribute){b.name=a+d.insert.attribute.name;b.origName=d.insert.attribute.name}else{b.origName=c;b.name=c}g.list.push(b)}for(c in l){l[c].name=a+c}g.title=k;g.attributes=l;return g}},0,0,0,0,0,0,[LIME,"Interpreters",0,"Interpreters"],0));(Ext.cmd.derive("LIME.Statics",Ext.Base,{singleton:true,alternateClassName:"Statics",debugUrl:"/wawe-debug/",globalPatternsFile:"config/Patterns.json",editorStartContentUrl:"config/examples/editorStartContent-"+Locale.getLang()+".html",metadata:{containerClass:"metadata",frbrClass:"frbr",internalClass:"internalMetadata"},widgetTypePatterns:{text:"textfield",date:"datefield",number:"numberfield",doctype:"docTypeSelector",nationality:"nationalitySelector"},treeIcon:{container:"resources/images/icons/wawe_container_icon.png",hcontainer:"resources/images/icons/wawe_hcontainer_icon.png",inline:"resources/images/icons/wawe_inline_icon.png"},defaultContentLang:"esp",extraInfoLimit:13,eventsNames:{translateRequest:"translateRequest",progressStart:"progressStart",progressUpdate:"progressUpdate",progressEnd:"progressEnd",loadDocument:"loadDocument",beforeSave:"beforeSave",afterSave:"afterSave",saveDocument:"saveDocument",frbrChanged:"frbrChanged",beforeLoad:"beforeLoad",afterLoad:"afterLoad",documentLoaded:"documentLoaded",disableEditing:"disableEditing",enableEditing:"enableEditing",showNotification:"showNotification",changedEditorMode:"changedEditorMode",languageLoaded:"languageLoaded",selectDocument:"selectDocument",beforeCreation:"beforeCreation",nodeChangedExternally:"nodeChangedExternally"},services:{htmlToPdf:"HTML_TO_PDF",pdfExport:"HTML_TO_PDF_DOWNLOAD",xmlExport:"AKN_TO_XML_DOWNLOAD",htmlExport:"AKN_TO_HTML_DOWNLOAD",aknToEpub:"AKN_TO_EPUB",aknToPdf:"AKN_TO_PDF",aknToFile:"AKN_TO_FILE",xsltTrasform:"XSLT_TRANSFORM",getFileContent:"GET_FILE_CONTENT",getFileMetadata:"GET_FILE_METADATA",saveAs:"SAVE_FILE",listFiles:"LIST_FILES",fileToHtml:"FILE_TO_HTML",fileToString:"FILE_TO_STRING",userManager:"USER_MANAGER",userPreferences:"USER_PREFERENCES",createDocumentCollection:"CREATE_DOCUMENT_COLLECTION",filterUrls:"FILTER_URLS"}},0,0,0,0,0,0,[LIME,"Statics",0,"Statics"],0));(Ext.cmd.derive("LIME.Utilities",Ext.Base,{singleton:true,alternateClassName:"Utilities",buttonFieldDefault:"behavior",buttonIdSeparator:"-",wrapperClassPatterns:{patternName:function(a){return(a.patternName)},elementName:function(a){return(a.elName)}},ajaxUrls:{baseUrl:"php/Services.php"},getAjaxUrl:function(a){var b=this.ajaxUrls.baseUrl+"?";for(param in a){b=b+param+"="+encodeURI(a[param])+"&"}b=b.substring(0,b.length-1);return b},toType:function(a){return({}).toString.call(a).match(/\s([a-zA-Z]+)/)[1].toLowerCase()},mergeJson:function(e,d,g){if(!e){return d}if(!d){return e}var a=Ext.clone(e);if(g){var c=g(a,d);a=c.obj1;d=c.obj2}if(Ext.isObject(d)){for(var b in d){if(a[b]){a[b]=this.mergeJson(a[b],d[b],g)}else{a[b]=d[b]}}}else{a=d}return a},beforeMerge:function(c,b){if(Ext.isObject(b)&&!Ext.isObject(c)){var a=c;c={};c["this"]=a}return{obj1:c,obj2:b}},toISOString:function(b){function a(c){return c<10?"0"+c:c}if(b.getFullYear){return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+"T"+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())+"Z"}return""},cssToJson:function(c){var k={};if(c&&c!=""){var e=c.split(";");for(var b in e){var d=e[b];if(d!=""){var h=d.indexOf(":");var a=Ext.String.trim(d.substring(0,h));var g=Ext.String.trim(d.substring(h+1));k[a]=g}}}return k},jsonToCss:function(a){return Ext.encode(a).replace(/}/g,"").replace(/{/g,"").replace(/"/g,"").replace(/,/g,";")},arrayIndexOfContains:function(c,b){b=b.toLowerCase();for(var a=0;a',height:150},{xtype:"login"}],markingMenu:{xtype:"markingMenu",cls:"markingMenuContainer",region:"east",width:"22%",collapsible:true,expandable:true,resizable:true,margin:2,autoScroll:true},editorItems:[{xtype:"mainToolbar",region:"north",width:"100%",margin:2},{xtype:"main",region:"center",expandable:true,resizable:true,margin:2},{xtype:"explorer",region:"west",expandable:true,resizable:true,width:"15%",autoScroll:true,margin:2},{xtype:"contextMenu"},{xtype:"downloadManager"}]},0,["appViewport"],["viewport","component","appViewport","container","box"],{viewport:true,component:true,appViewport:true,container:true,box:true},["widget.appViewport"],0,[LIME.view,"Viewport"],0));(Ext.cmd.derive("Ext.ux.window.Notification",Ext.window.Window,{cls:"ux-notification-window",autoClose:true,autoHeight:true,plain:false,draggable:false,shadow:false,focus:Ext.emptyFn,manager:null,useXAxis:false,position:"br",spacing:6,paddingX:30,paddingY:10,slideInAnimation:"easeIn",slideBackAnimation:"bounceOut",slideInDuration:1500,slideBackDuration:1000,hideDuration:500,autoCloseDelay:7000,stickOnClick:true,stickWhileHover:true,isHiding:false,isFading:false,destroyAfterHide:false,closeOnMouseOut:false,xPos:0,yPos:0,statics:{defaultManager:{el:null}},initComponent:function(){var a=this;if(Ext.isDefined(a.corner)){a.position=a.corner}if(Ext.isDefined(a.slideDownAnimation)){a.slideBackAnimation=a.slideDownAnimation}if(Ext.isDefined(a.autoDestroyDelay)){a.autoCloseDelay=a.autoDestroyDelay}if(Ext.isDefined(a.autoHideDelay)){a.autoCloseDelay=a.autoHideDelay}if(Ext.isDefined(a.autoHide)){a.autoClose=a.autoHide}if(Ext.isDefined(a.slideInDelay)){a.slideInDuration=a.slideInDelay}if(Ext.isDefined(a.slideDownDelay)){a.slideBackDuration=a.slideDownDelay}if(Ext.isDefined(a.fadeDelay)){a.hideDuration=a.fadeDelay}a.position=a.position.replace(/c/,"");a.updateAlignment(a.position);a.setManager(a.manager);a.callParent(arguments)},onRender:function(){var a=this;a.callParent(arguments);a.el.hover(function(){a.mouseIsOver=true},function(){a.mouseIsOver=false;if(a.closeOnMouseOut){a.closeOnMouseOut=false;a.close()}},a)},updateAlignment:function(a){var b=this;switch(a){case"br":b.paddingFactorX=-1;b.paddingFactorY=-1;b.siblingAlignment="br-br";if(b.useXAxis){b.managerAlignment="bl-br"}else{b.managerAlignment="tr-br"}break;case"bl":b.paddingFactorX=1;b.paddingFactorY=-1;b.siblingAlignment="bl-bl";if(b.useXAxis){b.managerAlignment="br-bl"}else{b.managerAlignment="tl-bl"}break;case"tr":b.paddingFactorX=-1;b.paddingFactorY=1;b.siblingAlignment="tr-tr";if(b.useXAxis){b.managerAlignment="tl-tr"}else{b.managerAlignment="br-tr"}break;case"tl":b.paddingFactorX=1;b.paddingFactorY=1;b.siblingAlignment="tl-tl";if(b.useXAxis){b.managerAlignment="tr-tl"}else{b.managerAlignment="bl-tl"}break;case"b":b.paddingFactorX=0;b.paddingFactorY=-1;b.siblingAlignment="b-b";b.useXAxis=0;b.managerAlignment="t-b";break;case"t":b.paddingFactorX=0;b.paddingFactorY=1;b.siblingAlignment="t-t";b.useXAxis=0;b.managerAlignment="b-t";break;case"l":b.paddingFactorX=1;b.paddingFactorY=0;b.siblingAlignment="l-l";b.useXAxis=1;b.managerAlignment="r-l";break;case"r":b.paddingFactorX=-1;b.paddingFactorY=0;b.siblingAlignment="r-r";b.useXAxis=1;b.managerAlignment="l-r";break}},getXposAlignedToManager:function(){var a=this;var b=0;if(a.manager&&a.manager.el&&a.manager.el.dom){if(!a.useXAxis){return a.el.getLeft()}else{if(a.position=="br"||a.position=="tr"||a.position=="r"){b+=a.manager.el.getAnchorXY("r")[0];b-=(a.el.getWidth()+a.paddingX)}else{b+=a.manager.el.getAnchorXY("l")[0];b+=a.paddingX}}}return b},getYposAlignedToManager:function(){var b=this;var a=0;if(b.manager&&b.manager.el&&b.manager.el.dom){if(b.useXAxis){return b.el.getTop()}else{if(b.position=="br"||b.position=="bl"||b.position=="b"){a+=b.manager.el.getAnchorXY("b")[1];a-=(b.el.getHeight()+b.paddingY)}else{a+=b.manager.el.getAnchorXY("t")[1];a+=b.paddingY}}}return a},getXposAlignedToSibling:function(a){var b=this;if(b.useXAxis){if(b.position=="tl"||b.position=="bl"||b.position=="l"){return(a.xPos+a.el.getWidth()+a.spacing)}else{return(a.xPos-b.el.getWidth()-b.spacing)}}else{return b.el.getLeft()}},getYposAlignedToSibling:function(a){var b=this;if(b.useXAxis){return b.el.getTop()}else{if(b.position=="tr"||b.position=="tl"||b.position=="t"){return(a.yPos+a.el.getHeight()+a.spacing)}else{return(a.yPos-b.el.getHeight()-a.spacing)}}},getNotifications:function(b){var a=this;if(!a.manager.notifications[b]){a.manager.notifications[b]=[]}return a.manager.notifications[b]},setManager:function(a){var b=this;b.manager=a;if(typeof b.manager=="string"){b.manager=Ext.getCmp(b.manager)}if(!b.manager){b.manager=b.statics().defaultManager;if(!b.manager.el){b.manager.el=Ext.getBody()}}if(typeof b.manager.notifications=="undefined"){b.manager.notifications={}}},beforeShow:function(){var a=this;if(a.stickOnClick){if(a.body&&a.body.dom){Ext.fly(a.body.dom).on("click",function(){a.cancelAutoClose();a.addCls("notification-fixed")},a)}}if(a.autoClose){a.task=new Ext.util.DelayedTask(a.doAutoClose,a);a.task.delay(a.autoCloseDelay)}a.el.setX(-10000);a.el.setOpacity(1)},afterShow:function(){var b=this;b.callParent(arguments);var a=b.getNotifications(b.managerAlignment);if(a.length){b.el.alignTo(a[a.length-1].el,b.siblingAlignment,[0,0]);b.xPos=b.getXposAlignedToSibling(a[a.length-1]);b.yPos=b.getYposAlignedToSibling(a[a.length-1])}else{b.el.alignTo(b.manager.el,b.managerAlignment,[(b.paddingX*b.paddingFactorX),(b.paddingY*b.paddingFactorY)],false);b.xPos=b.getXposAlignedToManager();b.yPos=b.getYposAlignedToManager()}Ext.Array.include(a,b);b.el.animate({from:{x:b.el.getX(),y:b.el.getY()},to:{x:b.xPos,y:b.yPos,opacity:1},easing:b.slideInAnimation,duration:b.slideInDuration,dynamic:true})},slideBack:function(){var c=this;var b=c.getNotifications(c.managerAlignment);var a=Ext.Array.indexOf(b,c);if(!c.isHiding&&c.el&&c.manager&&c.manager.el&&c.manager.el.dom&&c.manager.el.isVisible()){if(a){c.xPos=c.getXposAlignedToSibling(b[a-1]);c.yPos=c.getYposAlignedToSibling(b[a-1])}else{c.xPos=c.getXposAlignedToManager();c.yPos=c.getYposAlignedToManager()}c.stopAnimation();c.el.animate({to:{x:c.xPos,y:c.yPos},easing:c.slideBackAnimation,duration:c.slideBackDuration,dynamic:true})}},cancelAutoClose:function(){var a=this;if(a.autoClose){a.task.cancel()}},doAutoClose:function(){var a=this;if(!(a.stickWhileHover&&a.mouseIsOver)){a.close()}else{a.closeOnMouseOut=true}},removeFromManager:function(){var c=this;if(c.manager){var b=c.getNotifications(c.managerAlignment);var a=Ext.Array.indexOf(b,c);if(a!=-1){Ext.Array.erase(b,a,1);for(;a','
',{disableFormats:true}],componentLayout:"codemirror",editorWrapCls:Ext.baseCSSPrefix+"html-editor-wrap",maskOnDisable:true,afterBodyEl:"",mode:"text/plain",showModes:true,showAutoIndent:true,showLineNumbers:true,enableMatchBrackets:true,enableElectricChars:false,enableIndentWithTabs:true,enableSmartIndent:true,enableLineWrapping:false,enableLineNumbers:true,enableGutter:true,enableFixedGutter:false,firstLineNumber:1,readOnly:false,pollInterval:100,indentUnit:4,tabSize:4,theme:"default",pathModes:"lib/codemirror/mode",pathExtensions:"lib/codemirror/util",listModes:[{text:"PHP",mime:"text/x-php"},{text:"JSON",mime:"application/json"},{text:"Javascript",mime:"text/javascript"},{text:"HTML mixed",mime:"text/html"},{text:"CSS",mime:"text/css"},{text:"Plain text",mime:"text/plain"}],modes:[{mime:["text/plain"],dependencies:[]},{mime:["application/x-httpd-php","text/x-php"],dependencies:["xml/xml.js","javascript/javascript.js","css/css.js","clike/clike.js","php/php.js"]},{mime:["text/javascript","application/json"],dependencies:["javascript/javascript.js"]},{mime:["text/html"],dependencies:["xml/xml.js","javascript/javascript.js","css/css.js","htmlmixed/htmlmixed.js"]},{mime:["text/css"],dependencies:["css/css.js"]}],extensions:{format:{dependencies:["formatting.js"]}},scriptsLoaded:[],lastMode:"",initComponent:function(){var a=this;a.addEvents("initialize","activate","deactivate","change","modechanged","cursoractivity","gutterclick","scroll","highlightcomplete","update","keyevent");a.callParent(arguments);a.createToolbar(a);a.initLabelable();a.initField();a.on("resize",function(){if(a.editor){a.editor.refresh()}},a)},getMaskTarget:function(){return this.bodyEl},getSubTplData:function(){var a=Ext.baseCSSPrefix;return{$comp:this,cmpId:this.id,id:this.getInputId(),toolbarWrapCls:a+"html-editor-tb",textareaCls:a+"hidden",editorCls:a+"codemirror",editorName:Ext.id(),size:"height:100px;width:100%"}},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},finishRenderChildren:function(){this.callParent();this.toolbar.finishRender()},onRender:function(){var a=this;a.callParent(arguments);a.inputEl=a.editorEl;a.disableItems(true);a.initEditor();a.rendered=true},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){this.beforeSubTpl='
'+Ext.DomHelper.markup(this.toolbar.getRenderTree());return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},initEditor:function(){var c=this,d="text/plain";var b=c.getMime(c.mode);if(b){d=c.getMimeMode(c.mode);if(!d){d="text/plain"}}c.editor=CodeMirror(c.editorEl,{matchBrackets:c.enableMatchBrackets,electricChars:c.enableElectricChars,autoClearEmptyLines:true,value:c.rawValue,indentUnit:c.indentUnit,smartIndent:c.enableSmartIndent,indentWithTabs:c.indentWithTabs,pollInterval:c.pollInterval,lineNumbers:c.enableLineNumbers,lineWrapping:c.enableLineWrapping,firstLineNumber:c.firstLineNumber,tabSize:c.tabSize,gutter:c.enableGutter,fixedGutter:c.enableFixedGutter,theme:c.theme,mode:d,onChange:function(g,e){c.checkChange()},onCursorActivity:function(e){c.fireEvent("cursoractivity",c)},onGutterClick:function(g,e,h){c.fireEvent("gutterclick",c,e,h)},onFocus:function(e){c.fireEvent("activate",c)},onBlur:function(e){c.fireEvent("deactivate",c)},onScroll:function(e){c.fireEvent("scroll",c)},onHighlightComplete:function(e){c.fireEvent("highlightcomplete",c)},onUpdate:function(e){c.fireEvent("update",c)},onKeyEvent:function(e,g){g.cancelBubble=true;c.fireEvent("keyevent",c,g)}});c.setMode(c.mode);c.setReadOnly(c.readOnly);c.fireEvent("initialize",c);var a=Ext.util.CSS.getRule(".CodeMirror");if(a){a.style.height="100%";a.style.position="relative";a.style.overflow="hidden"}var a=Ext.util.CSS.getRule(".CodeMirror-Scroll");if(a){a.style.height="100%"}},createToolbar:function(g){var i=this,b=[],a=Ext.tip.QuickTipManager&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,h,e;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:g,handler:l||g.relayBtnCmd,clickEvent:"mousedown",tooltip:a?g.buttonTips[m]||e:e,overflowText:g.buttonTips[m].title||e,tabIndex:-1}}if(i.showModes){modesSelectItem=Ext.widget("component",{renderTpl:['",{mode:i.mode,isSelected:function(k){return this.mode==k}}],renderData:{cls:d+"font-select",modes:i.listModes},childEls:["selectEl"],afterRender:function(){i.modesSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.superclass.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.superclass.onEnable.apply(this,arguments)},listeners:{change:function(){i.setMode(i.modesSelect.dom.value)},element:"selectEl"}});b.push(modesSelectItem,"-")}if(i.showAutoIndent){b.push(c("justifycenter",false))}if(i.showLineNumbers){b.push(c("insertorderedlist"))}h=Ext.widget("toolbar",{id:i.id+"-toolbar",ownerCt:i,cls:Ext.baseCSSPrefix+"html-editor-tb",enableOverflow:true,items:b,ownerLayout:i.getComponentLayout(),listeners:{click:function(k){k.preventDefault()},element:"el"}});i.toolbar=h;i.updateToolbarButtons()},getToolbar:function(){return this.toolbar},updateToolbarButtons:function(){var b=this;try{btns=b.getToolbar().items.map;if(b.showLineNumbers){btns.insertorderedlist.toggle(b.enableLineNumbers)}}catch(a){}},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(a){Ext.defer(function(){var b=this;b.editor.focus();switch(a){case"justifycenter":if(!CodeMirror.extensions.autoIndentRange){b.loadDependencies(b.extensions.format,b.pathExtensions,b.doIndentSelection,b)}else{b.doIndentSelection()}break;case"insertorderedlist":b.doChangeLineNumbers();break}},10,this)},reloadExtentions:function(){var b=this;for(var a in CodeMirror.extensions){if(CodeMirror.extensions.propertyIsEnumerable(a)&&!b.editor.propertyIsEnumerable(a)){b.editor[a]=CodeMirror.extensions[a]}}},doChangeLineNumbers:function(){var a=this;a.enableLineNumbers=!a.enableLineNumbers;a.editor.setOption("lineNumbers",a.enableLineNumbers)},doIndentSelection:function(){var c=this;c.reloadExtentions();try{var a={from:c.editor.getCursor(true),to:c.editor.getCursor(false)};c.editor.autoIndentRange(a.from,a.to)}catch(b){}},getMime:function(e){var c=this,b,d=false;for(var a=0;a0;){q=(1<0;){r=l[s];q[r]=c[r]}return q},d=function(v,y,R,q,x,F,w,O,t,H,B){var r=function A(){return this.constructor.apply(this,arguments)||null},Q=r,s={enumerableMembers:q&b,onCreated:B,onBeforeCreated:e,aliases:O},E=R.alternateClassName||[],M=Ext.global,I,L,N,D,K,U,T,u,J,z,P,G,C,S;for(N=l.length;N-->0;){T=l[N];r[T]=c[T]}if(R.$isFunction){R=R(r)}s.data=R;z=R.statics,R.$className=v;if("$className" in R){r.$className=R.$className}r.extend(y);J=r.prototype;r.xtype=R.xtype=x[0];if(x){J.xtypes=x}J.xtypesChain=F;J.xtypesMap=w;R.alias=O;Q.triggerExtended(r,R,s);if(R.onClassExtended){r.onExtended(R.onClassExtended,r);delete R.onClassExtended}if(z){for(P in z){if(z.hasOwnProperty(P)){S=z[P];if(S&&S.$isFunction&&!S.$isClass&&S!==Ext.emptyFn&&S!==Ext.identityFn){r[P]=C=S;C.$owner=r;C.$name=P}r[P]=S}}}delete R.statics;if(R.inheritableStatics){r.addInheritableStatics(R.inheritableStatics)}if(J.onClassExtended){Q.onExtended(J.onClassExtended,Q);delete J.onClassExtended}if(R.config){g(r,R)}s.onBeforeCreated(r,s.data,s);for(N=0,K=t&&t.length;N0){r--;p[r]="var Ext=window."+Ext.name+";"+p[r]}}i=p.join("");q=o[i];if(!q){q=Function.prototype.constructor.apply(Function.prototype,p);o[i]=q}return q},functionFactory:function(){var p=this,i=Array.prototype.slice.call(arguments),o;if(Ext.isSandboxed){o=i.length;if(o>0){o--;i[o]="var Ext=window."+Ext.name+";"+i[o]}}return Function.prototype.constructor.apply(Function.prototype,i)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(i){throw new Error(i)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(p){var i=Ext.app.namespaces,o;for(o in p){if(p.hasOwnProperty(o)){i[o]=true}}},addNamespaces:function(q){var r=Ext.app.namespaces,p,o;if(!Ext.isArray(q)){q=[q]}for(p=0,o=q.length;pi.length&&(p+"."===o.substring(0,p.length+1))){i=p}}return i===""?undefined:i}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;ce){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,i=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(r,q){return e[q]},m=function(r,q){return(q in a)?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(r,q){if(r===null||r===undefined||q===null||q===undefined){return false}return q.length<=r.length};return{insert:function(t,u,r){if(!t){return u}if(!u){return t}var q=t.length;if(!r&&r!==0){r=q}if(r<0){r*=-1;if(r>=q){r=0}else{r=q-r}}if(r===0){t=u+t}else{if(r>=t.length){t+=u}else{t=t.substr(0,r)+u+t.substr(r)}}return t},startsWith:function(t,u,r){var q=c(t,u);if(q){if(r){t=t.toLowerCase();u=u.toLowerCase()}q=t.lastIndexOf(u,0)===0}return q},endsWith:function(u,r,t){var q=c(u,r);if(q){if(t){u=u.toLowerCase();r=r.toLowerCase()}q=u.indexOf(r,u.length-r.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return(!q)?q:String(q).replace(h,g)},htmlDecode:function(q){return(!q)?q:String(q).replace(d,m)},addCharacterEntities:function(r){var q=[],u=[],s,t;for(s in r){t=r[s];a[s]=t;e[t]=s;q.push(t);u.push(s)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+u.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&":"&",">":">","<":"<",""":'"',"'":"'"})},urlAppend:function(r,q){if(!Ext.isEmpty(q)){return r+(r.indexOf("?")===-1?"?":"&")+q}return r},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(s,q,t){if(s&&s.length>q){if(t){var u=s.substr(0,q-2),r=Math.max(u.lastIndexOf(" "),u.lastIndexOf("."),u.lastIndexOf("!"),u.lastIndexOf("?"));if(r!==-1&&r>=(q-15)){return u.substr(0,r)+"..."}}return s.substr(0,q-3)+"..."}return s},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(r,s,q){return r===s?q:s},leftPad:function(r,s,t){var q=String(r);t=t||" ";while(q.lengthe)?e:d)},snap:function(h,e,g,i){var d;if(h===undefined||h=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,i)},snapInRange:function(h,d,g,i){var e;g=(g||0);if(h===undefined||h=d){h+=d}}if(i!==undefined){if(h>(i=b.snapInRange(i,d,g))){h=i}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,p=g.slice,r=(function(){var B=[],e,A=20;if(!B.splice){return false}while(A--){B.push("A")}B.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=B.length;B.splice(13,0,"XXX");if(e+1!=B.length){return false}return true}()),k="forEach" in g,v="map" in g,q="indexOf" in g,z="every" in g,c="some" in g,d="filter" in g,o=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),l=true,a,x,u,w;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(t){l=false}function n(A,e){return(e<0)?Math.max(0,A.length+e):Math.min(A.length,e)}function y(H,G,A,K){var L=K?K.length:0,C=H.length,I=n(H,G),F,J,B,e,D,E;if(I===C){if(L){H.push.apply(H,K)}}else{F=Math.min(A,C-I);J=I+F;B=J+L-F;e=C-J;D=C-F;if(BJ){for(E=e;E--;){H[B+E]=H[J+E]}}}if(L&&I===D){H.length=D;H.push.apply(H,K)}else{H.length=D+L;for(E=0;E-1;A--){if(C.call(B||E[A],E[A],A,E)===false){return A}}}return true},forEach:k?function(B,A,e){B.forEach(A,e)}:function(D,B,A){var e=0,C=D.length;for(;ee){e=B}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(D){var A=0,e,C,B;for(e=0,C=D.length;e0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,i,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(i);if(!g||(a>=b)){h()}else{i=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,l,d){var c=b.toQueryObjects,k=[],g,h;if(Ext.isArray(l)){for(g=0,h=l.length;g0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p daysInMonth) {","d = daysInMonth;","}","}","h = from(h, from(def.h, dt.getHours()));","i = from(i, from(def.i, dt.getMinutes()));","s = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||d.now()))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},y2kYear:50,MILLI:"ms",SECOND:"s",MINUTE:"mi",HOUR:"h",DAY:"d",MONTH:"mo",YEAR:"y",defaults:{},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNumbers:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(i,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.String.leftPad(this.getFullYear(), 4, '0')",y:"('' + this.getFullYear()).substring(2, 4)",a:"(this.getHours() < 12 ? 'am' : 'pm')",A:"(this.getHours() < 12 ? 'AM' : 'PM')",g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",G:"this.getHours()",h:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(am|pm|AM|PM)",calcAtEnd:true},A:{g:1,c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",s:"(AM|PM|am|pm)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},u:{g:1,c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",s:"(\\d+)"},O:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{4})"},P:{g:1,c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("s",6),{c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"},{c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,r)).getDate())}s.setDate(m);s.setMonth(o.getMonth()+r);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,r)).getDate())}s.setDate(m);s.setFullYear(o.getFullYear()+r);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(s);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=(d.isLeapYear(s)?366:365);p=1000*60*60*24*m;break}if(p){s.setTime(s.getTime()+p*q)}}return s},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,t=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],r=t.length,n=q.length,o,u,v;for(v=0;v0){for(e=0;e0){if(A===z){return C[A]}B=C[A];z=z.substring(A.length+1)}if(B.length>0){B+="/"}return B.replace(c,"/")+z.replace(g,"/")+".js"},getPrefix:function(A){var C=l.config.paths,B,z="";if(C.hasOwnProperty(A)){return A}for(B in C){if(C.hasOwnProperty(B)&&B+"."===A.substring(0,B.length+1)){if(B.length>z.length){z=B}}}return z},isAClassNameWithAKnownPrefix:function(z){var A=l.getPrefix(z);return A!==""&&A!==z},require:function(B,A,z,C){if(A){A.call(z)}},syncRequire:function(){},exclude:function(z){return{require:function(C,B,A){return l.require(C,B,A,z)},syncRequire:function(C,B,A){return l.syncRequire(C,B,A,z)}}},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}C.call(B)}});var r=[],s={},v={},t={},q={},x=[],y=[],i={},m=function(z,A){return A.priority-z.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:r,isClassFileLoaded:s,isFileLoaded:v,readyListeners:x,optionalRequires:y,requiresMap:i,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:t,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var D=r.length,A,C,z,B;if(!D&&!l.scriptsLoading){return l.triggerReady()}for(A=0;Al.numLoadedFiles){continue}for(z=0;z=200&&D<300)||(D===304)){if(!Ext.isIE){E="\n//@ sourceURL="+A}Ext.globalEval(J.responseText+E);H.call(K)}else{}}J=null}},syncRequire:function(){var z=l.syncModeEnabled;if(!z){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!z){l.syncModeEnabled=false}l.refreshQueue()},require:function(R,I,C,E){var K={},B={},H=[],T=[],Q=[],A=[],G,S,M,L,z,F,P,O,N,J,D;if(E){E=(typeof E==="string")?[E]:E;for(O=0,J=E.length;O0){H=b.getNamesByExpression(z);for(N=0,D=H.length;N0){G=function(){var V=[],U,W;for(U=0,W=A.length;U0){T=b.getNamesByExpression(L);D=T.length;for(N=0;N0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((Q.length>1)?"es":"")+": "+Q.join(", "))}}else{G.call(C);return l}S=l.syncModeEnabled;if(!S){r.push({requires:Q.slice(),callback:G,scope:C})}J=Q.length;for(O=0;Owindow.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b]+>/gi,i=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,k=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(l){return l!==undefined?l:""},defaultValue:function(m,l){return m!==undefined&&m!==""?m:l},substr:"ab".substr(-1)!="b"?function(m,o,l){var n=String(m);return(o<0)?n.substr(Math.max(n.length+o,0),l):n.substr(o,l)}:function(m,n,l){return String(m).substr(n,l)},lowercase:function(l){return String(l).toLowerCase()},uppercase:function(l){return String(l).toUpperCase()},usMoney:function(l){return g.currency(l,"$",2)},currency:function(n,p,m,l){var r="",q=",0",o=0;n=n-0;if(n<0){n=-n;r="-"}m=Ext.isDefined(m)?m:g.currencyPrecision;q+=(m>0?".":"");for(;o2){}else{if(r.length===2){p=r[1].length;x=b.test(r[1])}}l=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(m?",thousandSeparator,thousands=[],j,n,i":"")+(s?',formatString="'+o+'",formatPattern=/[\\d,\\.#]+/':"")+(x?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+p+");"];if(m){if(p){l[l.length]='parts=fnum.split(".");';l[l.length]="fnum=parts[0];"}l[l.length]="if(v>=1000) {";l[l.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(m){m=m||0;if(typeof m==="number"){return{top:m,right:m,bottom:m,left:m}}var n=m.split(" "),l=n.length;if(l==1){n[1]=n[2]=n[3]=n[0]}else{if(l==2){n[2]=n[0];n[3]=n[1]}else{if(l==3){n[3]=n[1]}}}return{top:parseInt(n[0],10)||0,right:parseInt(n[1],10)||0,bottom:parseInt(n[2],10)||0,left:parseInt(n[3],10)||0}},escapeRegex:function(l){return l.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var n=this,e=n.tasks,a=Ext.Date.now(),o=1e+99,l=e.length,c,p,h,b,d,g;n.timerId=null;n.firing=true;for(h=0;hc){o=c}}}if(p){n.tasks=p}n.firing=false;if(n.tasks.length){n.startTimer(o-a,Ext.Date.now())}if(n.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e',''," ({childCount} children)","",''," ({depth} deep)","",'',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","",""].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth','
',"
",'
','
',"
",'
','
'].join("");p.body.appendChild(d)}g=c[m];while(h--){k=i[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(l,n){var k=["webkit","Moz","o","ms","khtml"],m="TransitionEnd",d=[k[0]+m,"transitionend",k[2]+m,k[3]+m,k[4]+m],h=k.length,g=0,e=false;for(;g

";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",i="linear-gradient(left top, black, white)",h="-moz-"+i,e="-ms-"+i,g="-o-"+i,n=[m+l,m+i,m+h,m+e,m+g];d.style.cssText=n.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,k){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['
','
',"
"].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,i){i.innerHTML='
';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(k,m,l,i){if(h){g.cancel()}a=k||a,e=m||e;d=l||d;b=i||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(q,s,u){var o=this,p,k,r,e,t,n,h,m,l,g;s=s||o.observable;if(!o.isListening(q,s)){k=o.createListener(q,s,u);if(o.firing){o.listeners=o.listeners.slice(0)}p=o.listeners;m=h=p.length;r=u&&u.priority;t=o._highestNegativePriorityIndex;n=(t!==undefined);if(r){e=(r<0);if(!e||n){for(l=(e?t:0);l0){m.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h111&&k.keyCode<124){k.keyCode=-1}}catch(l){}}},getRelatedTarget:function(k){k=k.browserEvent||k;var l=k.relatedTarget;if(!l){if(b.mouseLeaveRe.test(k.type)){l=k.toElement}else{if(b.mouseEnterRe.test(k.type)){l=k.fromElement}}}return b.resolveTextNode(l)},getPageX:function(k){return b.getPageXY(k)[0]},getPageY:function(k){return b.getPageXY(k)[1]},getPageXY:function(m){m=m.browserEvent||m;var l=m.pageX,o=m.pageY,n=h.documentElement,k=h.body;if(!l&&l!==0){l=m.clientX+(n&&n.scrollLeft||k&&k.scrollLeft||0)-(n&&n.clientLeft||k&&k.clientLeft||0);o=m.clientY+(n&&n.scrollTop||k&&k.scrollTop||0)-(n&&n.clientTop||k&&k.clientTop||0)}return[l,o]},getTarget:function(k){k=k.browserEvent||k;return b.resolveTextNode(k.target||k.srcElement)},resolveTextNode:Ext.isGecko?function(l){if(l){var k=HTMLElement.prototype.toString.call(l);if(k!=="[xpconnect wrapped native prototype]"&&k!=="[object XULElement]"){return l.nodeType==3?l.parentNode:l}}}:function(k){return k&&k.nodeType==3?k.parentNode:k},curWidth:0,curHeight:0,onWindowResize:function(n,m,l){var k=b.resizeEvent;if(!k){b.resizeEvent=k=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}k.addListener(n,m,l)},fireResize:function(){var k=Ext.Element.getViewWidth(),l=Ext.Element.getViewHeight();if(b.curHeight!=l||b.curWidth!=k){b.curHeight=l;b.curWidth=k;b.resizeEvent.fire(k,l)}},removeResizeListener:function(m,l){var k=b.resizeEvent;if(k){k.removeListener(m,l)}},onWindowUnload:function(n,m,l){var k=b.unloadEvent;if(!k){b.unloadEvent=k=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(n){k.addListener(n,m,l)}},fireUnload:function(){try{h=g=undefined;var p,l,n,m,k;b.unloadEvent.fire();if(Ext.isGecko3){p=Ext.ComponentQuery.query("gridview");l=0;n=p.length;for(;l=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var k=true;try{document.documentElement.doScroll("left")}catch(l){k=false}if(k&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return k},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var k=document.readyState;if(b.readyStatesRe.test(k)){b.onReadyEvent({type:k})}},bindReadyEvent:function(){var k=true;if(b.hasBoundOnReady){return}try{k=window.frameElement===undefined}catch(l){k=false}if(!k||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(m,l,k){Ext.Loader.onReady(m,l,true,k)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();Ext.setVersion("ext-theme-base","4.2.1");Ext.setVersion("ext-theme-classic","4.2.1");Ext.setVersion("ext-theme-neutral","4.2.1");(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(l,i,h){var k=function(m,n){return i.apply(h,[m].concat(n))};this.captureArgs(l,k,h)},captureArgs:function(k,i,h){k.fireEventArgs=Ext.Function.createInterceptor(k.fireEventArgs,i,h)},observe:function(h,i){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(i)){h.on(i)}}return h},prepareClass:function(k,i){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||(i&&i.HasListeners)||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var i=this;Ext.apply(i,h);if(!i.hasListeners){i.hasListeners=new i.HasListeners()}i.events=i.events||{};if(i.listeners){i.on(i.listeners);i.listeners=null}if(i.bubbleEvents){i.enableBubble(i.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,r,k){var m=this,o=m.managedListeners=m.managedListeners||[],i,h;if(typeof l!=="string"){h=arguments.length>4?r:l;r=l;for(l in r){if(r.hasOwnProperty(l)){i=r[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,i.fn||i,i.scope||r.scope||q,i.fn?i:h,true)}}}if(r&&r.destroyable){return new b(m,p,r)}}else{if(typeof n==="string"){q=q||m;n=Ext.resolveMethod(n,q)}o.push({item:p,ename:l,fn:n,scope:q,options:r});p.on(l,n,q,r);if(!k&&r&&r.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(r,m,p,s){var o=this,t,k,q,h,n,l;if(typeof m!=="string"){t=m;for(m in t){if(t.hasOwnProperty(m)){k=t[m];if(!o.eventOptionsRe.test(m)){o.removeManagedListener(r,m,k.fn||k,k.scope||t.scope||s)}}}}else{q=o.managedListeners?o.managedListeners.slice():[];if(typeof p==="string"){s=s||o;p=Ext.resolveMethod(p,s)}for(n=0,h=q.length;n=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},isNavKeyPress:function(){var b=this,a=this.normalizeKey(b.keyCode);return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC},isSpecialKey:function(){var a=this.normalizeKey(this.keyCode);return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)},getPoint:function(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(l,i,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(i,h,g);return k},createMouseEvent:function(v,t,n,m,p,l,i,k,g,s,r,o,q){var h=v.createEvent("MouseEvents"),u=v.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(t,n,m,u,p,l,i,l,i,k,g,s,r,o,q)}else{h=v.createEvent("UIEvents");h.initEvent(t,n,m);h.view=u;h.detail=p;h.screenX=l;h.screenY=i;h.clientX=l;h.clientY=i;h.ctrlKey=k;h.altKey=g;h.metaKey=r;h.shiftKey=s;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,i,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,i,h,g,k);return m},fireEvent:function(i,g,h){i.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,i,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(u,t,n,m,p,l,i,k,g,s,r,o,q){var h=u.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=i;h.clientX=l;h.clientY=i;h.ctrlKey=k;h.altKey=g;h.shiftKey=s;h.metaKey=r;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,i){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(i,g,h){i.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(i,k){var h=k[0],g=k[1];e[i]=function(n,l){var m=d.createHtmlEvent(i,h,g);d.fireEvent(n,i,m)}});function b(i,h){var g=(i!="mousemove");return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,i,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,i,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(i,k){var h=k[0],g=k[1];e[i]=function(n,l){var m=d.createUIEvent(n.ownerDocument,i,h,g,1);d.fireEvent(n,i,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var i=this,h=e[i.type]||a,g=k?(k.dom||k):i.getTarget();g=d.fixTarget(g);h(g,i)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g")}else{b.push(">");if((a=k.tpl)){a.applyOut(k.tplData,b)}if((a=k.html)){b.push(a)}if((a=k.cn||k.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[l]||(c[l]=""))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,i=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(i||k){m=c.activeElement||b;e=m&&m.tagName;if((k&&e=="TEXTAREA")||(i&&e=="INPUT"&&m.type=="text")){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(i){var k=i.elements||(document.forms[i]||Ext.getDom(i)).elements,u=false,t=encodeURIComponent,n="",m=k.length,p,g,s,w,v,q,l,r,h;for(q=0;q0?t:0},getWidth:function(t){var v=this.dom,u=t?(v.clientWidth-this.getPadding("lr")):v.offsetWidth;return u>0?u:0},setWidth:function(t){var u=this;u.dom.style.width=d.addUnits(t);return u},setHeight:function(t){var u=this;u.dom.style.height=d.addUnits(t);return u},getBorderWidth:function(t){return this.addStyles(t,m)},getPadding:function(t){return this.addStyles(t,g)},margins:o,applyStyles:function(v){if(v){var u,t,w=this.dom;if(typeof v=="function"){v=v.call()}if(typeof v=="string"){v=Ext.util.Format.trim(v).split(/\s*(?::|;)\s*/);for(u=0,t=v.length;u'+u+""):""});B=z.getSize();w.mask=D;if(v===document.body){B.height=window.innerHeight;if(z.orientationHandler){Ext.EventManager.unOrientationChange(z.orientationHandler,z)}z.orientationHandler=function(){B=z.getSize();B.height=window.innerHeight;D.setSize(B)};Ext.EventManager.onOrientationChange(z.orientationHandler,z)}D.setSize(B);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.mask,v=Ext.baseCSSPrefix;if(t){t.remove();delete w.mask}u.removeCls([v+"masked",v+"masked-relative"]);if(u.dom===document.body){Ext.EventManager.unOrientationChange(u.orientationHandler,u);delete u.orientationHandler}}});Ext.onReady(function(){var B=Ext.supports,t,z,x,u,A;function y(G,D,F,C){var E=C[this.name]||"";return c.test(E)?"transparent":E}function w(I,F,H,E){var C=E.marginRight,D,G;if(C!="0px"){D=I.style;G=D.display;D.display="inline-block";C=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,null)).marginRight;D.display=G}return C}function v(J,G,I,F){var C=F.marginRight,E,D,H;if(C!="0px"){E=J.style;D=d.getRightMarginFixCleaner(J);H=E.display;E.display="inline-block";C=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,"")).marginRight;E.display=H;D()}return C}t=d.prototype.styleHooks;if(B.init){B.init()}if(!B.RightMargin){t.marginRight=t["margin-right"]={name:"marginRight",get:(B.DisplayChangeInputSelectionBug||B.DisplayChangeTextAreaSelectionBug)?v:w}}if(!B.TransparentColor){z=["background-color","border-color","color","outline-color"];for(x=z.length;x--;){u=z[x];A=d.normalize(u);t[u]=t[A]={name:A,get:y}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var i=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof i){if(c!=i.docEl&&c!=i.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return i.select(c)}else{if(c===k){if(!i.docEl){b=i.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);i.addToCache(b)}return i.docEl}else{if(c===window){if(!i.winEl){i.winEl=Ext.Object.chain(d.prototype);i.winEl.dom=window;i.winEl.id=Ext.id(window);i.addToCache(i.winEl)}return i.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g",o=""+h,l=c+"",e=""+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(r,x){var s,A=document,v,y,t,z,w,u;if(Ext.isArray(r)){s=A.createDocumentFragment();for(w=0,u=r.length;w1){for(;c]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {"," "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {"," return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,i,d,g,c;if(!a){return null}e=a[1];i=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(i&&h.useFormat){d=d?","+d:"";if(i.substr(0,5)!="this."){i="fm."+i+"("}else{i+="("}}else{return c}return i+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="text";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}:function child(parent,index){var i=0,n=parent.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n}}n=n.nextSibling}return null};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){while((n=n.previousSibling)&&n.nodeType!=1){}return n};function children(parent){var n=parent.firstChild,nodeIndex=-1,nextNode;while(n){nextNode=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){parent.removeChild(n)}else{n.nodeIndex=++nodeIndex}n=nextNode}return this}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;ci=nodeSet[i];i++){if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}return result};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0]}if(!n){return null}if(attr=="for"){return n.htmlFor}if(attr=="class"||attr=="className"){return n.className}return n.getAttribute(attr)||n[attr]}function getNodes(ns,mode,tagName){var result=[],ri=-1,cs,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){result[++ri]=n}}}else{if(mode=="~"){utag=tagName.toUpperCase();for(i=0;n=ns[i];i++){while((n=n.nextSibling)){if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){result[++ri]=n}}}}}}}return result}function concat(a,b){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.length;i1){return nodup(results)}return results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return docEl?docEl.nodeName!=="HTML":false},select:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}var n=valueCache[path](root),v;n=n[0]?n[0]:n;if(typeof n.normalize=="function"){n.normalize()}v=(n&&n.firstChild?n.firstChild.nodeValue:null);return((v===null||v===undefined||v==="")?defaultValue:v)},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0)},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'n = byClassName(n, " {1} ");'},{re:/^\:([\w\-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w\-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w\-\\]+)/,select:'n = byId(n, "{1}");'},{re:/^@([\w\-\.]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v},"!=":function(a,v){return a!=v},"^=":function(a,v){return a&&a.substr(0,v.length)==v},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v},"*=":function(a,v){return a&&a.indexOf(v)!==-1},"%=":function(a,v){return(a%v)===0},"|=":function(a,v){return a&&(a==v||a.substr(0,v.length+1)==v+"-")},"~=":function(a,v){return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1}},pseudos:{"first-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.previousSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"last-child":function(c){var r=[],ri=-1,n,i,ci;for(i=0;(ci=n=c[i]);i++){while((n=n.nextSibling)&&n.nodeType!=1){}if(!n){r[++ri]=ci}}return r},"nth-child":function(c,a){var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(cn=pn.firstChild;cn;cn=cn.nextSibling){if(cn.nodeType==1){cn.nodeIndex=++j}}pn._batch=batch}if(f==1){if(l===0||n.nodeIndex==l){r[++ri]=n}}else{if((n.nodeIndex+l)%f===0){r[++ri]=n}}}return r},"only-child":function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break}}if(empty){r[++ri]=ci}}return r},contains:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.is(ci,s)){r[++ri]=ci;break}}}return r},odd:function(c){return this["nth-child"](c,"odd")},even:function(c){return this["nth-child"](c,"even")},nth:function(c,a){return c[a-1]||[]},first:function(c){return c[0]||[]},last:function(c){return c[c.length-1]||[]},has:function(c,ss){var s=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;ia.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,i=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[i]=e;h[i]=e}else{b={to:{}};b.to[i]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var n=this,l=n.dom,i=n.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=i[0]+b.scrollLeft,o=i[1]+b.scrollTop,a=o+l.offsetHeight,p=g+l.offsetWidth,s=b.clientHeight,r=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),k=r+s,q=d+b.clientWidth,m;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){n.scrollChildFly.attach(l).highlight()}}},c)}else{n.scrollChildFly.attach(l).highlight()}}if(l.offsetHeight>s||ok){m=a-s}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("top",m,c)}if(e!==false){m=null;if(l.offsetWidth>b.clientWidth||gq){m=p-b.clientWidth}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("left",m,c)}}return n},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(k,a,c){if(!this.isScrollable()){return false}var i=this,e=i.dom,h=k==="r"||k==="l"?"left":"top",b=false,d,g;if(k==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=i.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=i.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var s=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",u="hidden",r="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",v="originalClip",b=/#document|body/i,w,g,p,d,t,i,x;if(!o||!o.getComputedStyle){s.prototype.getStyle=function(C,B){var O=this,J=O.dom,M=typeof C!="string",k=O.styleHooks,z=C,A=z,I=1,E=B,N,F,y,D,H,K,G;if(M){y={};z=A[0];G=0;if(!(I=A.length)){return y}}if(!J||J.documentElement){return y||""}F=J.style;if(B){K=F}else{K=J.currentStyle;if(!K){E=true;K=F}}do{D=k[z];if(!D){k[z]=D={name:s.normalize(z)}}if(D.get){H=D.get(J,O,E,K)}else{N=D.name;if(D.canThrow){try{H=K[N]}catch(L){H=""}}else{H=K?K[N]:""}}if(!M){return H}y[z]=H;z=A[++G]}while(G0&&C<0.5){k++}}}if(A){k-=z.getBorderWidth("tb")+z.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,C){var A=this,D=A.dom,B=A.isStyle("display","none"),z,y,E;if(B){return 0}if(C&&Ext.supports.BoundingClientRect){z=D.getBoundingClientRect();y=(A.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(z.bottom-z.top):(z.right-z.left)}else{y=D.offsetWidth}if(Ext.supports.Direct2DBug&&!A.vertical){E=A.adjustDirect2DDimension(h);if(C){y+=E}else{if(E>0&&E<0.5){y++}}}if(k){y-=A.getBorderWidth("lr")+A.getPadding("lr")}return(y<0)?0:y},setWidth:function(y,k){var z=this;y=z.adjustWidth(y);if(!k||!z.anim){z.dom.style.width=z.addUnits(y)}else{if(!Ext.isObject(k)){k={}}z.animate(Ext.applyIf({to:{width:y}},k))}return z},setHeight:function(k,y){var z=this;k=z.adjustHeight(k);if(!y||!z.anim){z.dom.style.height=z.addUnits(k)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{height:k}},y))}return z},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(z,k,y){var A=this;if(Ext.isObject(z)){y=k;k=z.height;z=z.width}z=A.adjustWidth(z);k=A.adjustHeight(k);if(!y||!A.anim){A.dom.style.width=A.addUnits(z);A.dom.style.height=A.addUnits(k)}else{if(y===true){y={}}A.animate(Ext.applyIf({to:{width:z,height:k}},y))}return A},getViewSize:function(){var z=this,A=z.dom,y=b.test(A.nodeName),k;if(y){k={width:s.getViewWidth(),height:s.getViewHeight()}}else{k={width:A.clientWidth,height:A.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("lr")+y.getPadding("lr"))}return(z&&k<0)?0:k},adjustHeight:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("tb")+y.getPadding("tb"))}return(z&&k<0)?0:k},getColor:function(y,z,E){var B=this.getStyle(y),A=E||E===""?E:"#",D,k,C=0;if(!B||(/transparent|inherit/.test(B))){return z}if(/^r/.test(B)){B=B.slice(4,B.length-1).split(",");k=B.length;for(;C5?A.toLowerCase():z)},setOpacity:function(y,k){var z=this;if(!z.dom){return z}if(!k||!z.anim){z.setStyle("opacity",y)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}z.animate(Ext.applyIf({to:{opacity:y}},k))}return z},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(z){var E=this,y=E.dom,C=E.getStyle("display"),B=y.style.display,F=y.style.position,D=z===h?0:1,k=y.currentStyle,A;if(C==="inline"){y.style.display="inline-block"}y.style.position=C.match(q)?"absolute":"static";A=(parseFloat(k[z])||parseFloat(k.msTransformOrigin.split(" ")[D])*2)%1;y.style.position=F;if(C==="inline"){y.style.display=B}return A},clip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(!z[e]){z[e]=true;k=y.getStyle([l,n,m]);z[v]={o:k[l],x:k[n],y:k[m]};y.setStyle(l,u);y.setStyle(n,u);y.setStyle(m,u)}return y},unclip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(z[e]){z[e]=false;k=z[v];if(k.o){y.setStyle(l,k.o)}if(k.x){y.setStyle(n,k.x)}if(k.y){y.setStyle(m,k.y)}}return y},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var y=Ext.get(this.insertHtml("beforeBegin","
"+Ext.String.format(s.boxMarkup,k)+"
"));Ext.DomQuery.selectNode("."+k+"-mc",y.dom).appendChild(this.dom);return y},getComputedHeight:function(){var y=this,k=Math.max(y.dom.offsetHeight,y.dom.clientHeight);if(!k){k=parseFloat(y.getStyle(r))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("tb")}}return k},getComputedWidth:function(){var y=this,k=Math.max(y.dom.offsetWidth,y.dom.clientWidth);if(!k){k=parseFloat(y.getStyle(h))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("lr")}}return k},getFrameWidth:function(y,k){return(k&&this.isBorderBox())?0:(this.getPadding(y)+this.getBorderWidth(y))},addClsOnOver:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.hover(function(){if(k&&C.call(y||A,A)===false){return}Ext.fly(B,a).addCls(z)},function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnFocus:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("focus",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z)});A.on("blur",function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnClick:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("mousedown",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z);var E=Ext.getDoc(),D=function(){Ext.fly(B,a).removeCls(z);E.removeListener("mouseup",D)};E.on("mouseup",D)});return A},getStyleSize:function(){var B=this,C=this.dom,y=b.test(C.nodeName),A,k,z;if(y){return{width:s.getViewWidth(),height:s.getViewHeight()}}A=B.getStyle([r,h],true);if(A.width&&A.width!="auto"){k=parseFloat(A.width);if(B.isBorderBox()){k-=B.getFrameWidth("lr")}}if(A.height&&A.height!="auto"){z=parseFloat(A.height);if(B.isBorderBox()){z-=B.getFrameWidth("tb")}}return{width:k||B.getWidth(true),height:z||B.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(s.unselectableCls);k.addCls(s.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(s.selectableCls);k.addCls(s.unselectableCls);return k},setVertical:function(B,y){var A=this,z=s.prototype,k;A.vertical=true;if(y){A.addCls(A.verticalCls=y)}A.setWidth=z.setHeight;A.setHeight=z.setWidth;if(!Ext.isIE9m){A.getWidth=z.getHeight;A.getHeight=z.getWidth}A.styleHooks=(B===270)?s.prototype.verticalStyleHooks270:s.prototype.verticalStyleHooks90},setHorizontal:function(){var y=this,k=y.verticalCls;delete y.vertical;if(k){delete y.verticalCls;y.removeCls(k)}delete y.setWidth;delete y.setHeight;if(!Ext.isIE9m){delete y.getWidth;delete y.getHeight}delete y.styleHooks}});s.prototype.styleHooks=w=Ext.dom.AbstractElement.prototype.styleHooks;s.prototype.verticalStyleHooks90=g=Ext.Object.chain(s.prototype.styleHooks);s.prototype.verticalStyleHooks270=p=Ext.Object.chain(s.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){w.fontSize=w["font-size"]={name:"fontSize",canThrow:true};w.fontStyle=w["font-style"]={name:"fontStyle",canThrow:true};w.fontFamily=w["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(A,y,z,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];t=d.length;while(t--){i=d[t];x="border"+i+"Width";w["border-"+i.toLowerCase()+"-width"]=w[x]={name:x,styleName:"border"+i+"Style",get:c}}}Ext.getDoc().on("selectstart",function(B,D){var C=document.documentElement,A=s.selectableCls,z=s.unselectableCls,k=D&&D.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(D&&D.nodeType===1&&D!==C){var y=Ext.fly(D);if(y.hasCls(A)){return}if(y.hasCls(z)){B.stopEvent();return}D=D.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,i=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:i});Ext.EventManager.onWindowResize(c,null);if(i){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,i,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+i,n[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(k,D,e){var E=this,B=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,F=document,C=F.documentElement,p=F.body,A=(C.scrollLeft||p.scrollLeft||0),w=(C.scrollTop||p.scrollTop||0),a,h,t,g,u,v,r,s,z,q,o,b,c,i,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];D=(!D||D=="?"?"tl-bl?":(!(/-/).test(D)&&D!==""?"tl-"+D:D||"tl-bl")).toLowerCase();D=E.convertPositionSpec(D);a=D.match(E._alignRe);q=a[1];o=a[2];z=!!a[3];h=E.getAnchorXY(q,true);t=E.getAnchorToXY(k,o,false);n=t[0]-h[0]+e[0];l=t[1]-h[1]+e[1];if(z){g=E.getWidth();u=E.getHeight();v=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);i=o.charAt(0);m=o.charAt(o.length-1);r=((b=="t"&&i=="b")||(b=="b"&&i=="t"));s=((c=="r"&&m=="l")||(c=="l"&&m=="r"));if(n+g>B+A){n=s?v.left-g:B+A-g}if(nd+w){l=r?v.top-u:d+w-u}if(le.right){d=true;b[0]=(e.right-i.right)}if(i.left+b[0]e.bottom){d=true;b[1]=(e.bottom-i.bottom)}if(i.top+b[1]0||q.scrollLeft>0){t[++p]=q}}return t};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(s,r){var p=this;r=r||p.dom;try{if(Number(s)){Ext.defer(p.focus,s,p,[null,r])}else{r.focus()}}catch(q){}return p},blur:function(){var p=this,r=p.dom;if(r!==document.body){try{r.blur()}catch(q){}return p}else{return p.focus(undefined,r)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,s,r){var t=this;t.on("mouseenter",q,s||t.dom,r);t.on("mouseleave",p,s||t.dom,r);return t},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(p,r){var s=this.dom,q;if(r){q=typeof s[r+":"+p];if(q!="undefined"&&q!="unknown"){return s[r+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return s[p]||null}:function(p,q){var r=this.dom;if(q){return r.getAttributeNS(q,p)||r.getAttribute(q+":"+p)}return r.getAttribute(p)||r[p]||null},cacheScrollValues:function(){var t=this,s,r,q,u=[],p=function(){for(q=0;q]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='
';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.exec(html))){attrs=match[1];srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){s=DOC.createElement("script");s.src=srcMatch[2];typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g";for(;v\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:r},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];i.Query=Ext.extend(Object,{constructor:function(s){s=s||{};Ext.apply(this,s)},execute:function(t){var v=this.operations,w=0,x=v.length,u,s;if(!t){s=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(t)){s=t}else{if(t.isMixedCollection){s=t.items}}}for(;w1){for(v=0,w=x.length;v0){s.push(t[0])}return s},last:function(u){var s=u.length,t=[];if(s>0){t.push(u[s-1])}return t},focusable:function(t){var s=t.length,v=[],u=0,w;for(;u1){w=v.length;for(u=0;u=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},1,0,0,0,0,0,[Ext.util,"Filter"],function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]}));(Ext.cmd.derive("Ext.util.AbstractMixedCollection",Ext.Base,{isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(c,d){var a=this.length,b;if(arguments.length===1){b=this.insert(a,c)}else{b=this.insert(a,c,d)}return b},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c2){a=this.doInsert(b,[c],[d])}else{a=this.doInsert(b,[c])}a=a[0]}return a},doInsert:function(k,p,o){var m=this,b,c,g,l=p.length,a=l,e=m.hasListeners.add,d,h={},n,r,q;if(o!=null){m.useLinearSearch=true}else{o=p;p=new Array(l);for(g=0;g=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var k=this,b,l,g,e,c,d;if(h=0){if(!a){a=1}e=Math.min(h+a,k.length);a=e-h;d=e===k.length;c=d&&k.indexGeneration===k.generation;for(g=h;g=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(!this.map.hasOwnProperty(a)){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=e.keys,a=c.length,b;for(b=0;bb){e=true;g=i;i=b;b=g}if(i<0){i=0}if(b==null||b>=a){b=a-1}c=d.slice(i,b+1);if(e&&c.length){c.reverse()}return c},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var k=this,a=new k.self(k.initialConfig),h=k.keys,b=k.items,g=b.length,c;a.getKey=k.getKey;for(c=0;ce?1:(g>1;h=d(e,b[c]);if(h>=0){i=c+1}else{if(h<0){a=c-1}}}return i},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],i;h.suspendEvents();for(i in d){a[d[i]]=b[i]}for(c=0;ce?1:(g=d.duration),e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}},1,0,0,0,0,[["queue",Ext.fx.Queue]],[Ext.fx,"Manager"],0));(Ext.cmd.derive("Ext.fx.Animator",Ext.Base,{isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,m=[],k=h.to||{},b=h.duration,n,a,c,g,l,e;for(l in d){if(d.hasOwnProperty(l)&&h.animKeyFramesRE.test(l)){e={attrs:Ext.apply(d[l],k)};if(l=="from"){l=0}else{if(l=="to"){l=100}}e.pct=parseInt(l,10);m.push(e)}}Ext.Array.sort(m,h.sorter);g=m.length;for(c=0;c0},isRunning:function(){return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Animator"],0));(Ext.cmd.derive("Ext.fx.CubicBezier",Ext.Base,{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,i){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(r){return((a*r+m)*r+k)*r}function c(r,u){var s=e(r,u);return((q*s+l)*s+h)*s}function e(r,z){var y,w,u,s,v,t;for(u=r,t=0;t<8;t++){s=g(u)-r;if(Math.abs(s)w){return w}while(ys){y=u}else{w=u}u=(w-y)/2+y}return u}return c(p,1/(200*i))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}},0,0,0,0,0,0,[Ext.fx,"CubicBezier"],0));Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var i=0.07813-m/2,o=-0.25,p=g(0.0066+i*i),s=p-i,l=d(a(s),1/3)*(s<0?-1:1),r=-p-i,k=d(a(r),1/3)*(r<0?-1:1),u=l+k+0.25;return d(1-u,2)*3*u*0.1+(1-u)*3*u*u+u*u*u},easeIn:function(i){return d(i,1.7)},easeOut:function(i){return d(i,0.48)},easeInOut:function(s){var m=0.48-s/1.04,l=g(0.1734+m*m),i=l-m,r=d(a(i),1/3)*(i<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=r+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(i){return i*i*((c+1)*i-c)},backOut:function(i){i=i-1;return i*i*((c+1)*i+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,i=k/4;return d(2,-10*l)*b((l-i)*(2*h)/k)+1},elasticOut:function(i){return 1-Ext.fx.Easing.elasticIn(1-i)},bounceIn:function(i){return 1-Ext.fx.Easing.bounceOut(1-i)},bounceOut:function(o){var k=7.5625,m=2.75,i;if(o<(1/m)){i=k*o*o}else{if(o<(2/m)){o-=(1.5/m);i=k*o*o+0.75}else{if(o<(2.5/m)){o-=(2.25/m);i=k*o*o+0.9375}else{o-=(2.625/m);i=k*o*o+0.984375}}}return i}},function(){var k=Ext.fx.Easing.self,i=k.prototype;k.implement({"back-in":i.backIn,"back-out":i.backOut,"ease-in":i.easeIn,"ease-out":i.easeOut,"elastic-in":i.elasticIn,"elastic-out":i.elasticOut,"bounce-in":i.bounceIn,"bounce-out":i.bounceOut,"ease-in-out":i.easeInOut})})});(Ext.cmd.derive("Ext.draw.Color",Ext.Base,{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,i=k.g/255,m=k.b/255,n=Math.max(a,i,m),d=Math.min(a,i,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=(c<0.5)?o/(n+d):o/(2-n-d);if(a==n){e=60*(i-m)/o}else{if(i==n){e=120+60*(m-a)/o}else{e=240+60*(a-i)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(i){var c,e,d,a,h=parseInt;if((i.length==4||i.length==7)&&i.substr(0,1)==="#"){c=i.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(i.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=i.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,p,d){var a,b,c,e,n=[],o=Math.abs,k=Math.floor;if(p==0||g==null){n=[d,d,d]}else{g/=60;a=p*(1-o(2*d-1));b=a*(1-o(g-2*k(g/2)-1));c=d-a/2;switch(k(g)){case 0:n=[a,b,0];break;case 1:n=[b,a,0];break;case 2:n=[0,a,b];break;case 3:n=[0,b,a];break;case 4:n=[b,0,a];break;case 5:n=[a,0,b];break}n=[n[0]+c,n[1]+c,n[2]+c]}return new Ext.draw.Color(n[0]*255,n[1]*255,n[2]*255)}},3,0,0,0,0,0,[Ext.draw,"Color"],function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})}));(Ext.cmd.derive("Ext.draw.Draw",Ext.Base,{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var i=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&i.push(+l)});if(h=="m"&&i.length>2){c.push([e].concat(Ext.Array.splice(i,0,2)));h="l";e=(e=="m")?"l":"L"}while(i.length>=d[h]){c.push([e].concat(Ext.Array.splice(i,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;k.x=a[g-2];k.y=a[g-1];k.bx=parseFloat(a[g-4])||k.x;k.by=parseFloat(a[g-3])||k.y}return h},interpolatePaths:function(s,m){var k=this,d=k.pathToAbsolute(s),n=k.pathToAbsolute(m),o={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,t){if(p[t].length>7){p[t].shift();var u=p[t];while(u.length){Ext.Array.splice(p,t++,0,["C"].concat(Ext.Array.splice(u,0,6)))}Ext.Array.erase(p,t,1);q=Math.max(d.length,n.length||0)}},c=function(w,v,t,p,u){if(w&&v&&w[u][0]=="M"&&v[u][0]!="M"){Ext.Array.splice(v,u,0,["M",p.x,p.y]);t.bx=0;t.by=0;t.x=w[u][1];t.y=w[u][2];q=Math.max(d.length,n.length||0)}},h,q,g,r,e,l;for(h=0,q=Math.max(d.length,n.length||0);h1){ab=W(ab);I=ab*I;G=ab*G}c=I*I;S=G*G;V=(o==g?-1:1)*W(v((c*S-c*O*O-S*P*P)/(c*O*O+S*P*P)));D=V*I*O/G+(u+s)/2;C=V*-G*P/I+(ag+af)/2;n=p(((ag-C)/G).toFixed(7));m=p(((af-C)/G).toFixed(7));n=um){n=n-d*2}if(!g&&m>n){m=m-d*2}}else{n=B[0];m=B[1];D=B[2];C=B[3]}r=m-n;if(v(r)>F){E=m;H=s;q=af;m=n+F*(g&&m>n?1:-1);s=D+I*U(m);af=C+G*a(m);N=w.arc2curve(s,af,I,G,A,0,g,H,q,[m,E,D,C])}r=m-n;l=U(n);ae=a(n);e=U(m);ad=a(m);Q=K.tan(r/4);T=4/3*I*Q;R=4/3*G*Q;ac=[u,ag];aa=[u+T*ae,ag-R*l];Z=[s+T*ad,af-R*e];X=[s,af];aa[0]=2*ac[0]-aa[0];aa[1]=2*ac[1]-aa[1];if(B){return[aa,Z,X].concat(N)}else{N=[aa,Z,X].concat(N).join().split(",");M=[];L=N.length;for(Y=0;Y(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],i=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*i-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*i-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k0){w.push(g)}}else{k=u-3*t+3*o-n;q=2*(u-t-t+o);h=u-t;v=q*q-4*k*h;e=k+k;if(v===0){g=q/e;if(g<1&&g>0){w.push(g)}}else{if(v>0){x=Math.sqrt(v);g=(x+q)/e;if(g<1&&g>0){w.push(g)}g=(q-x)/e;if(g<1&&g>0){w.push(g)}}}}l=Math.min(u,n);p=Math.max(u,n);for(m=0;m=d&&k>=v)||(k<=d&&k<=v)){h=m=s}else{h=g((l-e)/n(k-d));if(ds){c-=q}h+=c;m+=c;p=l-u*a(h);o=k+u*b(h);y=l+t*a(m);x=k+t*b(m);if((k>d&&od)){p+=n(d-o)*(p-l)/(o-k);o=d}if((k>v&&xv)){y-=n(v-x)*(y-l)/(x-k);x=v}return{x1:p,y1:o,x2:y,y2:x}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,s,t=1,h=o.length,d=1,l=g,k=e,w,v,u,m,r,n,b;for(;t0){r=Math.floor((p-(o/10))/o)*o}if(v){for(q=0;q=0){d=0;while(d>p){d-=e;a++}p=+d.toFixed(10);d=0;while(d=15){k=1;if(++e>11){i++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){i++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){i++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(i);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,i=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*i),Math.sin(c*i)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}},0,0,0,0,0,0,[Ext.draw,"Draw"],0));(Ext.cmd.derive("Ext.fx.PropertyHandler",Ext.Base,{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,i){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(i)&&!e&&this.pixelDefaultsRE.test(i)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e=d){m=d;a=true}if(i.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}i.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Anim"],0));Ext.enableFx=true;(Ext.cmd.derive("Ext.util.Animate",Ext.Base,{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},0,0,0,0,0,0,[Ext.util,"Animate"],function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()}));(Ext.cmd.derive("Ext.util.ElementContainer",Ext.Base,{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),k,l,d,c,h;k=(a||e.id)+"-";for(d=g.length;d--;){l=g[d];if(typeof l=="string"){h=b.getById(k+l)}else{if((c=l.select)){h=Ext.select(c,true,b.dom)}else{if((c=l.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(l.id||(k+l.itemId))}}l=l.name}e[l]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(p){var l=this,q=p.$childEls,n,d,b,k,o,h,a,c,e,g,m;if(!q){g=p.superclass;if(g){g=g.self;c=[g.$childEls||l.getClassChildEls(g)];m=g.prototype.mixins||{}}else{c=[];m={}}e=p.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!m.hasOwnProperty(a)){o=h[a].self;c.push(o.$childEls||l.getClassChildEls(o))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d','
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation">
','
','
',"
",'
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","
",'
','
','','
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">','
{parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation">
','
','
',"
","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'','',"",'','','',"","","",'','",'',"",'',"",'','','',"","","
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}"," {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">
","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},i=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}i.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,i){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,i)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var k=this,m=k.autoEl,g=k.getFrameInfo(),b={tag:"div",tpl:g?k.initFramingTpl(g.table):k.initRenderTpl()},a=k.protoEl,c,e,h,n,d,l;k.initStyles(a);a.writeTo(b);a.flush();if(Ext.isString(m)){b.tag=m}else{Ext.apply(b,m)}b.id=k.id;if(b.tpl){if(g){e=k.frameElNames;h=e.length;b.tplData=l=k.getFrameRenderData();l.renderData=k.initRenderData();d=l.fgid;for(c=0;c table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var x=this,p=x.frameInfoCache,e=x.getFramingInfoCls()+"-frameInfo",y=p[e],q=Math.max,o,l,t,n,z,g,k,b,c,m,h,s,u,i,a,d,w,r,v;if(y==null){o=Ext.fly(x.getStyleProxy(e),"frame-style-el");t=o.getStyle("font-family");if(t){t=t.split("-");d=parseInt(t[1],10);w=parseInt(t[2],10);r=parseInt(t[3],10);v=parseInt(t[4],10);b=parseInt(t[5],10);c=parseInt(t[6],10);m=parseInt(t[7],10);h=parseInt(t[8],10);s=parseInt(t[9],10);u=parseInt(t[10],10);i=parseInt(t[11],10);a=parseInt(t[12],10);n=q(b,q(d,w));z=q(c,q(w,r));g=q(m,q(v,r));k=q(h,q(d,v));y={table:t[0].charAt(0)==="t",vertical:t[0].charAt(1)==="v",top:n,right:z,bottom:g,left:k,width:k+z,height:n+g,maxWidth:q(n,z,g,k),border:{top:b,right:c,bottom:m,left:h,width:h+c,height:b+m},padding:{top:s,right:u,bottom:i,left:a,width:a+u,height:s+i},radius:{tl:d,tr:w,br:r,bl:v}}}else{y=false}p[e]=y}x.frame=!!y;x.frameSize=y;return y},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}},0,0,0,0,0,0,[Ext.util,"Renderable"],0));(Ext.cmd.derive("Ext.state.Provider",Ext.Base,{prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,i;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(i=0;ie){r=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=u.el.getStyle("overtflow");if(k!=="hidden"){u.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(u.width);t=!Ext.isNumber(u.height);u.setSize(n,r);u.el.setSize(q,e);if(b){delete u.width}if(t){delete u.height}}if(g){d.width=a}if(m){d.height=l}}i=u.constrain;p=u.constrainHeader;if(i||p){u.constrain=u.constrainHeader=false;s=c.callback;c.callback=function(){u.constrain=i;u.constrainHeader=p;if(s){s.call(c.scope||u,arguments)}if(k!=="hidden"){u.el.setStyle("overflow",k)}}}return u.mixins.animate.animate.apply(u,arguments)},setHiddenState:function(a){var b=this.getHierarchyState();this.hidden=a;if(a){b.hidden=true}else{delete b.hidden}},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var k=this,h=k.ownerCt,a,g,e,c;if(d&&k.is(b)){return k}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,k)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,k){var b=this,c=b.ownerCt,l,e,h,g,a;if(k&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g=8){a=new XDomainRequest()}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var i=this,l=e.xhr,c=i.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){i.processXdrResponse(d,l)}if(e.binary){d.responseBytes=i.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(l){var c=l.response,k=l.responseBody,b,g,a,d;if(l instanceof Ext.data.flash.BinaryXhr){b=l.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=new VBArray(k).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(l.responseBody,b=[])}else{b=[];g=l.responseText;a=g.length;for(d=0;d1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},beforeLayout:function(){this.callParent(arguments);if(this.floating){this.onBeforeFloatLayout()}},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:(c.constrain||c.draggable.constrain)?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container)):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if((a===true)&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if((a===true)&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||(c.floating&&!e&&c.isHierarchicallyHidden())){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;Ext.suspendLayouts();if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();Ext.resumeLayouts();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}else{Ext.resumeLayouts(true)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,i=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:i.getX(),y:i.getY(),width:i.dom.offsetWidth,height:i.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};i.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;i.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=(d.fireEvent("beforehide",d)!==false);if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(h,a,e){var g=this,c,d,b;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){b={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!h){g.afterHide(a,e)}},afterHide:function(a,b){var c=this,d=Ext.Element.getActiveElement();c.hiddenByLayout=null;Ext.AbstractComponent.prototype.onHide.call(c);if(d===c.el||c.el.contains(d)){Ext.fly(d).blur()}Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c=0){n=o[l].splitterDelta;if(i.getAt(h+n)!==a){i.remove(a);h=i.indexOf(k);if(n>0){++h}i.insert(h,a)}}}if(m){if(e){k.expand(false)}b.remove(m);k.placeholder=null;if(e){k.collapse(null,false)}}b.updateLayout();Ext.resumeLayouts(true);k.fireEventArgs("changeregion",[k,d])}else{k.region=l}}return d},setRegionWeight:function(d){var c=this,b=c.getOwningBorderContainer(),e=c.placeholder,a=c.weight;if(d!==a){if(c.fireEventArgs("beforechangeweight",[c,d])!==false){c.weight=d;if(e){e.weight=d}if(b){b.updateLayout()}c.fireEventArgs("changeweight",[c,a])}}return a}});(Ext.cmd.derive("Ext.ElementLoader",Ext.Base,{statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"ElementLoader"],0));(Ext.cmd.derive("Ext.ComponentLoader",Ext.ElementLoader,{statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var i=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){i=false}if(i){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return i}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,"ComponentLoader"],0));(Ext.cmd.derive("Ext.layout.SizeModel",Ext.Base,{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},1,0,0,0,0,0,[Ext.layout,"SizeModel"],function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c','
',"{%this.renderBody(out,values)%}","
","","{% } else if (values.shrinkWrapWidth) { %}",'',"",'","","
',"{%this.renderBody(out,values)%}",'
',"
","{% } else { %}",'
','
',"{%this.renderBody(out,values)%}",'
',"
","
","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['',"",'","","
',"
"],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(h){var m=this,c=m.outerCt,l=m.lastOuterCtWidth||"",k=m.lastOuterCtHeight||"",n=m.lastOuterCtTableLayout||"",b=h.state,o,g,i,p,d,a,e;m.callParent(arguments);i=p=d="";if(!h.widthModel.shrinkWrap&&m.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=m.getOverflowYStyle(h);if(g==="auto"||g==="scroll"){a=true}}if(!a){i="100%"}e=m.owner.hierarchyStateInner;o=m.getOverflowXStyle(h);d=(e.inShrinkWrapTable||o==="auto"||o==="scroll")?"":"fixed"}if(!h.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){p="100%"}if((i!==l)||m.hasOuterCtPxWidth){c.setStyle("width",i);m.lastOuterCtWidth=i;m.hasOuterCtPxWidth=false}if(d!==n){c.setStyle("table-layout",d);m.lastOuterCtTableLayout=d}if((p!==k)||m.hasOuterCtPxHeight){c.setStyle("height",p);m.lastOuterCtHeight=p;m.hasOuterCtPxHeight=false}if(m.hasInnerCtPxHeight){m.innerCt.setStyle("height","");m.hasInnerCtPxHeight=false}b.overflowAdjust=b.overflowAdjust||m.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=((g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0)),c=(a&1)||undefined,h=(a&2)||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,i;e=(h.getOverflowXStyle(c)==="auto");d=(h.getOverflowYStyle(c)==="auto");if(e||d){a=Ext.getScrollbarSize();i=c.overflowContext.el.dom;g=0;if(i.scrollWidth>i.clientWidth){g|=1}if(i.scrollHeight>i.clientHeight){g|=2}b=(d&&(g&2))?a.width:0;k=(e&&(g&1))?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",a.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&((a.shrinkWrap&1)||(a.floating&&!a.width))){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,l,d,k;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();l=h.innerCt.dom.childNodes;d=l.length;for(;ck.dom.clientHeight)){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);t.hasOuterCtPxWidth=true}if(i&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){s=true}if(((Ext.isIE8&&Ext.isStrict)||Ext.isIE7m&&Ext.isStrict&&r)){h=true;c=!Ext.isIE8}if((s||h)&&p&&(k.dom.scrollWidth>k.dom.clientWidth)){i=Math.max(i-q.height,0)}if(s){d.outerCtContext.setProp("height",i+g.height);t.hasOuterCtPxHeight=true}if(h){if(c){i+=g.height}d.innerCtContext.setProp("height",i);t.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!r&&(l==="auto")){a=(e==="auto")?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,["layout.auto","layout.autocontainer"],0,[Ext.layout.container,"Auto"],function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26}));(Ext.cmd.derive("Ext.ZIndexManager",Ext.Base,{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e=0&&a[c].hidden;--c){}if((b=a[c])){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},1,0,0,0,0,0,[Ext,"ZIndexManager",Ext,"WindowGroup"],function(){Ext.WindowManager=Ext.WindowMgr=new this()}));(Ext.cmd.derive("Ext.Queryable",Ext.Base,{isQueryable:true,query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d "+a)[0]||null},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},getRefItems:function(){return[]}},0,0,0,0,0,0,[Ext,"Queryable"],0));(Ext.cmd.derive("Ext.container.AbstractContainer",Ext.Component,{renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:false,autoDestroy:true,defaultType:"panel",detachOnRemove:true,isContainer:true,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",defaultLayoutType:"auto",initComponent:function(){var a=this;a.addEvents("afterlayout","beforeadd","beforeremove","add","remove");a.callParent();a.getLayout();a.initItems()},initItems:function(){var b=this,a=b.items;b.items=new Ext.util.AbstractMixedCollection(false,b.getComponentId);b.floatingItems=new Ext.util.MixedCollection(false,b.getComponentId);if(a){if(!Ext.isArray(a)){a=[a]}b.add(a)}},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var a=this.getLayout();if(a){a.finishRender()}},beforeRender:function(){var b=this,a=b.getLayout(),c;b.callParent();if(!a.initialized){a.initLayout()}c=a.targetCls;if(c){b.applyTargetCls(c)}},applyTargetCls:function(a){this.addCls(a)},afterComponentLayout:function(){var b=this.floatingItems.items,a=b.length,d,c;this.callParent(arguments);for(d=0;d=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((l=g[h]).isFocusable()){return[l]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,k;for(;gd.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(i,b,p){var k=this,a=b||k,q=i.getKey(),g=Ext.EventObject,l=i.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,i;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");i=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);i.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(i){if(e.focusedCmp===a){return e.navigateSiblings(i,e,a)}else{return e.navigateSiblings(i)}};Ext.iterate(g,function(k,i){b[k]=function(m){var l=h(m);if(Ext.isFunction(i)&&i.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"FocusManager",Ext,"FocusMgr"],0));(Ext.cmd.derive("Ext.Img",Ext.Component,{autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}},0,["image","imagecomponent"],["component","image","box","imagecomponent"],{component:true,image:true,box:true,imagecomponent:true},["widget.image","widget.imagecomponent"],0,[Ext,"Img"],0));(Ext.cmd.derive("Ext.util.Bindable",Ext.Base,{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,"Bindable"],0));(Ext.cmd.derive("Ext.LoadMask",Ext.Component,{msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['
','
',"
"],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}},1,["loadmask"],["component","box","loadmask"],{component:true,box:true,loadmask:true},["widget.loadmask"],[["floating",Ext.util.Floating],["bindable",Ext.util.Bindable]],[Ext,"LoadMask"],0));(Ext.cmd.derive("Ext.data.association.Association",Ext.Base,{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],i=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=i;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+(++h.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}},1,0,0,0,0,0,[Ext.data.association,"Association",Ext.data,"Association"],0));(Ext.cmd.derive("Ext.ModelManager",Ext.AbstractManager,{alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},unregisterType:function(a){delete this.types[a]},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d','
{text}
',"",'
','','
',"
{text}
","
","
","
"],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||" ",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}},0,["progressbar"],["component","progressbar","box"],{component:true,progressbar:true,box:true},["widget.progressbar"],0,[Ext,"ProgressBar"],0));(Ext.cmd.derive("Ext.ShadowPool",Ext.Base,{singleton:true,markup:(function(){return Ext.String.format('',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b0;){q[d].hasListeners._incr_(n)}t=k[n]||(k[n]={});t=t[c]||(t[c]={});h=t[g.id]||(t[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}},1,0,0,0,0,0,[Ext.app,"EventDomain"],0));(Ext.cmd.derive("Ext.app.domain.Component",Ext.app.EventDomain,{singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}},1,0,0,0,0,0,[Ext.app.domain,"Component"],0));(Ext.cmd.derive("Ext.app.EventBus",Ext.Base,{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}},1,0,0,0,0,0,[Ext.app,"EventBus"],0));(Ext.cmd.derive("Ext.data.StoreManager",Ext.util.MixedCollection,{alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d',' ,__field{#} = fields.map["{name}"]\n',"",";\n","return function(dest, source, record) {\n",'','{% var fieldAccessExpression = this.createFieldAccessExpression(values, "__field" + xindex, "source");'," if (fieldAccessExpression) { %}",' value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','',' dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n',''," if (value === undefined) {\n"," if (me.applyDefaults) {\n",'',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',""," };\n"," } else {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," };\n",""," if (value !== undefined) {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," }\n","","{% } else { %}",'','',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',"","","{% } %}","",'',' if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n',' record.{["internalId"]} = internalId;\n'," }\n","","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=function(){return c.createFieldAccessExpression.apply(c,arguments)};return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data.reader,"Reader",Ext.data,"Reader",Ext.data,"DataReader"],function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})}));(Ext.cmd.derive("Ext.data.reader.Json",Ext.data.reader.Reader,{alternateClassName:"Ext.data.JsonReader",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(p,d,e){var b=p.mapping,n=b||b===0,c=n?b:p.name,q,g;if(b===false){return}if(typeof c==="function"){q=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||((g=String(c).search(a))<0)){if(!n||isNaN(c)){c='"'+c+'"'}q=e+"["+c+"]"}else{if(g===0){q=e+c}else{var k=c.split("."),m=k.length,l=1,o=e+"."+k[0],h=[o];for(;l1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty],a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(c==null){c=g.name}if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}},1,0,0,0,["writer.base"],0,[Ext.data.writer,"Writer",Ext.data,"DataWriter",Ext.data,"Writer"],0));(Ext.cmd.derive("Ext.data.writer.Json",Ext.data.writer.Writer,{alternateClassName:"Ext.data.JsonWriter",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(i,m){var n={};n[i]=m;return n};for(;e0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}},0,0,0,0,["writer.json"],0,[Ext.data.writer,"Json",Ext.data,"JsonWriter"],0));(Ext.cmd.derive("Ext.data.proxy.Proxy",Ext.Base,{alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,isSynchronous:false,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,i;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n1){if(k.action=="update"||a[0].clientIdProperty){m=new Ext.util.MixedCollection();m.addAll(o);for(h=a.length;h--;){b=a[h];e=m.findBy(k.matchClientRec,b);l=b.copyFrom(e);if(n){c.push(l)}}}else{for(d=0,g=a.length;d0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a,b=this;if(!b.isDestroyed){b.clearListeners();if(b.storeId){Ext.data.StoreManager.unregister(b)}b.clearData();b.data=b.tree=b.sorters=b.filters=b.groupers=null;if(b.reader){b.reader.destroyReader()}b.proxy=b.reader=b.writer=null;b.isDestroyed=true;if(b.implicitModel){a=Ext.getClassName(b.model);Ext.undefine(a);Ext.ModelManager.unregisterType(a)}else{b.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(i){g[g.length]=i.serialize();c=true})}if(e.sorters){e.sorters.each(function(i){if(b&&!e.groupers.contains(i)){h[h.length]=i.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(i){d[d.length]=i.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.autoLoad&&(e.remoteSort||e.remoteGroup||e.remoteFilter)){if(e.autoLoad===true){e.reload()}else{e.reload(e.autoLoad)}}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}},1,0,0,0,0,[["observable",Ext.util.Observable],["sortable",Ext.util.Sortable]],[Ext.data,"AbstractStore"],0));(Ext.cmd.derive("Ext.app.domain.Store",Ext.app.EventDomain,{singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}},1,0,0,0,0,0,[Ext.app.domain,"Store"],0));(Ext.cmd.derive("Ext.app.Controller",Ext.Base,{statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,i;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||((i=l.exec(m))&&i[1]);if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},finishInit:function(g){var d=this,e=d.controllers,b,c,a;if(d._initialized&&e&&e.length){for(c=0,a=e.length;c[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"None",Ext.layout.boxOverflow,"None"],0));(Ext.cmd.derive("Ext.toolbar.Item",Ext.Component,{alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,["tbitem"],["tbitem","component","box"],{tbitem:true,component:true,box:true},["widget.tbitem"],0,[Ext.toolbar,"Item",Ext.Toolbar,"Item"],0));(Ext.cmd.derive("Ext.toolbar.Separator",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false},0,["tbseparator"],["tbitem","component","box","tbseparator"],{tbitem:true,component:true,box:true,tbseparator:true},["widget.tbseparator"],0,[Ext.toolbar,"Separator",Ext.Toolbar,"Separator"],0));(Ext.cmd.derive("Ext.button.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(!a.initialized){Ext.getDoc().on({keydown:a.onDocumentKeyDown,mouseup:a.onDocumentMouseUp,scope:a});a.initialized=true}},onDocumentKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},onButtonMousedown:function(a,c){var b=this.pressedButton;if(b){b.onMouseUp(c)}this.pressedButton=a},onDocumentMouseUp:function(b){var a=this.pressedButton;if(a){a.onMouseUp(b);this.pressedButton=null}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;ad){h=s.constrainedMax;o=d}else{if(kd){g=s.constrainedMax;n=d}else{if(k0){a.hideAll()}},a)},hideAll:function(){var c=this.active,b,a,d;if(c&&c.length>0){b=Ext.Array.slice(c.items);d=b.length;for(a=0;a50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getDoc().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,k,e,h;if(c&&g){k=a[c];e=k.length;for(;b/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var h=this,c=h.owner,i=d.btnElContext,g=d.btnInnerElContext,m=d.btnWrapContext,e=Math.max,b,k,l,a;h.callParent(arguments);if(d.heightModel.shrinkWrap){l=c.btnEl.getHeight();if(d.isHtmlText){h.centerInnerEl(d,l);h.ieCenterIcon(d,l)}}else{b=d.getProp("height");if(b){k=b-d.getFrameInfo().height-d.getPaddingInfo().height;l=k;if((c.menu||c.split)&&c.arrowAlign==="bottom"){l-=m.getPaddingInfo().bottom}a=l;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=g.getPaddingInfo().height}m.setProp("height",e(0,k));i.setProp("height",e(0,l));if(d.isHtmlText){h.centerInnerEl(d,l)}else{g.setProp("line-height",e(0,a)+"px")}h.ieCenterIcon(d,l)}else{if(b!==0){h.done=false}}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&(da){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}},0,0,0,0,["layout.button"],0,[Ext.layout.component,"Button"],0));(Ext.cmd.derive("Ext.util.TextMetrics",Ext.Base,{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,d){var c=this,b=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});c.measure=b;if(a){c.bind(a)}b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(d){b.setWidth(d)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},1,0,0,0,0,0,[Ext.util,"TextMetrics"],function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})}));(Ext.cmd.derive("Ext.button.Button",Ext.Component,{alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,tabIndex:0,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:[' {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",'','',""],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.autoEl={tag:"a",role:"button",hidefocus:"on",unselectable:"on"};a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a;if(b.iconCls||b.icon||b.glyph){a=[b.text?"icon-text-"+b.iconAlign:"icon"]}else{if(b.text){a=["noicon"]}else{a=[]}}if(b.pressed){a[a.length]=b.pressedCls}return a},beforeRender:function(){var b=this,c=b.autoEl,a=b.getHref(),d=b.hrefTarget;if(!b.disabled){c.tabIndex=b.tabIndex}if(a){c.href=a;if(d){c.target=d}}b.callParent();b.oldCls=b.getComponentCls();b.addClsWithUI(b.oldCls);Ext.applyIf(b.renderData,b.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||" "}},setHref:function(a){this.href=a;this.el.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.el.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b);d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.el.id},c));b.tooltip=c}else{b.el.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.el;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||" ");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.el)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=(c.arrowAlign==="right")?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h(None)',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,k=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;cb){k=r.target;p.menuItems.push(k);k.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(k){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,i){return l.isXType("buttongroup")&&!(i instanceof Ext.toolbar.Separator)};k.suspendLayouts();h.clearMenu();k.removeAll();for(;d=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.names,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt[h.scrollTo](h.beforeScrollX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var i=this,e=i.layout,c=e.owner,h=e.names,a,d,g;k=i.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=i.getMaxScrollPosition()}else{a=i.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=(i.layout.innerCt[h.getWidth]()-d[h.width])}}}}if(g!==undefined){i.scrollTo(g,b)}}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),i=a+c.innerCt[g.getWidth]();return{hiddenStart:ei,fullyVisible:e>a&&d=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(athis.right)},isOutOfBoundY:function(a){return(athis.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}},3,0,0,0,0,0,[Ext.util,"Region"],0));(Ext.cmd.derive("Ext.dd.DragDropManager",Ext.Base,{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;a.on(document,"mouseup",this.handleMouseUp,this,true);a.on(document,"mousemove",this.handleMouseMove,this,true);a.on(window,"unload",this._onUnload,this,true);a.on(window,"resize",this._onResize,this,true)},_onResize:function(a){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;cc.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(v,n){var x=this,g=x.dragCurrent,c,p,t=v.getPoint(),d,m,o=[],h=[],l=[],a=[],w=[],u=[],k,b,r,s,q;if(!g||g.isLocked()){return}if(!x.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();p=c.style.top;c.style.top="-10000px";k=v.getXY();v.target=document.elementFromPoint(k[0],k[1]);c.style.top=p}for(r in x.dragOvers){d=x.dragOvers[r];if(!x.isTypeOfDD(d)){continue}if(x.notifyOccluded){if(!this.isOverTarget(t,d,x.mode)){l.push(d)}}else{if(!v.within(d.getEl())){l.push(d)}}h[r]=true;delete x.dragOvers[r]}for(q in g.groups){if("string"!=typeof q){continue}for(r in x.ids[q]){d=x.ids[q][r];if(x.isTypeOfDD(d)&&(m=d.getEl())&&(d.isTarget)&&(!d.isLocked())&&(Ext.fly(m).isVisible(true))&&((d!=g)||(g.ignoreSelf===false))){if(x.notifyOccluded){if((d.zIndex=x.getZIndex(m))!==-1){b=true}o.push(d)}else{if(v.within(d.getEl())){o.push(d);break}}}}}if(b){Ext.Array.sort(o,x.byZIndex)}for(r=0,s=o.length;r','
',"{%this.renderBody(out, values)%}","
","","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,i=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=(h=="stretch"),a=(h=="stretchmax"),m=l.constrainAlign;if(!q&&(e||g||c||(m&&!a))){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){i=i.flex}}return i[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,i=n.target,q=m.target,r=0,c,o,h,d,p,g;h=i[k]||l;d=q[k]||l;c=i[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){r=h-d}if(r===0&&p){r=o-c}}return r},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(l){var v=this,m=l.boxNames,a=m.widthModel,d=m.heightModel,c=l.boxOptions.align.nostretch,p=0,b=l.childItems,r=b.length,t=[],n=0,k=m.minWidth,g=v._percentageRe,s=0,u=0,e,o,q,h;while(r--){o=b[r];e=o.target;if(o[a].calculated){o.flex=q=e.flex;if(q){p+=q;t.push(o);n+=e[k]||0}else{h=g.exec(e[m.width]);o.percentageParallel=parseFloat(h[1])/100;++s}}if(c&&o[d].calculated){h=g.exec(e[m.height]);o.percentagePerpendicular=parseFloat(h[1])/100;++u}}l.flexedItems=t;l.flexedMinSize=n;l.totalFlex=p;l.percentageWidths=s;l.percentageHeights=u;Ext.Array.sort(t,v.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(l,o,b){var G=this,A=o.width,a=l.childItems,t=o.beforeX,d=o.afterX,r=o.setWidth,B=a.length,y=l.flexedItems,s=y.length,w=l.boxOptions.pack,n=G.padding,h=b.targetSize[A],C=0,e=n[t],F=e+n[d]+G.scrollOffset+(G.reserveOffset?G.availableSpaceOffset:0),x=Ext.getScrollbarSize()[o.width],v,m,g,z,p,u,E,q,D,c,k;if(x&&G.scrollPerpendicular&&l.parallelSizeModel.shrinkWrap&&!l.boxOptions.align.stretch&&!l.perpendicularSizeModel.shrinkWrap){if(!l.state.perpendicularDone){return false}D=true}for(v=0;vb.targetSize[o.height])){q+=x;l[o.hasOverflowY]=true;l.target.componentLayout[o.setWidthInDom]=true;l[o.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}l[o.setContentWidth](q);return true},calculatePerpendicular:function(v,L,A){var u=this,d=v.perpendicularSizeModel.shrinkWrap,b=A.targetSize,k=v.childItems,z=k.length,n=Math.max,m=L.height,o=L.setHeight,h=L.beforeY,t=L.y,I=u.padding,l=I[h],p=b[m]-l-I[L.afterY],F=v.boxOptions.align,q=F.stretch,r=F.stretchmax,O=F.center,N=F.bottom,H=u.constrainAlign,G=0,C=0,E=u.onBeforeConstrainInvalidateChild,B=u.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,y,J,D,w,x,c,s,e,M,K,g;if(q||((O||N)&&!d)){if(isNaN(p)){return false}}if(u.scrollParallel&&A.tooNarrow){if(d){K=true}else{p-=a;A.targetSize[m]-=a}}if(q){c=p}else{for(J=0;Jp){s.invalidate({before:E,after:B,layout:u,childHeight:p,names:L});v.state.parallelDone=false}if(isNaN(G=n(G,D+w,s.target[L.minHeight]||0))){return false}}if(K){G+=a;v[L.hasOverflowX]=true;v.target.componentLayout[L.setHeightInDom]=true;v[L.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=v.stretchMaxPartner;if(e){v.setProp("maxChildHeight",G);M=e.childItems;if(M&&M.length){G=n(G,e.getProp("maxChildHeight"));if(isNaN(G)){return false}}}v[L.setContentHeight](G+u.padding[m]+v.targetContext.getPaddingInfo()[m]);if(K){G-=a}A.maxSize=G;if(r){c=G}else{if(O||N||C){if(H){c=d?G:p}else{c=d?G:n(p,G)}c-=v.innerCtContext.getBorderInfo()[m]}}}for(J=0;J0){y=l+Math[u.alignRoundingMethod](x/2)}}else{if(N){y=n(0,c-y-s.props[m])}}}s.setProp(t,y)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,l,n){var m=this,h=l.height,o=l.width,g=c.childItems,a=g.length,q=n.maxSize,p=m.onBeforeStretchMaxInvalidateChild,e=m.onAfterStretchMaxInvalidateChild,r,k,d,b;for(d=0;d":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar";b.addCls(b.baseCls+"-toolbar")}}if(b instanceof Ext.toolbar.Separator){b.setUI((c.vertical)?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}},0,["toolbar"],["toolbar","component","container","box"],{toolbar:true,component:true,container:true,box:true},["widget.toolbar"],0,[Ext.toolbar,"Toolbar",Ext,"Toolbar"],0));(Ext.cmd.derive("Ext.panel.AbstractPanel",Ext.container.Container,{baseCls:Ext.baseCSSPrefix+"panel",isPanel:true,contentPaddingProperty:"bodyPadding",shrinkWrapDock:false,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",(Ext.isIE7m||Ext.isIEQuirks)?'
':"",'
{bodyCls}',' {baseCls}-body-{ui}',' {parent.baseCls}-body-{parent.ui}-{.}','{childElCls}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values);%}","
","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox((b.bodyPadding===true)?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}},0,0,["component","container","box"],{component:true,container:true,box:true},0,[["docking",Ext.container.DockingContainer]],[Ext.panel,"AbstractPanel"],0));(Ext.cmd.derive("Ext.panel.Header",Ext.container.Container,{isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['
{parent.baseCls}-body-{parent.ui}-{.}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
"],headingTpl:['{title}'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:(c?c.length:0),b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||" ";g.tools=g.tools||[];c=g.items=(c?Ext.Array.slice(c):[]);g.orientation=g.orientation||"horizontal";g.dock=(g.dock)?g.dock:(g.orientation=="horizontal")?"top":"left";if(d?(!d.border&&!d.frame):!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?("text-align:"+g.titleAlign):"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=(g.orientation=="vertical")?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.lengthb){if(l){m.removeCls(d)}m.addCls(n)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var c=this,b=c.callParent(),a=c.ownerCt;if(!c.expanding&&(a&&a.collapsed)||c.isCollapsedExpander){b+="-"+a.collapsedCls}return b+"-"+c.dock}},0,["header"],["component","container","box","header"],{component:true,container:true,box:true,header:true},["widget.header"],0,[Ext.panel,"Header"],0));(Ext.cmd.derive("Ext.dd.DragDrop",Ext.Base,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},moveOnly:false,unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(i,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(i),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(c,b){var a=this;if((a.primaryButtonOnly&&c.button!=0)||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DragDrop"],0));(Ext.cmd.derive("Ext.dd.DD",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,d=b-this.startPageY;this.setDelta(a,d)},setDelta:function(b,a){this.deltaX=b;this.deltaY=a},setDragElPos:function(c,b){var a=this.getDragEl();this.alignElWithMouse(a,c,b)},alignElWithMouse:function(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),i=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:i.getDocumentWidth(),height:i.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,i=(o+q-l-this.deltaY),g=(b+d-m-this.deltaX),c=40,a=(document.all)?80:30;if(k>o&&i0&&l-qb&&g0&&m-dthis.maxX){a=this.maxX}}if(this.constrainY){if(dthis.maxY){d=this.maxY}}a=this.getTick(a,this.xTicks);d=this.getTick(d,this.yTicks);return{x:a,y:d}},applyConfig:function(){this.callParent();this.scroll=(this.config.scroll!==false)},b4MouseDown:function(a){this.autoOffset(a.getPageX(),a.getPageY())},b4Drag:function(a){this.setDragElPos(a.getPageX(),a.getPageY())},toString:function(){return("DD "+this.id)},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}},3,0,0,0,0,0,[Ext.dd,"DD"],0));(Ext.cmd.derive("Ext.dd.DDProxy",Ext.dd.DD,{statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;c=d.style;c.position="absolute";c.visibility="hidden";c.cursor="move";c.border="2px solid #aaa";c.zIndex=999;a.insertBefore(d,a.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent();this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(e,d){var c=this.getEl(),a=this.getDragEl(),b=a.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))}this.setDragElPos(e,d);Ext.fly(a).show()},_resizeProxy:function(){if(this.resizeFrame){var a=this.getEl();Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)}},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c);this.setDragElPos(a,c)},b4StartDrag:function(a,b){this.showFrame(a,b)},b4EndDrag:function(a){Ext.fly(this.getDragEl()).hide()},endDrag:function(c){var b=this.getEl(),a=this.getDragEl();a.style.visibility="";this.beforeMove();b.style.visibility="hidden";Ext.dd.DDM.moveToEl(b,a);a.style.visibility="hidden";b.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DDProxy"],0));(Ext.cmd.derive("Ext.dd.StatusProxy",Ext.Component,{animRepair:false,childEls:["ghost"],renderTpl:['
'],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.dd,"StatusProxy"],0));(Ext.cmd.derive("Ext.dd.DragSource",Ext.dd.DDProxy,{dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(c,b,d){var a=this;if(!b){b=c;c=null;d=b.getTarget().id}if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}a.proxy.repair(a.getRepairXY(b,a.dragData),a.afterRepair,a);if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}},1,0,0,0,0,0,[Ext.dd,"DragSource"],0));(Ext.cmd.derive("Ext.panel.Proxy",Ext.Base,{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}},1,0,0,0,0,0,[Ext.panel,"Proxy",Ext.dd,"PanelProxy"],0));(Ext.cmd.derive("Ext.panel.DD",Ext.dd.DragSource,{constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.show()},b4MouseDown:function(b){var a=b.getPageX(),c=b.getPageY();this.autoOffset(a,c)},onInitDrag:function(a,b){this.onStartDrag(a,b);return true},createFrame:Ext.emptyFn,getDragEl:function(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}}},1,0,0,0,0,0,[Ext.panel,"DD"],0));(Ext.cmd.derive("Ext.util.Memento",Ext.Base,(function(){function d(i,h,k,g){i[g?g+k:k]=h[k]}function c(h,g,i){delete h[i]}function e(l,k,m,i){var g=i?i+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,i,g){if(Ext.isDefined(g)){h[i]=g}else{delete h[i]}}function b(h,n,m,i,k){if(n){if(Ext.isArray(i)){var l,g=i.length;for(l=0;la){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]i){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return(k.targetXY)?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(d){var c=this,b=c.delegate,a;if(c.disabled||d.within(c.target.dom,true)){return}a=b?d.getTarget(b):true;if(a){c.triggerElement=a;c.triggerEvent=d;c.clearTimer("hide");c.targetXY=d.getXY();c.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}},1,0,0,0,0,[["animate",Ext.util.Animate]],[Ext.draw,"CompositeSprite"],0));(Ext.cmd.derive("Ext.draw.Surface",Ext.Base,{separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c1,a,d,c,h,g;if(k||Ext.isArray(b[0])){a=k?b:b[0];d=[];for(c=0,h=a.length;ch){b=i-1}else{if(a-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,i,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;i=h/b;c=a/k;l=Math.min(c,i);if(k*l=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var l=this,h=l.getLayoutItems(),p,q=[],r=Ext.apply({tag:"table",role:"presentation",cls:l.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:q}},l.tableAttrs),c=l.tdAttrs,d=l.needsDivWrap(),e,g=h.length,o,n,k,b,a,m;p=l.calculateCells(h);for(e=0;e0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isQueryable){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var l=this,k,h,c=l.handleAdd,a=l.handleRemove,d,e;if(g.isContainer){g.on("add",c,l);g.on("dockedadd",c,l);g.on("remove",a,l);g.on("dockedremove",a,l)}if(b!==true){k=g.query(l.selector);for(d=0,h=k.length;d]+>/gi,asText:function(a){return String(a).replace(this.stripTagsRE,"")},asUCText:function(a){return String(a).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(a){return String(a).toUpperCase()},asDate:function(a){if(!a){return 0}if(Ext.isDate(a)){return a.getTime()}return Date.parse(String(a))},asFloat:function(a){var b=parseFloat(String(a).replace(/,/g,""));return isNaN(b)?0:b},asInt:function(a){var b=parseInt(String(a).replace(/,/g,""),10);return isNaN(b)?0:b}},0,0,0,0,0,0,[Ext.data,"SortTypes"],0));(Ext.cmd.derive("Ext.data.Types",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext.data,"Types"],function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(b)}return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){if(typeof b==="number"){return b}return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})}));(Ext.cmd.derive("Ext.data.Field",Ext.Base,{isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true},1,0,0,0,["data.field"],0,[Ext.data,"Field"],0));(Ext.cmd.derive("Ext.data.Errors",Ext.util.MixedCollection,{isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;ba)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}},0,0,0,0,0,0,[Ext.data,"validations"],0));(Ext.cmd.derive("Ext.data.Model",Ext.Base,{alternateClassName:"Ext.data.Record",compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,G){var F=this,H=Ext.getClassName(g),u=g.prototype,A=g.prototype.superclass,k=G.validations||[],w=G.fields||[],h,p=G.associations||[],e=function(J,L){var K=0,I,M;if(J){J=Ext.Array.from(J);for(I=J.length;K0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d0){b=p.data.items;h=b.length;for(r=0;r0;if(l){if(d){w[c]=u[0].property;w[n]=u[0].direction||"ASC"}else{w[c]=x.encodeSorters(u)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}w[e]=a[k].property;w[p]=a[k].direction}else{w[e]=x.encodeSorters(a)}}if(r&&o&&o.length>0){w[r]=x.encodeFilters(o)}return w},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}},1,0,0,0,["proxy.server"],0,[Ext.data.proxy,"Server",Ext.data,"ServerProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Ajax",Ext.data.proxy.Server,{alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,i,g){c.processResponse(i,a,d,g,e,b)}}},0,0,0,0,["proxy.ajax"],0,[Ext.data.proxy,"Ajax",Ext.data,"HttpProxy",Ext.data,"AjaxProxy"],function(){Ext.data.HttpProxy=this}));(Ext.cmd.derive("Ext.data.proxy.Client",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,"Client",Ext.data,"ClientProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Memory",Ext.data.proxy.Client,{alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(i,k||g,[c])},clear:Ext.emptyFn},1,0,0,0,["proxy.memory"],0,[Ext.data.proxy,"Memory",Ext.data,"MemoryProxy"],0));(Ext.cmd.derive("Ext.util.LruCache",Ext.util.HashMap,{constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}},1,0,0,0,0,0,[Ext.util,"LruCache"],0));(Ext.cmd.derive("Ext.data.PageMap",Ext.util.LruCache,{clear:function(a){var b=this;b.pageMapGeneration=(b.pageMapGeneration||0)+1;b.callParent(arguments)},forEach:function(k,m){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,l,e,g;for(c=0;c0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],l={},g,h,k,e;for(e=0;e-1){r.push({record:b,index:g})}if(d){d.remove(b)}}r=Ext.Array.sort(r,function(w,i){var y=w.index,x=i.index;return y===i.index2?0:(yb-1)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c=h.totalCount)?d:g;i=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(i,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(i,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c0){c=b[0].get(g)}for(;d0){a=c[0].get(g)}for(;da){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||(b.isLoaded()&&!b.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,m,d){var k=this,e,h,g,l,b,n={isLast:true,parentId:k.getId(),depth:(k.data.depth||0)+1};if(Ext.isArray(c)){k.callStore("suspendAutoSync");for(e=0,h=c.length-1;e0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d0){e=[];for(d=0;db.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(c){var b=this,a=b.active;Ext.getDoc().un({mousemove:b.onMouseMove,mouseup:b.onMouseUp,selectstart:b.stopSelect,scope:b});b.clearStart();b.active=false;if(a){b.onEnd(c);b.fireEvent("dragend",b,c)}b._constrainRegion=Ext.EventObject.dragTracked=null},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);this.timer=null}},stopSelect:function(a){a.stopEvent();return false},onBeforeStart:function(a){},onStart:function(a){},onDrag:function(a){},onEnd:function(a){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.lefta.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top0);if(k){u.widthModel=u.heightModel=null;b=w.getSizeModel(m&&m.widthModel.pairsByHeightOrdinal[m.heightModel.ordinal]);if(h){u.sizeModel=b}u.widthModel=b.width;u.heightModel=b.height;if(m&&!u.isComponentChild){m.remainingChildDimensions+=2}}else{if(a){u.recoverProp("x",a,d);u.recoverProp("y",a,d);if(u.widthModel.calculated){u.recoverProp("width",a,d)}else{if("width" in a){++t}}if(u.heightModel.calculated){u.recoverProp("height",a,d)}else{if("height" in a){++t}}if(m&&!u.isComponentChild){m.remainingChildDimensions+=t}}}if(a&&q&&q.manageMargins){u.recoverProp("margin-top",a,d);u.recoverProp("margin-right",a,d);u.recoverProp("margin-bottom",a,d);u.recoverProp("margin-left",a,d)}if(c){l=c.heightModel;s=c.widthModel;if(s&&l&&g&&x){if(g.shrinkWrap&&x.shrinkWrap){if(s.constrainedMax&&l.constrainedMin){l=null}}}if(s){u.widthModel=s}if(l){u.heightModel=l}if(c.state){Ext.apply(u.state,c.state)}}return v},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",i=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=i[g]||(i[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var o=this,c=o.previousSize,l,n,e,h,g,d,i,m,k,a,b;if(c){l=o.target;n=l.layout&&l.layout.animate;if(n){e=Ext.isNumber(n)?n:n.duration}h=Ext.Object.getKeys(o.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},n);for(d=0,i=0,m=h.length;i0||m>0)){if(!x.frameBodyContext){u=x.paddingInfo.width;l=x.paddingInfo.height}if(q){q=s(parseInt(q,10)-(x.borderInfo.width+u),0);i.width=q+"px";++h}if(m){m=s(parseInt(m,10)-(x.borderInfo.height+l),0);i.height=m+"px";++h}}if(x.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&x.hasOverflowY)||(a=m!==undefined&&x.hasOverflowX)){p=x.isAbsolute;if(p===undefined){p=false;n=x.target.getTargetEl();t=n.getStyle("position");if(t=="absolute"){t=n.getStyle("box-sizing");p=(t=="border-box")}x.isAbsolute=p}if(p){r=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+r.width;i.width=q+"px";++h}if(a){m=parseInt(m,10)+r.height;i.height=m+"px";++h}}}}if(h){c.setStyle(i)}}},1,0,0,0,0,0,[Ext.layout,"ContextItem"],function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}}));(Ext.cmd.derive("Ext.layout.Context",Ext.Base,{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(l,a,n){var q=this,h=l,m=!l.isComponent,b=m?h.length:1,d,c,p,o,g,t,r,s,u,e;for(d=0;d0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;ei.zindex){i.shim.setStyle("z-index",i.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=(g[0])+"px";d.top=(g[1])+"px";d.width=(a.width)+"px";d.height=(a.height)+"px"}else{c.setSize(n,e);c[i.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>i.zindex){i.shim.setStyle("z-index",i.zindex-2)}c.show();c.setSize(n,e);c[i.localXYNames.set](l,k)}}}return i},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),i=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((i+k)>g+m.left){i=g-k-a;d=true}if((e+c)>b+m.top){e=b-c-a;d=true}if(i-1)&&(q[p] in g)){q[p]=g[q[p]]}if(p=="hidden"&&s.type=="text"){continue}if(p in t){c.dom.setAttribute(p,t[p](q[p],s,n))}else{c.dom.setAttribute(p,q[p])}}}if(s.type=="text"){n.tuneText(s,q)}s.dirtyFont=false;b=k.style;if(b){c.setStyle(b)}s.dirty=false;if(Ext.isSafari3){n.webkitRect.show();setTimeout(function(){n.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,m=Ext.isSafari&&!Ext.isStrict,k,g,l,c,b;b=e.gradientsMap||{};if(!m){if(h.type=="linear"){k=e.createSvgElement("linearGradient");k.setAttribute("x1",a[0]);k.setAttribute("y1",a[1]);k.setAttribute("x2",a[2]);k.setAttribute("y2",a[3])}else{k=e.createSvgElement("radialGradient");k.setAttribute("cx",h.centerX);k.setAttribute("cy",h.centerY);k.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){k.setAttribute("fx",h.focalX);k.setAttribute("fy",h.focalY)}}k.id=h.id;e.getDefs().appendChild(k);for(c=0;c"},text:function(v){var s=v.attr,r=c.exec(s.font),x=(r&&r[1])||"12",q=(r&&r[3])||"Arial",w=s.text,u=(Ext.isFF3_0||Ext.isFF3_5)?2:4,p="",t;v.getBBox();p+='';p+=Ext.htmlEncode(w)+"";t=d({x:s.x,y:s.y,"font-size":x,"font-family":q,"font-weight":s["font-weight"],"text-anchor":s["text-anchor"],fill:s.fill||"#000","fill-opacity":s.opacity,transform:v.matrix.toSvg()});return""+p+""},rect:function(q){var p=q.attr,r=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return""},circle:function(q){var p=q.attr,r=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return""},image:function(q){var p=q.attr,r=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return""}},a=function(){var p='';p+='';return p},m=function(){var x='',q="",I,G,w,r,H,K,A,y,u,z,C,p,L,v,F,D,J,E,t,s;w=g.items.items;G=w.length;H=function(P){var W=P.childNodes,T=W.length,S=0,Q,R,M="",N,V,O,U;for(;S0){M+=H(N)}M+=""}return M};if(g.getDefs){q=H(g.getDefs())}else{y=g.gradientsColl;if(y){u=y.keys;z=y.items;C=0;p=u.length}for(;C';var B=r.colors.replace(k,"rgb($1|$2|$3)");B=B.replace(h,"rgba($1|$2|$3|$4)");K=B.split(",");for(F=0,J=K.length;F'}q+=""}}x+=""+q+"";x+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});E=new Array(G);for(F=0;F";return x},d=function(r){var q="",p;for(p in r){if(r.hasOwnProperty(p)&&r[p]!=null){q+=p+'="'+r[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}},0,0,0,0,0,0,[Ext.draw.engine,"SvgExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Vml",Ext.draw.Surface,{engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(v,x,p){var w=[],i=x.toLowerCase()=="m",r=b[x];p.replace(e,function(y){if(i&&w.length===2){r+=w+b[x=="m"?"l":"L"];w=[]}w.push(Math.round(y*s))});return r+w});return m}}o=g(t);m=[];for(k=0,q=o.length;k")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);i.bbox.plain=null;i.bbox.transform=null;i.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(z,J){var I=this,b=I.getBBox(z,true),k=b.x+b.width*0.5,h=b.y+b.height*0.5,C=new Ext.draw.Matrix(),r=z.transformations,w=r.length,D=0,p=0,d=1,c=1,o="",g=z.el,F=g.dom,A=F.style,a=I.zoom,l=z.skew,E=I.viewBoxShift,H,G,t,m,s,q,B,x,v,u,e,n;for(;D32767){n[0]=32767}else{if(n[0]<-32768){n[0]=-32768}}if(n[1]>32767){n[1]=32767}else{if(n[1]<-32768){n[1]=-32768}}l.offset=n}else{A.filter=C.toFilter();A.left=Math.min(C.x(b.x,b.y),C.x(b.x+b.width,b.y),C.x(b.x,b.y+b.height),C.x(b.x+b.width,b.y+b.height))+"px";A.top=Math.min(C.y(b.x,b.y),C.y(b.x+b.width,b.y),C.y(b.x,b.y+b.height),C.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],k=Ext.create("Ext.util.MixedCollection"),m,e,b,h,l,c;k.addAll(g.stops);k.sortByKey("ASC",function(n,i){n=parseInt(n,10);i=parseInt(i,10);return n>i?1:(nid="{id}"
class="{inputRowCls}">','','',"{beforeLabelTpl}",' class="{labelCls}"',' style="{labelStyle}"',' unselectable="on"',">","{beforeLabelTextTpl}",'{fieldLabel}{labelSeparator}',"{afterLabelTextTpl}","","{afterLabelTpl}","","
",'',"{beforeBodyEl}","","{beforeLabelTpl}",'","{afterLabelTpl}","","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","","{afterBodyEl}","","",'',"","",'',"{afterBodyEl}","","","",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['','
  • {.}
',"
"],plaintextActiveErrorsTpl:['','\n{.}',""],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",inputRowCls:Ext.baseCSSPrefix+"form-item-input-row",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","extraFieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget","inputRowCls"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.getFieldLabel()&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}},0,0,0,0,0,0,[Ext.form,"Labelable"],0));(Ext.cmd.derive("Ext.form.field.Field",Ext.Base,{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,0,0,0,0,0,[Ext.form.field,"Field"],0));(Ext.cmd.derive("Ext.layout.component.field.Field",Ext.layout.component.Auto,{type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var i=Ext.layout.component.field.Field.tip,k;if(i&&i.isVisible()){k=i.activeTarget;if(k&&k.el===h.getActionEl().dom){i.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var i=h.errorEl;if(i){i.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,i){var n=i.errorEl,k=i.sideErrorCell,h=i.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":i.getActiveError()||""});if(i.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&i.autoFitErrors){k.setDisplayed(h)}i.bodyEl.dom.colSpan=i.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,i=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(i);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,i,k;if(l.target.hasActiveError()){i=l.errorContext;k=i.props;h=k.height;if(h===undefined){k.height=h=i.el.getHeight()}}return h}},e),qtip:c({prepare:function(i,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(i,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(i,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}},0,0,0,0,["layout.field"],0,[Ext.layout.component.field,"Field"],0));(Ext.cmd.derive("Ext.form.field.Base",Ext.Component,{alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:[' name="{name}"
',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' placeholder="{placeholder}"','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}a.addCls(Ext.baseCSSPrefix+"form-type-"+a.inputType)},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,i=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(i){g.mon(i,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;hg.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(i&&!i.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(i,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){i=i===e?0:i;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(i,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",i);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}},0,["textfield"],["field","textfield","component","box"],{field:true,textfield:true,component:true,box:true},["widget.textfield"],0,[Ext.form.field,"Text",Ext.form,"TextField",Ext.form,"Text"],0));(Ext.cmd.derive("Ext.layout.component.field.TextArea",Ext.layout.component.field.Text,{type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,i,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;i=a.inputEl;d=i.getWidth(true);h=Ext.util.Format.htmlEncode(i.dom.value)||" ";h+=a.growAppend;h=h.replace(/\n/g,"
");k=Ext.util.TextMetrics.measure(i,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}},0,0,0,0,["layout.textareafield"],0,[Ext.layout.component.field,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.TextArea",Ext.form.field.Text,{alternateClassName:"Ext.form.TextArea",fieldSubTpl:['",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a&&typeof a==="string"){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}},0,["textarea","textareafield"],["field","textfield","component","textarea","box","textareafield"],{field:true,textfield:true,component:true,textarea:true,box:true,textareafield:true},["widget.textarea","widget.textareafield"],0,[Ext.form.field,"TextArea",Ext.form,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.Display",Ext.form.field.Base,{alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['
style="{fieldStyle}"',' class="{fieldCls}">{value}
',{compiled:true,disableFormats:true}],readOnly:true,fieldCls:Ext.baseCSSPrefix+"form-display-field",fieldBodyCls:Ext.baseCSSPrefix+"form-display-field-body",htmlEncode:false,noWrap:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}},0,["displayfield"],["displayfield","field","component","box"],{displayfield:true,field:true,component:true,box:true},["widget.displayfield"],0,[Ext.form.field,"Display",Ext.form,"DisplayField",Ext.form,"Display"],0));(Ext.cmd.derive("Ext.layout.container.Anchor",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var k=this,a=0,g,l,e,d,b,h;k.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d{%this.renderContainer(out,values)%}',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=(b.labelWidth+b.labelPad)}b.callParent(arguments);if(b.combineLabels){a.oldHideLabel=a.hideLabel;a.hideLabel=true}b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){if(c.combineLabels){a.hideLabel=a.oldHideLabel}c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,i,d,k,b,g,h;for(c=0;c","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","
",' tabIndex="{tabIdx}"
',' disabled="disabled"',' style="{fieldStyle}"',' {ariaAttrs}',' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />',"","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",extraFieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",inputTypeAttr:"button",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,inputTypeAttr:a.inputTypeAttr})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b style="{bodyStyle}">',"{%this.renderContainer(out,values);%}",""],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.initFieldAncestor();b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}b.initMonitor()},initPadding:function(e){var c=this,a=c.getProtoBody(),d=c.padding,b;if(d!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){d=c.parseBox(d);b=Ext.Element.parseBox(0);b.top=d.top;d.top=0;a.setStyle("padding",c.unitizeBox(b))}e.setStyle("padding",c.unitizeBox(d))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(b){delete c.getHierarchyState().collapsed}else{c.getHierarchyState().collapsed=true}if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}},0,["fieldset"],["component","container","box","fieldset"],{component:true,container:true,box:true,fieldset:true},["widget.fieldset"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldSet"],0));(Ext.cmd.derive("Ext.form.Panel",Ext.panel.Panel,{alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c'+d+""+c.getTriggerMarkup()+""},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,k=(e.readOnly||e.hideTrigger),a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(k?"display:none;":""),l=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:l,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,i=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(i,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(i,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g1){b=[];for(k=0;k=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(n,d,o){var k=this,m=k.store,c=k.selected.items,p,g,h,e,a,l,b;if(k.isLocked()){return}p=k.normalizeRowRange(n,d);n=p[0];d=p[1];e=[];for(g=n;g<=d;g++){if(!k.isSelected(m.getAt(g))){e.push(m.getAt(g))}}if(!o){a=[];k.suspendChanges();for(g=0,h=c.length;gd){a.push(b)}}for(g=0,h=a.length;gb){d=b;b=c;c=d}return[c,b]},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,m,l){var h=this,b=h.selected,k=false,n,d,g,e,c;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!m&&b.getCount()>0){n=h.deselectDuringSelect(a,b.getRange(),l);if(n[0]){h.maybeFireSelectionChange(n[1]>0&&!l);return}}c=function(){b.add(e);k=true};for(d=0;d0&&!l);return g===m},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected,e;if(d.locked){return}if(d.isSelected(a)){return}if(c.getCount()){d.suspendChanges();if(!d.doDeselect(d.lastSelected,b)){d.resumeChanges();return}d.resumeChanges()}e=function(){c.add(a);d.lastSelected=a;g=true};d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;if(c!==a){d.lastFocused=c;d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.suspendChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(d,c){var g=this,b=g.store,e,a;a=g.normalizeRowRange(d,c);d=a[0];c=a[1];for(e=d;e<=c;e++){if(!g.isSelected(b.getAt(e))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}},1,0,0,0,0,0,[Ext.selection,"DataViewModel"],0));(Ext.cmd.derive("Ext.view.AbstractView",Ext.Component,{inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('
{1}
',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite()}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var d=this,b=d.loadMask,c=d.getMaskStore(),a={target:d,msg:d.loadingText,msgCls:d.loadingCls,useMsg:d.loadingUseMsg,store:c};d.callParent(arguments);if(b&&!c.proxy.isSynchronous){if(Ext.isObject(b)){a=Ext.apply(a,b)}d.loadMask=new Ext.LoadMask(a);d.loadMask.on({scope:d,beforeshow:d.onMaskBeforeShow,hide:d.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var k=this,b=k.bufferRender(c,d,true),g=k.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||((d===0)?0:(b.length-1));for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){this.refreshView()},refreshView:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh()}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;ch.bottom){a=c.bottom-h.bottom}}if(c.lefth.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}},0,["dataview"],["component","box","dataview"],{component:true,box:true,dataview:true},["widget.dataview"],0,[Ext.view,"View",Ext,"DataView"],0));(Ext.cmd.derive("Ext.layout.component.BoundList",Ext.layout.component.Auto,{type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}},0,0,0,0,["layout.boundlist"],0,[Ext.layout.component,"BoundList"],0));(Ext.cmd.derive("Ext.toolbar.TextItem",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}},0,["tbtext"],["tbitem","component","box","tbtext"],{tbitem:true,component:true,box:true,tbtext:true},["widget.tbtext"],0,[Ext.toolbar,"TextItem",Ext.Toolbar,"TextItem"],0));(Ext.cmd.derive("Ext.form.field.Spinner",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'
',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'"+c.getTriggerMarkup()+"
'+d+"
"},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=(a.readOnly||a.hideTrigger);return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}},0,["spinnerfield"],["field","trigger","textfield","component","box","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,spinnerfield:true,triggerfield:true},["widget.spinnerfield"],0,[Ext.form.field,"Spinner",Ext.form,"Spinner"],0));(Ext.cmd.derive("Ext.form.field.Number",Ext.form.field.Spinner,{alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowExponential:true,allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(ab.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||dc.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowExponential){c+=a.decimalSeparator+"e+-"}else{if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}},0,["numberfield"],["field","trigger","textfield","component","box","numberfield","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,numberfield:true,spinnerfield:true,triggerfield:true},["widget.numberfield"],0,[Ext.form.field,"Number",Ext.form,"NumberField",Ext.form,"Number"],0));(Ext.cmd.derive("Ext.toolbar.Paging",Ext.toolbar.Toolbar,{alternateClassName:"Ext.PagingToolbar",displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var h=this,d,b,c,a,g,i,e;g=h.store.getCount();i=g===0;if(!i){d=h.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(h.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(h.afterPageText,0)}Ext.suspendLayouts();e=h.child("#afterTextItem");if(e){e.setText(a)}e=h.getInputItem();if(e){e.setDisabled(i).setValue(b)}h.setChildDisabled("#first",b===1||i);h.setChildDisabled("#prev",b===1||i);h.setChildDisabled("#next",b===c||i);h.setChildDisabled("#last",b===c||i);h.setChildDisabled("#refresh",false);h.updateInfo();Ext.resumeLayouts(true);if(h.rendered){h.fireEvent("change",h,d)}},setChildDisabled:function(a,b){var c=this.child(a);if(c){c.setDisabled(b)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.setChildDisabled("#refresh",false)},getInputItem:function(){return this.child("#inputItem")},readPageFromInput:function(b){var c=this.getInputItem(),d=false,a;if(c){a=c.getValue();d=parseInt(a,10);if(!a||isNaN(d)){c.setValue(b.currentPage);return false}}return d},onPagingFocus:function(){var a=this.getInputItem();if(a){a.select()}},onPagingBlur:function(c){var b=this.getInputItem(),a;if(b){a=this.getPageData().currentPage;b.setValue(a)}},onPagingKeyDown:function(i,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;i.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){i.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered){this.setChildDisabled("#refresh",true)}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}},0,["pagingtoolbar"],["toolbar","component","container","pagingtoolbar","box"],{toolbar:true,component:true,container:true,pagingtoolbar:true,box:true},["widget.pagingtoolbar"],[["bindable",Ext.util.Bindable]],[Ext.toolbar,"Paging",Ext,"PagingToolbar"],0));(Ext.cmd.derive("Ext.view.BoundList",Ext.view.View,{alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['
',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";if(b.trackOver){b.overItemCls=a+"-item-over"}b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('
    ','
  • '+b.getInnerTpl(b.displayField)+"
  • ","
")}else{if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField||this.callParent()},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var c=this,a=c.tpl,b=c.pagingToolbar,d=c.rendered;a.field=c.pickerField;a.store=c.store;c.callParent();a.field=a.store=null;if(d&&b&&b.rendered&&!c.preserveScrollOnRefresh){c.el.appendChild(b.el)}if(d&&Ext.isIE6&&Ext.isStrict){c.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}},0,["boundlist"],["component","boundlist","box","dataview"],{component:true,boundlist:true,box:true,dataview:true},["widget.boundlist"],[["queryable",Ext.Queryable]],[Ext.view,"BoundList",Ext,"BoundList"],0));(Ext.cmd.derive("Ext.view.BoundListKeyNav",Ext.util.KeyNav,{constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=cc){c=g;l=o}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(l+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' name="{name}"',' placeholder="{placeholder}"',' size="{size}"',' maxlength="{maxLength}"',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,anyMatch:false,caseSensitive:false,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : values["'+e.displayField+'"]]}'+e.delimiter+"")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(this.queryFilter&&!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;if(c.queryFilter){c.store.removeFilter(c.queryFilter)}if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(b,a,d){var c=this;if(c.ignoreSelection>0){--c.ignoreSelection}if(d&&!b.lastOptions.rawQuery){if(c.value==null){if(c.store.getCount()){c.doAutoSelect()}else{c.setValue(c.value)}}else{c.setValue(c.value)}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(e,b,d){var c=this,a=c.beforeQuery({query:e||"",rawQuery:d,forceAll:b,combo:c,cancel:false});if(a===false||a.cancel){return false}if(c.queryCaching&&a.query===c.lastQuery){c.expand()}else{c.lastQuery=a.query;if(c.queryMode==="local"){c.doLocalQuery(a)}else{c.doRemoteQuery(a)}}return true},beforeQuery:function(a){var b=this;if(b.fireEvent("beforequery",a)===false){a.cancel=true}else{if(!a.cancel){if(a.query.length0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{if(a.triggerAction==="last"){a.doQuery(a.lastQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){Ext.destroy(this.listKeyNav);this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){if(!this.expanding){this.alignPicker()}this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(i){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(i);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true,g;if(e&&e.isModel&&b===true&&c){g=!c.getSelectionModel().isSelected(e)}d.setValue(e,true);if(g){d.fireEvent("select",d,e)}},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(n,e){var l=this,c=l.valueNotFoundText,o=l.inputEl,g,k,h,a,m=[],b=[],d=[];if(l.store.loading){l.value=n;l.setHiddenValue(l.value);return l}n=Ext.Array.from(n);for(g=0,k=n.length;g0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(l[0]);--c}while(c=0){g.push(i)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}},0,["combobox","combo"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.combo","widget.combobox"],[["bindable",Ext.util.Bindable]],[Ext.form.field,"ComboBox",Ext.form,"ComboBox"],0));(Ext.cmd.derive("Ext.picker.Month",Ext.Component,{alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['
','
','','
','{.}',"
","
","
",'
','
','
','',"
",'
','',"
","
",'','
','{.}',"
","
","
",'
',"
",'','
{%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}
","
"],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;cd.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((be+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c','",'','','','","","",'','',"{#:this.isEndOfWeek}",'","","","
','
{.:this.firstInitial}
',"
','',"
",'','',"","",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";if(!b.format){b.format=Ext.Date.defaultFormat}if(!b.dayNames){b.dayNames=Ext.Date.dayNames}b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:function(d){if(d.altKey){c.showPrevYear()}else{c.showPrevMonth()}},pageDown:function(d){if(d.altKey){c.showNextYear()}else{c.showNextMonth()}},tab:function(d){c.doCancelFieldFocus=true;c.handleTabClick(d);delete c.doCancelFieldFocus;return true},enter:function(d){d.stopPropagation();return true},home:function(d){c.update(a.getFirstDateOfMonth(c.activeDate))},end:function(d){c.update(a.getLastDateOfMonth(c.activeDate))}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},handleTabClick:function(d){var c=this,a=c.getSelectedDate(c.activeDate),b=c.handler;if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},getSelectedDate:function(a){var d=this,i=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,i=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;bw||(D&&y&&D.test(p.dateFormat(G,y)))||(I&&I.indexOf(G.getDay())!=-1));if(!F.disabled){F.todayBtn.setDisabled(a);F.todayKeyListener.setDisabled(a)}}o=function(i,J){t=+p.clearTime(s,true);i.title=p.format(s,b);i.firstChild.dateValue=t;if(t==A){J+=" "+F.todayCls;i.title=F.todayText;F.todayElSpan=Ext.DomHelper.append(i.firstChild,{tag:"span",cls:Ext.baseCSSPrefix+"hide-clip",html:F.todayText},true)}if(t==n){J+=" "+F.selectedCls;F.fireEvent("highlightitem",F,i);if(e&&F.floating){Ext.fly(i.firstChild).focus(50)}}if(tw){J+=" "+H;i.title=F.maxText}else{if(I&&I.indexOf(s.getDay())!==-1){i.title=C;J+=" "+H}else{if(D&&y){k=p.dateFormat(s,y);if(D.test(k)){i.title=u.replace("%0",k);J+=" "+H}}}}}i.className=J+" "+F.cellCls};for(;x=m){q=(++E);c=F.nextCls}else{q=x-h+1;c=F.activeCls}}d[x].innerHTML=q;s.setDate(s.getDate()+1);o(g[x],c)}F.monthBtn.setText(Ext.Date.format(B,F.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},0,["datepicker"],["datepicker","component","box"],{datepicker:true,component:true,box:true},["widget.datepicker"],0,[Ext.picker,"Date",Ext,"DatePicker"],0));(Ext.cmd.derive("Ext.form.field.Date",Ext.form.field.Picker,{alternateClassName:["Ext.form.DateField","Ext.form.Date"],format:"m/d/Y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",disabledDaysText:"Disabled",disabledDatesText:"Disabled",minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;hl(h).getTime()){p.push(q(k.maxText,k.formatDate(h)))}if(o){m=r.getDay();for(;e0){l=Math.floor(c/2);i=c-l;d.titleContext.setProp("padding-top",l);d.titleContext.setProp("padding-bottom",i)}}}else{e=b.titleEl.getHeight();d.setProp("innerHeight",a-e,false)}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerContext){d.triggerContext.setHeight(e)}},measureContentHeight:function(a){return a.el.dom.offsetHeight},publishOwnerHeight:function(b,a){this.callParent(arguments);if((Ext.isIE6||Ext.isIEQuirks)&&b.triggerContext){b.triggerContext.setHeight(a)}},publishInnerWidth:function(a,b){if(!a.hasRawContent){a.setProp("innerWidth",b-a.getBorderInfo().width,false)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(!c.hasRawContent){if(this.owner.noWrap||c.hasDomProp("width")){return b+this.owner.titleEl.getHeight()+c.getBorderInfo().height}return null}return a},calculateOwnerWidthFromContentWidth:function(g,b){var a=this.owner,e=Math.max(b,a.textEl.getWidth()+g.titleContext.getPaddingInfo().width),d=g.getPaddingInfo().width,c=this.getTriggerOffset(a,g);return e+d+c},getTriggerOffset:function(a,c){var b=0;if(c.widthModel.shrinkWrap&&!a.menuDisabled){if(a.query(">:not([hidden])").length===0){b=a.self.triggerElWidth}}return b}},0,0,0,0,["layout.columncomponent"],0,[Ext.grid,"ColumnComponentLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnLayout",Ext.layout.container.HBox,{type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){if(!this.scrollbarWidth){this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width}this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var k=this,b=k.owner,a=k.grid,l=a.view,h=k.getVisibleItems(),g=h.length,d=k.firstHeaderCls,n=k.lastHeaderCls,e,m;if(a.lockable){if(b.up("tablepanel")===l.normalGrid){l=l.normalGrid.getView()}else{l=null}}for(e=0;eb){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}}return a},getColumnContainerSize:function(g){var i=g.paddingContext.getPaddingInfo(),b=0,e=0,h,d,c,a;if(!g.widthModel.shrinkWrap){++e;c=g.getProp("innerWidth");h=(typeof c=="number");if(h){++b;c-=i.width;if(c<0){c=0}}}if(!g.heightModel.shrinkWrap){++e;a=g.getProp("innerHeight");d=(typeof a=="number");if(d){++b;a-=i.height;if(a<0){a=0}}}return{width:c,height:a,needed:e,got:b,gotAll:b==e,gotWidth:h,gotHeight:d}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if((b!=null)&&!d.owner.isColumn){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}},0,0,0,0,["layout.gridcolumn"],0,[Ext.grid,"ColumnLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnManager",Ext.Base,{alternateClassName:["Ext.grid.ColumnModel"],columns:null,constructor:function(b,a){this.headerCt=b;if(a){this.secondHeaderCt=a}},getColumns:function(){if(!this.columns){this.cacheColumns()}return this.columns},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getColumns(),a)},getHeaderAtIndex:function(a){var b=this.getColumns();return b.length?b[a]:null},getHeaderById:function(e){var c=this.getColumns(),a=c.length,b,d;for(b=0;b'+a.view.emptyText+""}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(h,k,l,a,i,d,c,m){var g=this,b;if(i!==-1){b=g.columnManager.getColumns()[i];return b.processEvent.apply(b,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.view.refresh();this.delayScroll()},onHeaderShow:function(a,b){this.view.refresh();this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,i=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e)}g.fireEvent("beforereconfigure",g,b,e,i,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&(b=Ext.StoreManager.lookup(b))!==i){if(g.store){g.unbindStore()}d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,i,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}},0,["tablepanel"],["panel","component","tablepanel","container","box"],{panel:true,component:true,tablepanel:true,container:true,box:true},["widget.tablepanel"],0,[Ext.panel,"Table"],0));(Ext.cmd.derive("Ext.util.CSS",Ext.Base,function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(i,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=i}else{try{l.appendChild(d.createTextNode(i))}catch(k){l.cssText=i}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||d.styleSheets[d.styleSheets.length-1])}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(i,g){var h;c.removeStyleSheet(i);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",i);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,l){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var k=h.selectorText,i,g;if(k){k=k.split(",");i=k.length;for(g=0;g=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var k=this,a=k.elements,e,h,c,l;if(g===undefined){g=k.count}else{g=Math.min(k.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,l=g;h=h.startIndex&&k<=h.endIndex){m[m.length]=k}}Ext.Array.sort(m);e=m.length}else{if(mh.endIndex){return}e=1;m=[m]}for(g=i=m[0],b=0;g<=h.endIndex;g++,i++){if(b=h.startIndex){d=a[g]=a[i];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,m,c){var l=this,a=l.elements,o=e.length,h,d,b,g,k=l.view.getNodeContainer(),n=document.createDocumentFragment();if(m==-1){for(h=(l.endIndex-c)+1;h<=l.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}l.endIndex-=c;g=l.view.bufferRender(e,l.startIndex-=o);for(h=0;h',"{[view.renderColumnSizer(out)]}","{[view.renderTHead(values, out)]}","{[view.renderTFoot(values, out)]}",'',"{%","view.renderRows(values.rows, values.viewStartIndex, out);","%}","","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'','{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","",{priority:0}],cellTpl:['','
{style}">{value}
',"",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly();b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null;b.beforeOverItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,s,k,m,r,q;if(n.rendered&&o!==a){s=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=s.length;g-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,c;g.view=this;g.columns=this.ownerCt.columnManager.getColumns();for(c=0;c')}},renderRow:function(g,a,e){var i=this,d=a===-1,h=i.selModel,m=i.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=i.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=i.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=i.ownerCt.columnManager.getColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected){if(h.isRowSelected(a+1)){c.push(i.beforeSelectedItemCls)}if(h.isRowSelected(g)){c.push(i.selectedItemCls)}}if(i.stripeRows&&a%2!==0){b.push(i.altRowCls)}if(i.getRowClass){l=i.getRowClass(g,a,null,i.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,i,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=i;k.cellIndex=i;k.align=c.align;k.tdCls=c.tdCls;k.innerCls=c.innerCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,i,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=(o==null||o==="")?" ":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,i)){b[m++]=(l.selectedCellCls)}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a&&b.el.isAncestor(a)&&b.isRowStyleFirst(a)){b.getRowStyleTableEl(a).removeCls(b.tableOverFirstCls)}if(c&&b.isRowStyleFirst(c)){b.getRowStyleTableEl(c).addCls(b.tableOverFirstCls)}b.callParent(arguments)},onRowSelect:function(b){var a=this;a.addRowCls(b,a.selectedItemCls);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).addCls(a.tableSelectedFirstCls)}else{a.addRowCls(b-1,a.beforeSelectedItemCls)}},onRowDeselect:function(b){var a=this;a.removeRowCls(b,[a.selectedItemCls,a.focusedItemCls]);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).removeCls([a.tableFocusedFirstCls,a.tableSelectedFirstCls])}else{a.removeRowCls(b-1,[a.beforeFocusedItemCls,a.beforeSelectedItemCls])}},onCellSelect:function(b){var a=this.getCellByPosition(b);if(a){a.addCls(this.selectedCellCls);this.scrollCellIntoView(a)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.ownerCt.columnManager.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()&&(a=b.getNode(b.all.item(0).dom,true))){b.focusRow(a)}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).addCls(c.tableFocusedFirstCls)}else{c.addRowCls(d-1,c.beforeFocusedItemCls)}if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).removeCls(c.tableFocusedFirstCls)}else{c.removeRowCls(d-1,c.beforeFocusedItemCls)}}if((Ext.isIE6||Ext.isIE7)&&!c.ownerCt.rowLines){c.repaintRow(d)}},focus:function(d,b){var c=this,a=Ext.isIE&&!b,e;if(a){e=c.el.dom.scrollLeft}this.callParent(arguments);if(a){c.el.dom.scrollLeft=e}},focusRow:function(g,b){var d=this,c,e=d.ownerCt&&d.ownerCt.collapsed,a;if(d.isVisible(true)&&!e&&(g=d.getNode(g,true))){d.scrollRowIntoView(g);a=d.getRecord(g);c=d.indexInStore(g);d.selModel.setLastFocused(a);d.focusedRow=g;d.focus(false,b,function(){d.fireEvent("rowfocus",a,g,c)})}},scrollRowIntoView:function(a){a=this.getNode(a,true);if(a){Ext.fly(a).scrollIntoView(this.el,false)}},focusCell:function(b){var d=this,a=d.getCellByPosition(b),c=d.getRecord(b.row);d.focusRow(c);if(a){d.scrollCellIntoView(a);d.fireEvent("cellfocus",c,a,b)}},scrollCellIntoView:function(a){if(a.row!=null&&a.column!=null){a=this.getCellByPosition(a)}if(a){Ext.fly(a).scrollIntoView(this.el,true)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(g,c,m,r){var v=this,o=v.rowTpl,i,s,b,l,n,t,u,e,p,q,k,d,w,h,a;if(v.viewReady){b=v.getNodeByRecord(c,false);if(b){p=v.overItemCls;q=v.overItemCls;k=v.focusedItemCls;d=v.beforeFocusedItemCls;w=v.selectedItemCls;h=v.beforeSelectedItemCls;i=v.indexInStore(c);s=Ext.fly(b,"_internal");l=v.createRowElement(c,i);if(s.hasCls(p)){Ext.fly(l).addCls(p)}if(s.hasCls(q)){Ext.fly(l).addCls(q)}if(s.hasCls(k)){Ext.fly(l).addCls(k)}if(s.hasCls(d)){Ext.fly(l).addCls(d)}if(s.hasCls(w)){Ext.fly(l).addCls(w)}if(s.hasCls(h)){Ext.fly(l).addCls(h)}a=v.ownerCt.columnManager.getColumns();if(Ext.isIE9m&&b.mergeAttributes){b.mergeAttributes(l,true)}else{n=l.attributes;t=n.length;for(e=0;e0){m=g.getCellPaddingAfter(n[0])}a.setWidth(1);k=d.textEl.dom.offsetWidth+d.titleEl.getPadding("lr");for(;c=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,i=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=(a<0)?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){i+=k;m=d}}while(i!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=(c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount()),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return new Ext.grid.CellContext(this).setPosition(a,b)},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();bg.viewSize){if(ce.startIndex){d.refreshView()}else{g.stretchView(d,g.getScrollHeight())}}else{d.callParent([b,a,c])}},onRemove:function(b,a,d){var c=this,e=c.bufferedRenderer;c.callParent([b,a,d]);if(c.rendered&&e){if(c.dataSource.getCount()>e.viewSize){c.refreshView()}else{e.stretchView(c,e.getScrollHeight())}}},onDataRefresh:function(){var a=this;if(a.bufferedRenderer){a.all.clear();a.bufferedRenderer.onStoreClear()}a.callParent()}});(Ext.cmd.derive("Ext.view.DropZone",Ext.dd.DropZone,{indicatorHtml:'
',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(l){var k=l.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!k){d=l.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,i=g.view,h=g.getPosition(d,b),l=i.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-i.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(i.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(i,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",i,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",i,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}},1,0,0,0,0,0,[Ext.view,"DropZone"],0));(Ext.cmd.derive("Ext.grid.ViewDropZone",Ext.view.DropZone,{indicatorHtml:'
',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var k=this.view,l=k.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;cn){q-=1}}Ext.suspendLayouts();if(l){a.move(n,q)}else{u.remove(r,false);a.insert(q,r)}if(a.isGroupHeader){if(!l){r.savedFlex=r.flex;delete r.flex;r.width=g}}else{if(r.savedFlex){r.flex=r.savedFlex;delete r.width}}k.purgeCache();Ext.resumeLayouts(true);k.onHeaderMoved(r,o,b,t)}}}}},1,0,0,0,0,0,[Ext.grid.header,"DropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderReorderer",Ext.AbstractPlugin,{init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}},0,0,0,0,["plugin.gridheaderreorderer"],0,[Ext.grid.plugin,"HeaderReorderer"],0));(Ext.cmd.derive("Ext.grid.header.Container",Ext.container.Container,{border:true,baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isColumn){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isColumn&&(!a.items||a.items.length===0)){a.isContainer=false;a.layout={type:"container",calculate:Ext.emptyFn}}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretch"},a.initialConfig.layout);if(a.isRootHeader){a.grid.columnManager=a.columnManager=new Ext.grid.ColumnManager(a)}}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var n=this,l=n.items.items,k=l.length,g=0,b=e.length,m,d,a,h;for(m=0;mgridcolumn[hideable]"),h=a.length,d;for(;b{text}
{%this.renderContainer(out,values)%}',dataIndex:null,text:" ",menuText:null,emptyCellText:" ",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,isColumn:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",clickTargetName:"titleEl",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(b.header!=null){b.text=b.header;b.header=null}if(!b.triStateSort){b.possibleSortStates.length=2}if(b.columns!=null){b.isGroupHeader=true;b.items=b.columns;b.columns=b.flex=b.width=null;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=b.resizable=false;b.align="center"}else{if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:b.clickTargetName,click:b.onTitleElClick,contextmenu:b.onTitleElContextMenu,mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b};if(b.resizable){a.dblclick=b.onTitleElDblClick}b.on(a)},onAdd:function(a){if(a.isColumn){a.isSubHeader=true;a.addCls(this.groupSubHeaderCls)}if(this.hidden){a.hide()}this.callParent(arguments)},onRemove:function(a){if(a.isSubHeader){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls)}this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this;a.applyColumnsState(b.columns);if(b.hidden!=null){a.hidden=b.hidden}if(b.locked!=null){a.locked=b.locked}if(b.sortable!=null){a.sortable=b.sortable}if(b.width!=null){a.flex=null;a.width=b.width}else{if(b.flex!=null){a.width=null;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},isLocked:function(){return this.locked||!!this.up("[isColumn][locked]","[isRootHeader]")},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var k=this,e=k.getOwnerHeaderCt(),b=k.ownerCt,a,l,h,g,d;if(!k.isVisible()){return k}if(!e){k.callParent();return k}if(e.forceFit){k.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(k.flex){k.savedWidth=k.getWidth();k.flex=null}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==k){k.ownerCt.hide();return}}Ext.suspendLayouts();if(k.isGroupHeader){h=k.items.items;for(d=0,g=h.length;dl.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(l.forceFit){n=Ext.ComponentQuery.query(":not([flex])",l.getVisibleGridColumns());if(n.length){o.width=o.savedWidth||o.width||q}else{n=l.getVisibleGridColumns();m=n.length;c=o.visibleSiblingCount;b=(o.savedWidth||o.width||q);b=Math.min(b*(c/m),q,Math.max(a-(m*q),q));o.width=null;o.flex=b;a-=b;e=0;for(k=0;kActions",sortable:false,innerCls:Ext.baseCSSPrefix+"grid-cell-inner-action-col",constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e"}return k},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,r){var i=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(i.actionIdRe))){q=i.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||i.origScope||i,n,b,l,q,d):false);if(q&&!a){if(k=="click"||(o==h.ENTER||o==h.SPACE)){m=q.handler||i.handler;if(m){m.call(q.scope||i.origScope||i,n,b,l,q,h,d,r)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return i.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}},1,["actioncolumn"],["component","gridcolumn","container","actioncolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,actioncolumn:true,box:true,headercontainer:true},["widget.actioncolumn"],0,[Ext.grid.column,"Action",Ext.grid,"ActionColumn"],0));(Ext.cmd.derive("Ext.grid.locking.HeaderContainer",Ext.grid.header.Container,{constructor:function(d){var c=this,a,b,h=[],g=d.lockedGrid,e=d.normalGrid;c.lockable=d;c.callParent();g.columnManager.rootColumns=e.columnManager.rootColumns=d.columnManager=c.columnManager=new Ext.grid.ColumnManager(g.headerCt,e.headerCt);a=g.headerCt.events;for(b in a){if(a.hasOwnProperty(b)){h.push(b)}}c.relayEvents(g.headerCt,h);c.relayEvents(e.headerCt,h)},getRefItems:function(){return this.lockable.lockedGrid.headerCt.getRefItems().concat(this.lockable.normalGrid.headerCt.getRefItems())},getGridColumns:function(){return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns())},getColumnsState:function(){var b=this,a=b.lockable.lockedGrid.headerCt.getColumnsState(),c=b.lockable.normalGrid.headerCt.getColumnsState();return a.concat(c)},applyColumnsState:function(h){var q=this,e=q.lockable.lockedGrid,g=e.headerCt,o=q.lockable.normalGrid.headerCt,r=Ext.Array.toValueMap(g.items.items,"headerId"),k=Ext.Array.toValueMap(o.items.items,"headerId"),n=[],p=[],m=1,b=h.length,l,a,d,c;for(l=0;l>#normalHeaderCt",items:k},g={itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt",items:d},m={lockedWidth:0,locked:a,normal:g};if(Ext.isObject(c)){Ext.applyIf(a,c);Ext.applyIf(g,c);Ext.apply(l,c);c=c.items}for(e=0,h=c.length;ea.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(i){var d=this,h=-d.scrollDelta,a=h*i.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){i.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),k=b.all.slice(),c=g.length,h;if(k.length===c){for(a=0;a','
','',h.join(""),"
","
",""].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var i=this,a=i.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=i.all,n,d=i.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return i.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-i.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){i.onExpand(k)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var i=this,g=i.animQueue,a=k.getId(),c=i.getNode(k),h=c?i.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(i.singleExpand){i.ensureSingleExpand(k)}if(h===-1){return}e=i.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;i.fireEvent("afteritemexpand",k,h,c);i.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:i.expandDuration,listeners:{afteranimate:function(){var m=l.query(i.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();i.refreshSize();delete i.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;i.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,i=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[i]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[i]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c0?1:-1;if(Math.abs(c)>=20||(a!==g.lastScrollDirection)){g.lastScrollDirection=a;g.handleViewScroll(g.lastScrollDirection);h=true}}if(!h){if(g.lockingPartner&&g.lockingPartner.scrollTop!==b){g.lockingPartner.view.el.dom.scrollTop=b}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,i=e.viewSize,a=(b.buffered?b.getTotalCount():b.getCount()),d,c;if(h==-1){if(g.startIndex){if((e.getFirstVisibleRowIndex()-g.startIndex)o.endIndex||eo.endIndex){a=Math.max(b-o.startIndex,0);if(k.variableRowHeight){n=o.item(o.startIndex+a,true).offsetTop}o.scroll(Ext.Array.slice(h,o.endIndex+1-b),1,a,b,e);if(k.variableRowHeight){l=k.bodyTop+n}else{l=g}}else{a=Math.max(o.endIndex-e,0);d=o.startIndex;o.scroll(Ext.Array.slice(h,0,o.startIndex-b),-1,a,b,e);if(k.variableRowHeight){l=k.bodyTop-o.item(d,true).offsetTop}else{l=g}}}k.position=k.scrollTop;if(m.positionBody){k.setBodyTop(l,g)}if(i&&!i.disabled&&!c){i.onRangeFetched(h,b,e,true);if(i.scrollTop!==k.scrollTop){i.view.el.dom.scrollTop=k.scrollTop}}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(b.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,i=h.view,m=i.all,a=m.elements,d=i.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+i.body.getHeight()g||i.bodyTop+k.body.getHeight()g){return i.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return i.getLastVisibleRowIndex(e+1,c,b,g)}}}return i.getFirstVisibleRowIndex()+Math.ceil(d/i.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return this.scrollHeight=Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}},0,0,0,0,["plugin.bufferedrenderer"],0,[Ext.grid.plugin,"BufferedRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.Editing",Ext.AbstractPlugin,{clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.columnManager.getColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var d=this,g,e=a.length,b;for(g=0;g','
 ',"
",""],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var a=this,b=a.getCollapseTarget();a.callParent();if(b.collapsed){a.addCls(a.collapsedClsInternal)}if(!a.canResize){a.addCls(a.baseCls+"-noresize")}Ext.applyIf(a.renderData,{collapseDir:a.getCollapseDirection(),collapsible:a.collapsible||b.collapsible});a.protoEl.unselectable()},onRender:function(){var b=this,a;b.callParent(arguments);if(b.performCollapse!==false){if(b.renderData.collapsible){b.mon(b.collapseEl,"click",b.toggleTargetCmp,b)}if(b.collapseOnDblClick){b.mon(b.el,"dblclick",b.toggleTargetCmp,b)}}b.mon(b.getCollapseTarget(),{collapse:b.onTargetCollapse,expand:b.onTargetExpand,beforeexpand:b.onBeforeTargetExpand,beforecollapse:b.onBeforeTargetCollapse,scope:b});if(b.canResize){b.tracker=Ext.create(b.getTrackerConfig());b.relayEvents(b.tracker,["beforedragstart","dragstart","dragend"])}a=b.collapseEl;if(a){a.lastCollapseDirCls=b.collapseDirProps[b.collapseDirection].cls}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)===b.indexOf(g)-1)<<1|Number(d==="hbox")}else{a=Number(g.collapseTarget==="prev")<<1|Number(d==="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.setOrientation((c==="top"||c==="bottom")?"horizontal":"vertical");return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget==="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},collapseDirProps:{top:{cls:Ext.baseCSSPrefix+"layout-split-top"},right:{cls:Ext.baseCSSPrefix+"layout-split-right"},bottom:{cls:Ext.baseCSSPrefix+"layout-split-bottom"},left:{cls:Ext.baseCSSPrefix+"layout-split-left"}},orientationProps:{horizontal:{opposite:"vertical",fixedAxis:"height",stretchedAxis:"width"},vertical:{opposite:"horizontal",fixedAxis:"width",stretchedAxis:"height"}},applyCollapseDirection:function(){var c=this,b=c.collapseEl,d=c.collapseDirProps[c.collapseDirection],a;if(b){a=b.lastCollapseDirCls;if(a){b.removeCls(a)}b.addCls(b.lastCollapseDirCls=d.cls)}},applyOrientation:function(){var e=this,c=e.orientation,d=e.orientationProps[c],g=e.size,b=d.fixedAxis,h=d.stretchedAxis,a=e.baseCls+"-";e[c]=true;e[d.opposite]=false;if(!e.hasOwnProperty(b)||e[b]==="100%"){e[b]=g}if(!e.hasOwnProperty(h)||e[h]===g){e[h]="100%"}e.removeCls(a+d.opposite);e.addCls(a+c)},setOrientation:function(a){var b=this;if(b.orientation!==a){b.orientation=a;b.applyOrientation()}},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}},0,["splitter"],["component","box","splitter"],{component:true,box:true,splitter:true},["widget.splitter"],0,[Ext.resizer,"Splitter"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitter",Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}},0,["bordersplitter"],["bordersplitter","component","box","splitter"],{bordersplitter:true,component:true,box:true,splitter:true},["widget.bordersplitter"],0,[Ext.resizer,"BorderSplitter"],0));(Ext.cmd.derive("Ext.layout.container.Border",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",isBorderLayout:true,padding:undefined,percentageRe:/(\d+)%/,horzMarginProp:"left",padOnContainerProp:"left",padNotOnContainerProp:"right",axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(n,b,x){var v=this,c=v.axisProps[x],s=!c.horizontal,m=c.sizeProp,q=0,a=n.childItems,g=a.length,u,r,p,h,t,e,l,o,d,w,k;for(r=0;r',"{text}","",' target="{hrefTarget}"',' hidefocus="true"',' unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'",'{text}','',"",""],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(c){var b=this,a=b.clickHideDelay;if(!b.href){c.stopEvent()}if(b.disabled){return}if(b.hideOnClick){if(!a){b.deferHideParentMenus()}else{b.deferHideParentMenusTimer=Ext.defer(b.deferHideParentMenus,a,b)}}Ext.callback(b.handler,b.scope||b,[b,c]);b.fireEvent("click",b,c);if(!b.hideOnClick){b.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}},0,["menuitem"],["component","menuitem","box"],{component:true,menuitem:true,box:true},["widget.menuitem"],[["queryable",Ext.Queryable]],[Ext.menu,"Item",Ext.menu,"TextItem"],0));(Ext.cmd.derive("Ext.menu.CheckItem",Ext.menu.Item,{checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['',"{text}","","{%var showCheckbox = values.showCheckbox,",' rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','target="{hrefTarget}" hidefocus="true" unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','","{%} else if (showCheckbox){%}",'',"{%}%}",'style="margin-right: 17px;" >{text}',"{%if (rightCheckbox) {%}",'',"{%} else if (values.arrowCls) {%}",'',"{%}%}","",""],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){a.showCheckbox=false;if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||(Ext.isIE9&&Ext.isStrict))&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}},0,["menucheckitem"],["component","menucheckitem","menuitem","box"],{component:true,menucheckitem:true,menuitem:true,box:true},["widget.menucheckitem"],0,[Ext.menu,"CheckItem"],0));(Ext.cmd.derive("Ext.menu.KeyNav",Ext.util.KeyNav,{constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,i=g+b,d=e.length,c=0,k;while(c=d){i=0}}k=e.getAt(i);if(a.canActivateItem(k)){a.setActiveItem(k);break}i+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}},1,0,0,0,0,0,[Ext.menu,"KeyNav"],0));(Ext.cmd.derive("Ext.menu.Separator",Ext.menu.Item,{canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:" ",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}},0,["menuseparator"],["component","menuseparator","menuitem","box"],{component:true,menuseparator:true,menuitem:true,box:true},["widget.menuseparator"],0,[Ext.menu,"Separator"],0));(Ext.cmd.derive("Ext.menu.Menu",Ext.panel.Panel,{enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden;b.constrain=false}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:" "})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,i=h.getRelatedTarget(),b=!g.el.contains(i),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},beforeShow:function(){var b=this,a;if(b.floating){b.savedMaxHeight=b.maxHeight;a=b.container.getViewSize().height;b.maxHeight=Math.min(b.maxHeight||a,a)}b.callParent(arguments)},afterShow:function(){var a=this;a.callParent(arguments);if(a.floating){a.maxHeight=a.savedMaxHeight}},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,i=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-i;if(k>a){h=e-i}else{if(gb){h=b-k}}}}d.setY(h)}},0,["menu"],["panel","component","container","menu","box"],{panel:true,component:true,container:true,menu:true,box:true},["widget.menu"],0,[Ext.menu,"Menu"],0));(Ext.cmd.derive("Ext.panel.Tool",Ext.Component,{isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:[''],toolOwner:null,tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}if(a.handler){Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a])}else{if(a.callback){Ext.callback(a.callback,a.scope||a,[a.toolOwner||a.ownerCt,a,c])}}a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}},0,["tool"],["component","tool","box"],{component:true,tool:true,box:true},["widget.tool"],0,[Ext.panel,"Tool"],0));(Ext.cmd.derive("Ext.resizer.SplitterTracker",Ext.dd.DragTracker,{enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:" "});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(i){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=i.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),i=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:i};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+i,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-i,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(o,h){var q=this,a=q.getSplitter(),k=a.orientation,r=q.getPrevCmp(),p=q.getNextCmp(),b=a.ownerCt,m=b.query(">[flex]"),n=m.length,c=k==="vertical",l=0,g=c?"width":"height",d=0,s,t;for(;lr){w=r}}if(w-n<2){return null}o=new Ext.util.Region(q,y,l,g);z.constraintAdjusters[z.getCollapseDirection()](o,n,w,a);z.dragInfo={minRange:n,maxRange:w,targetSize:b};return o},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var l=this,b=l.splitter,a=b.collapseTarget,n=b.neighbors,d=l.getSplitter().collapseEl,k=h.getTarget(),c=n.length,g,m;if(d&&k===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;gc){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,i,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(t,n){var u=this,c=u.activeResizeHandle.region,g=u.getOffset(u.constrainTo?"dragTarget":null),l=u.startBox,h,q=0,v=0,k,r,a=0,x=0,w,o=g[0]<0?"right":"left",s=g[1]<0?"down":"up",i,b,d,p,m;c=u.convertRegionName(c);switch(c){case"south":v=g[1];b=2;break;case"north":v=-g[1];x=-v;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":v=-g[1];x=-v;q=g[0];i=[l.x,l.y+l.height];b=3;break;case"southeast":v=g[1];q=g[0];i=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;v=g[1];i=[l.x+l.width,l.y];b=3;break;case"northwest":v=-g[1];x=-v;q=-g[0];a=-q;i=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+v,x:l.x+a,y:l.y+x};k=Ext.Number.snap(d.width,u.widthIncrement);r=Ext.Number.snap(d.height,u.heightIncrement);if(k!=d.width||r!=d.height){switch(c){case"northeast":d.y-=r-d.height;break;case"north":d.y-=r-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=r-d.height}d.width=k;d.height=r}if(d.widthu.maxWidth){d.width=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{u.lastX=d.x}if(d.heightu.maxHeight){d.height=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight);if(x){d.y=l.y+(l.height-d.height)}}else{u.lastY=d.y}if(u.preserveRatio||t.shiftKey){h=u.startBox.width/u.startBox.height;p=Math.min(Math.max(u.minHeight,d.width/h),u.maxHeight);m=Math.min(Math.max(u.minWidth,d.height*h),u.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{w=Math.abs(i[0]-this.lastXY[0])/Math.abs(i[1]-this.lastXY[1]);if(w>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(v===0){s="none"}if(q===0){o="none"}u.resize(d,{horizontal:o,vertical:s},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}},1,0,0,0,0,0,[Ext.resizer,"ResizeTracker"],0));(Ext.cmd.derive("Ext.resizer.Resizer",Ext.Base,{alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var n=this,k,r,t,s=n.handles,c,q,g,d=0,p,o=[],h,a,e,m,l=Ext.dom.Element.unselectableCls;n.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){k=b;b=arguments[1]||{};b.target=k}n.mixins.observable.constructor.call(n,b);k=n.target;if(k){if(k.isComponent){k.addClsWithUI("resizable");n.el=k.getEl();if(k.minWidth){n.minWidth=k.minWidth}if(k.minHeight){n.minHeight=k.minHeight}if(k.maxWidth){n.maxWidth=k.maxWidth}if(k.maxHeight){n.maxHeight=k.maxHeight}if(k.floating){if(!n.hasOwnProperty("handles")){n.handles="n ne e se s sw w nw"}}}else{n.el=n.target=Ext.get(k)}}else{n.target=n.el=Ext.get(n.el)}t=n.el.dom.tagName.toUpperCase();if(t=="TEXTAREA"||t=="IMG"||t=="TABLE"){n.originalTarget=n.target;r=n.el;e=r.getBox();n.target=n.el=n.el.wrap({cls:n.wrapCls,id:n.el.id+"-rzwrap",style:r.getStyles("margin-top","margin-bottom")});n.el.setPositioning(r.getPositioning());r.clearPositioning();n.el.setBox(e);r.setStyle("position","absolute")}n.el.position();if(n.pinned){n.el.addCls(n.pinnedCls)}n.resizeTracker=new Ext.resizer.ResizeTracker({disabled:n.disabled,target:n.target,constrainTo:n.constrainTo,overCls:n.overCls,throttle:n.throttle,originalTarget:n.originalTarget,delegate:"."+n.handleCls,dynamic:n.dynamic,preserveRatio:n.preserveRatio,heightIncrement:n.heightIncrement,widthIncrement:n.widthIncrement,minHeight:n.minHeight,maxHeight:n.maxHeight,minWidth:n.minWidth,maxWidth:n.maxWidth});n.resizeTracker.on({mousedown:n.onBeforeResize,drag:n.onResize,dragend:n.onResizeEnd,scope:n});if(n.handles=="all"){n.handles="n s e w ne nw se sw"}s=n.handles=n.handles.split(n.delimiterRe);q=n.possiblePositions;g=s.length;c=n.handleCls+" "+n.handleCls+"-{0}";if(n.target.isComponent){m=n.target.baseCls;c+=" "+m+"-handle "+m+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+m+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+n.el.getHeight()+'px"':"";for(;d")}}Ext.DomHelper.append(n.el,o.join(""));for(d=0;dk.row){return}for(c=0;c-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,i,c,a;if(e){i=g.nextSelection;c="select"}else{i=g.lastSelection||g.noSelection;c="deselect"}a=i.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,i.row,i.column))!==false&&h()!==false){if(e){a.focusRow(b,true);a.onCellSelect(i)}else{a.onCellDeselect(i);delete g.selection}if(!d){g.fireEvent(c,g,b,i.row,i.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.record,a.columnHeader)){c.wasEditing=false}else{c.wasEditing=true}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a,b){this.setCurrentPosition(a,b)}},1,0,0,0,["selection.cellmodel"],0,[Ext.selection,"CellModel"],0));(Ext.cmd.derive("Ext.selection.RowModel",Ext.selection.Model,{deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},onVetoUIEvent:function(g,c,a,i,d,h,b){if(g=="mousedown"){this.mousedownAction=!this.isSelected(b)}},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,l,a){var k=this,m=k.views,d=m.length,b=m[0].indexOf(g),h=c?"select":"deselect",e=0;if((l||k.fireEvent("before"+h,k,g,b))!==false&&a()!==false){for(;e0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},3,0,0,0,0,0,[Ext.util,"Point"],function(){this.prototype.translate=Ext.util.Region.prototype.translateBy}));(Ext.cmd.derive("Ext.tab.Bar",Ext.panel.Header,{baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['
{baseCls}-body-{ui} {parent.baseCls}-body-{parent.ui}-{.}" style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
",'
{baseCls}-strip-{ui}',' {parent.baseCls}-strip-{parent.ui}-{.}','">',"
"],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",c.lastBox.width+"px")}}}else{if(this.dock==="left"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",-c.lastBox.height+"px")}}}}}},getLayout:function(){var a=this;a.layout.type=(a.orientation==="horizontal")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,i,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{i=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=i&&Ext.getCmp(i.id);b=c&&c.closeEl&&(g===c.closeEl.dom)}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var B=this,x=B.items.items,e=x.length,p=B.layout.innerCt,v=p.getXY(),u=new Ext.util.Point(g[0],g[1]),w=0,y,b,a,q,z,k,h,d,s,m,l,o,n,t,r,A,c;for(;w1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}},0,["tabbar"],["component","tabbar","container","box","header"],{component:true,tabbar:true,container:true,box:true,header:true},["widget.tabbar"],0,[Ext.tab,"Bar"],0));(Ext.cmd.derive("Ext.tree.Column",Ext.grid.column.Column,{tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,iconCls:Ext.baseCSSPrefix+"tree-icon",checkboxCls:Ext.baseCSSPrefix+"tree-checkbox",elbowCls:Ext.baseCSSPrefix+"tree-elbow",expanderCls:Ext.baseCSSPrefix+"tree-expander",textCls:Ext.baseCSSPrefix+"tree-node-text",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-treecolumn",isTreeColumn:true,cellTpl:['','lineempty"/>',"",'-end-plus {expanderCls}"/>','','aria-checked="true" ','class="{childCls} {checkboxCls} {checkboxCls}-checked"/>',"",'leafparent {iconCls}"','style="background-image:url({icon})"/>','','{value}',"",'{value}',""],initComponent:function(){var a=this;a.origRenderer=a.renderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(m,a,e,b,d,n,k){var i=this,p=e.get("cls"),h=i.origRenderer,c=e.data,l=e.parentNode,o=k.rootVisible,q=[],g;if(p){a.tdCls+=" "+p}while(l&&(o||l.data.depth>0)){g=l.data;q[o?g.depth:g.depth-1]=g.isLast?0:1;l=l.parentNode}return i.getTpl("cellTpl").apply({record:e,baseIconCls:i.iconCls,iconCls:c.iconCls,icon:c.icon,checkboxCls:i.checkboxCls,checked:c.checked,elbowCls:i.elbowCls,expanderCls:i.expanderCls,textCls:i.textCls,leaf:c.leaf,expandable:e.isExpandable(),isLast:c.isLast,blankUrl:Ext.BLANK_IMAGE_URL,href:c.href,hrefTarget:c.hrefTarget,lines:q,metaData:a,childCls:i.getChildCls?i.getChildCls()+" ":"",value:h?h.apply(i.origScope,arguments):m})}},0,["treecolumn"],["component","gridcolumn","container","treecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,treecolumn:true,box:true,headercontainer:true},["widget.treecolumn"],0,[Ext.tree,"Column"],0));(Ext.cmd.derive("Ext.selection.CheckboxModel",Ext.selection.RowModel,{mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(b){var c=this,a;c.callParent(arguments);if(!c.hasLockedHeader()||b.headerCt.lockedCt){if(c.showHeaderCheckbox!==false){b.headerCt.on("headerclick",c.onHeaderClick,c)}c.addCheckbox(b,true);a=b.ownerCt;if(b.headerCt.lockedCt){a=a.ownerCt}c.mon(a,"reconfigure",c.onReconfigure,c)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b '},processSelection:function(b,a,h,d,i){var g=this,c=i.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,i);g.setSelectionMode(k)}else{g.selectWithEvent(a,i)}},onSelectChange:function(){this.callParent(arguments);if(!this.suspendChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.suspendChange){this.updateHeaderState()}this.callParent(arguments)},resumeChanges:function(){this.callParent();if(!this.suspendChange){this.updateHeaderState()}},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),k=g.views,l=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;l=true;for(c=0,d=b.getCount();c1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,i||b,[true,m]);return}}Ext.callback(g,i||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,i||b,[true,c])}else{Ext.callback(g,i||b,[false,null])}}}},1,["treepanel"],["panel","component","tablepanel","container","box","treepanel"],{panel:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.treepanel"],0,[Ext.tree,"Panel",Ext.tree,"TreePanel",Ext,"TreePanel"],0));(Ext.cmd.derive("Ext.view.DragZone",Ext.dd.DragZone,{containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){if(b.focusRow){b.focusRow(a)}this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}},1,0,0,0,0,0,[Ext.view,"DragZone"],0));(Ext.cmd.derive("Ext.util.Grouper",Ext.util.Sorter,{isGrouper:true,getGroupString:function(a){return a.get(this.property)}},0,0,0,0,0,0,[Ext.util,"Grouper"],0));(Ext.cmd.derive("Ext.ux.TabCloseMenu",Ext.Base,{closeTabText:"Close Tab",showCloseOthers:true,closeOthersTabsText:"Close Other Tabs",showCloseAll:true,closeAllTabsText:"Close All Tabs",extraItemsHead:null,extraItemsTail:null,constructor:function(a){this.addEvents("aftermenu","beforemenu");this.mixins.observable.constructor.call(this,a)},init:function(a){this.tabPanel=a;this.tabBar=a.down("tabbar");this.mon(this.tabPanel,{scope:this,afterlayout:this.onAfterLayout,single:true})},onAfterLayout:function(){this.mon(this.tabBar.el,{scope:this,contextmenu:this.onContextMenu,delegate:".x-tab"})},onBeforeDestroy:function(){Ext.destroy(this.menu);this.callParent(arguments)},onContextMenu:function(d,g){var c=this,h=c.createMenu(),e=true,i=true,b=c.tabBar.getChildByElement(g),a=c.tabBar.items.indexOf(b);c.item=c.tabPanel.getComponent(a);h.child('*[text="'+c.closeTabText+'"]').setDisabled(!c.item.closable);if(c.showCloseAll||c.showCloseOthers){c.tabPanel.items.each(function(k){if(k.closable){e=false;if(k!=c.item){i=false;return false}}return true});if(c.showCloseAll){h.child('*[text="'+c.closeAllTabsText+'"]').setDisabled(e)}if(c.showCloseOthers){h.child('*[text="'+c.closeOthersTabsText+'"]').setDisabled(i)}}d.preventDefault();c.fireEvent("beforemenu",h,c.item,c);h.showAt(d.getXY())},createMenu:function(){var b=this;if(!b.menu){var a=[{text:b.closeTabText,scope:b,handler:b.onClose}];if(b.showCloseAll||b.showCloseOthers){a.push("-")}if(b.showCloseOthers){a.push({text:b.closeOthersTabsText,scope:b,handler:b.onCloseOthers})}if(b.showCloseAll){a.push({text:b.closeAllTabsText,scope:b,handler:b.onCloseAll})}if(b.extraItemsHead){a=b.extraItemsHead.concat(a)}if(b.extraItemsTail){a=a.concat(b.extraItemsTail)}b.menu=Ext.create("Ext.menu.Menu",{items:a,listeners:{hide:b.onHideMenu,scope:b}})}return b.menu},onHideMenu:function(){var a=this;a.item=null;a.fireEvent("aftermenu",a.menu,a)},onClose:function(){this.tabPanel.remove(this.item)},onCloseOthers:function(){this.doClose(true)},onCloseAll:function(){this.doClose(false)},doClose:function(b){var a=[];this.tabPanel.items.each(function(c){if(c.closable){if(!b||c!=this.item){a.push(c)}}},this);Ext.each(a,function(c){this.tabPanel.remove(c)},this)}},1,0,0,0,["plugin.tabclosemenu"],[["observable",Ext.util.Observable]],[Ext.ux,"TabCloseMenu"],0));(Ext.cmd.derive("LIME.view.DocumentLangSelector",Ext.form.field.ComboBox,{name:"docLang",valueField:"code",displayField:"name",queryMode:"local",typeAhead:true,store:"DocumentLanguages",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.language;this.callParent(arguments)}},0,["docLangSelector"],["field","trigger","combobox","textfield","pickerfield","component","docLangSelector","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,docLangSelector:true,combo:true,box:true,triggerfield:true},["widget.docLangSelector"],0,[LIME.view,"DocumentLangSelector"],0));(Ext.cmd.derive("LIME.view.LocaleSelector",Ext.form.field.ComboBox,{name:"docLocale",emptyText:"Locale",valueField:"name",displayField:"name",queryMode:"local",store:"Locales",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false},0,["docLocaleSelector"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","docLocaleSelector","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,docLocaleSelector:true,triggerfield:true},["widget.docLocaleSelector"],0,[LIME.view,"LocaleSelector"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Expander",Ext.button.Button,{expandedText:"▼",collapsedText:"►",border:false,leafText:" ",listeners:{click:function(b){var a=b.up("treeButton");if(a.childrenShown){b.hideChildren(a);b.up("treeButton").updateLayout()}else{b.showChildren(a)}b.updateLayout()}},showChildren:function(c){if(c.getChildren().length!=0){var b=this.up("markingMenu");if(b.shown.indexOf(c)==-1){var a=c.getChildrenContainer();b.shown.push(c);a.hidden=false;a.el.show();c.childrenShown=true;this.setTextFast(this.expandedText)}}},hideChildren:function(c){if((c.getChildren().length==0||c.getChildrenContainer().hidden)){return}var b=this.up("markingMenu"),g=b.shown.indexOf(c),e=c.getChildrenContainer(),a=e.items.items;if(g!=-1){for(var d in a){var h=a[d].getExpander();h.hideChildren(a[d])}e.hidden=true;e.el.hide();c.childrenShown=false;this.setTextFast(this.collapsedText);b.shown.splice(g,1)}},setTextFast:function(a){this.text=a;this.btnInnerEl.update(a)}},0,["treeButtonExpander"],["button","component","treeButtonExpander","box"],{button:true,component:true,treeButtonExpander:true,box:true},["widget.treeButtonExpander"],0,[LIME.view.markingmenu.treebutton,"Expander"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Name",Ext.button.Button,{textAlign:"left"},0,["treeButtonName"],["treeButtonName","button","component","box"],{treeButtonName:true,button:true,component:true,box:true},["widget.treeButtonName"],0,[LIME.view.markingmenu.treebutton,"Name"],0));(Ext.cmd.derive("LIME.view.markingmenu.treebutton.Children",Ext.container.Container,{},0,["treeButtonChildren"],["component","container","box","treeButtonChildren"],{component:true,container:true,box:true,treeButtonChildren:true},["widget.treeButtonChildren"],0,[LIME.view.markingmenu.treebutton,"Children"],0));(Ext.cmd.derive("LIME.view.markingmenu.TreeButton",Ext.panel.Panel,{border:false,margin:"4 2 4 2",width:"auto",height:"auto",bodyCls:"x-docked-noborder-top",tbar:{baseCls:"toolbarTreeButton",items:[{xtype:"treeButtonExpander"},{xtype:"treeButtonName",flex:1}]},items:[{xtype:"treeButtonChildren",hidden:true}],listeners:{beforerender:function(a){if(a.up("treeButton")){a.style={marginLeft:"15px"}}}},constructor:function(){this.childrenShown=false;this.leaf=true;this.callParent(arguments)},appendChild:function(a){this.down("treeButtonChildren").add(a)},setLeaf:function(a){var b=this.getExpander();if(a){b.collapsedText=b.leafText;b.expandedText=b.leafText;b.setText(b.leafText);b.disable()}else{b.setText(b.collapsedText);if(this.getChildrenContainer().isVisible()){b.setText(b.expandedText)}}},getName:function(){var b=this.dockedItems.items[0].items.items;for(var a in b){if(b[a].xtype=="treeButtonName"){return b[a]}}return null},getExpander:function(){var b=this.dockedItems.items[0].items.items;for(var a in b){if(b[a].xtype=="treeButtonExpander"){return b[a]}}return null},getChildrenContainer:function(){var b=this.items.items;for(var a in b){if(b[a].xtype=="treeButtonChildren"){return b[a]}}return null},getChildren:function(b){var a=this.getChildrenContainer().items.items;var c=[];for(var d in a){if(!b||!Ext.isFunction(b)||b(a[d])){c.push(a[d])}}return c},getAscendants:function(){var b={};var a=this.getParent();while(a){b[a.getName().text]=true;a=a.getParent()}return b},getParent:function(){var a=this.up("treeButton");return a},isDescendantOf:function(a){if(!a||a==this){return false}var b=this.getParent();while(b&&b!=a){b=b.getParent()}return b==a},showChildren:function(a){var b=this.down("treeButtonExpander");if(b){b.showChildren(this,a)}},hideChildren:function(a){var b=this.down("treeButtonExpander");if(b){b.hideChildren(this,a)}},getChildByName:function(a){var b=this.getChildren(function(c){return c.waweConfig.name==a});return b[0]},getButtonName:function(){return this.waweConfig.name},getPattern:function(){return this.waweConfig.pattern.pattern}},1,["treeButton"],["panel","component","container","box","treeButton"],{panel:true,component:true,container:true,box:true,treeButton:true},["widget.treeButton"],0,[LIME.view.markingmenu,"TreeButton"],0));(Ext.cmd.derive("LIME.view.NationalitySelector",Ext.form.field.ComboBox,{name:"nationality",valueField:"alpha-2",displayField:"name",queryMode:"local",typeAhead:true,store:"Nationalities",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.nationality;this.callParent(arguments)}},0,["nationalitySelector"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","nationalitySelector","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,nationalitySelector:true,triggerfield:true},["widget.nationalitySelector"],0,[LIME.view,"NationalitySelector"],0));(Ext.cmd.derive("LIME.view.MarkingMenu",Ext.tab.Panel,{collapsible:true,layout:"fit",listeners:{resize:function(a){a.doLayout()}},constructor:function(){this.shown=[];this.title=Locale.strings.eastToolbarTitle;this.items=[{xtype:"panel",cls:"buttonsContainer structure",title:Locale.strings.documentStructure,border:false,autoScroll:true},{xtype:"panel",title:Locale.strings.commonButtons,border:false,autoScroll:true,cls:"buttonsContainer commons"}],this.callParent(arguments)},hideAll:function(){var a=Ext.clone(this.shown),c;for(var b=0;b',init:function(){this.callParent(arguments);this.cmp.tpl=new Ext.Template(['"]);this.setSrc(this.src)},setSrc:function(a){if(a&&(!this.url||a!=this.url)){this.cmp.update({url:a});this.url=a}},setRawSrc:function(a,d){var c=this.getIframe(),b=function(){c.removeEventListener("load",b);d(this.contentDocument)};if(a){if(Ext.isFunction(d)){c=this.getIframe();if(c){c.addEventListener("load",b)}}c.setAttribute("src",a);this.url=a}},getIframe:function(){return this.cmp.body.down("iframe",true)},getIfameDoc:function(){var a=this.getIframe(),b;if(a){b=a.contentDocument||a.contentWindow.document}return b},setLoading:function(){var a=this.getIframe();if(a&&a.doc){a.doc.body.innerHTML=this.loadingHtml}},addCssLink:function(b){var d=this,c=this.getIframe(),a,e=function(){var g=d.getIfameDoc();a=g.createElement("link");a.href=b;a.rel="stylesheet";a.type="text/css";g.head.appendChild(a)};if(c){c.onload=e;e()}}},0,0,0,0,["plugin.iframe"],0,[Ext.ux,"Iframe"],0));(Ext.cmd.derive("LIME.controller.CustomizationManager",Ext.app.Controller,{views:["DocumentLangSelector","LocaleSelector","MarkingMenu","Ext.ux.Iframe"],customCallbacks:{},customMenuItems:{},refs:[{selector:"appViewport",ref:"appViewport"}],onLanguageLoaded:function(){var a=this,b=Ext.Array.merge(Config.customDefaultControllers,Config.customControllers);a.customCallbacks={};if(b){Ext.each(b,function(c){var d=a.getController(c);Ext.callback(d.onInitPlugin,d)})}},callCallback:function(d,a){var c=this,b=c.fullNameToName(d.self.getName());if(c.customCallbacks[b]&&c.customCallbacks[b][a]){c.customCallbacks[b][a](d)}},fullNameToName:function(a){var b=a.lastIndexOf(".");return a.substring(b+1)},beforeCreation:function(c,g,e){var d=this,b=Ext.clone(g),a=Config.getCustomViews(c);Ext.each(a,function(h){if(Ext.isFunction(h.beforeCreation)){try{b=Ext.bind(h.beforeCreation,h)(b)}catch(i){Ext.log({level:"warn"},"Exception beforeCreation plugin of "+c,i)}}});b=b||g;b.cls=g.cls;if(Ext.isFunction(e)){e(b)}},addMenuItem:function(a,d,b){var g=this,c=g.getController("MainToolbar"),e;e=c.addMenuItem(d,b);if(e){g.customMenuItems[a.id]=g.customMenuItems[a.id]||[];g.customMenuItems[a.id].push(e)}},removeCustomMenuItems:function(a){var b=this;Ext.each(b.customMenuItems[a.id],function(c){c.parentMenu.remove(c)});b.customMenuItems[a.id]=[]},init:function(){var a=this;a.application.on(Statics.eventsNames.languageLoaded,a.onLanguageLoaded,a);a.application.on(Statics.eventsNames.beforeCreation,a.beforeCreation,a);a.application.on("addMenuItem",a.addMenuItem,a);Config.beforeSetLanguage=function(c,d){if(Config.customControllers){Ext.each(Config.customControllers,function(e){var g=a.getController(e);a.removeCustomMenuItems(g);Ext.callback(g.onRemoveController,g)})}Ext.callback(d)};var b=function(){Ext.defer(a.onLanguageLoaded,2000,a)};if(Config.loaded){b()}else{Config.afterDefaultLoaded=b}a.control({markingMenu:{afterrender:function(c){a.callCallback(c,"afterCreation")}},docLangSelector:{afterrender:function(c){if(Config.fieldsDefaults[c.name]){c.setValue(Config.fieldsDefaults[c.name])}}},docLocaleSelector:{afterrender:function(c){if(Config.fieldsDefaults[c.name]){c.setValue(Config.fieldsDefaults[c.name])}}}})}},0,0,0,0,0,0,[LIME.controller,"CustomizationManager"],0));(Ext.cmd.derive("Ext.ux.upload.Basic",Ext.util.Observable,{autoStart:true,autoRemoveUploaded:true,statusQueuedText:"Ready to upload",statusUploadingText:"Uploading ({0}%)",statusFailedText:"Error",statusDoneText:"Complete",statusInvalidSizeText:"File too large",statusInvalidExtensionText:"Invalid file type",configs:{uploader:{runtimes:"",url:"",browse_button:null,container:null,max_file_size:"128mb",resize:"",flash_swf_url:"",silverlight_xap_url:"",filters:[],chunk_size:null,unique_names:true,multipart:true,multipart_params:{},multi_selection:true,drop_element:null,required_features:null}},constructor:function(a,b){var c=this;c.owner=a;c.success=[];c.failed=[];Ext.apply(c,b.listeners);c.uploaderConfig=Ext.apply(c,b.uploader,c.configs.uploader);c.addEvents("beforestart","uploadready","uploadstarted","uploadcomplete","uploaderror","filesadded","beforeupload","fileuploaded","updateprogress","uploadprogress","storeempty");Ext.define("Ext.ux.upload.Model",{extend:"Ext.data.Model",fields:["id","loaded","name","size","percent","status","msg"]});c.store=Ext.create("Ext.data.JsonStore",{model:"Ext.ux.upload.Model",listeners:{load:c.onStoreLoad,remove:c.onStoreRemove,update:c.onStoreUpdate,scope:c}});c.actions={textStatus:Ext.create("Ext.Action",{text:"uploader not initialized"}),add:Ext.create("Ext.Action",{text:b.addButtonText||"Add files",iconCls:b.addButtonCls,disabled:false}),start:Ext.create("Ext.Action",{text:b.uploadButtonText||"Start",disabled:true,iconCls:b.uploadButtonCls,handler:c.start,scope:c}),cancel:Ext.create("Ext.Action",{text:b.cancelButtonText||"Cancel",disabled:true,iconCls:b.cancelButtonCls,handler:c.cancel,scope:c}),removeUploaded:Ext.create("Ext.Action",{text:b.deleteUploadedText||"Remove uploaded",disabled:true,handler:c.removeUploaded,scope:c}),removeAll:Ext.create("Ext.Action",{text:b.deleteAllText||"Remove all",disabled:true,handler:c.removeAll,scope:c})};c.callParent()},initialize:function(){var a=this;if(!a.initialized){a.initialized=true;a.initializeUploader()}},destroy:function(){this.clearListeners()},setUploadPath:function(a){this.uploadpath=a},removeAll:function(){this.store.data.each(function(a){this.removeFile(a.get("id"))},this)},removeUploaded:function(){this.store.each(function(a){if(a&&a.get("status")==5){this.removeFile(a.get("id"))}},this)},removeFile:function(c){var b=this,a=b.uploader.getFile(c);if(a){b.uploader.removeFile(a)}else{b.store.remove(b.store.getById(c))}},cancel:function(){var a=this;a.uploader.stop();a.actions.start.setDisabled(a.store.data.length==0)},start:function(){var a=this;a.fireEvent("beforestart",a);if(a.multipart_params){a.uploader.settings.multipart_params=a.multipart_params}a.uploader.start()},initializeUploader:function(){var me=this;if(!me.uploaderConfig.runtimes){var runtimes=["html5"];me.uploaderConfig.flash_swf_url&&runtimes.push("flash");me.uploaderConfig.silverlight_xap_url&&runtimes.push("silverlight");runtimes.push("html4");me.uploaderConfig.runtimes=runtimes.join(",")}me.uploader=Ext.create("plupload.Uploader",me.uploaderConfig);Ext.each(["Init","ChunkUploaded","FilesAdded","FilesRemoved","FileUploaded","PostInit","QueueChanged","Refresh","StateChanged","BeforeUpload","UploadFile","UploadProgress","Error"],function(v){me.uploader.bind(v,eval("me._"+v),me)},me);me.uploader.init()},updateProgress:function(){var g=this,k=g.uploader.total,b=Ext.util.Format.fileSize(k.bytesPerSec),h=g.store.data.length,c=g.failed.length,i=g.success.length,e=c+i,a=h-i-c,d=k.percent;g.fireEvent("updateprogress",g,h,d,e,i,c,a,b)},updateStore:function(a){var b=this,c=b.store.getById(a.id);if(!a.msg){a.msg=""}if(c){c.data=a;c.commit()}else{b.store.loadData([a],true)}},onStoreLoad:function(c,a,b){this.updateProgress()},onStoreRemove:function(c,a,b){var d=this;if(!c.data.length){d.actions.start.setDisabled(true);d.actions.removeUploaded.setDisabled(true);d.actions.removeAll.setDisabled(true);d.uploader.total.reset();d.fireEvent("storeempty",d)}var e=a.get("id");Ext.each(d.success,function(g){if(g&&g.id==e){Ext.Array.remove(d.success,g)}},d);Ext.each(d.failed,function(g){if(g&&g.id==e){Ext.Array.remove(d.failed,g)}},d);d.updateProgress()},onStoreUpdate:function(c,a,b){a.data=this.fileMsg(a.data);this.updateProgress()},fileMsg:function(a){var b=this;if(a.status&&a.server_error!=1){switch(a.status){case 1:a.msg=b.statusQueuedText;break;case 2:a.msg=Ext.String.format(b.statusUploadingText,a.percent);break;case 4:a.msg=a.msg||b.statusFailedText;break;case 5:a.msg=b.statusDoneText;break}}return a},_Init:function(b,a){this.runtime=a.runtime;this.owner.enable(true);this.fireEvent("uploadready",this)},_BeforeUpload:function(b,a){this.fireEvent("beforeupload",this,b,a)},_ChunkUploaded:function(){},_FilesAdded:function(c,b){var a=this;if(a.uploaderConfig.multi_selection!=true){if(a.store.data.length==1){return false}b=[b[0]];c.files=[b[0]]}a.actions.removeUploaded.setDisabled(false);a.actions.removeAll.setDisabled(false);a.actions.start.setDisabled(c.state==2);Ext.each(b,function(d){a.updateStore(d)},a);if(a.fireEvent("filesadded",a,b)!==false){if(a.autoStart&&c.state!=2){Ext.defer(function(){a.start()},300)}}},_FilesRemoved:function(b,a){Ext.each(a,function(c){this.store.remove(this.store.getById(c.id))},this)},_FileUploaded:function(e,c,a){var d=this,b=Ext.JSON.decode(a.response);if(b.success==true){c.server_error=0;c.content=b.html;c.response=b;d.success.push(c);d.fireEvent("fileuploaded",d,c,b)}else{if(b.message){c.msg=''+b.message+""}c.server_error=1;c.content=b.html;c.response=b;d.failed.push(c);d.fireEvent("uploaderror",d,Ext.apply(a,{file:c}))}this.updateStore(c)},_PostInit:function(a){},_QueueChanged:function(a){},_Refresh:function(a){Ext.each(a.files,function(b){this.updateStore(b)},this)},_StateChanged:function(a){if(a.state==2){this.fireEvent("uploadstarted",this);this.actions.cancel.setDisabled(false);this.actions.start.setDisabled(true)}else{this.fireEvent("uploadcomplete",this,this.success,this.failed);if(this.autoRemoveUploaded){this.removeUploaded()}this.actions.cancel.setDisabled(true);this.actions.start.setDisabled(this.store.data.length==0)}},_UploadFile:function(b,a){},_UploadProgress:function(g,c){var e=this,a=c.name,b=c.size,d=c.percent;e.fireEvent("uploadprogress",e,c,a,b,d);if(c.server_error){c.status=4}e.updateStore(c)},_Error:function(b,a){if(a.file){a.file.status=4;if(a.code==-600){a.file.msg=Ext.String.format('{0}',this.statusInvalidSizeText)}else{if(a.code==-700){a.file.msg=Ext.String.format('{0}',this.statusInvalidExtensionText)}else{a.file.msg=Ext.String.format('{2} ({0}: {1})',a.code,a.details,a.message)}}this.failed.push(a.file);this.updateStore(a.file)}this.fireEvent("uploaderror",this,a)}},1,0,0,0,0,0,[Ext.ux.upload,"Basic"],0));(Ext.cmd.derive("Ext.ux.upload.Button",Ext.button.Button,{disabled:true,constructor:function(a){var b=this;a=a||{};Ext.applyIf(a.uploader,{browse_button:a.id||Ext.id(b)});b.callParent([a])},initComponent:function(){var a=this,b;a.callParent();a.uploader=a.createUploader();if(a.uploader.drop_element&&(b=Ext.getCmp(a.uploader.drop_element))){b.addListener("afterRender",function(){a.uploader.initialize()},{single:true,scope:a})}else{a.listeners={afterRender:{fn:function(){a.uploader.initialize()},single:true,scope:a}}}a.relayEvents(a.uploader,["beforestart","uploadready","uploadstarted","uploadcomplete","uploaderror","filesadded","beforeupload","fileuploaded","updateprogress","uploadprogress","storeempty"])},createUploader:function(){return Ext.create("Ext.ux.upload.Basic",this,Ext.applyIf({listeners:{}},this.initialConfig))}},1,["uploadbutton"],["uploadbutton","button","component","box"],{uploadbutton:true,button:true,component:true,box:true},["widget.uploadbutton"],0,[Ext.ux.upload,"Button"],0));(Ext.cmd.derive("Ext.ux.upload.plugin.Uploader",Ext.AbstractPlugin,{constructor:function(a){var b=this;Ext.apply(b,a);b.callParent(arguments)},init:function(b){var a=this,c=b.uploader;b.on({filesadded:{fn:function(e,d){e.start()},scope:a},updateprogress:{fn:function(h,l,i,k,m,g,d,e){var n=Ext.String.format("Upload {0}% ({1} von {2})",i,k,l)},scope:a},uploadcomplete:{fn:function(g,h,d){var e;if(h.length!=0){e=h[0];if(b.mainUploader&&b.finishEvent){b.mainUploader.fireEvent(b.finishEvent,e.content,e)}}},scope:a}})}},1,0,0,0,["plugin.ux.upload.uploader"],0,[Ext.ux.upload.plugin,"Uploader"],0));(Ext.cmd.derive("LIME.view.modal.Uploader",Ext.window.Window,{layout:{type:"vbox",align:"center"},border:false,modal:true,icon:"resources/images/icons/import-icon.png",uploadUrl:null,uploadParams:{},setViewProperties:function(e,h){var e=e||{},c=e.fieldLabel||this.fieldLabel||"File",d=e.buttonSelectLabel||this.buttonSelectLabel||"Select File...",g=e.buttonSubmitLabel||this.buttonSubmitLabel||"Upload",a=e.dragDropLabel||this.dragDropLabel||"Drop your file here",i=this,b;this.uploadUrl=e.uploadUrl||this.uploadUrl;this.uploadParams=e.uploadParams||this.uploadParams;b=[{xtype:"uploadbutton",text:g,height:50,margin:"10px 0 10px 0",plugins:[{ptype:"ux.upload.uploader",mainUploader:i}],mainUploader:i,finishEvent:"uploadEnd",errorEvent:"uploadError",uploader:{url:this.uploadUrl,multipart_params:this.uploadParams,autoStart:true,max_file_size:"2020mb",drop_element:"dropArea",statusQueuedText:"Ready to upload",statusUploadingText:"Uploading ({0}%)",statusFailedText:'Error',statusDoneText:'Complete',statusInvalidSizeText:"File too large",statusInvalidExtensionText:"Invalid file type"}},{xtype:"panel",id:"dropArea",minHeight:200,frame:true,style:{border:"2px dashed #99BCE8",marginTop:"5px",marginLeft:"0px",marginRight:"0px"},layout:{type:"hbox",align:"middle",pack:"center"},items:[{xtype:"panel",frame:true,style:{border:"0px"},html:a}]}];this.removeAll();this.add(b);if(h){this.update()}},listeners:{beforerender:function(){this.setViewProperties();if(Ext.isIE9){this.down("#dropArea").hide()}},afterrender:function(b){var a=b.down("uploadbutton");Ext.defer(function(){a.uploader.uploader.refresh()},300,this)}}},0,["uploader"],["panel","window","component","container","uploader","box"],{panel:true,window:true,component:true,container:true,uploader:true,box:true},["widget.uploader"],0,[LIME.view.modal,"Uploader"],0));(Ext.cmd.derive("LIME.controller.DocumentUploader",Ext.app.Controller,{views:["modal.Uploader"],refs:[{ref:"uploader",selector:"uploader"}],fileDispatcher:function(c,e,g,d){switch(c.type){case"text/plain":case"text/html":var b=new FileReader(),a=this;b.onload=function(h){var i=h.target.result;Ext.callback(g,d,[i,e])};b.readAsText(c);break;default:Ext.Msg.alert(Locale.strings.error,Locale.strings.typeNotSupported);break}},uploadCallback:function(c,b,d,a){if(Ext.isString(c)){Ext.callback(d,a,[c,b])}else{this.fileDispatcher(c,b,d,a)}},init:function(){var a=this.application;this.control({uploader:{uploadEnd:function(c,b){var e=this,d=this.getUploader();if(c){e.uploadCallback(c,b,d.uploadCallback,d.callbackScope);d.close()}},close:function(b){b.down("uploadbutton").uploader.uploader.destroy()}},"uploader uploadbutton":{beforeupload:function(){var b=this.getUploader();a.fireEvent(Statics.eventsNames.progressStart,null,{value:0.5,text:Locale.strings.progressBar.loadingDocument})},uploadcomplete:function(){a.fireEvent(Statics.eventsNames.progressEnd)},uploaderror:function(c,b){var d=b.file.content;if(!d||(d!==undefined&&d.length==0)){d=Locale.strings.uploadError}Ext.Msg.alert(Locale.strings.error,d)}}})}},0,0,0,0,0,0,[LIME.controller,"DocumentUploader"],0));(Ext.cmd.derive("LIME.view.modal.Registration",Ext.window.Window,{layout:"auto",draggable:false,resizable:false,border:false,width:300,registrationFailed:function(){var b=this,d=b.getPosition()[0],c=20,a=this.down("form").getForm();b.animate({duration:500,keyframes:{25:{left:d+c},75:{left:d-c},100:{left:d}}})},checkPasswords:function(){var c=this.down("form").getForm(),a=c.findField("password"),d=c.findField("passwordConfirmation"),b=Locale.strings.passwordsDontMatch;if(a.value!=d.value){a.markInvalid(b);d.markInvalid(b);this.registrationFailed();return false}else{return true}},initComponent:function(){this.title=Locale.strings.userRegistration;this.items=[{xtype:"toolbar",items:["->",{xtype:"languageSelectionBox"}]},{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{emptyText:"Full name",name:"name",allowBlank:false},{emptyText:"Email",name:"email",regex:/^([\w\-\'\-]+)(\.[\w-\'\-]+)*@([\w\-]+\.){1,5}([A-Za-z]){2,4}$/,allowBlank:false},{emptyText:"Password",inputType:"password",name:"password",allowBlank:false},{emptyText:"Password (repeat)",inputType:"password",name:"passwordConfirmation",allowBlank:false}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"button",minWidth:100,text:Locale.strings.register}]}]}];this.callParent(arguments)}},0,["registration"],["panel","window","component","container","box","registration"],{panel:true,window:true,component:true,container:true,box:true,registration:true},["widget.registration"],0,[LIME.view.modal,"Registration"],0));(Ext.cmd.derive("LIME.view.modal.Login",Ext.window.Window,{layout:"auto",closable:false,draggable:false,resizable:false,border:false,bodyStyle:{"background-color":"#C9CEDB"},width:300,getData:function(){var a=this.down("form").getValues();return a},resetData:function(){var a=this.down("form").getForm();a.reset()},loginFailed:function(){var b=this,d=b.getPosition()[0],c=20,a=this.down("form").getForm();b.resetData();a.findField("username").markInvalid(Locale.strings.fieldIsInvalid);a.findField("password").markInvalid(Locale.strings.fieldIsInvalid);b.animate({duration:500,keyframes:{25:{left:d+c},75:{left:d-c},100:{left:d}}})},setData:function(a){var b=this.down("form").getForm();b.setValues(a)},initComponent:function(){this.title=Locale.strings.login;this.items=[{xtype:"toolbar",items:["->",{xtype:"languageSelectionBox"}]},{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{xtype:"checkbox",boxLabel:Locale.strings.guestLogin},{emptyText:"Email",name:"username",allowBlank:false},{emptyText:"Password",inputType:"password",name:"password",allowBlank:false}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"container",layout:"vbox",items:[{xtype:"button",minWidth:100,text:Locale.strings.login},{xtype:"box",cls:"registration",style:{marginTop:"10px"},autoEl:{tag:"a",href:"#",html:Locale.strings.register}},{xtype:"box",cls:"forgotPassword",style:{marginTop:"10px"},autoEl:{tag:"a",href:"#",html:Locale.strings.forgotPassword}}]},"->"]}]}];this.callParent(arguments)}},0,["login"],["panel","window","component","container","login","box"],{panel:true,window:true,component:true,container:true,login:true,box:true},["widget.login"],0,[LIME.view.modal,"Login"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LogoutButton",Ext.button.Button,{icon:"resources/images/icons/logout-icon-small.png",initComponent:function(){this.text=Locale.strings.userLogout;this.callParent(arguments)}},0,["logoutButton"],["button","component","box","logoutButton"],{button:true,component:true,box:true,logoutButton:true},["widget.logoutButton"],0,[LIME.view.maintoolbar,"LogoutButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.UserButton",Ext.button.Button,{icon:"resources/images/icons/user_small.png",initComponent:function(){this.tpl=Locale.strings.userWelcome+" {name}";this.menu={xtype:"menu",plain:true,items:{xtype:"buttongroup",title:Locale.strings.userOptions,columns:2,defaults:{xtype:"button",scale:"large",iconAlign:"left"},items:[{xtype:"image",rowspan:2,src:"resources/images/icons/user_medium.png",width:70,height:48,autoEl:"div"},{text:Locale.strings.userSettings,width:100,scale:"medium",icon:"resources/images/icons/settings.png"},{xtype:"logoutButton",width:100,scale:"medium"}]},listeners:{mouseleave:function(d,c,a){var b=d.up("userButton");d.hide();b.removeClsWithUI(b.focusCls)}}},this.callParent(arguments)}},0,["userButton"],["userButton","button","component","box"],{userButton:true,button:true,component:true,box:true},["widget.userButton"],0,[LIME.view.maintoolbar,"UserButton"],0));(Ext.cmd.derive("LIME.controller.LoginManager",Ext.app.Controller,{views:["modal.Login","modal.Registration","maintoolbar.UserButton"],refs:[{selector:"viewport",ref:"viewport"},{selector:"login",ref:"login"},{selector:"userButton",ref:"userButton"}],userInfo:["username","password","userCollection","editorLanguage"],startEditor:function(){var a=this.getViewport();this.cleanViewport();this.addViewportItems(a.editorItems)},showLogin:function(){var a=this.getViewport();this.cleanViewport();this.addViewportItems(a.loginItems)},cleanViewport:function(){var a=this.getViewport();a.removeAll(true)},addViewportItems:function(b){var a=this.getViewport();b=Ext.Array.merge(b,a.commonItems);a.add(b)},isLoggedIn:function(){for(var a=0;a'}return c}}],width:195,displayField:"name",initComponent:function(){var a=this;Ext.apply(a,{store:a.buildStore(a)});a.callParent(arguments)},buildStore:function(a){return Ext.create("LIME.store.OpenFile")}},0,["openFileListView"],["panel","component","tablepanel","container","grid","box","openFileListView","gridpanel"],{panel:true,component:true,tablepanel:true,container:true,grid:true,box:true,openFileListView:true,gridpanel:true},["widget.openFileListView"],0,[LIME.view.modal.newOpenfile,"ListView"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.ListFilesPanel",Ext.panel.Panel,{layout:{type:"hbox",align:"stretch"},autoScroll:true,border:false,margin:2,items:[{xtype:"openFileListView",path:"root"},{xtype:"openFileListView"},{xtype:"openFileListView"}]},0,["listFilesPanel"],["panel","component","container","box","listFilesPanel"],{panel:true,component:true,container:true,box:true,listFilesPanel:true},["widget.listFilesPanel"],0,[LIME.view.modal.newOpenfile,"ListFilesPanel"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.toolbar.CancelButton",Ext.Button,{icon:"resources/images/icons/cancel.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthCancelButtonLabel;this.tooltip=Locale.strings.openFileWindowSouthCancelButtonTooltip;this.callParent(arguments)}},0,["newOpenfileToolbarCancelButton"],["button","component","newOpenfileToolbarCancelButton","box"],{button:true,component:true,newOpenfileToolbarCancelButton:true,box:true},["widget.newOpenfileToolbarCancelButton"],0,[LIME.view.modal.newOpenfile.toolbar,"CancelButton"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.toolbar.OpenButton",Ext.Button,{icon:"resources/images/icons/accept.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthOpenButtonLabel;this.tooltip=Locale.strings.openFileWindowSouthOpenButtonTooltip;this.callParent(arguments)}},0,["newOpenfileToolbarOpenButton"],["button","component","box","newOpenfileToolbarOpenButton"],{button:true,component:true,box:true,newOpenfileToolbarOpenButton:true},["widget.newOpenfileToolbarOpenButton"],0,[LIME.view.modal.newOpenfile.toolbar,"OpenButton"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.Toolbar",Ext.Toolbar,{items:["->",{xtype:"tbspacer"},{xtype:"newOpenfileToolbarCancelButton"},{xtype:"tbseparator"},{xtype:"tbspacer"},{xtype:"newOpenfileToolbarOpenButton"}]},0,["newOpenfileToolbar"],["toolbar","component","container","box","newOpenfileToolbar"],{toolbar:true,component:true,container:true,box:true,newOpenfileToolbar:true},["widget.newOpenfileToolbar"],0,[LIME.view.modal.newOpenfile,"Toolbar"],0));(Ext.cmd.derive("LIME.view.modal.newOpenfile.Main",Ext.window.Window,{fullTitle:new Ext.Template("{title} {url}"),closable:true,modal:true,width:601,minWidth:400,height:450,layout:"border",items:[{xtype:"listFilesPanel",region:"center"},{xtype:"newOpenfileToolbar",region:"south",margin:2}],initComponent:function(){this.title=Locale.strings.openFileWindowMainTitle;this.callParent(arguments)}},0,["newOpenfileMain"],["panel","window","component","container","box","newOpenfileMain"],{panel:true,window:true,component:true,container:true,box:true,newOpenfileMain:true},["widget.newOpenfileMain"],0,[LIME.view.modal.newOpenfile,"Main"],0));(Ext.cmd.derive("LIME.view.DocumentTypeSelector",Ext.form.field.ComboBox,{name:"docType",displayField:"name",queryMode:"local",typeAhead:true,store:"DocumentTypes",hideAction:function(a){a.getStore().clearFilter()},listeners:{beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.type;this.callParent(arguments)}},0,["docTypeSelector"],["field","trigger","combobox","docTypeSelector","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,docTypeSelector:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.docTypeSelector"],0,[LIME.view,"DocumentTypeSelector"],0));(Ext.cmd.derive("LIME.view.generic.MetadataForm",Ext.form.Panel,{type:null,frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},toRemove:{work:["docLang","docName"],expression:["nationality","docType","number","docName"],manifestation:["nationality","docType","number","docLang"]},constructor:function(a){this.initConfig(a);this.items=[{xtype:"nationalitySelector",name:"nationality"},{xtype:"docTypeSelector",name:"docType"},{emptyText:Locale.strings.date,name:"date",xtype:"datefield",allowBlank:false},{emptyText:Locale.strings.number,name:"number",xtype:"textfield",allowBlank:false},{emptyText:Locale.strings.name,name:"docName",xtype:"textfield",allowBlank:false},{xtype:"docLangSelector",name:"docLang"}],this.callParent(arguments)},defaultType:"textfield",listeners:{afterrender:function(e){var d=e.type,c;switch(d){case"work":c=e.toRemove.work;break;case"expression":c=e.toRemove.expression;break;case"manifestation":c=e.toRemove.manifestation;break}for(var b=0;b",{xtype:"button",minWidth:100,text:Locale.strings.saveDocumentButtonLabel}]}],this.callParent(arguments)}},1,["saveAs"],["panel","saveAs","window","component","container","box"],{panel:true,saveAs:true,window:true,component:true,container:true,box:true},["widget.saveAs"],0,[LIME.view.modal,"SaveAs"],0));(Ext.cmd.derive("LIME.view.DocumentMarkingLanguageSelector",Ext.form.field.ComboBox,{name:"docMarkingLanguage",displayField:"name",queryMode:"local",typeAhead:true,store:"MarkupLanguages",hideAction:function(a){a.getStore().clearFilter()},listeners:{afterrender:function(a){if(a.getStore().count()==1){a.setValue(a.getStore().getAt(0).get(a.displayField))}},beforehide:function(a){a.hideAction(a)},beforedestroy:function(a){a.hideAction(a)}},allowBlank:false,initComponent:function(){this.emptyText=Locale.strings.markupLanguage;this.callParent(arguments)}},0,["docMarkingLanguageSelector"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","docMarkingLanguageSelector","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,docMarkingLanguageSelector:true,triggerfield:true},["widget.docMarkingLanguageSelector"],0,[LIME.view,"DocumentMarkingLanguageSelector"],0));(Ext.cmd.derive("LIME.view.modal.NewDocument",Ext.window.Window,{layout:"auto",draggable:true,border:false,modal:true,width:200,getData:function(){var a=this.down("form").getForm();if(!a.isValid()){return null}return a.getValues(false,false,false,true)},initComponent:function(){this.title=Locale.strings.newDocument,this.items=[{xtype:"form",frame:true,padding:"10px",layout:"anchor",defaults:{anchor:"100%"},defaultType:"textfield",items:[{xtype:"docMarkingLanguageSelector",cls:"syncType"},{xtype:"docTypeSelector",cls:"syncLocale",hidden:true},{xtype:"docLocaleSelector",hidden:true},{xtype:"docLangSelector"}],dockedItems:[{xtype:"toolbar",dock:"bottom",ui:"footer",items:["->",{xtype:"button",minWidth:100,text:Locale.strings.ok}]}]}];this.callParent(arguments)}},0,["newDocument"],["newDocument","panel","window","component","container","box"],{newDocument:true,panel:true,window:true,component:true,container:true,box:true},["widget.newDocument"],0,[LIME.view.modal,"NewDocument"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.ListView",Ext.grid.Panel,{selType:"cellmodel",width:195,displayField:"name",plugins:[{ptype:"cellediting",pluginId:"cellediting",listeners:{beforeedit:function(b,c,a){return(c.record.data.cls==b.newFieldRecordId)},edit:function(b,c){var a=c.record.data.name;if(Ext.isDate(a)){a=Ext.Date.format(a,"Y-m-d");c.record.set("name",a);c.value=a}b.getCmp().fireEvent("recordChanged",b.getCmp(),c.record)}}}],initComponent:function(){var a=this;Ext.apply(a,{store:a.buildStore(a)});a.columns=[{text:Locale.strings.folderLabel,dataIndex:"name",flex:1,renderer:function(d,c,b){if(!b.data.leaf){d='
'+d+'
'}return d},editor:{xtype:"textfield",selectOnFocus:true,allowBlank:false}}],a.callParent(arguments)},buildStore:function(a){return Ext.create("LIME.store.OpenFile")}},0,["saveFileListView"],["panel","saveFileListView","component","tablepanel","container","grid","box","gridpanel"],{panel:true,saveFileListView:true,component:true,tablepanel:true,container:true,grid:true,box:true,gridpanel:true},["widget.saveFileListView"],0,[LIME.view.modal.newSavefile,"ListView"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.ContextualButton",Ext.Button,{fullText:new Ext.Template("{operation} {what}"),fileIcon:"resources/images/icons/page_white_add.png",folderIcon:"resources/images/icons/folder_add.png",initComponent:function(){this.text=Locale.strings.newLabel;this.callParent(arguments)}},0,["newSavefileToolbarContextualButton"],["button","component","box","newSavefileToolbarContextualButton"],{button:true,component:true,box:true,newSavefileToolbarContextualButton:true},["widget.newSavefileToolbarContextualButton"],0,[LIME.view.modal.newSavefile.toolbar,"ContextualButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.CancelButton",Ext.Button,{icon:"resources/images/icons/cancel.png",initComponent:function(){this.text=Locale.strings.openFileWindowSouthCancelButtonLabel;this.callParent(arguments)}},0,["newSavefileToolbarCancelButton"],["newSavefileToolbarCancelButton","button","component","box"],{newSavefileToolbarCancelButton:true,button:true,component:true,box:true},["widget.newSavefileToolbarCancelButton"],0,[LIME.view.modal.newSavefile.toolbar,"CancelButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.toolbar.SaveButton",Ext.Button,{icon:"resources/images/icons/accept.png",initComponent:function(){this.text=Locale.strings.saveDocumentButtonLabel;this.tooltip=Locale.strings.saveDocumentButtonTooltip;this.callParent(arguments)}},0,["newSavefileToolbarOpenButton"],["newSavefileToolbarOpenButton","button","component","box"],{newSavefileToolbarOpenButton:true,button:true,component:true,box:true},["widget.newSavefileToolbarOpenButton"],0,[LIME.view.modal.newSavefile.toolbar,"SaveButton"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.Toolbar",Ext.Toolbar,{items:[{xtype:"newSavefileToolbarContextualButton"},"->",{xtype:"tbspacer"},{xtype:"newSavefileToolbarCancelButton"},{xtype:"tbseparator"},{xtype:"tbspacer"},{xtype:"newSavefileToolbarOpenButton"}]},0,["newSavefileToolbar"],["toolbar","component","container","newSavefileToolbar","box"],{toolbar:true,component:true,container:true,newSavefileToolbar:true,box:true},["widget.newSavefileToolbar"],0,[LIME.view.modal.newSavefile,"Toolbar"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.Main",Ext.window.Window,{fullTitle:new Ext.Template("{title} {url}"),closable:true,modal:false,width:601,minWidth:400,height:450,layout:"border",items:[{xtype:"panel",layout:{type:"hbox",align:"stretch"},autoScroll:true,border:false,region:"center",margin:2,items:[{xtype:"saveFileListView",path:"root",filter:true},{xtype:"saveFileListView"},{xtype:"saveFileListView"}]},{xtype:"newSavefileToolbar",region:"south",margin:2}],initComponent:function(){this.title=Locale.strings.saveFileWindowMainTitle;this.callParent(arguments)}},0,["newSavefileMain"],["panel","window","component","container","box","newSavefileMain"],{panel:true,window:true,component:true,container:true,box:true,newSavefileMain:true},["widget.newSavefileMain"],0,[LIME.view.modal.newSavefile,"Main"],0));(Ext.cmd.derive("LIME.view.maintoolbar.OpenDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/folder_page.png",initComponent:function(){this.text=Locale.strings.openDocumentButtonLabel;this.tooltip=Locale.strings.openDocumentButtonTooltip;this.callParent(arguments)}},0,["openDocumentButton"],["component","menuitem","box","openDocumentButton"],{component:true,menuitem:true,box:true,openDocumentButton:true},["widget.openDocumentButton"],0,[LIME.view.maintoolbar,"OpenDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.NewDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/page_white_text.png",initComponent:function(){this.text=Locale.strings.newDocument;this.tooltip=Locale.strings.newDocumentTip;this.callParent(arguments)}},0,["newDocumentButton"],["component","menuitem","box","newDocumentButton"],{component:true,menuitem:true,box:true,newDocumentButton:true},["widget.newDocumentButton"],0,[LIME.view.maintoolbar,"NewDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveAsMenu",Ext.menu.Item,{icon:"resources/images/icons/script_save.png",initComponent:function(){this.text=Locale.strings.saveAsMenuLabel;this.tooltip=Locale.strings.saveAsMenuTooltip;this.menu={xtype:"menu",plain:true,items:[{xtype:"menuitem",metaType:"newManifestation",text:Locale.strings.newManifestation},{xtype:"menuseparator"},{xtype:"menuitem",metaType:"newWork",text:Locale.strings.newWork},{xtype:"menuitem",metaType:"newExpression",text:Locale.strings.newExpression}]},this.callParent(arguments)}},0,["saveAsMenu"],["saveAsMenu","component","menuitem","box"],{saveAsMenu:true,component:true,menuitem:true,box:true},["widget.saveAsMenu"],0,[LIME.view.maintoolbar,"SaveAsMenu"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/page_save.png",initComponent:function(){this.text=Locale.strings.saveDocumentButtonLabel;this.tooltip=Locale.strings.saveDocumentButtonTooltip;this.callParent(arguments)}},0,["saveDocumentButton"],["saveDocumentButton","component","menuitem","box"],{saveDocumentButton:true,component:true,menuitem:true,box:true},["widget.saveDocumentButton"],0,[LIME.view.maintoolbar,"SaveDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.SaveAsDocumentButton",Ext.menu.Item,{icon:"resources/images/icons/script_save.png",initComponent:function(){this.text=Locale.strings.saveAsMenuLabel;this.tooltip=Locale.strings.saveAsMenuTooltip;this.callParent(arguments)}},0,["saveAsDocumentButton"],["component","menuitem","box","saveAsDocumentButton"],{component:true,menuitem:true,box:true,saveAsDocumentButton:true},["widget.saveAsDocumentButton"],0,[LIME.view.maintoolbar,"SaveAsDocumentButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.FileMenuButton",Ext.Button,{initComponent:function(){this.text=Locale.strings.fileMenuButton,this.menu={xtype:"menu",plain:true,items:[{xtype:"newDocumentButton"},{xtype:"openDocumentButton"},"-",{xtype:"saveDocumentButton"},{xtype:"saveAsDocumentButton"}]},this.callParent(arguments)}},0,["fileMenuButton"],["button","component","box","fileMenuButton"],{button:true,component:true,box:true,fileMenuButton:true},["widget.fileMenuButton"],0,[LIME.view.maintoolbar,"FileMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.DocumentMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true},initComponent:function(){this.text=Locale.strings.documentMenuButton;this.callParent(arguments)}},0,["documentMenuButton"],["button","component","documentMenuButton","box"],{button:true,component:true,documentMenuButton:true,box:true},["widget.documentMenuButton"],0,[LIME.view.maintoolbar,"DocumentMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.EditMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true},initComponent:function(){this.text=Locale.strings.editMenuButton;this.callParent(arguments)}},0,["editMenuButton"],["editMenuButton","button","component","box"],{editMenuButton:true,button:true,component:true,box:true},["widget.editMenuButton"],0,[LIME.view.maintoolbar,"EditMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LanguageSelectionMenu",Ext.menu.Item,{store:"Languages",displayField:"language",queryMode:"local",initComponent:function(){this.text=Locale.strings.languageSelectionBoxEmptyText;this.callParent(arguments)}},0,["languageSelectionMenu"],["component","menuitem","box","languageSelectionMenu"],{component:true,menuitem:true,box:true,languageSelectionMenu:true},["widget.languageSelectionMenu"],0,[LIME.view.maintoolbar,"LanguageSelectionMenu"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LocaleSelector",Ext.menu.Item,{store:"Locales",displayField:"name",queryMode:"local",initComponent:function(){this.text=Locale.strings.localeEmptyText;this.callParent(arguments)}},0,["localeSelector"],["localeSelector","component","menuitem","box"],{localeSelector:true,component:true,menuitem:true,box:true},["widget.localeSelector"],0,[LIME.view.maintoolbar,"LocaleSelector"],0));(Ext.cmd.derive("LIME.view.maintoolbar.PreferencesMenuButton",Ext.Button,{menu:{xtype:"menu",plain:true,items:[{xtype:"languageSelectionMenu"}]},initComponent:function(){this.text=Locale.strings.preferencesMenuButton;this.callParent(arguments)}},0,["preferencesMenuButton"],["button","component","box","preferencesMenuButton"],{button:true,component:true,box:true,preferencesMenuButton:true},["widget.preferencesMenuButton"],0,[LIME.view.maintoolbar,"PreferencesMenuButton"],0));(Ext.cmd.derive("LIME.view.maintoolbar.WindowMenuButton",Ext.Button,{checkedIcon:"resources/images/icons/tick.png",setCheckIcon:function(b,c){var a=(c===undefined)?this.checkedIcon:Ext.BLANK_IMAGE_URL;if(b){this.newSetIcon(b,a)}},newSetIcon:function(d,b){b=b||"";var c=d,a=c.iconEl;c.icon=b;if(a){a.setStyle("background-image",b?"url("+b+")":"")}return c},initComponent:function(){this.text=Locale.strings.windowMenuButton;this.menu={xtype:"menu",plain:true,items:[{id:"showViews",text:Locale.strings.menuShowView}]},this.callParent(arguments)}},0,["windowMenuButton"],["button","component","box","windowMenuButton"],{button:true,component:true,box:true,windowMenuButton:true},["widget.windowMenuButton"],0,[LIME.view.maintoolbar,"WindowMenuButton"],0));(Ext.cmd.derive("LIME.view.MainToolbar",Ext.toolbar.Toolbar,{id:"mainToolbar",items:[{xtype:"image",src:"resources/images/icons/logo_lime_small.png",style:{padding:"0px !important"},margin:2,width:30},{xtype:"fileMenuButton"},{xtype:"editMenuButton"},{xtype:"documentMenuButton"},{xtype:"preferencesMenuButton"},{xtype:"windowMenuButton"},"->",{xtype:"userButton"}]},0,["mainToolbar"],["mainToolbar","toolbar","component","container","box"],{mainToolbar:true,toolbar:true,component:true,container:true,box:true},["widget.mainToolbar"],0,[LIME.view,"MainToolbar"],0));(Ext.cmd.derive("Ext.ux.TabCloseMenuImproved",Ext.ux.TabCloseMenu,{onClose:function(){if(this.item){this.item.close()}},onHideMenu:function(){var a=this;a.fireEvent("aftermenu",a.menu,a)},doClose:function(b){var a=[];this.tabPanel.items.each(function(c){if(c.closable){if(!b||c!=this.item){a.push(c)}}},this);Ext.each(a,function(c){c.close()},this)}},0,0,0,0,["plugin.tabclosemenuimproved"],0,[Ext.ux,"TabCloseMenuImproved"],0));(Ext.cmd.derive("Ext.ux.form.field.TinyMCEWindowManager",Ext.Base,{constructor:function(a){tinymce.WindowManager.call(this,a.editor)},alert:function(b,a,c){Ext.MessageBox.alert("",b,function(){if(!Ext.isEmpty(a)){a.call(this)}},c)},confirm:function(b,a,c){Ext.MessageBox.confirm("",b,function(d){if(!Ext.isEmpty(a)){a.call(this,d=="yes")}},c)},open:function(a,c){a=a||{};c=c||{};if(!a.type){this.bookmark=this.editor.selection.getBookmark("simple")}a.width=parseInt(a.width||320);a.height=parseInt(a.height||240)+(tinymce.isIE?8:0);a.min_width=parseInt(a.min_width||150);a.min_height=parseInt(a.min_height||100);a.max_width=parseInt(a.max_width||2000);a.max_height=parseInt(a.max_height||2000);a.movable=true;a.resizable=true;c.mce_width=a.width;c.mce_height=a.height;c.mce_inline=true;this.features=a;this.params=c;var b=Ext.create("Ext.window.Window",{title:a.name,width:a.width,height:a.height,minWidth:a.min_width,minHeight:a.min_height,resizable:true,maximizable:a.maximizable,minimizable:a.minimizable,modal:true,stateful:false,constrain:true,layout:"fit",items:[Ext.create("Ext.Component",{autoEl:{tag:"iframe",border:"0",frameborder:"0",src:a.url||a.file},style:"border-width: 0px;"})]});c.mce_window_id=b.getId();b.show(null,function(){if(this.editor.fullscreen_is_enabled){b.zIndexManager.setBase(200000)}if(a.left&&a.top){b.setPagePosition(a.left,a.top)}var d=b.getPosition();a.left=d[0];a.top=d[1];this.onOpen.dispatch(this,a,c)},this);b.toFront(true);return b},close:function(b){if(!b.tinyMCEPopup||!b.tinyMCEPopup.id){tinymce.WindowManager.prototype.close.call(this,b);return}var a=Ext.getCmp(b.tinyMCEPopup.id);if(a){this.onClose.dispatch(this);a.close()}},setTitle:function(c,b){if(!c.tinyMCEPopup||!c.tinyMCEPopup.id){tinymce.WindowManager.prototype.setTitle.call(this,c,b);return}var a=Ext.getCmp(c.tinyMCEPopup.id);if(a){a.setTitle(b)}},resizeBy:function(b,d,e){var a=Ext.getCmp(e);if(a){var c=a.getSize();a.setSize(c.width+b,c.height+d)}},focus:function(a){}},1,0,0,0,0,0,[Ext.ux.form.field,"TinyMCEWindowManager"],0));(Ext.cmd.derive("Ext.ux.form.field.TinyMCE",Ext.form.field.TextArea,{config:{height:170},hideBorder:false,inProgress:false,lastWidth:0,lastHeight:0,statics:{tinyMCEInitialized:false,globalSettings:{accessibility_focus:false,language:"en",mode:"exact",skin:"extjs",theme:"advanced",plugins:"autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",theme_advanced_buttons1:"newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",theme_advanced_buttons2:"cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",theme_advanced_buttons3:"tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",theme_advanced_buttons4:"insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_resize_horizontal:false,theme_advanced_resizing:true,width:"100%"},setGlobalSettings:function(a){Ext.apply(this.globalSettings,a)}},constructor:function(a){var b=this;a.height=(a.height&&a.height>=b.config.height)?a.height:b.config.height;Ext.applyIf(a.tinymceConfig,b.statics().globalSettings);b.addEvents({editorcreated:true});b.callParent([a])},initComponent:function(){var a=this;a.callParent(arguments);a.on("resize",function(d,c,b){if(!c||!b){return}a.lastWidth=c;a.lastHeight=(!a.editor)?a.inputEl.getHeight():b;if(!a.editor){a.initEditor()}else{a.setEditorSize(a.lastWidth,a.lastHeight)}},a)},initEditor:function(){var a=this;if(a.inProgress){return}a.inProgress=true;a.tinymceConfig.elements=a.getInputId();a.tinymceConfig.mode="exact";a.tinymceConfig.height=a.lastHeight-5;a.tinymceConfig.setup=function(b){b.on("init",function(d){a.inProgress=false});b.on("keypress",Ext.Function.createBuffered(a.validate,250,a));b.on("postRender",function(d){var e;a.editor=b;window.b=a.editor;b.windowManager=new Ext.ux.form.field.TinyMCEWindowManager({editor:a.editor});a.iframeEl=Ext.get(a.editor.id+"_ifr");e=a.editor.id.substring(0,a.editor.id.lastIndexOf("-"));a.tableEl=Ext.get(e);a.edToolbar=a.tableEl.down(".mce-toolbar");a.edStatusbar=a.tableEl.down(".mce-statusbar");if(a.hideBorder){a.tableEl.setStyle("border","0px");a.tableEl.down(".mce-tinymce").setStyle("border","0px")}Ext.Function.defer(function(){if(a.tableEl.getHeight()!=a.lastHeight-5){a.setEditorSize(a.lastWidth,a.lastHeight)}},10,a);a.fireEvent("editorcreated",a.editor,a)});try{a.tinymceConfig.mysetup(b)}catch(c){}};tinymce.init(a.tinymceConfig)},setEditorSize:function(c,a){var d=this,b=a-2;if(!d.editor||!d.rendered){return}if(d.edToolbar){b-=d.edToolbar.getHeight()}if(d.edStatusbar){b-=d.edStatusbar.getHeight()}d.iframeEl.setHeight(b);d.tableEl.setHeight(a);d.inputEl.setHeight(a)},isDirty:function(){var a=this;if(a.disabled||!a.rendered){return false}return a.editor&&a.editor.initialized&&a.editor.isDirty()},getValue:function(){if(this.editor){return this.editor.getContent()}return this.value},setValue:function(b){var a=this;a.value=b;if(a.rendered){a.withEd(function(){a.editor.undoManager.clear();a.editor.setContent(b===null||b===undefined?"":b);a.editor.startContent=a.editor.getContent({format:"raw"});a.validate()})}},getSubmitData:function(){var a={};a[this.getName()]=this.getValue();return a},insertValueAtCursor:function(b){var a=this;if(a.editor&&a.editor.initialized){a.editor.execCommand("mceInsertContent",false,b)}},onDestroy:function(){var a=this;if(a.editor){a.editor.destroy()}a.callParent(arguments)},getEditor:function(){return this.editor},getRawValue:function(){var a=this;return(!a.editor||!a.editor.initialized)?Ext.valueFrom(a.value,""):a.editor.getContent()},disable:function(){var a=this;a.withEd(function(){var b=a.editor;tinymce.each(b.controlManager.controls,function(d){d.setDisabled(true)});tinymce.dom.Event.clear(b.getBody());tinymce.dom.Event.clear(b.getWin());tinymce.dom.Event.clear(b.getDoc());tinymce.dom.Event.clear(b.formElement);b.onExecCommand.listeners=[];a.iframeEl.dom.contentDocument.body.contentEditable=false;a.iframeEl.addCls("x-form-field x-form-text")});return a.callParent(arguments)},enable:function(){var a=this;a.withEd(function(){var b=a.editor;b.bindNativeEvents();tinymce.each(b.controlManager.controls,function(d){d.setDisabled(false)});b.nodeChanged();a.iframeEl.dom.contentDocument.body.contentEditable=true;a.iframeEl.removeCls("x-form-field x-form-text")});return a.callParent(arguments)},withEd:function(b){var a=this;if(!a.editor){a.on("editorcreated",function(){a.withEd(b)},a)}else{if(a.editor.initialized){b.call(a)}else{a.editor.on("init",function(c){Ext.Function.defer(b,10,a)})}}},validateValue:function(b){var a=this;if(Ext.isFunction(a.validator)){var d=a.validator(b);if(d!==true){a.markInvalid(d);return false}}if(b.length<1||b===a.emptyText){if(a.allowBlank){a.clearInvalid();return true}else{a.markInvalid(a.blankText);return false}}if(b.lengtha.maxLength){a.markInvalid(Ext.String.format(a.maxLengthText,a.maxLength));return false}else{a.clearInvalid()}if(a.vtype){var c=Ext.form.field.VTypes;if(!c[a.vtype](b,a)){a.markInvalid(a.vtypeText||c[a.vtype+"Text"]);return false}}if(a.regex&&!a.regex.test(b)){a.markInvalid(a.regexText);return false}return true}},1,["tinymcefield"],["field","textfield","tinymcefield","component","textarea","box","textareafield"],{field:true,textfield:true,tinymcefield:true,component:true,textarea:true,box:true,textareafield:true},["widget.tinymcefield"],0,[Ext.ux.form.field,"TinyMCE"],0));(Ext.cmd.derive("LIME.view.main.Editor",Ext.container.Container,{layout:"fit",items:[{xtype:"tinymcefield",hideBorder:true}]},0,["mainEditor"],["component","container","mainEditor","box"],{component:true,container:true,mainEditor:true,box:true},["widget.mainEditor"],0,[LIME.view.main,"Editor"],0));(Ext.cmd.derive("LIME.view.ContextMenu",Ext.menu.Menu,{},0,["contextMenu"],["panel","contextMenu","component","container","menu","box"],{panel:true,contextMenu:true,component:true,container:true,menu:true,box:true},["widget.contextMenu"],0,[LIME.view,"ContextMenu"],0));(Ext.cmd.derive("LIME.view.main.editor.Path",Ext.Panel,{id:"path",layout:{type:"hbox",align:"stretch"},width:"100%",frame:true,style:{borderRadius:"0px",margin:"0px"},separator:' > ',selectorsInitId:"pathSelector_",elementLinkTemplate:'%el',elementTemplate:"%el",items:[{xtype:"panel",margin:0,padding:0,style:{borderRadius:"0px",margin:"0px",border:"0px"},frame:true,flex:1}],setPath:function(g){var k="";var b=0;for(var e=(g.length-1);e>=0;e--){var a=g[e].name;var c=this.selectorsInitId+b;var h=DomUtils.getNodeExtraInfo(g[e].node,"hcontainer");if(h){a+=" ("+h+")"}if(g[e].node){k+=this.elementLinkTemplate.replace("%el",a).replace("%id",c)}else{k+=this.elementTemplate.replace("%el",a)}if(e!=0){k+=this.separator}if(!this.elements){this.elements={}}this.elements[c]=g[e].node;b++}var d=this;this.down("panel").update(this.initialPath+k,false,function(){d.fireEvent("update")})},initComponent:function(){this.initialPath=Locale.strings.mainEditorPath+": ";this.callParent(arguments)}},0,["mainEditorPath"],["panel","mainEditorPath","component","container","box"],{panel:true,mainEditorPath:true,component:true,container:true,box:true},["widget.mainEditorPath"],0,[LIME.view.main.editor,"Path"],0));(Ext.cmd.derive("LIME.view.main.editor.Uri",Ext.Panel,{frame:true,linkTemplate:'{text}',style:{borderRadius:"0px",margin:"0px",border:"0px"},setUri:function(g){var e=this,c,b="",h,a=new Ext.Template(e.linkTemplate),d="";e.update("");e.removeAll(true);c=g.split("/");h=c.length;if(h<2){e.applyHtml(g)}else{Ext.each(c,function(k,i){d+=k+"/";b+=(i!=h-1)?a.apply({id:d,text:k})+"/":k});e.applyHtml(b)}},applyHtml:function(a){var b=this;b.update(a,false,function(){b.fireEvent("update")})}},0,["mainEditorUri"],["panel","mainEditorUri","component","container","box"],{panel:true,mainEditorUri:true,component:true,container:true,box:true},["widget.mainEditorUri"],0,[LIME.view.main.editor,"Uri"],0));(Ext.cmd.derive("LIME.view.main.ContextPanel",Ext.panel.Panel,{border:0,padding:0,resizable:true,hidden:true,height:280,maxHeight:300,frame:true,autoScroll:true,header:false,layout:"fit",style:{borderRadius:"0px",margin:"0px",border:"0px"}},0,["contextPanel"],["panel","component","container","box","contextPanel"],{panel:true,component:true,container:true,box:true,contextPanel:true},["widget.contextPanel"],0,[LIME.view.main,"ContextPanel"],0));(Ext.cmd.derive("LIME.view.Main",Ext.tab.Panel,{id:"editorTab",style:{padding:"0px",margin:"0px"},dockedItems:[{xtype:"toolbar",dock:"top",items:[{xtype:"mainEditorUri"}]}],initComponent:function(){this.items=[{cls:"editor",layout:"border",padding:0,margin:0,border:0,title:Locale.getString("mainEditor"),items:[{region:"center",xtype:"mainEditor"},{region:"south",border:0,xtype:"panel",layout:{type:"hbox",align:"stretch"},frame:true,style:{borderRadius:"0px",margin:"0px",border:"0px",padding:0},items:[{xtype:"mainEditorPath"}]},{xtype:"contextPanel",region:"south"}]}];this.plugins={ptype:"tabclosemenuimproved",closeTabText:Locale.getString("closeTabText"),closeOthersTabsText:Locale.getString("closeOthersTabsText"),closeAllTabsText:Locale.getString("closeAllTabsText")};this.callParent(arguments)}},0,["main"],["tabpanel","panel","component","container","box","main"],{tabpanel:true,panel:true,component:true,container:true,box:true,main:true},["widget.main"],0,[LIME.view,"Main"],0));(Ext.cmd.derive("LIME.view.maintoolbar.LanguageSelectionBox",Ext.form.field.ComboBox,{store:"Languages",displayField:"language",queryMode:"local",hideLabel:true,initComponent:function(){this.emptyText=Locale.strings.languageSelectionBoxEmptyText;this.callParent(arguments)}},0,["languageSelectionBox"],["field","trigger","combobox","textfield","pickerfield","component","languageSelectionBox","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,languageSelectionBox:true,combo:true,box:true,triggerfield:true},["widget.languageSelectionBox"],0,[LIME.view.maintoolbar,"LanguageSelectionBox"],0));(Ext.cmd.derive("LIME.controller.MainToolbar",Ext.app.Controller,{refs:[{selector:"openDocumentButton",ref:"openDocumentButton"},{selector:"modalOpenfileMain",ref:"openFileWindowMain"},{selector:"languageSelectionBox",ref:"LanguagesComboBox"},{ref:"downloadManager",selector:"downloadManager"},{ref:"documentUploader",selector:"documentUploader"},{ref:"main",selector:"main"},{ref:"windowMenuButton",selector:"windowMenuButton"},{ref:"fileMenuButton",selector:"fileMenuButton"},{ref:"saveDocumentButton",selector:"saveDocumentButton"},{ref:"saveAsDocumentButton",selector:"saveAsDocumentButton"},{ref:"saveAsMenu",selector:"saveAsMenu"},{ref:"windowMenuButton",selector:"windowMenuButton"},{ref:"mainToolbar",selector:"mainToolbar"}],views:["MainToolbar","Main","maintoolbar.OpenDocumentButton","maintoolbar.LocaleSelector","maintoolbar.LanguageSelectionBox","maintoolbar.LanguageSelectionMenu","modal.newOpenfile.Main","modal.newSavefile.Main","maintoolbar.FileMenuButton","maintoolbar.DocumentMenuButton","maintoolbar.WindowMenuButton","modal.SaveAs","modal.NewDocument"],createNewDocument:function(d){var c=this.application,b=DocProperties.currentEditorFile.id,a={docText:d.docText||"",docId:""};if(Ext.isEmpty(b)){}c.fireEvent(Statics.eventsNames.loadDocument,Ext.Object.merge(a,d))},highlightFileMenu:function(){var b=this.getFileMenuButton(),a=b.getEl();return setInterval(function(){a.frame("#ff0000",1,{duration:1000})},1000)},selectLanguage:function(a){var d=a.record.get("code"),b=this.getController("PreferencesManager");var c=function(e){Utilities.changeLanguage(d)};b.setUserPreferences({defaultLanguage:d},false,c)},selectLocale:function(b){var a=b.record.get("locale");var c=this.getController("PreferencesManager");var d=Ext.urlDecode(window.location.search);d.locale=a;var e=function(){window.location.search=Ext.Object.toQueryString(d)};c.setUserPreferences({defaultLocale:a},false,e)},addTab:function(c){var a=this.getMain(),b;if(c&&!a.down(c)){b=Utilities.createWidget({xtype:c,closable:true});if(b){a.add(b)}else{Ext.log({level:"error"},"Error creating tab "+c)}}},setAllowedViews:function(){var d=this.getWindowMenuButton(),h=d.menu.down("*[id=showViews]"),c=this.getStore("LanguagesPlugin").getData(),g=this.getController("PreferencesManager"),a=g.userPreferences.views,i={xtype:"menu",plain:true,items:[]};if(c.viewConfigs){var b=c.viewConfigs.allowedViews,e;Ext.each(b,function(k){widget=Utilities.createWidget(k);if(widget){e=(a.indexOf(k)!=-1)?d.checkedIcon:Ext.BLANK_IMAGE_URL;i.items.push({text:widget.menuText||widget.title,openElement:k,icon:e});Ext.destroy(widget)}});h.setMenu(i)}},onMetadataChange:function(){var a=this.getSaveDocumentButton(),b=this.getSaveAsDocumentButton();if(DocProperties.getDocumentUri()){a.enable()}else{a.disable()}},onLanguageLoaded:function(){var e=this,c=e.getMain(),b=Config.getLanguageConfig().customViews,g=e.getController("PreferencesManager"),a=g.userPreferences.views;e.setAllowedViews();for(var d in a){this.addTab(a[d])}},addMenuItem:function(g,b){var e=this.getMainToolbar(),h,i=e.down(g.menu+" menu"),a=g.before||g.after,d=-1,c=g.posIndex||-1;if(i&&!i.down("*[name="+b.name+"]")){h=i.add(b);if(a){d=i.items.indexOf(i.down(a));d=(d!=-1)?d:i.items.indexOf(i.down("*[name="+a+"]"))}if(d!=-1||c!=-1){c=(c!=-1)?c:(d+((g.before)?0:1));if(c!=-1){i.move(h,c)}}}return h},init:function(){var a=this;this.application.on(Statics.eventsNames.frbrChanged,this.onMetadataChange,this);this.application.on(Statics.eventsNames.languageLoaded,this.onLanguageLoaded,this);this.control({openDocumentButton:{click:function(){Ext.widget("newOpenfileMain").show()}},languageSelectionBox:{afterrender:function(c){var b=Ext.getStore("Languages").findRecord("code",Locale.strings.languageCode,null,null,null,true);if(b){c.setValue(b.data.language)}},select:{fn:function(b,c){var d=c[0].get("code");Utilities.changeLanguage(d)}}},languageSelectionMenu:{beforerender:function(d){var g=Ext.create("Ext.menu.Menu"),e=this.getStore(d.store),b=e.findRecord("code",Locale.strings.languageCode,null,null,null,true),c;if(b){c=b.get("code")}e.each(function(h){g.add({text:h.get(d.displayField),record:h,handler:this.selectLanguage,checked:(h.get("code")==c)?true:false,group:"languages",scope:this})},this);d.setMenu(g)}},localeSelector:{beforerender:function(b){var e=Ext.create("Ext.menu.Menu"),d=this.getStore(b.store),c=Ext.urlDecode(window.location.search).locale;d.each(function(g){if(g.get("status")!="disabled"){e.add({text:g.get(b.displayField),record:g,handler:this.selectLocale,checked:(g.get("locale")==c)?true:false,group:"locales",scope:this})}else{e.add(''+g.get(b.displayField)+"")}},this);b.setMenu(e)}},logoutButton:{click:function(){var b=this.getController("LoginManager");confirm=Ext.Msg.confirm(Locale.strings.warning,Locale.strings.logoutWarning,function(c){if(c=="yes"){b.logout()}})}},"saveAsMenu menuitem":{click:function(d){var b,c={};switch(d.metaType){case"newWork":break;case"newExpression":c={toHide:["work"]};break;case"newManifestation":c={toHide:["work","expression"]};break}b=Ext.widget("saveAs",c);b.show()}},"[cls=editorTab]":{added:function(d){var e=this.getController("PreferencesManager"),g=this.getWindowMenuButton(),b=e.userPreferences.views,h=d.getXType(),c=g.menu.down("*[openElement="+d.xtype+"]");if(c){c.icon=g.checkedIcon}if(b&&b.indexOf(h)==-1){e.setUserPreferences({views:b.concat([h])})}},close:function(b){var c=this.getWindowMenuButton();c.setCheckIcon(c.menu.down("*[openElement="+b.xtype+"]"),true)},removed:function(b){var d=this.getController("PreferencesManager"),g=this.getWindowMenuButton();try{d.setUserPreferences({views:d.userPreferences.views.filter(function(e){if(e==b.getXType()){return false}else{return true}})})}catch(c){Ext.log({level:"error"},c)}}},"saveAs button":{click:function(c){var e=c.up("window"),b=e.getData(),d={};if(b){if(b.work){d.docType=b.work.docType}if(b.expression){d.docLang=b.expression.docLang}DocProperties.setDocumentInfo(d);DocProperties.setFrbr(b);this.getController("Editor").saveDocument({view:e})}}},newDocumentButton:{click:function(b){var c=Ext.widget("newDocument");c.show()}},"docMarkingLanguageSelector[cls=syncType]":{change:function(e,g){var c,b,d;if(e.up("window").onlyLanguage){return}c=e.up("window").down("docTypeSelector"),b=this.getStore("DocumentTypes"),d=Config.getDocTypesByLang(g);if(d){b.loadData(d);c.allowBlank=false;c.show()}else{b.removeAll();c.allowBlank=true;c.hide()}}},"docMarkingLanguageSelector[cls=syncTypeCollection]":{change:function(h,i){var c=this.getStore("DocumentTypes"),d=Config.getDocTypesByLang(i),g=h.up("window"),e=g.down("docLocaleSelector"),k=this.getStore("Locales"),b;if(d){c.loadData(d);b=Config.getLocaleByDocType(i,"documentCollection");if(b){k.loadData(b);e.allowBlank=false;e.show()}else{k.removeAll();e.allowBlank=true;e.hide()}}else{c.removeAll()}}},"docTypeSelector[cls=syncLocale]":{change:function(e,g){var d=e.up("window"),c=d.down("docLocaleSelector"),i=this.getStore("Locales"),h=d.down("docMarkingLanguageSelector").getValue(),b=Config.getLocaleByDocType(h,g);if(b){i.loadData(b);c.allowBlank=false;c.show()}else{i.removeAll();c.allowBlank=true;c.hide()}}},"newDocument button":{click:function(c){var e=c.up("window"),b=this.getStore("DocumentLanguages"),d={};if(!e.tmpConfig){e.tmpConfig={};DocProperties.clearMetadata(this.application)}d=Ext.Object.merge(e.tmpConfig,e.getData());this.createNewDocument(d);e.autoClosed=true;e.close()}},newDocument:{afterrender:function(c){var d=c,b=d.tmpConfig;if(b){if(b.docMarkingLanguage&&!c.onlyLanguage){d.down("docMarkingLanguageSelector").setValue(b.docMarkingLanguage)}if(b.docType){d.down("docTypeSelector").setValue(b.docType)}if(b.docLang){d.down("docLangSelector").setValue(b.docLang)}if(b.docLocale){d.down("docLocaleSelector").setValue(b.docLocale)}}if(c.onlyLanguage){d.down("docTypeSelector").hide();d.down("docTypeSelector").allowBlank=true;d.down("docLangSelector").hide();d.down("docLangSelector").allowBlank=true;d.down("docLocaleSelector").hide();d.down("docLocaleSelector").allowBlank=true}}},saveDocumentButton:{click:function(){this.getController("Editor").autoSaveContent(true)}},fileMenuButton:{afterrender:function(){this.getSaveDocumentButton().disable()}},"windowMenuButton *[id=showViews]":{beforerender:function(){this.setAllowedViews()}},"windowMenuButton menuitem":{click:function(d){var b=this.getMain(),e=this.getWindowMenuButton(),c=b.down(d.openElement);if(c){c.close()}else{this.addTab(d.openElement);e.setCheckIcon(d)}}},saveAsDocumentButton:{click:function(){Ext.widget("newSavefileMain").show()}},"mainToolbar button":{afterrender:function(b){if(b.menu&&!b.menu.items.getCount()){b.hide()}}},"mainToolbar button menu":{add:function(c){var b=c.up();if(b&&b.isHidden()){b.show()}},remove:function(c){var b=c.up();if(b&&!c.items.getCount()){b.hide()}}}})}},0,0,0,0,0,0,[LIME.controller,"MainToolbar"],0));(Ext.cmd.derive("LIME.Locale",Ext.Base,{singleton:true,alternateClassName:"Locale",config:{lang:"en",defaultLang:"en"},strings:{},pStrings:{},constructor:function(){this.detectLanguage();this.loadLanguage()},setPluginStrings:function(b,a){this.pStrings[b]=a},getString:function(a,b){if(b&&this.pStrings[b]){if(this.pStrings[b][this.lang]){return this.pStrings[b][this.lang][a]||a}if(this.pStrings[b][this.getDefaultLang()]){return this.pStrings[b][this.getDefaultLang()][a]||a}}return this.strings[a]},detectLanguage:function(){var a=Ext.urlDecode(window.location.search.substring(0)).lang;if(!(a==null||a==undefined||Ext.isEmpty(a))){this.initConfig({lang:a.toLowerCase()})}},loadLanguage:function(){var b="config/locale/lang-"+this.config.lang+".json";var a="config/locale/ext/ext-lang-"+this.config.lang+".js";Ext.Ajax.request({url:b,async:false,scope:this,success:function(c,d){try{this.strings=Ext.decode(c.responseText)}catch(g){alert("Fatal error on loading localization files")}},failure:function(c,d){alert("Fatal error on loading localization files")}});Ext.Loader.loadScript({url:a})}},1,0,0,0,0,0,[LIME,"Locale",0,"Locale"],0));(Ext.cmd.derive("LIME.view.modal.newSavefile.VersionSelector",Ext.form.FieldContainer,{name:"docVersion",layout:"hbox",width:190,combineErrors:true,msgTarget:"side",allowBlank:false,initComponent:function(){var a=this;if(!a.langCfg){a.langCfg={}}if(!a.dateCfg){a.dateCfg={}}a.buildField();a.callParent();a.dateField=a.down("datefield");a.langField=a.down("docLangSelector");a.langField.on("blur",a.onFieldsBlur,a);a.langField.on("specialkey",a.onFieldsSpecialKey,a);a.dateField.on("specialkey",a.onFieldsSpecialKey,a);a.dateField.on("blur",a.onFieldsBlur,a);a.initField()},buildField:function(){var a=this;a.items=[Ext.apply({xtype:"docLangSelector",width:85},a.langCfg),{xtype:"displayfield",value:"@"},Ext.apply({xtype:"datefield",submitValue:false,width:85,format:"Y-m-d"},a.dateCfg)]},getValue:function(){var c=this,d,b=c.dateField.getSubmitValue(),a=c.dateField.format,e=c.langField.getSubmitValue();if(e){b=(b)?b:"";d=e+"@"+b}return(d)?d:""},setValue:function(c){var b=this,d="@",a;if(c){a=c.indexOf(d);if(a!=-1){b.dateField.setValue(c.substring(a+1));b.langField.setValue(c.substring(0,a))}else{b.langField.setValue(c)}}},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={},value=a.getValue(),b[a.getName()]=""+value?Ext.Date.format(value,a.submitFormat):null}return b},getFormat:function(){var a=this;return(a.dateField.submitFormat||a.dateField.format)},onFieldsSpecialKey:function(b,a){if(a.getKey()==a.ENTER&&this.langField.getSubmitValue()){b.up("docVersionSelector").fireEvent("blur",a)}},onFieldsBlur:function(c,a,b){var d;if(!a){return}d=new Ext.Element(a.getTarget());if(!(d.is(".x-form-field")||d.is(".x-form-date-trigger"))&&this.langField.getSubmitValue()){c.up("docVersionSelector").fireEvent("blur",a,b)}}},0,["docVersionSelector"],["component","container","fieldcontainer","box","docVersionSelector"],{component:true,container:true,fieldcontainer:true,box:true,docVersionSelector:true},["widget.docVersionSelector"],[["field",Ext.form.field.Field]],[LIME.view.modal.newSavefile,"VersionSelector"],0));(Ext.cmd.derive("LIME.controller.Storage",Ext.app.Controller,{views:["modal.newOpenfile.Main","modal.newSavefile.Main","modal.newSavefile.VersionSelector"],refs:[{selector:"newOpenfileToolbarOpenButton",ref:"newOpenfileToolbarOpenButton"},{selector:"newOpenfileToolbarCancelButton",ref:"newOpenfileToolbarCancelButton"},{selector:"newDocument",ref:"newDocument"}],storageColumns:[{text:Locale.strings.folderLabel,fieldName:"folder",defaultValue:"my_documents",getValue:function(){return this.defaultValue}},{text:Locale.strings.countryLabel,editor:{xtype:"nationalitySelector",selectOnFocus:true},fieldName:"nationality",getValue:function(){return((DocProperties.frbr&&DocProperties.frbr.work)?DocProperties.frbr.work[this.fieldName]:false)||DocProperties.documentInfo.docLocale}},{text:Locale.strings.docTypeLabel,editor:{xtype:"docTypeSelector",selectOnFocus:true},fieldName:"docType",getValue:function(){return DocProperties.documentInfo[this.fieldName]}},{text:Locale.strings.docDateLabel,editor:{xtype:"datefield",allowBlank:false,selectOnFocus:true,format:"Y-m-d"},fieldName:"date",getValue:function(){return(DocProperties.frbr&&DocProperties.frbr.work)?Ext.Date.format(DocProperties.frbr.work.date,this.editor.format):""}},{text:Locale.strings.docNumberLabel,fieldName:"number",getValue:function(){var b=(DocProperties.getDocumentUri())?DocProperties.getDocumentUri().split("/"):[],a=(b[0]==Ext.emptyString)?b[4]:b[3];a=(a)?a:Ext.emptyString.toString();return a}},{text:Locale.strings.versionLabel,fieldName:"version",editor:{xtype:"docVersionSelector",selectOnFocus:true},getValue:function(){var a=((DocProperties.frbr&&DocProperties.frbr.expression&&!isNaN(DocProperties.frbr.expression.date))?Ext.Date.format(DocProperties.frbr.expression.date,"Y-m-d"):"");return DocProperties.documentInfo.docLang+"@"+a}},{text:Locale.strings.fileLabel,fieldName:"docName",defaultValue:"new",getValue:function(){return this.defaultValue}}],newCloseWindow:function(b){var c=this;var a=b.up("window");a.close()},newGetSelectedDocument:function(b){var c=this,a=b.up("window");if(a.selectedFile){if(Ext.isFunction(a.onOpen)){a.onOpen(a.selectedFile.data);a.close()}else{c.openDocument(a.selectedFile.data.id,a)}}},getSelectedDocument:function(b){var d=this,a=b.up("modalOpenfileMain").down("modalOpenfileExplorer").getSelectionModel().selected.items;if(a.length>0){var c=a[0];if(c.isLeaf()){d.openDocument(c.data.id)}}},openDocument:function(a,e){var d=this,c=d.getController("Editor"),i=this.application,h=this.getController("Language");this.application.fireEvent(Statics.eventsNames.progressStart,null,{value:0.1,text:Locale.strings.progressBar.openingDocument});var g={requestedFile:a,userName:localStorage.getItem("username"),userPassword:localStorage.getItem("password")},b=Utilities.getAjaxUrl(Ext.Object.merge(g,{requestedService:Statics.services.getFileMetadata}));Ext.Ajax.request({url:b,async:false,success:function(k,m){DocProperties.clearMetadata(i);var l=h.parseMetadata(k.responseXML,k.responseText);if(l.docMarkingLanguage){Config.setLanguage(l.docMarkingLanguage,function(){d.requestDoc(a,l,e)})}else{d.requestDoc(a,l,e)}},failure:function(k,l){Ext.Msg.alert("server-side failure with status code "+k.status);d.requestDoc(a,null,e)}})},requestDoc:function(b,a,e){a=a||{};var h=this.application,d=(a.docMarkingLanguage)?Config.getLanguageTransformationFile("languageToLIME",a.docMarkingLanguage):"",c=Utilities.getAjaxUrl({requestedFile:b,userName:localStorage.getItem("username"),userPassword:localStorage.getItem("password"),requestedService:Statics.services.getFileContent,transformFile:(d)?d:""}),g=this.getController("PreferencesManager");Ext.Ajax.request({url:c,success:function(i,m){var l=b,k=b.split("/");if(k[4]&&k[4].indexOf("examples")!=-1){l=""}if(i.responseXML&&!a.docMarkingLanguage){a.docMarkingLanguage=i.responseXML.documentElement.getAttribute(DocProperties.markingLanguageAttribute)}h.fireEvent(Statics.eventsNames.loadDocument,Ext.Object.merge(a,{docText:i.responseText,docId:l,originalDocId:b}));g.setUserPreferences({lastOpened:l});if(e){e.close()}},failure:function(i,k){this.application.fireEvent(Statics.eventsNames.progressEnd);Ext.Msg.alert("server-side failure with status code "+i.status)}})},loadOpenFileListData:function(b,c,d){var a=b.getStore();if(a&&(b.path||c)){a.requestNode=c||b.path;a.load({scope:this,callback:function(g,e,h){b.reconfigure(a);if(Ext.isFunction(d)){d(a,b)}}})}},removeUselessListViews:function(b,a){var c=b;while(c){if(c!=b){a.remove(c)}c=b.nextNode("grid[addedDyn]")}},scrollToListView:function(b,a){b.getEl().scrollIntoView(a.body,true,true)},setColumnText:function(a,b){var c=this.storageColumns[b];a.indexInParent=b;if(c){a.columns[0].setText(c.text)}},fileListViewClick:function(m,d,q,g,h,i,n){var c=d.getData(),s=c.id,l,k=m.up("window"),b=k.down("button[dynamicDisable]"),p=k.down("listFilesPanel")||k.down("panel"),a=m.up("grid")||m,o,r={};if(d.notSelectable){return}if(d.data.leaf){if(b){b.enable()}k.selectedFile=d;k.activeList=a}else{if(b){b.disable()}l=m.nextNode(a.xtype);if(!l){if(Ext.isFunction(k.onAddColumn)){r=k.onAddColumn(this.storageColumns[a.indexInParent+1])}r=Ext.merge(r,{addedDyn:true,indexInParent:a.indexInParent+1});l=p.add(Ext.widget(a.xtype,r));Ext.callback(k.afterAddColumn,this,[l])}this.removeUselessListViews(l,p);Ext.each(p.query(a.xtype),function(t,e){if(t==a){o=e}else{if((o!=null)&&(e>o)){t.getSelectionModel().deselectAll();t.getStore().removeAll()}}if(t==l){this.setColumnText(l,e);this.setContextualButton(k,e)}},this);l.userClick=(q)?true:false;this.loadOpenFileListData(l,s,function(e,t){Ext.callback(n,false,[e,t]);Ext.callback(k.onLoad,false,[e,t])});this.scrollToListView(l,p);k.activeList=l}if(!k.avoidTitleUpdate){this.updateTitle(k,c.path)}},updateTitle:function(d,c){var a=RegExp("(/([a-z]{3}))\\."),b=c.match(a);if(b){c=c.replace(a,"$1@")}d.setTitle(d.fullTitle.apply({title:d.originalTitle,url:c}))},initFileWindow:function(a){a.originalTitle=a.title;a.setTitle(a.fullTitle.apply({title:a.originalTitle}));Ext.each(a.query("grid"),function(c,b){this.setColumnText(c,b)},this)},setContextualButton:function(c,a){var b=c.down("newSavefileToolbarContextualButton");if(!b){return}b.originalText=(!b.originalText)?b.text:b.originalText;b.setText(b.fullText.apply({operation:b.originalText,what:this.storageColumns[a].text}));if(a==(this.storageColumns.length-1)){b.setIcon(b.fileIcon);b.isFile=true}else{b.setIcon(b.folderIcon)}},contextualButtonClick:function(b){var c=b.up("window"),a=c.activeList;if(!a){a=c.down("grid")}this.createRecord(a,this.columnValues[a.indexInParent],true)},saveDocument:function(l){var k=l.up("window"),i=k.query("grid"),m={},h={},g="@",e,d,c,a=k.activeList.getSelectionModel().getSelection()[0],n,b=RegExp("(/([a-z]{3}))@");Ext.each(i,function(o,p){var q=o.getSelectionModel().getSelection()[0],r;if(q){r=q.getData();m[this.storageColumns[p].fieldName]=(r.originalName)?r.originalName:r.name}},this);e=m.version.indexOf(g);if(e!=-1){d=m.version.substring(e+1);c=m.version.substring(0,e)}else{c=m.version}h.work={nationality:m.nationality,docType:m.docType,date:m.date,docNumber:m.docNumber};h.expression={date:d,docLang:c};h.manifestation={docName:m.docName};DocProperties.setDocumentInfo({folder:m.folder});DocProperties.setFrbr(h);n=a.getData().path;this.getController("Editor").saveDocument({view:k,path:n})},fillInFields:function(b){var d,c;this.columnValues=[];for(var a=0;ap)?(a[o].indexOf(s)!=-1):(s.indexOf(a[o])!=-1);if(r){q=true;break}}return Ext.Array.contains(g,s)||!q}),k=l.queryBy(function(n,o){return Ext.Array.contains(g,o)});h.each(function(n){i.addRowCls(n.index,"forbidden-row");n.notSelectable=true});k.each(function(n){var o=m.getView().getEl().down("[data-recordindex="+n.index+"]");i.addRowCls(n.index,"forbidden-cell");if(o){Ext.callback(c.notAllowedPathRender,false,[o,n])}n.notSelectable=true})};b=function(h){h.addListener("beforeselect",function(k,i,l){return(i.notSelectable)?false:true})}}Ext.widget("newOpenfileMain",{pathToOpen:c.path,afterAddColumn:b,onLoad:d,onOpen:Ext.bind(c.callback,c.scope)}).show()},openDocumentByUri:function(c){var d=this,b=DocProperties.documentInfo.originalDocId||DocProperties.documentInfo.docId,a;if(b&&c.path){a=b.indexOf(c.path);if(a!=-1){c.path=b.substr(0,a+c.path.length)}else{a=Utilities.globalIndexOf("/",b);if(a.length>4){c.path=b.substr(0,a[4])+c.path}}}c.callback=function(e){d.openDocument(e.id)};c.scope=d;d.selectDocument(c)},init:function(){var a=this;a.application.on(Statics.eventsNames.selectDocument,this.selectDocument,this);a.application.on(Statics.eventsNames.openDocument,this.openDocumentByUri,this);this.control({newOpenfileToolbarCancelButton:{click:a.newCloseWindow},newSavefileToolbarCancelButton:{click:a.newCloseWindow},newOpenfileToolbarOpenButton:{click:a.newGetSelectedDocument},"listFilesPanel openFileListView":{itemclick:this.fileListViewClick},listFilesPanel:{activated:function(e){var d=this,c=e.query("openFileListView"),h=e.up("window"),g,b=function(l,n){var k=l.findBy(function(o,p){return(g.indexOf(p)!=-1)}),i,m;if(k!=-1){i=l.getAt(k);m=i.get("id");n.getView().select(k);d.fileListViewClick(n,i,false,false,false,false,b)}};if(h&&h.pathToOpen){g=h.pathToOpen||"";d.loadOpenFileListData(c[0],false,function(i,k){Ext.callback(b,false,[i,k]);Ext.callback(h.onLoad,false,[i,k])})}else{Ext.each(c,function(i){d.loadOpenFileListData(i,false,h.onLoad)})}}},saveFileListView:{beforerender:function(e){var d=this,b=e.getStore(),c;columnConfig=this.storageColumns[e.indexInParent],this.loadOpenFileListData(e,false);b.on("load",function(h){if(!e.userClick){d.saveListViewOnStoreLoad(h,e)}},this);if(e.filter){var g=new Ext.util.Filter({filterFn:function(h){return(h.data.text.indexOf("examples")==-1)}});b.addFilter(g)}c=e.columns[0];if(columnConfig&&columnConfig.editor){c.editor=columnConfig.editor}},itemclick:this.fileListViewClick,recordChanged:function(d,b,c){var g=b.getData(),h=g.path,e=g.relPath;if(e){h=h.substring(0,h.lastIndexOf("/"))+"/"+g.name}else{h=h+"/"+g.name}h=h.replace("//","/");b.beginEdit();b.set("id",h);b.set("path",h);b.set("relPath",g.name);b.endEdit();if(!c){this.updateTitle(d.up("window"),h);d.fireEvent("itemclick",d,b,true)}}},newOpenfileMain:{beforerender:function(d){var c=d.down("newOpenfileToolbarOpenButton"),b=d.down("listFilesPanel");c.dynamicDisable=true;c.disable();b.fireEvent("activated",b);this.initFileWindow(d)}},newSavefileMain:{beforerender:function(b){var c=b.down("newSavefileToolbarOpenButton");c.dynamicDisable=true;c.disable();this.initFileWindow(b);this.setContextualButton(b,0);this.fillInFields(b)}},"newSavefileMain newSavefileToolbarContextualButton":{click:this.contextualButtonClick},"newSavefileMain newSavefileToolbarOpenButton":{click:this.saveDocument},newDocument:{close:function(c,b){if(!c.autoClosed){a.application.fireEvent(Statics.eventsNames.progressEnd)}}}})}},0,0,0,0,0,0,[LIME.controller,"Storage"],0));(Ext.cmd.derive("LIME.view.Explorer",Ext.tree.Panel,{store:"Explorer",cls:"x-tree-noicon",expanded:false,rootVisible:false,tools:[{type:"expand",handler:function(){this.up("panel").expandAll()}},{type:"collapse",handler:function(){this.up("panel").collapseAll()}},{type:"left",handler:function(){this.up("panel").collapse()}}],listeners:{resize:function(a){a.doLayout()}},initComponent:function(){this.title=Locale.strings.westToolbarTitle;this.callParent(arguments)}},0,["explorer"],["panel","explorer","component","tablepanel","container","box","treepanel"],{panel:true,explorer:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.explorer"],0,[LIME.view,"Explorer"],0));(Ext.cmd.derive("LIME.controller.Editor",Ext.app.Controller,{views:["main.Editor","Explorer","main.editor.Path","main.editor.Uri","modal.NewDocument"],refs:[{ref:"mainEditor",selector:"mainEditor"},{ref:"main",selector:"main"},{ref:"contextMenu",selector:"contextMenu"},{ref:"contextMenuItems",selector:"menuitem[cls=editor]"},{ref:"explorer",selector:"explorer"},{ref:"mainEditorPath",selector:"mainEditorPath"},{ref:"markingMenu",selector:"markingMenu"},{ref:"mainToolbar",selector:"mainToolbar"},{ref:"codemirror",selector:"codemirror"}],constructor:function(){this.lastFocused=null;this.defaultElement={tag:"div"};this.callParent(arguments)},documentTempConfig:{},getEditorComponent:function(){return this.getMainEditor().down("tinymcefield")},getEditor:function(){return this.getEditorComponent().getEditor()},getIframe:function(){return this.getEditorComponent().iframeEl},getHeight:function(){return this.getIframe().getHeight()},getWidth:function(){return this.getIframe().getWidth()},getPosition:function(){var a=this.getIframe();return[a.getX(),a.getY()]},getParser:function(){return new tinymce.html.DomParser({validate:true},tinymce.html.schema)},getSerializer:function(){return tinymce.activeEditor.serializer},serialize:function(a){return this.getSerializer().serialize(a)},getBookmark:function(){return this.getEditor().selection.getBookmark()},restoreBookmark:function(a){this.getEditor().selection.moveToBookmark(a)},getSelectionRange:function(){var c=this.getEditor(),a=c.selection.getRng(),b=[a.startOffset,a.endOffset];return b},showDocumentUri:function(b){var d=this.getMainEditor().up(),e,a=this.getMain(),c=DocProperties.getDocumentUri();c=(!c)?Locale.getString("newDocument"):c;d.tab.setTooltip(c);a.down("mainEditorUri").setUri(c)},applyPattern:function(c,a){tinymce.activeEditor.formatter.register(c,a);tinymce.activeEditor.formatter.apply(c);var d=this.getBody();var b=Ext.query("span[class*="+a.classes+"]",d);return b},focus:function(b,d){var a,c;if(Ext.isString(b)){b=Ext.query("#"+b,this.getBody())}else{if(!Ext.isArray(b)){b=[b]}}if(b.length==0){return null}c=b[b.length-1];a=DomUtils.getFirstMarkedAncestor(c.parentNode);if(c===this.lastFocused){d.click=false}if(b.length>1&&a){this.focusNode(a,d);this.lastFocused=a}else{this.focusNode(c,d);this.lastFocused=c}},focusNode:function(a,c){if(!a){return}if(c.select){this.selectNode(a)}if(c.scroll){a.scrollIntoView()}if(c.highlight){var b=new Ext.Element(a);b.highlight("FFFF00",{duration:800})}if(c.change){this.getEditor().undoManager.add();this.changed=true;this.application.fireEvent("editorDomChange",a,"partial")}if(c.click){this.application.fireEvent("editorDomNodeFocused",a)}},selectNode:function(b,a){a=(a==undefined)?true:a;this.getEditor().selection.select(b,a)},setCursorLocation:function(a,b){this.getEditor().selection.setCursorLocation(a,b)},setSelectionContent:function(a){this.getEditor().selection.setContent(a)},setElementAttribute:function(b,d,g){var e=b,c,a=false;var h=(Ext.isString(e))?Ext.query("*["+DomUtils.elementIdAttribute+"="+e+"]",this.getDom())[0]:e;if(h){c=h.getAttribute(d);if(c!=g){h.setAttribute(d,g);if(g==""){h.removeAttribute(d)}this.getEditorComponent().fireEvent("change",this.getEditor());a=h}}return a},getSelectionContent:function(a){if(!a){a="html"}return this.getEditor().selection.getContent({format:a})},getBody:function(){return this.getEditor().getBody()},getDom:function(){return this.getEditor().dom.doc},getDocHtml:function(){var a=this.getDom().documentElement;return DomUtils.serializeToString(a)},getDocumentElement:function(){var b=this,a=b.getBody();return a.querySelector("*[class~='"+DocProperties.documentBaseClass+"']")},getCurrentDocId:function(){var a=this.getBody(),b=a.querySelector("["+DocProperties.docIdAttribute+"]");if(b){return b.getAttribute(DocProperties.docIdAttribute)}return null},getDocumentMetadata:function(b){var a={};b=b||this.getCurrentDocId();a.originalMetadata=DocProperties.docsMeta[b];if(a.originalMetadata){a.obj=DomUtils.nodeToJson(a.originalMetadata.metaDom);return a}return null},getSelectedNode:function(b,a){var c=this.getEditor().selection.getNode();if(b){return DomUtils.getFirstMarkedAncestor(c)}else{if(a){return DomUtils.getNodeByName(c,a)}else{return c}}},getSelectionObject:function(d,k,c){k=k||{start:null,end:null,current:null};var b=this.getEditor().selection.getStart();var m=this.getEditor().selection.getEnd();var l=this.getEditor().selection.getNode();if(k.start){b=DomUtils.getNodeByName(b,k.start)}if(k.end){m=DomUtils.getNodeByName(m,k.end)}if(c){var n=DomUtils.nestingLevel(b);var a=DomUtils.nestingLevel(m);var h=Math.abs(n-a);if(n0){c.fireEvent("nodeFocusedExternally",n[0],{select:true,scroll:true,click:true})}}};Ext.each(l,function(m){m.onclick=clickLinker},this);Ext.each(b,function(p,s){var n=p.getAttribute(DomUtils.elementIdAttribute),y;var o=p.getAttribute(d.getLanguagePrefix()+"name");var t=DomUtils.getButtonIdByElementId(n);var r=Ext.getCmp(t);if(!r){if(n.indexOf(DomUtils.elementIdSeparator)==-1){var w=DomUtils.getFirstMarkedAncestor(p.parentNode);if(w){var v=DomUtils.getButtonByElement(w);if(v){r=v.getChildByName(n)||v.getChildByName(o)}}if(!r){var u=h.getButtonsByName(n)||h.getButtonsByName(o),x;if(u){x=Ext.Object.getKeys(u);if(x.length){t=x[0];r=u[t];n=e.getMarkingId(t)}}}else{n=e.getMarkingId(r.id)}}if(!r){Ext.MessageBox.alert("FATAL ERROR!!","The button with id "+t+" is missing!");return}}DocProperties.setMarkedElementProperties(n,{button:r,htmlElement:p});p.removeAttribute("style");p.setAttribute(DomUtils.elementIdAttribute,n);var q=r.waweConfig.pattern.wrapperClass;this.applyAllStyles('*[class="'+q+'"]',r.waweConfig.pattern.wrapperStyle,r.waweConfig.shortLabel);var m=DomUtils.blockTagRegex.test(r.waweConfig.pattern.wrapperElement);if(m){e.addBreakingElements(p)}},this);if(Ext.isString(a)){DocProperties.setDocId(a)}this.application.fireEvent("editorDomChange",g.getBody());this.application.fireEvent(Statics.eventsNames.documentLoaded)},setContent:function(a){this.getEditor().setContent(a)},domReplace:function(a,b){if(Ext.isArray(b)){b[0].parentNode.insertBefore(a,b[0]);Ext.each(b,function(c){c.parentNode.removeChild(c)})}else{this.getEditor().dom.replace(a,b)}return a},splitContent:function(b,e){var d=[];var c=b;while(c.length>e){var a=c.split(e)}},saveDocument:function(a){var b=this;this.application.fireEvent(Statics.eventsNames.translateRequest,function(c){c=c.replace('',"");b.saveDocumentText(c,a)},{complete:true})},saveDocumentText:function(n,v){var i=this.application,u,g=this.getController("LoginManager").getUserInfo(),h=this.getController("PreferencesManager"),o=this.getController("Language"),c=DocProperties.frbr,s=DocProperties.documentInfo,b={},w,y,t=this,a=this.getDom(),x=DocProperties.documentInfo.docId||Ext.emptyString,l,m=new XMLSerializer(),p=new Ext.Template("/{nationality}/{docType}/{date}/{number}/{docLang}@/{docName}"),q=new Ext.Template("/{docLang}@/{docName}"),k=(v)?v.view:null,d;if(v.path){x=v.path}if(!v||!v.autosave){y=c.manifestation.docName;d=x.substring(1);d=d.substring(d.indexOf("/"));w=o.buildMetadata(c,true,d)}else{w=o.buildInternalMetadata(true)}i.fireEvent(Statics.eventsNames.beforeSave,{editorDom:a,metadataDom:w,documentInfo:DocProperties.documentInfo});try{l=m.serializeToString(w)}catch(r){l=Ext.emptyString}u={userName:g.username,fileContent:n,metadata:l};i.fireEvent(Statics.eventsNames.saveDocument,x,u,function(e,A){var B=e.responseText,z;if(B[B.length-1]=="1"){B=B.substring(0,(B.length-1))}z=JSON.parse(B);if(!v||!v.autosave){if(k){k.close()}var C=Locale.strings.savedToTpl;Ext.Msg.alert({title:Locale.strings.saveAs,msg:new Ext.Template(C).apply({docName:y,docUrl:A.replace(y,"")})})}i.fireEvent(Statics.eventsNames.afterSave,{editorDom:a,metadataDom:w,documentInfo:DocProperties.documentInfo});if(z.path){DocProperties.setDocId(z.path);h.setUserPreferences({lastOpened:z.path})}})},autoSaveContent:function(a){if(!a&&!this.changed){return}this.changed=false;this.saveDocument({silent:true,autosave:true})},tinyInit:function(b,c){var a=this,d=b.getController("MainToolbar");a.onPreSave=c;userPreferences=b.getController("PreferencesManager").getUserPreferences(),storage=b.getController("Storage");if(!userPreferences.lastOpened){Ext.Ajax.request({url:Statics.editorStartContentUrl,success:function(e){var h=d.highlightFileMenu();var g=Ext.widget("window",{height:400,width:800,modal:true,resizable:false,closable:false,layout:{type:"vbox",align:"center"},title:Locale.strings.welcome,items:[{xtype:"panel",width:800,height:320,html:e.responseText},{xtype:"button",cls:"bigButton",text:Locale.strings.continueStr,style:{width:"150px",height:"40px",margin:"5px 5px 5px 5px"},handler:function(i){clearInterval(h);i.up("window").close()}}]}).show()}})}else{b.restoreSession()}},setPath:function(e){var d=[];var c=DocProperties.getDocClassList().split(" ");if(e){var b=e;var a=b.getAttribute("class");if(a){while(b&&(a.indexOf(c[0])==-1)){a=b.getAttribute("class");a=a.split(" ");d.push({node:b,name:a[(a.length-1)]});b=DomUtils.getFirstMarkedAncestor(b.parentNode)}}}d.push({node:null,name:c[1]});this.getMain().down("mainEditorPath").setPath(d)},onNodeClick:function(b){var a=this.getBody();Ext.each(a.querySelectorAll("*["+DocProperties.elementFocusedCls+"]"),function(c){c.removeAttribute(DocProperties.elementFocusedCls)});if(b){this.setPath(b);b.setAttribute(DocProperties.elementFocusedCls,"true")}},restoreSession:function(){var g,d=this.application,a;var b=this,c=b.getController("PreferencesManager").getUserPreferences(),e=b.getController("Storage");if(c.lastOpened){e.openDocument(c.lastOpened)}},disableEditor:function(){this.getBody().setAttribute("contenteditable",false)},enableEditor:function(){this.getBody().setAttribute("contenteditable",true)},init:function(){this.application.on({nodeFocusedExternally:this.focus,nodeChangedExternally:this.focus,editorDomNodeFocused:this.onNodeClick,scope:this});this.application.on(Statics.eventsNames.loadDocument,this.beforeLoadDocument,this);this.application.on(Statics.eventsNames.disableEditing,this.disableEditor,this);this.application.on(Statics.eventsNames.enableEditing,this.enableEditor,this);var a=this;var b=this.getController("Marker");this.control({mainEditorPath:{update:function(){var c=Ext.query(".pathSelectors");var d=this.getMainEditorPath().elements;Ext.select(".pathSelectors").on("click",function(e,i){var g=i.getAttribute("id");if(g&&d[g]){var h=d[g];this.getController("Editor").focusNode(h,{select:true,scroll:true,click:true})}},this)}},mainEditorUri:{update:function(){var c=this;Ext.select(".uriSelector").on("click",function(d,g){var e=g.getAttribute("id");if(e){c.application.fireEvent(Statics.eventsNames.openDocument,config={path:e})}},this)}},mainEditor:{click:function(g,l,i){var h=this,k=h.getBody().querySelectorAll("."+DomUtils.toMarkNodeClass);Ext.each(k,function(e){if(Ext.isEmpty(DomUtils.getTextOfNode(e).trim())){if(e.parentNode){Ext.DomHelper.insertHtml("beforeBegin",e,DomUtils.getBreakingElementHtml());e.parentNode.removeChild(e)}}});this.getContextMenu().hide();if(Ext.Object.getSize(i)==0){i=DomUtils.getFirstMarkedAncestor(l.target);if(DomUtils.isBreakingNode(l.target)){var m=Ext.DomHelper.createDom({tag:"div",html:" ",cls:DomUtils.toMarkNodeClass});l.target.parentNode.replaceChild(m,l.target);this.setCursorLocation(m,0);if(i){this.lastFocused=i;h.application.fireEvent("editorDomNodeFocused",i);return}}}if(i){var d=this.getSelectedNode(),c=d.getAttribute("class");if((c&&c!=DomUtils.toMarkNodeClass)&&!DomUtils.isBreakingNode(d)&&d!=i){this.setCursorLocation(i,0)}this.lastFocused=i;h.application.fireEvent("editorDomNodeFocused",i)}},change:function(g,l){var d=g.getBody(),h=DocProperties.getDocClassList(),i=Ext.query("*[class="+h+"]",d)[0],k=this.getExplorer();if(!i){var c=d.innerHTML;d.innerHTML="";var m=Ext.DomHelper.createDom(Ext.Object.merge(this.defaultElement,{cls:h,html:c}));d.appendChild(m)}g.undoManager.add();this.changed=true},contextmenu:function(d,g){var h=[],c=this.getPosition();g.preventDefault();h=[g.clientX+c[0],g.clientY+c[1]];this.application.fireEvent(Statics.eventsNames.showContextMenu,h)},setcontent:function(g,l){var o=this.getExplorer(),h=this.getBody(),c=DocProperties.getDocClassList(),i=DocProperties.documentBaseClass,n=Ext.query("*[class~="+i+"]",h)[0];if(!DocProperties.getDocType()){return}if(!n){var m=h.innerHTML;h.innerHTML="";var k=Ext.DomHelper.createDom(Ext.Object.merge(this.defaultElement,{cls:c,html:m}));h.appendChild(k)}else{var d=n.getAttribute("class");if(!d||d.indexOf(c)==-1){n.setAttribute("class",c)}}this.changed=true;this.application.fireEvent("editorDomChange",h)},beforerender:function(){var g=this,h=g.getMainEditor(),d=g.getEditorComponent(),c=g.getController("Marker");__tinyInit=function(){var i=this;Ext.bind(g.tinyInit,i,[g,Ext.bind(g.autoSaveContent,g)])()};var e={tinymceConfig:{doctype:"",theme:"modern",schema:"html5",element_format:"xhtml",force_br_newlines:true,force_p_newlines:false,forced_root_block:"",content_css:"resources/tiny_mce/css/content.css",mode:"textareas",entity_encoding:"raw",width:"100%",height:"100%",resizable:false,relative_urls:false,nonbreaking_force_tab:true,statusbar:false,plugins:"compat3x, code, tinyautosave, table, link, image, searchreplace, jbimages, paste, noneditable",noneditable_leave_contenteditable:true,valid_elements:"*[*]",language:Locale.getLang(),toolbar:"undo redo | bold italic strikethrough | superscript subscript | bullist numlist outdent indent | table | link image jbimages | searchreplace",mysetup:function(i){i.on("change",function(k){h.fireEvent("change",i,k)});i.on("setcontent",function(k){h.fireEvent("setcontent",i,k)});i.on("click",function(k){h.fireEvent("click",i,k)});i.on("contextmenu",function(k){h.fireEvent("contextmenu",i,k)})},tinyautosave_oninit:"__tinyInit",tinyautosave_minlength:10,tinyautosave_interval_seconds:10}};if(!WaweDebug){e.tinymceConfig.menubar=false}Ext.apply(d,e)}}})}},1,0,0,0,0,0,[LIME.controller,"Editor"],0));(Ext.cmd.derive("LIME.Global",Ext.Base,{singleton:true,alternateClassName:"Config",uxPath:"LIME.ux",extensionScripts:["LoadPlugin","Language","SavePlugin","TranslatePlugin"],language:"default",pluginBaseDir:"languagesPlugins",pluginClientLibs:"client",pluginServerLibs:"server",pluginStructureFile:"structure.json",pluginClientStructureFile:"structure.json",pluginClientStringsFile:"strings.json",pluginStructure:{},customizationViews:{},customDefaultControllers:[],allLanguages:[{name:"default"}],languages:[],fieldsDefaults:{},loaded:false,getDependences:function(){return Ext.Array.map(this.extensionScripts,function(a){return this.uxPath+"."+a},this)},load:function(){var a=this;Ext.Loader.setPath(this.uxPath,this.getPluginLibsPath());Ext.syncRequire(this.getDependences());Ext.Ajax.request({url:"languagesPlugins/config.json",async:false,scope:this,success:function(b,d){var c;try{c=Ext.decode(b.responseText,true);if(c){Ext.Array.push(a.allLanguages,c.languages);a.languages=c.languages;a.fieldsDefaults=(c.fieldsDefaults)?c.fieldsDefaults:a.fieldsDefaults;a.loadPluginStructure();a.loadLanguage(function(){a.loaded=true;Ext.callback(a.afterDefaultLoaded)})}else{Ext.log({level:"error"},"language config (languagesPlugins/config.json) decode error!")}}catch(g){alert(Locale.strings.error)}},failure:function(b,c){alert(Locale.strings.error)}})},loadPluginStructure:function(){Ext.each(this.allLanguages,function(c){var b=c.name,a=this.getPluginStructureUrl(b);Ext.Ajax.request({async:false,url:a,scope:this,success:function(d){var e=Ext.decode(d.responseText,true);if(e){e.name=b;this.pluginStructure[b]=e}else{Ext.log({level:"error"},"Language ("+b+") structure decode error! ")}}})},this)},loadLanguage:function(h){var d=this,a,g=[],c=function(){if(!--a){var i=function(){Config.loadedFinish=true;Ext.callback(h,d)};d.loadClientPlugins(i)}else{Config.loadedFinish=false}},b=Ext.Array.clone(this.extensionScripts),e=this.getLanguageConfig();d.initClientPlugins();if(this.customScript){Ext.each(this.customScript,function(i){delete window[i];delete window[i+"Custom"]});this.customScript=[]}if(e){if(e.customViews){this.customScript=e.customViews;Ext.Array.push(b,e.customViews)}}Ext.Loader.setPath(this.uxPath,this.getPluginLibsPath());a=b.length;Ext.each(b,function(i){d.loadScript(this.getPluginLibsPath()+"/"+i+".js",c,c)},this);if(e.transformationFiles){Ext.Object.each(e.transformationFiles,function(i,k){if(i=="languageToLIME"||i=="LIMEtoLanguage"){g.push({url:d.getLanguagePath()+k,name:i})}});if(!Ext.isEmpty(g)){Utilities.filterUrls(g,false,function(i){e.transformationUrls={};Ext.each(i,function(k){e.transformationUrls[k.name]=k.url})},false,d)}}},loadScript:function(b,c,a){Ext.Loader.loadScript({url:b,onLoad:function(){Ext.callback(c,this)},onError:function(){Ext.callback(a,this)},scope:this})},loadClientPlugins:function(e){var c=this,d=this.getLanguageConfig(),a,b=function(){if(!--a){Ext.callback(e,c)}};if(d&&d.plugins&&d.plugins.length){a=d.plugins.length;Ext.each(d.plugins,function(g){c.loadClientPlugin(g,b)})}else{Ext.callback(e,c)}},initClientPlugins:function(){this.customControllers=[];this.customizationViews={}},loadClientPlugin:function(b,i){var e=this,d=e.getPluginLibsPath()+"/"+b+"/",h=d+e.pluginClientStructureFile,a,g=e.getLanguageConfig(),c=function(){if(!--a){Ext.callback(i,e)}};e.setPluginUrl(b,d);Ext.Ajax.request({async:false,url:h,scope:e,success:function(k){var m=Ext.decode(k.responseText,true),l=[];if(m){if(m.views){Ext.Array.push(l,m.views)}if(m.controllers){if(g.name=="default"){Ext.Array.push(e.customDefaultControllers,m.controllers)}else{Ext.Array.push(e.customControllers,m.controllers)}Ext.Array.push(l,m.controllers)}e.loadClientPluginStrings(b,d);a=l.length;Ext.each(l,function(n){var o=d+n+".js";e.loadScript(o,c,c)},e)}else{Ext.log({level:"error"},"Error loading structure of plugin: "+b);Ext.callback(i,e)}},failure:function(){Ext.callback(i,e)}})},loadClientPluginStrings:function(a,c){var b=c+this.pluginClientStringsFile;Ext.Ajax.request({async:false,url:b,scope:this,success:function(d){var e=Ext.decode(d.responseText,true);Locale.setPluginStrings(a,e)}})},addCustomView:function(a){var b=a.getViewToCustomize();if(b){this.customizationViews[b]=this.customizationViews[b]||[];this.customizationViews[b].push(a)}},setPluginUrl:function(b,a){var c=this;c.pluginUrls=c.pluginUrls||{};c.pluginUrls[b]={relative:a,absolute:c.getAppUrl()+a}},getAppUrl:function(){return window.location.origin+window.location.pathname},getPluginUrl:function(a){return this.pluginUrls[a]},getLanguageTransformationFiles:function(a){return this.getLanguageConfig(a).transformationUrls},getLanguageTransformationFile:function(a,c){var b=this.getLanguageTransformationFiles(c);return(b&&b[a])?b[a]:null},getCustomViews:function(a){return this.customizationViews[a]},getPluginStructureUrl:function(a){return this.pluginBaseDir+"/"+a+"/"+this.pluginStructureFile},getPluginLibsPath:function(){return this.getLanguagePath()+this.pluginClientLibs},getLanguageConfig:function(a){return this.pluginStructure[(a)?a:this.language]},setLanguage:function(d,c){var a=this;if(a.language!=d){a.language=d;if(Ext.isFunction(this.beforeSetLanguage)){var b=Ext.bind(function(){a.loadLanguage(c)},a);this.beforeSetLanguage(d,b)}else{this.loadLanguage(c)}}else{Ext.callback(c,a)}},getLanguage:function(){return this.language},getLanguagePath:function(){return this.pluginBaseDir+"/"+this.language+"/"},getLanguageSchemaPath:function(){return this.getLanguagePath()+"schema.xsd"},getLocaleByDocType:function(d,c){var a=this.getDocTypesByLang(d);for(var b=0;bi.waweConfig.name};this.buttonsReferences={};l.removeAll();e.removeAll();for(var d=0;d'}),newElement=Ext.DomHelper.createDom({tag:"div",html:parsedHtml}),tempSelection=Ext.query("*[class*="+DomUtils.tempSelectionClass+"]",newElement)[0];if(!selectedNodes||selectedNodes.length==0){selectedNodes=[c.node]}if(c.text&&selectedNodes.length==1&&selectedNodes[0]==c.start&&selectedNodes[0]==c.end){this.wrapSelectedTextInNode(newElement,tempSelection)}else{selectedNodes[0].parentNode.insertBefore(newElement,selectedNodes[0]);if(tempSelection){Ext.each(selectedNodes,function(e){tempSelection.parentNode.insertBefore(e,tempSelection)})}}if(tempSelection){tempSelection.parentNode.removeChild(tempSelection)}newElement=a.domReplace(newElement.childNodes[0],newElement);this.addBreakingElements(newElement);return[newElement]},wrapInline:function(m){var n=this.getController("Editor"),r=n.applyPattern("tempselection",{inline:"span",classes:DomUtils.tempSelectionClass}),e=[],s,b=false,o,q=r.length;for(var k=0;k"+h.waweConfig.name+""})});return}if(c&&DomUtils.getButtonIdByElementId(c.getAttribute(DomUtils.elementIdAttribute))==h.id){return[c]}if(a){d=this.wrapBlock(h)}else{d=this.wrapInline(h)}Ext.each(d,function(r){var q=new Ext.Element(r),m=r.cloneNode(true),p=this.getMarkingId(h.id),o=h.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||"",l=e.wrapperClass;r.setAttribute(DomUtils.elementIdAttribute,p);r.setAttribute("class",e.wrapperClass);if(g.attribute&&g.attribute.name&&g.attribute.value){r.setAttribute(o+g.attribute.name,g.attribute.value)}b.applyAllStyles('*[class="'+l+'"]',e.wrapperStyle,h.waweConfig.shortLabel);DocProperties.setMarkedElementProperties(p,{button:h,htmlElement:r});if(r.parentNode){var n=r.parentNode,k=n.getAttribute("class");if(k&&k==DomUtils.toMarkNodeClass){if(n.parentNode){while(n.firstChild){n.parentNode.insertBefore(n.firstChild,n)}n.parentNode.removeChild(n)}}}},this);this.application.fireEvent("nodeChangedExternally",d,{select:false,scroll:false,click:(g.silent)?false:true,change:true,silent:g.silent});Ext.callback(g.callback,this,[h,d])},unmarkNode:function(b,c){var k=[];if(c){var l=Ext.query("["+DomUtils.elementIdAttribute+"]",b);Ext.each(l,function(m){k=Ext.Array.merge(k,this.unmarkNode(m))},this)}var d=b.parentNode,g=b.getAttribute(DomUtils.elementIdAttribute),a=new Ext.Element(b),h=a.next("."+DomUtils.breakingElementClass),e=a.prev("."+DomUtils.breakingElementClass);while(b.hasChildNodes()){if(DomUtils.markedNodeIsPattern(b,"inline")){if(b.firstChild.nodeType==DomUtils.nodeType.TEXT){DomUtils.addSpacesInTextNode(b.firstChild)}else{Ext.each(DomUtils.getTextNodes(b.firstChild),function(m){DomUtils.addSpacesInTextNode(m)})}}b.parentNode.insertBefore(b.firstChild,b)}if(b.parentNode){b.parentNode.normalize()}if(h){h.remove()}if(e){var i=e.prev();if(!i||!i.getAttribute(DomUtils.elementIdAttribute)){e.remove()}}b.parentNode.removeChild(b);delete DocProperties.markedElements[g];return Ext.Array.merge(g,k)},unmark:function(c,g){var k=this.getController("Editor").getSelectionObject("html",null,true);var a=DomUtils.getFirstMarkedAncestor(k.start),d=DomUtils.getFirstMarkedAncestor(k.end),i=DomUtils.getSiblings(a,d),b={change:true,click:true},h=(a)?a.parentNode:d.parentNode,e=[];if(i){i=i.filter(function(l){if(l&&(l.nodeType!=DomUtils.nodeType.ELEMENT||!l.getAttribute(DomUtils.elementIdAttribute))){return false}else{return true}})}else{a?i=[a]:i=[d]}Ext.each(i,function(l){var m=l.getAttribute(DomUtils.elementIdAttribute);e=Ext.Array.merge(e,this.unmarkNode(l,g))},this);this.application.fireEvent("nodeChangedExternally",h,b);this.application.fireEvent(Statics.eventsNames.unmarkedNodes,e)},unmarkNodes:function(b,e){var d=this,c=[],a=d.getController("Editor").getDocumentElement(),g=[];Ext.each(b,function(i){var h=DomUtils.getFirstMarkedAncestor(i.parentNode);if(h&&c.indexOf(h)==-1){c.push(h)}g=Ext.Array.merge(g,d.unmarkNode(i,e))});if(c.length){Ext.each(c,function(h){d.application.fireEvent("nodeChangedExternally",h,{change:true})})}else{d.application.fireEvent("nodeChangedExternally",a,{change:true})}d.application.fireEvent(Statics.eventsNames.unmarkedNodes,g)},wrapChildrenInWrapperElement:function(b,c){var d=Interpreters.parseElement(c.wrapperElement,{content:""}),a=Ext.DomHelper.insertHtml("beforeBegin",b,d);DomUtils.moveChildrenNodes(b,a);return b.appendChild(a)},wrapElementInWrapperElement:function(b,c){var d=Interpreters.parseElement(c.wrapperElement,{content:""}),a=Ext.DomHelper.insertHtml("beforeBegin",b,d);a.appendChild(b);return a},autoWrap:function(g,e){if(!e.nodes|!g){return}var b=this.getController("Editor"),d=g.waweConfig.pattern,a=DomUtils.blockTagRegex.test(d.wrapperElement),h=g.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||"",c=d.wrapperClass,i=[];Ext.each(e.nodes,function(q,m){var o=this.getMarkingId(g.id),n,p,l=DomUtils.getFirstMarkedAncestor(q),k=new RegExp("^<"+q.nodeName+">","i");q.removeAttribute("class");if(l&&DomUtils.getButtonIdByElementId(l.getAttribute(DomUtils.elementIdAttribute))==g.id){return}if(!DomUtils.isSameNodeWithHtml(q,d.wrapperElement)){if(d.pattern=="inline"){if(q.children.length==1&&DomUtils.isSameNodeWithHtml(q.firstChild,d.wrapperElement)){q=q.firstChild}else{q=this.wrapChildrenInWrapperElement(q,d)}}else{q=this.wrapElementInWrapperElement(q,d)}}q.removeAttribute("class");q.setAttribute(DomUtils.elementIdAttribute,o);q.setAttribute("class",d.wrapperClass);if(e.attributes&&(n=e.attributes[m].name)&&(p=e.attributes[m].value)){q.setAttribute(h+n,p)}b.applyAllStyles('*[class="'+c+'"]',d.wrapperStyle,g.waweConfig.shortLabel);if(a){this.addBreakingElements(q)}DocProperties.setMarkedElementProperties(o,{button:g,htmlElement:q});i.push(q)},this);Ext.callback(e.onFinish,this,[i]);if(!e.noEvent){this.application.fireEvent("nodeChangedExternally",i,{select:false,scroll:false,click:(e.silent)?false:true,change:true,silent:e.silent})}},addBreakingElements:function(a){var b=DomUtils.getBreakingElementHtml();Ext.DomHelper.insertHtml("afterEnd",a,b);Ext.DomHelper.insertHtml("afterBegin",a,b);Ext.DomHelper.insertHtml("beforeEnd",a,b);if(!a.previousSibling||a.previousSibling.nodeName!="BR"&&a.previousSibling.getAttribute&&a.previousSibling.getAttribute("class")!=DomUtils.breakingElementClass){Ext.DomHelper.insertHtml("beforeBegin",a,b)}},isAllowedElement:function(l,b){return true;var c=this.getStore("LanguagesPlugin").getData(),k=this.getController("Editor").getBody(),d=c.semanticRules,a,g,e,m,h,i;if(c.semanticRules&&c.semanticRules.elements){a=c.semanticRules.elements;g=a[b.name];if(l){e=l.getAttribute(DomUtils.elementIdAttribute);if(DocProperties.markedElements[e]&&DocProperties.markedElements[e].button){m=DocProperties.markedElements[e].button.waweConfig;h=a[m.name];if(h&&h.children){i=h.children[b.name];if(i){if(i.cardinality>0&&i.cardinality<=this.getNumberOfChildrenByClass(l,b.name)){return false}}else{return true}}}}if(g){if(g.cardinality>0&&g.cardinality<=this.getNumberOfChildrenByClass(k,b.name,true)){return false}}}return true},getNumberOfChildrenByClass:function(d,a,c){var g=new Ext.Element(d),e=0,b=g.query("*[class~="+a+"]");return b.length},searchObjInArrayByAttribute:function(e,c,d){var b=e.length,a;for(a=0;a0){h=new Ext.Element(h[0]);h.scrollIntoView(a.items.items[0].getEl(),false,true)}break}}e=e.parentNode}},createTreeData:function(g,n,l){var q={},k=[];if(g&&g.el&&g.el.nodeType==DomUtils.nodeType.ELEMENT){var p=g.el.getAttribute("class");var a=g.el.getAttribute(DomUtils.elementIdAttribute);if(a&&DocProperties.markedElements[a]){var h=DocProperties.markedElements[a].button;wrapperClass=h.waweConfig.pattern.wrapperClass,newIcon='
',iconColor=h.waweConfig.pattern.styleObj["background-color"],iconStyle="height: 12px; width: 12px; -moz-border-radius: 6px; border-radius: 6px; background-color: "+iconColor+"; display: inline-block; vertical-align:middle; margin-right: 5px; margin-bottom: 1px; border: 1px solid #6D6D6D;";DomUtils.addStyle('*[class="'+this.iconBaseCls+" "+wrapperClass+'"]',iconStyle,document);if(p){var d=p.split(" ");var o=newIcon+d[(d.length-1)];q.icon=Statics.treeIcon[d[0]];var c=DomUtils.getNodeExtraInfo(g.el,"hcontainer");if(c){o+=" ("+c+")"}q.text=o}else{q.text=newIcon+a}q.cls=a}if(g.children){q.children=[];for(var e=0;e0){q.expanded=true;q.leaf=false}else{q.leaf=true}}return q}else{return null}},buildTree:function(d,c){var o=this,r=Ext.getStore("Explorer"),g=this.getExplorer(),q=r.getRootNode();try{if(c!="partial"||DomUtils.getFirstMarkedAncestor(d.parentNode)==null){var p=DocProperties.getDocClassList().split(" "),k=Ext.query("."+p[(p.length-1)],d.ownerDocument)[0],a=DomUtils.xmlToJson(k),i=this.createTreeData(a),b;if(Ext.isArray(i)){b={text:"root",children:i}}else{b=i}r.setRootNode(b)}else{var h=d;var n=null;while(!n&&h&&h.nodeType==DomUtils.nodeType.ELEMENT){var m=h.getAttribute(DomUtils.elementIdAttribute);if(m){if(q.findChild("cls",m,true)){n=h}}h=h.parentNode}var a;if(n){a=DomUtils.xmlToJson(n)}else{a=DomUtils.xmlToJson(d)}var i=this.createTreeData(a,null,null);if(!Ext.isArray(i)){i=[i]}Ext.each(i,function(s,e){var t=q.findChild("cls",s.cls,true);if(!t){q.insertChild(e,s);q.set("leaf",false);q.expand()}else{t.parentNode.replaceChild(s,t)}},this)}}catch(l){}},onChangeEditorMode:function(a){var b=this.getExplorer();if(a.sidebarsHidden){b.collapse()}else{b.expand()}},init:function(){this.application.on({editorDomChange:function(b,a){try{this.buildTree(b,a)}catch(c){Ext.log({level:"error"},c)}},editorDomNodeFocused:this.expandItem,scope:this});this.application.on(Statics.eventsNames.changedEditorMode,this.onChangeEditorMode,this);this.control({explorer:{itemclick:function(a,g,d,b,e){var c=DocProperties.markedElements[g.getData().cls];if(c){this.application.fireEvent("nodeFocusedExternally",c.htmlElement,{select:true,scroll:true,click:true})}},itemcontextmenu:function(a,i,d,b,g,c){var h=[];g.preventDefault();a.fireEvent("itemclick",a,i,d,b,g,c);this.application.fireEvent(Statics.eventsNames.showContextMenu,g.getXY())}}})}},0,0,0,0,0,0,[LIME.controller,"Explorer"],0));(Ext.cmd.derive("LIME.controller.Language",Ext.app.Controller,{views:["Main","main.editor.Path"],refs:[{ref:"main",selector:"main"}],metaTemplate:{outer:{identification:{FRBRWork:{FRBRcountry:{"@value":null}},FRBRExpression:{FRBRlanguage:{"@language":null}},FRBRManifestation:{}}},inner:{FRBRthis:{"@value":null},FRBRuri:{"@value":null},FRBRdate:{"@date":null,"@name":null},FRBRauthor:{"@href":null,"@as":null},componentInfo:{componentData:{"@id":null,"@href":null,"@name":null,"@showAs":null}}}},translateContent:function(h,r,q){var d=this,l=this.getController("Editor"),n=h.docDom,a=n.querySelectorAll(DomUtils.getTempClassesQuery()),g=n.querySelectorAll("*["+DomUtils.elementIdAttribute+"]"),k=n.querySelectorAll("."+DocProperties.elementFocusedCls),c=d.getLanguagePrefix(),p={};if(DocProperties.frbrDom){var o=n.querySelector("*["+DocProperties.docIdAttribute+"]");var b=Ext.clone(DocProperties.frbrDom);b.setAttribute("class","meta");if(o&&!o.querySelector("*[class*=meta]")){o.insertBefore(b,o.firstChild)}}try{Ext.each(a,function(s){var e=s.getAttribute("class");if(e!=DomUtils.breakingElementClass||!s.hasChildNodes()){s.parentNode.removeChild(s)}});Ext.each(k,function(e){Ext.fly(e).removeCls(DocProperties.elementFocusedCls)});Ext.each(g,function(u){var e=u.getAttribute(DomUtils.elementIdAttribute),s,t=n.querySelectorAll("*["+c+"href = '#"+e+"']");s=d.setLanguageMarkingId(u,p,n);Ext.each(t,function(v){v.setAttribute(c+"href","#"+s)});Interpreters.wrappingRulesHandlerOnTranslate(u)},this)}catch(m){if(q&&Ext.isFunction(q.setLoading)){q.setLoading(false)}return}var i=l.serialize(n);i=i.replace(/(class=\"[^\"]+)(\s+\bfocused\")/g,'$1"');Language.translateContent(i,DocProperties.documentInfo.docMarkingLanguage,{success:function(e){var s=vkbeautify.xml(e);if(Ext.isFunction(r)){r.call(d,s)}if(q&&Ext.isFunction(q.setLoading)){q.setLoading(false)}},failure:function(){alert("error");if(q&&Ext.isFunction(q.setLoading)){q.setLoading(false)}}})},beforeTranslate:function(m,a,k){var b=this,h=this.getController("Editor"),c=TranslatePlugin.beforeTranslate,d=h.getContent().replace(/id="ext-gen(\d)+"/g,""),e={},g,l;if(k&&Ext.isFunction(k.setLoading)){k.setLoading(true)}var i=Ext.DomHelper.createDom({tag:"div",html:d});if(c){e.docDom=i;l=Ext.Function.bind(c,TranslatePlugin,[Ext.Object.merge(e,a)]);g=l();if(!g){g=e}}b.translateContent(g,m,k)},buildInternalMetadata:function(b){var d=document.createElement("div"),c=DocProperties.documentInfo,e;d.setAttribute("class",Statics.metadata.internalClass);e=Utilities.jsonToHtml(c);d.appendChild(e);if(b&&DocProperties.frbrDom){var a=document.createElement("div");a.setAttribute("class",Statics.metadata.containerClass);a.appendChild(d);a.appendChild(Ext.clone(DocProperties.frbrDom));return a}return d},buildMetadata:function(p,h,i){var n=new XMLSerializer(),a=document.createElement("div"),g=Ext.clone(Config.getLanguageConfig().metaTemplate),k=g.identification,o=k.FRBRWork,m=k.FRBRExpression,c=k.FRBRManifestation,e,l={workUri:"(.xml)|(%lang%@)/",workOnlyNumber:"/\\w{3}@.*$",expressionUri:"(.xml)"};a.setAttribute("class",Statics.metadata.containerClass);e=this.buildInternalMetadata(a);a.appendChild(e);if(p&&p.work&&p.expression&&p.manifestation){var d=new RegExp(l.expressionUri.replace("%lang%",p.expression.docLang),"gi");o.FRBRcountry["@value"]=p.work.nationality;o.FRBRthis["@value"]=i.replace(d,"");o.FRBRuri["@value"]=i.replace(new RegExp(l.workOnlyNumber,"gi"),"");o.FRBRdate["@date"]=p.work.date;m.FRBRthis["@value"]=i.replace(l.expressionUri,"");m.FRBRuri["@value"]=i.split(p.expression.docLang+"@")[0]+p.expression.docLang+"@";m.FRBRlanguage["@language"]=p.expression.docLang;m.FRBRdate["@date"]=p.expression.date;c.FRBRthis["@value"]=i;c.FRBRuri["@value"]=i}DocProperties.metadata=g;DocProperties.frbrDom=null;if(h){var b=Utilities.jsonToHtml(g);b.setAttribute("class",Statics.metadata.frbrClass);this.parseFrbrMetadata(b);a.appendChild(b);a.setAttribute("class",Statics.metadata.containerClass);return a}return mainTemplate},parseMetadata:function(h,l){var n={},m;try{m=new Ext.Element(h)}catch(i){var b=new DOMParser();var o=b.parseFromString(l,"application/xml");m=new Ext.Element(o)}var d=m.down("*[class=internalMetadata]"),c,p,k,a,g;if(d){c=d.down("*[class=docLang]");p=d.down("*[class=docLocale]");k=d.down("*[class=docType]");docMarkingLanguage=d.down("*[class=docMarkingLanguage]");if(c&&c.dom.firstChild&&c.dom.firstChild.nodeValue){n.docLang=c.dom.firstChild.nodeValue}if(p&&p.dom.firstChild&&p.dom.firstChild.nodeValue){n.docLocale=p.dom.firstChild.nodeValue}if(k&&k.dom.firstChild&&k.dom.firstChild.nodeValue){n.docType=k.dom.firstChild.nodeValue}if(docMarkingLanguage&&docMarkingLanguage.dom.firstChild&&docMarkingLanguage.dom.firstChild.nodeValue){n.docMarkingLanguage=docMarkingLanguage.dom.firstChild.nodeValue}}g=m.down("*[class=frbr]",true);if(g){this.parseFrbrMetadata(g);n.nationality=DocProperties.frbr.work.nationality}return n},getLanguageMarkingIdGeneral:function(i,h,b,g){var d="",c=i.getAttribute(DomUtils.elementIdAttribute);if(c&&DocProperties.markedElements[c]){var a=1,e=DocProperties.markedElements[c].button;if(i.getAttribute(h+DomUtils.langElementIdAttribute)){return}d=e.id.replace(DomUtils.vowelsRegex,""),parentMarked=DomUtils.getFirstMarkedAncestor(i.parentNode);if(parentMarked){parentId=parentMarked.getAttribute(h+DomUtils.langElementIdAttribute);if(!g[parentId]){g[parentId]={}}else{if(g[parentId][d]){a=g[parentId][d]}}g[parentId][d]=a+1;d=parentId+"-"+d}else{if(!g[d]){g[d]=a+1}else{a=g[d]}}d+=a}return d},setLanguageMarkingId:function(h,d,a){var e=this,g,c,b=e.getLanguagePrefix();if(Ext.isFunction(Language.getLanguageMarkingId)){g=Ext.Function.bind(Language.getLanguageMarkingId,Language)}else{g=e.getLanguageMarkingIdGeneral}c=g(h,b,a,d);if(c!=""){h.setAttribute(b+DomUtils.langElementIdAttribute,c)}return c},parseFrbrMetadata:function(d){var b=DocProperties.frbr,g=new Ext.Element(d);b.work={};b.expression={};b.manifestation={};DocProperties.frbrDom=d;var a=g.down("*[class=FRBRWork] *[class=FRBRcountry]",true);if(a){b.work.nationality=a.getAttribute("value")}var c=g.down("*[class=FRBRWork] *[class=FRBRdate]",true);if(c){b.work.date=new Date(c.getAttribute("date"))}var m=g.down("*[class=FRBRWork] *[class=FRBRuri]",true);if(m){b.work.FRBRuri=m.getAttribute("value")}var e=g.down("*[class=FRBRExpression] *[class=FRBRlanguage]",true);if(e){b.expression.docLang=e.getAttribute("language")}var h=g.down("*[class=FRBRExpression] *[class=FRBRdate]",true);if(h){b.expression.date=new Date(h.getAttribute("date"))}var k=g.down("*[class=FRBRExpression] *[class=FRBRuri]",true);if(k){b.expression.FRBRuri=k.getAttribute("value")}var l=g.down("*[class=FRBRManifestation] *[class=FRBRdate]",true);if(l){b.manifestation.date=new Date(l.getAttribute("date"))}var i=g.down("*[class=FRBRManifestation] *[class=FRBRuri]",true);if(i){b.manifestation.FRBRuri=i.getAttribute("value")}this.application.fireEvent(Statics.eventsNames.frbrChanged)},getLanguagePrefix:function(){var a=this.getStore("LanguagesPlugin").getData();return a.markupMenuRules.defaults.attributePrefix},nodeGetLanguageAttribute:function(b,a){var d=this.getLanguagePrefix(),c=b.getAttribute(d+a);return{name:d+a,value:c}},saveDocument:function(b,c,d,a){var c=Ext.Object.merge(c,{requestedService:Statics.services.saveAs,file:b});Ext.Ajax.request({url:Utilities.getAjaxUrl(),params:c,scope:this,success:function(e){if(Ext.isFunction(d)){Ext.callback(d,a,[e,b])}}})},beforeLoad:function(c,s){var l=this,b=this.application,d=LoadPlugin.beforeLoad,m=new XMLSerializer(),h=l.getController("Editor"),g=c,q,k,r,a=new DOMParser(),p,o={},n=[];if(d&&!g.beforeLoaded){if(c.docText){try{k=a.parseFromString(c.docText,"application/xml");if(k.documentElement.tagName=="parsererror"||k.documentElement.querySelector("parseerror")||k.documentElement.querySelector("parsererror")){s(c);return}else{c.docDom=k}}catch(i){Ext.log({level:"error"},i);s(c);return}}q=Ext.Function.bind(d,LoadPlugin,[c]);g=q();if(g){g.beforeLoaded=true;if(g.metaResults){DocProperties.docsMeta={};Ext.each(g.metaResults,function(e,u){var t=e.docType;o[t]=o[t]+1||1;if(e.docDom){e.docDom.setAttribute(DocProperties.docIdAttribute,u)}t=(o[t]>1)?t+o[t]:t;n.push({name:t,docId:u});DocProperties.docsMeta[u]=e})}if(g.docDom){try{r=h.serialize(g.docDom.firstChild)}catch(i){r=""}c.docText=r||m.serializeToString(g.docDom)}if(g.metaDom){this.parseFrbrMetadata(g.metaDom)}}else{g=c}}s(g)},afterLoad:function(b){var c=b.docDom.querySelector("."+DocProperties.documentBaseClass);if(c&&!c.getAttribute(DocProperties.docIdAttribute)){c.setAttribute(DocProperties.docIdAttribute,0)}var a=Ext.Function.bind(LoadPlugin.afterLoad,LoadPlugin,[b,this.application]);a()},beforeSave:function(b){var a=Ext.Function.bind(SavePlugin.beforeSave,SavePlugin,[b]);a()},afterSave:function(b){var a=Ext.Function.bind(SavePlugin.afterSave,SavePlugin,[b,this.application]);a()},init:function(){var a=this;this.application.on(Statics.eventsNames.translateRequest,this.beforeTranslate,this);this.application.on(Statics.eventsNames.afterLoad,this.afterLoad,this);this.application.on(Statics.eventsNames.beforeLoad,this.beforeLoad,this);this.application.on(Statics.eventsNames.saveDocument,this.saveDocument,this);this.application.on(Statics.eventsNames.beforeSave,this.beforeSave,this);this.application.on(Statics.eventsNames.afterSave,this.afterSave,this);this.control({main:{tabchange:function(b,e,c){var d=this;Ext.defer(function(){d.application.fireEvent(Statics.eventsNames.changedEditorMode,{sidebarsHidden:e.notEditMode,markingMenu:e.markingMenu})},100)}}})}},0,0,0,0,0,0,[LIME.controller,"Language"],0));(Ext.cmd.derive("LIME.view.ProgressWindow",Ext.Window,{width:350,closable:false,resizable:false,collapsible:false,draggable:false,modal:true,items:[{xtype:"progressbar"}],initComponent:function(){this.title=Locale.strings.progressBar.title;this.callParent(arguments)}},0,["progressWindow"],["progressWindow","panel","window","component","container","box"],{progressWindow:true,panel:true,window:true,component:true,container:true,box:true},["widget.progressWindow"],0,[LIME.view,"ProgressWindow"],0));(Ext.cmd.derive("LIME.controller.ProgressWindow",Ext.app.Controller,{views:["ProgressWindow"],refs:[{selector:"progressWindow",ref:"progressWindow"}],progressStep:0.05,progressStart:function(b,a){var c=this.getProgressWindow();if(b&&Ext.isString(b)){c.setTitle(b)}if(!(a&&a.value&&a.text)){this.progressRawUpdate(0,Ext.emptyString,false)}else{this.progressRawUpdate(a.value,a.text)}c.show()},progressRawUpdate:function(b,d,a){var e=this.getProgressWindow(),c=e.down("progressbar");c.updateProgress(b,(Ext.isString(d))?d:null,a)},progressUpdate:function(b){var c=this.getProgressWindow(),a=c.down("progressbar");this.progressRawUpdate(a.value+this.progressStep,b,true)},progressEnd:function(){var b=this.getProgressWindow(),a=b.down("progressbar");b.hide()},init:function(){this.application.on(Statics.eventsNames.progressStart,this.progressStart,this);this.application.on(Statics.eventsNames.progressUpdate,this.progressUpdate,this);this.application.on(Statics.eventsNames.progressEnd,this.progressEnd,this)}},0,0,0,0,0,0,[LIME.controller,"ProgressWindow"],0));(Ext.cmd.derive("LIME.controller.PreferencesManager",Ext.app.Controller,{cached:false,userPreferences:{userFullName:null,defaultLanguage:null,defaultLocale:null,views:null,lastOpened:null},setUserPreferences:function(b,d,i){if(!b){throw"No preferences specified"}var g=this,e=this.getController("LoginManager"),a=e.getUserInfo(),c={requestedService:Statics.services.userPreferences,requestedAction:(d)?"Create_User_Preferences":"Set_User_Preferences",userName:b.username||a.username,password:b.password||a.password},h;for(pref in this.userPreferences){if(b[pref]){this.userPreferences[pref]=b[pref];if(Ext.isArray(b[pref])){b[pref]=b[pref].join(",")}c[pref]=b[pref]}else{if(Ext.isArray(this.userPreferences[pref])){c[pref]=this.userPreferences[pref].join(",")}else{c[pref]=(this.userPreferences[pref])?this.userPreferences[pref]:Ext.emptyString}}}h=Utilities.getAjaxUrl(c);if(d){Ext.Ajax.request({url:h,success:function(l){try{var k=JSON.parse(l.responseText)}catch(m){throw"Invalid JSON (Preferences)"}if(k.success!="true"){Ext.Msg.alert(Locale.strings.error,Locale.strings.noPreferences)}if(i){i(this.userPreferences)}},failure:function(k){Ext.Msg.alert(Locale.strings.error,Locale.strings.serverFailure)}})}else{Ext.Ajax.request({url:h,success:function(l){var k=JSON.parse(l.responseText);if(k.success!="true"){Ext.Msg.alert(Locale.strings.error,Locale.strings.noPreferences)}if(i){i(this.userPreferences)}},failure:function(k){Ext.Msg.alert(Locale.strings.error,Locale.strings.serverFailure)}})}},getUserPreferences:function(a,h){var d=this.getController("LoginManager"),g=this,c,b=d.getUserInfo(),e;if(!a&&!h){return g.userPreferences}if(g.cached){a({user:g.cached})}e=Utilities.getAjaxUrl({requestedService:Statics.services.userPreferences,requestedAction:"Get_User_Preferences",userName:b.username,password:b.password});Ext.Ajax.request({url:e,success:function(k){var i=JSON.parse(k.responseText);if(i.success!="true"){var l=i.msg;Ext.Msg.alert(Locale.strings.error,(Locale.strings.prefErrors[l])?Locale.strings.prefErrors[l]:Locale.strings.prefErrors.GENERIC)}if(a){g.userPreferences=i.user;c=g.userPreferences;if(c.views){c.views=c.views.view;if(!Ext.isArray(c.views)){c.views=[c.views]}}else{c.views=[]}g.cached=true;a(c)}},failure:function(i){Ext.Msg.alert(Locale.strings.error,Locale.strings.internalServerError);if(h){h(i)}}})},loadUserPreferences:function(d){var b=d,c=Locale.strings.languageCode,e=b.defaultLanguage,a=b.views;if(c!=e){this.setUserPreferences({defaultLanguage:c})}}},0,0,0,0,0,0,[LIME.controller,"PreferencesManager"],0));(Ext.cmd.derive("LIME.controller.Notification",Ext.app.Controller,{showNotification:function(a){var b=a.content,d="ux-notification-icon-information",c="ux-notification-icon-error";if(!this.nofification){this.nofification=Ext.create("widget.uxNotification",{title:Locale.strings.error,position:"tr",useXAxis:true,closeAction:"hide",autoClose:false,shadow:false,spacing:20,slideInDuration:1500,slideBackDuration:1500,slideInAnimation:"elasticIn",maxHeight:600,autoScroll:true,slideBackAnimation:"elasticIn"})}if(a.width){this.nofification.setWidth(a.width)}if(a.title){this.nofification.setTitle(a.title)}this.nofification.setIconCls((a.status)?d:c);this.nofification.update(b);this.nofification.show()},init:function(){this.application.on(Statics.eventsNames.showNotification,this.showNotification,this)}},0,0,0,0,0,0,[LIME.controller,"Notification"],0));(Ext.cmd.derive("LIME.controller.ContextMenu",Ext.app.Controller,{refs:[{ref:"contextMenu",selector:"contextMenu"},{ref:"contextMenuItems",selector:"menuitem[cls=editor]"}],menuItems:[{text:"Unmark",separator:true,icon:"resources/images/icons/delete.png",menu:{items:[{id:"unmarkThis",text:"Unmark this element"},{id:"unmarkAll",text:"Unmark this element and its children"}]}}],beforeShowFns:[],showContextMenu:function(e){var b=this,d=this.getContextMenu(),a=b.getController("Editor"),c=a.getSelectedNode();d.removeAll();Ext.each(b.menuItems,function(g){d.add(g)});Ext.each(b.beforeShowFns,function(g){try{g(d,c)}catch(h){Ext.log({level:"error"},h)}});d.showAt(e)},registerContextMenuBeforeShow:function(a){var b=this;if(Ext.isFunction(a)&&b.beforeShowFns.indexOf(a)==-1){b.beforeShowFns.push(a)}},init:function(){var c=this,b=c.getController("Editor"),a=c.getController("Marker");c.application.on(Statics.eventsNames.showContextMenu,c.showContextMenu,c);c.application.on(Statics.eventsNames.registerContextMenuBeforeShow,c.registerContextMenuBeforeShow,c);c.control({"contextMenu menuitem":{click:function(d,h){var k=d.parentMenu.getXType(),i=d.id,g=b.getSelectedNode(true);if(k!="contextMenu"){try{switch(i){case"unmarkThis":c.application.fireEvent(Statics.eventsNames.unmarkNodes,[g]);break;case"unmarkAll":c.application.fireEvent(Statics.eventsNames.unmarkNodes,[g],true);break}}catch(h){Ext.log({level:"error"},h)}}else{}}}})}},0,0,0,0,0,0,[LIME.controller,"ContextMenu"],0));(Ext.cmd.derive("LIME.controller.ContextInfoManager",Ext.app.Controller,{views:["LIME.view.main.ContextPanel","LIME.view.main.editor.Path"],refs:[{selector:"contextPanel",ref:"contextPanel"},{selector:'mainEditorPath tool[type="up"]',ref:"cxtPanelUpDownTool"}],tabGroups:{},enabledGroup:null,openContextPanel:function(a){var c=this.getCxtPanelUpDownTool(),b=this.getContextPanel(),g,e,d=this.getGroupCmp();if(d){g=d.getActiveTab();e=d.down("panel")}if(a!="lastHeight"){a=(Ext.isNumber(a))?a:b.maxHeight;b.setHeight(a)}b.show();c.setType("down");if(g){d.setActiveTab(g);g.fireEvent("activate",g)}else{if(e){d.setActiveTab(e);e.fireEvent("activate",e)}}},closeContextPanel:function(){var b=this.getCxtPanelUpDownTool(),a=this.getContextPanel();a.hide();b.setType("up")},openTabGroup:function(c){var b=this,a=b.getContextPanel();c=c||b.enabledGroup||Ext.Object.getKeys(b.tabGroups)[0];if(b.enabledGroup&&b.enabledGroup!=c){b.removeElementsFromGroup(b.enabledGroup)}if(c&&b.tabGroups[c]){b.enabledGroup=c;if(!b.getGroupCmp(c)){a.add(b.tabGroups[c])}b.tabGroups[c].show()}},openCloseContextPanel:function(c,e,a){var d=this,b=d.getContextPanel();c=(Ext.isBoolean(c))?c:((b.isVisible())?false:true);if(c){d.openTabGroup(e);d.openContextPanel(a)}else{d.closeContextPanel()}},addTab:function(g){var e=this,a=e.tabGroups[g.groupName],c=this.getContextPanel(),d,b;if(!e.tabGroups[g.groupName]){a=Ext.widget("tabpanel",{name:g.groupName,border:0});e.tabGroups[g.groupName]=a}d=a.down("*[name='"+g.name+"']");if(d){b=a.items.indexOf(d);a.remove(d);a.insert(b,g)}else{a.add(g)}},getGroupCmp:function(b){b=b||this.enabledGroup;var a=this.getContextPanel();return a.down("*[name='"+b+"']")},removeElementsFromGroup:function(e,c){var d=this,a=d.getContextPanel(),b=d.getGroupCmp(e);if(b){b.hide();if(c){a.remove(b);delete d.tabGroups[e]}}},removeGroup:function(b){var a=this;a.removeElementsFromGroup(b,true);a.closeContextPanel()},init:function(){var a=this;a.application.on(Statics.eventsNames.openCloseContextPanel,a.openCloseContextPanel,a);a.application.on(Statics.eventsNames.removeGroupContextPanel,a.removeGroup,a);a.application.on(Statics.eventsNames.addContextPanelTab,a.addTab,a);a.control({mainEditorPath:{afterrender:function(b){b.add({xtype:"tool",type:"up",callback:function(){a.openCloseContextPanel(null,null,"lastHeight")}})}},contextPanel:{afterrender:function(b){}}})}},0,0,0,0,0,0,[LIME.controller,"ContextInfoManager"],0));(Ext.cmd.derive("LIME.view.widgets.MarkedElementWidget",Ext.form.Panel,{collapsible:true,frame:true,fieldDefaults:{msgTarget:"side",labelWidth:30},defaults:{anchor:"100%"}},0,["markedElementWidget"],["panel","markedElementWidget","form","component","container","box"],{panel:true,markedElementWidget:true,form:true,component:true,container:true,box:true},["widget.markedElementWidget"],0,[LIME.view.widgets,"MarkedElementWidget"],0));(Ext.cmd.derive("LIME.controller.WidgetManager",Ext.app.Controller,{views:["widgets.MarkedElementWidget"],refs:[{selector:"contextPanel",ref:"contextPanel"},{selector:"markedElementWidget",ref:"markedElementWidget"}],tabGroupName:"widgetManager",createWidget:function(c,a){var b=Ext.widget("markedElementWidget",{items:a.list,id:c,width:"40%",title:a.title,attributes:a.attributes});return b},onNodeFocused:function(c){var e=DocProperties.getNodeWidget(c),a=DomUtils.getElementId(c),b,d;if(e&&a){if(!this.tab.getChildByElement(a)){this.tab.removeAll(true);d=this.createWidget(a,e);this.setWidgetContent(d);this.tab.add(d)}b=(e.list.length*30)+70;this.application.fireEvent(Statics.eventsNames.openCloseContextPanel,true,this.tabGroupName,b)}else{this.application.fireEvent(Statics.eventsNames.openCloseContextPanel,false,this.tabGroupName)}},addTab:function(){var a=Ext.widget("panel",{title:"Widgets",padding:5,border:0,name:this.tabGroupName,groupName:this.tabGroupName});this.tab=a;this.application.fireEvent(Statics.eventsNames.addContextPanelTab,a);return a},setWidgetContent:function(c){var b=this,d=DocProperties.getMarkedElement(c.id),a=c.query("textfield");Ext.each(a,function(g){var e=d.htmlElement.getAttribute(g.name);if(e){b.setWidgetFieldValue(c,g,e)}});if(c.attributes){Ext.Object.each(c.attributes,function(e,g){var n,p;if(g.tpl&&g.separator){var k=new Ext.Template(g.tpl),m=k.html.match(k.re);n=d.htmlElement.getAttribute(g.name);if(Ext.String.startsWith(n,g.separator)){n=n.substring(g.separator.length)}if(n){p=n.split(g.separator);for(var h=0;h/i,blockRegex:/^(address|blockquote|body|center|dir|div|dlfieldset|form|h[1-6]|hr|isindex|menu|noframes|noscript|ol|pre|p|table|ul|dd|dt|frameset|li|tbody|td|tfoot|th|thead|tr|html)$/i,vowelsRegex:/([a, e, i, o, u]|[0-9]+)/gi,tagRegex:/<(.|\n)*?>/g,nodeType:{ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},config:{breakingElementHtml:""},appendChildren:function(e,d,c){var a=e;d=d.nextSibling;var b;do{b=a.nextSibling;c.appendChild(a);a=b}while(a!=d)},getTempClassesQuery:function(){return"."+this.tempSelectionClass+", ."+this.toRemoveClass+", ."+this.tempSelectionClass+", ."+this.breakingElementClass},getSiblings:function(c,a,g){if(!c||!a){return null}var b=c;var d=[];while(b!=a.nextSibling){var e=(Utilities.toType(g)=="regexp")?g.test(b.nodeName):b.nodeName.toLowerCase()==g;if(!g||e){d.push(b)}b=b.nextSibling}return d},getSiblingsFromNode:function(b){var a,c=[];if(b){a=b.nextSibling;while(a){c.push(a);a=a.nextSibling}}return c},moveChildrenNodes:function(c,b,a){if(!a){while(b.firstChild){b.removeChild(b.firstChild)}}while(c.firstChild){b.appendChild(c.firstChild)}},getNodeByName:function(a,b){var c=a;while(c.nodeName.toLowerCase()!="body"){var d=c.nodeName.toLowerCase();if((Utilities.toType(b)=="regexp")?b.test(d):(d==b.toLowerCase())){return c}c=c.parentNode}return null},isDescendant:function(a,c){var b=c.parentNode;while(b!=null){if(b==a){return true}b=b.parentNode}return false},nestingLevel:function(a){var b=1;while(a!=null){a=a.parentNode;b++}return b},xmlToJson:function(a){var d;if(a&&a.nodeType==DomUtils.nodeType.ELEMENT){d={};d.el=a;if(a&&a.hasChildNodes()){d.children=[];for(var b=0;b/gm,"")}if(d.length>o){d=d.substr(0,o)+"..."}}return d},getFirstMarkedAncestor:function(a){if(!a){return null}if(a&&a.nodeType==DomUtils.nodeType.ELEMENT&&a.getAttribute(DomUtils.elementIdAttribute)!=null){return a}a=(a.parentNode)?a.parentNode:null;while(a&&a.nodeType==DomUtils.nodeType.ELEMENT){if(a.getAttribute(DomUtils.elementIdAttribute)){return a}a=a.parentNode}return null},getMarkedChildrenId:function(b){var a=[];Ext.each(Ext.query("["+DomUtils.elementIdAttribute+"]",b),function(d){var c=d.getAttribute(DomUtils.elementIdAttribute);a.push(c)});return a},getButtonIdByElementId:function(a){if(!a){return null}return a.split(DomUtils.elementIdSeparator)[0]},getButtonByElement:function(c){var b,a;if(c&&c.getAttribute){b=c.getAttribute(DomUtils.elementIdAttribute);a=DocProperties.getMarkedElement(b);if(b&&a){return a.button}}return null},getElementId:function(c){var b,a;if(c&&c.getAttribute){b=c.getAttribute(DomUtils.elementIdAttribute);return b}return null},getElementNameByNode:function(b){var a=DomUtils.getButtonByElement(b);if(a&&a.waweConfig&&a.waweConfig.name){return a.waweConfig.name}return null},findNodeByText:function(d,e,b){containsText=function(g){if(b&&Ext.Array.indexOf(b,g)!=-1){return NodeFilter.FILTER_REJECT}else{if(g.innerHTML.indexOf(d)!=-1){return NodeFilter.FILTER_ACCEPT}else{return NodeFilter.FILTER_SKIP}}};var a=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,containsText,false);var c;while(a.nextNode()){c=a.currentNode}return c},findTextNodes:function(d,g){containsText=function(e){if(e.textContent.indexOf(d)!=-1){return NodeFilter.FILTER_ACCEPT}else{return NodeFilter.FILTER_SKIP}};var a=g.ownerDocument.createTreeWalker(g,NodeFilter.SHOW_TEXT,containsText,false);var b=[];try{while(a.nextNode()){b.push(a.currentNode)}}catch(c){Ext.log({level:"error"},c)}return b},getTextOfNodeClassic:function(b){var c="";for(var a=0;a","i");return b.test(a)},filterMarkedNodes:function(a){return Ext.Array.toArray(a).filter(function(b){return b.getAttribute(DomUtils.elementIdAttribute)})},isBreakingNode:function(b){var a=b.getAttribute("class");if(a&&a.indexOf(DomUtils.breakingElementClass)!=-1){return true}return false},isNodeFocused:function(b){var a=b.getAttribute(DocProperties.elementFocusedCls);if(a&&a==="true"){return true}return false},insertAfter:function(a,b){if(b.nextElementSibling){b.parentNode.insertBefore(a,b.nextElementSibling)}else{b.parentNode.appendChild(a)}},getLastFromQuery:function(b,c){var a=b.querySelectorAll(c);if(a&&a.length){return a[a.length-1]}return null},unwrapNode:function(a){var b;if(a.parentNode){b=a.firstChild;while(b){nextSibling=b.nextSibling;a.parentNode.insertBefore(b,a);b=nextSibling}a.parentNode.removeChild(a)}},isNodeSiblingOfNode:function(b,a){if(b&&a){var c=b.nextSibling;while(c&&c!=a){c=c.nextSibling}return(c==a)}return false},getAscendantNodes:function(c){var a=[],b=c.parentNode;while(b&&b.nodeName.toLowerCase()!="body"){a.push(b);b=b.parentNode}return a},getCommonAscendant:function(b,a){var d=Ext.Array.toArray(this.getAscendantNodes(b)),c=Ext.Array.toArray(this.getAscendantNodes(a)),g,e;ascendant=d.filter(function(h){return(c.indexOf(h)!=-1)})[0];g=d.indexOf(ascendant);e=c.indexOf(ascendant);g=(g!=0)?g-1:0;e=(e!=0)?e-1:0;return{ascendant:ascendant,firstParent:d[g],secondParent:c[e]}},constructor:function(){this.setBreakingElementHtml(' ')}},1,0,0,0,0,0,[LIME,"DomUtils",0,"DomUtils"],0));(Ext.cmd.derive("LIME.Interpreters",Ext.Base,{singleton:true,alternateClassName:"Interpreters",flags:{content:"&content;"},parsePattern:function(k,g,a){var c=Ext.clone(g);var h=a.pattern;if(!c){return a}if(a.remove){for(var d in a.remove){var e=a.remove[d];if(e.length>0){Ext.each(e,function(i){delete c[d][i]})}else{delete c[d]}}}var b=this.mergePattern(c,a);b.wrapperClass=this.parseClass(b.wrapperClass,k,h);return b},wrappingRulesHandlerOnTranslate:function(c){var d=this,a=c.getAttribute(DomUtils.elementIdAttribute);button=(DocProperties.markedElements[a])?DocProperties.markedElements[a].button:null,rules=(button)?button.waweConfig.pattern.wrapperRules:[],prefix=(button)?(button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix||""):"";var b={headingElement:function(n,k,h){if(n.conditions.parentClassContains){var l=new Ext.Element(k),p=l.parent("."+n.conditions.parentClassContains),o=l.parent(".content"),g=p.down(".content");if(p&&o&&g&&g==o){l.insertBefore(o)}else{if(p&&!g){if(!d.headings){d.headings={};d.headings.list=[];p.insertFirst(l)}else{var i,m=p.query(d.headings.cls);Ext.each(m,function(q){if(q.parentNode==p.dom){i=q}},this);if(!i){p.insertFirst(l)}else{l.insertAfter(i)}}if(!Ext.Array.contains(d.headings.list,h.name)){d.headings.list.push(h.name);if(d.headings.list.length==1){d.headings.cls="."+h.name}else{d.headings.cls+=", ."+h.name}}}}}},applyAttributes:function(l,i){if(!l.values){Ext.log({level:"error"},'Couldn\'t apply the rule "applyAttributes". No values specified.')}var g=l.values;for(attribute in g){var k=g[attribute];var h=button.waweConfig.rules[Utilities.buttonFieldDefault].attributePrefix+attribute;i.setAttribute(h,k)}},addWrapperElement:function(o,h){var i=Interpreters.getButtonConfig(o.type),k=new Ext.Element(h);if(o.type&&o.type=="mod"){var p=k.parent(".mod"),g=i.rules[Utilities.buttonFieldDefault].attributePrefix||"",q=k.parent(".content");if(!p&&q){var t=Interpreters.parseElement(i.pattern.wrapperElement,{content:""});var l=Ext.DomHelper.insertHtml("beforeBegin",q.dom,t),r=new Ext.Element(l);while(q.dom.firstChild){var m=q.dom.removeChild(q.dom.firstChild);l.appendChild(m)}l.setAttribute("class",i.pattern.wrapperClass);l.setAttribute(g+DomUtils.langElementIdAttribute,"mod1");q.appendChild(l)}}else{if(o.type&&o.type=="content"){var q=k.child(".content"),s=k.child(".hcontainer");if(!q&&!s){var t=Interpreters.parseElement(i.pattern.wrapperElement,{content:""}),n=Ext.DomHelper.createDom({tag:"div",html:t});if(n.firstChild){d.contentCounter=(d.contentCounter)?d.contentCounter+1:1;n.firstChild.setAttribute("class",i.pattern.wrapperClass);while(h.hasChildNodes()){n.firstChild.appendChild(h.firstChild)}h.appendChild(n.firstChild)}}}}}};for(rule in rules){var e=b[rule];if(e){e(rules[rule],c,button.waweConfig)}}},getButtonConfig:function(a){var l=Ext.getStore("LanguagesPlugin").getData(),e=l.markupMenu[a],b=l.patterns,k=l.markupMenuRules,h=k.elements[a]||{},i=(e.label)?e.label:a,d=null,g=null,c=null;if(!h[Utilities.buttonFieldDefault]){h[Utilities.buttonFieldDefault]=k.defaults}d=(h)?Interpreters.parseWidget(h):null;if(d){DocProperties.setElementWidget(a,d)}g=Interpreters.parsePattern(a,b[e.pattern],e);c={markupConfig:e,pattern:g,rules:h,name:a,label:i};return c},mergePattern:function(h,b){var d=Utilities.mergeJson(Utilities.cssToJson(h.buttonStyle),Utilities.cssToJson(b.buttonStyle));b.buttonStyle=Utilities.jsonToCss(d);if(!Ext.isObject(h.wrapperStyle)){h.wrapperStyle={"this":h.wrapperStyle}}if(!Ext.isObject(b.wrapperStyle)){b.wrapperStyle={"this":b.wrapperStyle}}var k={};var g={};for(var e in b.wrapperStyle){var a=b.wrapperStyle[e];if(!Ext.isObject(a)){k[e]=Utilities.mergeJson(Utilities.cssToJson(h.wrapperStyle[e]),Utilities.cssToJson(a));g[e]=Utilities.jsonToCss(k[e])}else{k[e]={};g[e]={};for(var c in a){k[e][c]={};g[e][c]={};if(h.wrapperStyle[e]&&h.wrapperStyle[e][c]){k[e][c]=Utilities.mergeJson(Utilities.cssToJson(h.wrapperStyle[e][c]),Utilities.cssToJson(a[c]))}else{k[e][c]=Utilities.cssToJson(a[c])}g[e][c]=Utilities.jsonToCss(k[e][c])}}}b.wrapperStyle=g;h.styleObj=d;h.wrapperStyleObj=k;return Utilities.mergeJson(h,b)},parseElement:function(c,b){var a=c.wrapperElement;var d=c.replace(this.flags.content,b.content);return d},parseClass:function(a,d,c){var b=a;Ext.each(a.split(" "),function(h){var g=Utilities.wrapperClassPatterns[h];if(g){var e=g({patternName:c,elName:d});b=b.replace(h,e)}});return b},parseWidget:function(h){var e=h.askFor,m=h.attributes||{};if(!e){return null}var g={list:[]};var a=h[Utilities.buttonFieldDefault].attributePrefix||"";var k="";var n=Ext.Object.getSize(e);for(var c in e){var d=e[c];var b={};b.xtype=(Statics.widgetTypePatterns[d.type])?Statics.widgetTypePatterns[d.type]:"textfield";if(d.type=="list"){var l=Ext.create("Ext.data.Store",{fields:["type"],data:d.values.map(function(i){return{type:i}})});b.store=l;b.queryMode="local";b.displayField="type";b.valueField="type"}if(n>1){b.emptyText=d.label;if(k!=""){k+=", "}k+=d.label}else{k=d.label}if(d.insert&&d.insert.attribute){b.name=a+d.insert.attribute.name;b.origName=d.insert.attribute.name;m[b.origName]={tpl:"{"+b.origName+"}"}}else{b.origName=c;b.name=c}g.list.push(b)}for(c in m){m[c].name=a+c}g.title=k;g.attributes=m;return g}},0,0,0,0,0,0,[LIME,"Interpreters",0,"Interpreters"],0));(Ext.cmd.derive("LIME.Statics",Ext.Base,{singleton:true,alternateClassName:"Statics",debugUrl:"/wawe-debug/",globalPatternsFile:"config/Patterns.json",editorStartContentUrl:"config/examples/editorStartContent-"+Locale.getLang()+".html",metadata:{containerClass:"metadata",frbrClass:"frbr",internalClass:"internalMetadata"},widgetTypePatterns:{text:"textfield",date:"datefield",number:"numberfield",doctype:"docTypeSelector",nationality:"nationalitySelector",list:"combo"},treeIcon:{container:"resources/images/icons/wawe_container_icon.png",hcontainer:"resources/images/icons/wawe_hcontainer_icon.png",inline:"resources/images/icons/wawe_inline_icon.png"},defaultContentLang:"esp",extraInfoLimit:13,eventsNames:{translateRequest:"translateRequest",progressStart:"progressStart",progressUpdate:"progressUpdate",progressEnd:"progressEnd",loadDocument:"loadDocument",beforeSave:"beforeSave",afterSave:"afterSave",saveDocument:"saveDocument",frbrChanged:"frbrChanged",beforeLoad:"beforeLoad",afterLoad:"afterLoad",documentLoaded:"documentLoaded",disableEditing:"disableEditing",enableEditing:"enableEditing",showNotification:"showNotification",changedEditorMode:"changedEditorMode",languageLoaded:"languageLoaded",selectDocument:"selectDocument",beforeCreation:"beforeCreation",nodeChangedExternally:"nodeChangedExternally",openDocument:"openDocument",addMarkingGroup:"addMarkingGroup",addMarkingButton:"addMarkingButton",setCustomMarkingHandler:"setCustomMarkingHandler",editorDomNodeFocused:"editorDomNodeFocused",nodeFocusedExternally:"nodeFocusedExternally",unmarkNodes:"unmarkNodes",unmarkedNodes:"unmarkedNodes",nodeAttributesChanged:"nodeAttributesChanged",showContextMenu:"showContextMenu",registerContextMenuBeforeShow:"registerContextMenuBeforeShow",openCloseContextPanel:"openCloseContextPanel",addContextPanelTab:"addContextPanelTab",removeGroupContextPanel:"removeGroupContextPanel"},services:{htmlToPdf:"HTML_TO_PDF",pdfExport:"HTML_TO_PDF_DOWNLOAD",xmlExport:"AKN_TO_XML_DOWNLOAD",htmlExport:"AKN_TO_HTML_DOWNLOAD",aknToEpub:"AKN_TO_EPUB",aknToPdf:"AKN_TO_PDF",aknToFile:"AKN_TO_FILE",xsltTrasform:"XSLT_TRANSFORM",getFileContent:"GET_FILE_CONTENT",getFileMetadata:"GET_FILE_METADATA",saveAs:"SAVE_FILE",listFiles:"LIST_FILES",fileToHtml:"FILE_TO_HTML",userManager:"USER_MANAGER",userPreferences:"USER_PREFERENCES",createDocumentCollection:"CREATE_DOCUMENT_COLLECTION",filterUrls:"FILTER_URLS"}},0,0,0,0,0,0,[LIME,"Statics",0,"Statics"],0));(Ext.cmd.derive("LIME.Utilities",Ext.Base,{singleton:true,alternateClassName:"Utilities",buttonFieldDefault:"behavior",buttonIdSeparator:"-",wrapperClassPatterns:{patternName:function(a){return(a.patternName)},elementName:function(a){return(a.elName)}},ajaxUrls:{baseUrl:"php/Services.php"},getAjaxUrl:function(a){var b=this.ajaxUrls.baseUrl+"?";for(param in a){b=b+param+"="+encodeURI(a[param])+"&"}b=b.substring(0,b.length-1);return b},toType:function(a){return({}).toString.call(a).match(/\s([a-zA-Z]+)/)[1].toLowerCase()},mergeJson:function(e,d,g){if(!e){return d}if(!d){return e}var a=Ext.clone(e);if(g){var c=g(a,d);a=c.obj1;d=c.obj2}if(Ext.isObject(d)){for(var b in d){if(a[b]){a[b]=this.mergeJson(a[b],d[b],g)}else{a[b]=d[b]}}}else{a=d}return a},beforeMerge:function(c,b){if(Ext.isObject(b)&&!Ext.isObject(c)){var a=c;c={};c["this"]=a}return{obj1:c,obj2:b}},toISOString:function(b){function a(c){return c<10?"0"+c:c}if(b.getFullYear){return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+"T"+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())+"Z"}return""},cssToJson:function(c){var k={};if(c&&c!=""){var e=c.split(";");for(var b in e){var d=e[b];if(d!=""){var h=d.indexOf(":");var a=Ext.String.trim(d.substring(0,h));var g=Ext.String.trim(d.substring(h+1));k[a]=g}}}return k},jsonToCss:function(a){return Ext.encode(a).replace(/}/g,"").replace(/{/g,"").replace(/"/g,"").replace(/,/g,";")},arrayIndexOfContains:function(c,b){b=b.toLowerCase();for(var a=0;a=0){b.push(d)}return b},removeNodeByQuery:function(a,c){var b=a.querySelector(c);if(b&&b.parentNode){b.parentNode.removeChild(b)}return b},replaceChildByQuery:function(b,d,a){var c=b.querySelector(d);if(c&&c.parentNode){c.parentNode.replaceChild(a,c)}return c},createWidget:function(b,a){var c;try{c=Ext.widget(b,a)}catch(d){}return c},pushOrValue:function(c,b){var a=c;if(Ext.isArray(c)){a.push(b)}else{if(Ext.isEmpty(c)){a=b}else{a=[c];a.push(b)}}return a},getLastItem:function(a){return a[a.length-1]},filterUrls:function(b,d,g,a,c){var e={requestedService:Statics.services.filterUrls,urls:Ext.encode(b)};if(d){e=Ext.merge(e,{content:true})}Ext.Ajax.request({url:Utilities.getAjaxUrl(),method:"POST",params:e,scope:this,success:function(h,k){var i=Ext.decode(h.responseText,true);if(Ext.isFunction(g)&&i){Ext.bind(g,c)(i)}else{if(Ext.isFunction(a)){Ext.bind(a,c)(b)}}},failure:function(){if(Ext.isFunction(a)){Ext.bind(a,c)(b)}}})}},0,0,0,0,0,0,[LIME,"Utilities",0,"Utilities"],0));(Ext.cmd.derive("Ext.ux.DownloadManager",Ext.AbstractPlugin,{eventActivate:"downloadPluginActivate",init:function(){this.form=this.cmp.add(Ext.widget("form",{hidden:true}));this.cmp.on(this.eventActivate,this.download,this);this.callParent(arguments)},download:function(a,b){this.form.getForm().doAction("standardsubmit",{url:a,standardSubmit:true,method:"POST",params:b})}},0,0,0,0,["plugin.downloadmanager"],0,[Ext.ux,"DownloadManager"],0));(Ext.cmd.derive("LIME.view.DownloadManager",Ext.Panel,{eventActivate:"activateDownload",hidden:true,initComponent:function(){this.plugins=[{ptype:"downloadmanager",pluginId:"downloadmanagerplugin",eventActivate:this.eventActivate}];this.callParent(arguments)}},0,["downloadManager"],["panel","component","container","downloadManager","box"],{panel:true,component:true,container:true,downloadManager:true,box:true},["widget.downloadManager"],0,[LIME.view,"DownloadManager"],0));(Ext.cmd.derive("LIME.view.Viewport",Ext.container.Viewport,{style:{background:"#FFFFFF"},layout:"border",commonItems:[{xtype:"progressWindow"}],loginItems:[{xtype:"text",width:300,html:'
',height:150},{xtype:"login"}],markingMenu:{xtype:"markingMenu",cls:"markingMenuContainer",region:"east",width:"22%",collapsible:true,expandable:true,resizable:true,margin:2,autoScroll:true},editorItems:[{xtype:"mainToolbar",region:"north",width:"100%",margin:2},{xtype:"main",region:"center",expandable:true,resizable:true,margin:2},{xtype:"explorer",region:"west",expandable:true,resizable:true,width:"15%",autoScroll:true,margin:2},{xtype:"contextMenu"},{xtype:"downloadManager"}]},0,["appViewport"],["viewport","component","appViewport","container","box"],{viewport:true,component:true,appViewport:true,container:true,box:true},["widget.appViewport"],0,[LIME.view,"Viewport"],0));(Ext.cmd.derive("Ext.ux.window.Notification",Ext.window.Window,{cls:"ux-notification-window",autoClose:true,autoHeight:true,plain:false,draggable:false,shadow:false,focus:Ext.emptyFn,manager:null,useXAxis:false,position:"br",spacing:6,paddingX:30,paddingY:10,slideInAnimation:"easeIn",slideBackAnimation:"bounceOut",slideInDuration:1500,slideBackDuration:1000,hideDuration:500,autoCloseDelay:7000,stickOnClick:true,stickWhileHover:true,isHiding:false,isFading:false,destroyAfterHide:false,closeOnMouseOut:false,xPos:0,yPos:0,statics:{defaultManager:{el:null}},initComponent:function(){var a=this;if(Ext.isDefined(a.corner)){a.position=a.corner}if(Ext.isDefined(a.slideDownAnimation)){a.slideBackAnimation=a.slideDownAnimation}if(Ext.isDefined(a.autoDestroyDelay)){a.autoCloseDelay=a.autoDestroyDelay}if(Ext.isDefined(a.autoHideDelay)){a.autoCloseDelay=a.autoHideDelay}if(Ext.isDefined(a.autoHide)){a.autoClose=a.autoHide}if(Ext.isDefined(a.slideInDelay)){a.slideInDuration=a.slideInDelay}if(Ext.isDefined(a.slideDownDelay)){a.slideBackDuration=a.slideDownDelay}if(Ext.isDefined(a.fadeDelay)){a.hideDuration=a.fadeDelay}a.position=a.position.replace(/c/,"");a.updateAlignment(a.position);a.setManager(a.manager);a.callParent(arguments)},onRender:function(){var a=this;a.callParent(arguments);a.el.hover(function(){a.mouseIsOver=true},function(){a.mouseIsOver=false;if(a.closeOnMouseOut){a.closeOnMouseOut=false;a.close()}},a)},updateAlignment:function(a){var b=this;switch(a){case"br":b.paddingFactorX=-1;b.paddingFactorY=-1;b.siblingAlignment="br-br";if(b.useXAxis){b.managerAlignment="bl-br"}else{b.managerAlignment="tr-br"}break;case"bl":b.paddingFactorX=1;b.paddingFactorY=-1;b.siblingAlignment="bl-bl";if(b.useXAxis){b.managerAlignment="br-bl"}else{b.managerAlignment="tl-bl"}break;case"tr":b.paddingFactorX=-1;b.paddingFactorY=1;b.siblingAlignment="tr-tr";if(b.useXAxis){b.managerAlignment="tl-tr"}else{b.managerAlignment="br-tr"}break;case"tl":b.paddingFactorX=1;b.paddingFactorY=1;b.siblingAlignment="tl-tl";if(b.useXAxis){b.managerAlignment="tr-tl"}else{b.managerAlignment="bl-tl"}break;case"b":b.paddingFactorX=0;b.paddingFactorY=-1;b.siblingAlignment="b-b";b.useXAxis=0;b.managerAlignment="t-b";break;case"t":b.paddingFactorX=0;b.paddingFactorY=1;b.siblingAlignment="t-t";b.useXAxis=0;b.managerAlignment="b-t";break;case"l":b.paddingFactorX=1;b.paddingFactorY=0;b.siblingAlignment="l-l";b.useXAxis=1;b.managerAlignment="r-l";break;case"r":b.paddingFactorX=-1;b.paddingFactorY=0;b.siblingAlignment="r-r";b.useXAxis=1;b.managerAlignment="l-r";break}},getXposAlignedToManager:function(){var a=this;var b=0;if(a.manager&&a.manager.el&&a.manager.el.dom){if(!a.useXAxis){return a.el.getLeft()}else{if(a.position=="br"||a.position=="tr"||a.position=="r"){b+=a.manager.el.getAnchorXY("r")[0];b-=(a.el.getWidth()+a.paddingX)}else{b+=a.manager.el.getAnchorXY("l")[0];b+=a.paddingX}}}return b},getYposAlignedToManager:function(){var b=this;var a=0;if(b.manager&&b.manager.el&&b.manager.el.dom){if(b.useXAxis){return b.el.getTop()}else{if(b.position=="br"||b.position=="bl"||b.position=="b"){a+=b.manager.el.getAnchorXY("b")[1];a-=(b.el.getHeight()+b.paddingY)}else{a+=b.manager.el.getAnchorXY("t")[1];a+=b.paddingY}}}return a},getXposAlignedToSibling:function(a){var b=this;if(b.useXAxis){if(b.position=="tl"||b.position=="bl"||b.position=="l"){return(a.xPos+a.el.getWidth()+a.spacing)}else{return(a.xPos-b.el.getWidth()-b.spacing)}}else{return b.el.getLeft()}},getYposAlignedToSibling:function(a){var b=this;if(b.useXAxis){return b.el.getTop()}else{if(b.position=="tr"||b.position=="tl"||b.position=="t"){return(a.yPos+a.el.getHeight()+a.spacing)}else{return(a.yPos-b.el.getHeight()-a.spacing)}}},getNotifications:function(b){var a=this;if(!a.manager.notifications[b]){a.manager.notifications[b]=[]}return a.manager.notifications[b]},setManager:function(a){var b=this;b.manager=a;if(typeof b.manager=="string"){b.manager=Ext.getCmp(b.manager)}if(!b.manager){b.manager=b.statics().defaultManager;if(!b.manager.el){b.manager.el=Ext.getBody()}}if(typeof b.manager.notifications=="undefined"){b.manager.notifications={}}},beforeShow:function(){var a=this;if(a.stickOnClick){if(a.body&&a.body.dom){Ext.fly(a.body.dom).on("click",function(){a.cancelAutoClose();a.addCls("notification-fixed")},a)}}if(a.autoClose){a.task=new Ext.util.DelayedTask(a.doAutoClose,a);a.task.delay(a.autoCloseDelay)}a.el.setX(-10000);a.el.setOpacity(1)},afterShow:function(){var b=this;b.callParent(arguments);var a=b.getNotifications(b.managerAlignment);if(a.length){b.el.alignTo(a[a.length-1].el,b.siblingAlignment,[0,0]);b.xPos=b.getXposAlignedToSibling(a[a.length-1]);b.yPos=b.getYposAlignedToSibling(a[a.length-1])}else{b.el.alignTo(b.manager.el,b.managerAlignment,[(b.paddingX*b.paddingFactorX),(b.paddingY*b.paddingFactorY)],false);b.xPos=b.getXposAlignedToManager();b.yPos=b.getYposAlignedToManager()}Ext.Array.include(a,b);b.el.animate({from:{x:b.el.getX(),y:b.el.getY()},to:{x:b.xPos,y:b.yPos,opacity:1},easing:b.slideInAnimation,duration:b.slideInDuration,dynamic:true})},slideBack:function(){var c=this;var b=c.getNotifications(c.managerAlignment);var a=Ext.Array.indexOf(b,c);if(!c.isHiding&&c.el&&c.manager&&c.manager.el&&c.manager.el.dom&&c.manager.el.isVisible()){if(a){c.xPos=c.getXposAlignedToSibling(b[a-1]);c.yPos=c.getYposAlignedToSibling(b[a-1])}else{c.xPos=c.getXposAlignedToManager();c.yPos=c.getYposAlignedToManager()}c.stopAnimation();c.el.animate({to:{x:c.xPos,y:c.yPos},easing:c.slideBackAnimation,duration:c.slideBackDuration,dynamic:true})}},cancelAutoClose:function(){var a=this;if(a.autoClose){a.task.cancel()}},doAutoClose:function(){var a=this;if(!(a.stickWhileHover&&a.mouseIsOver)){a.close()}else{a.closeOnMouseOut=true}},removeFromManager:function(){var c=this;if(c.manager){var b=c.getNotifications(c.managerAlignment);var a=Ext.Array.indexOf(b,c);if(a!=-1){Ext.Array.erase(b,a,1);for(;a','
',{disableFormats:true}],componentLayout:"codemirror",editorWrapCls:Ext.baseCSSPrefix+"html-editor-wrap",maskOnDisable:true,afterBodyEl:"",mode:"text/plain",showModes:true,showAutoIndent:true,showLineNumbers:true,enableMatchBrackets:true,enableElectricChars:false,enableIndentWithTabs:true,enableSmartIndent:true,enableLineWrapping:false,enableLineNumbers:true,enableGutter:true,enableFixedGutter:false,firstLineNumber:1,readOnly:false,pollInterval:100,indentUnit:4,tabSize:4,theme:"default",pathModes:"lib/codemirror/mode",pathExtensions:"lib/codemirror/util",listModes:[{text:"PHP",mime:"text/x-php"},{text:"JSON",mime:"application/json"},{text:"Javascript",mime:"text/javascript"},{text:"HTML mixed",mime:"text/html"},{text:"CSS",mime:"text/css"},{text:"Plain text",mime:"text/plain"}],modes:[{mime:["text/plain"],dependencies:[]},{mime:["application/x-httpd-php","text/x-php"],dependencies:["xml/xml.js","javascript/javascript.js","css/css.js","clike/clike.js","php/php.js"]},{mime:["text/javascript","application/json"],dependencies:["javascript/javascript.js"]},{mime:["text/html"],dependencies:["xml/xml.js","javascript/javascript.js","css/css.js","htmlmixed/htmlmixed.js"]},{mime:["text/css"],dependencies:["css/css.js"]}],extensions:{format:{dependencies:["formatting.js"]}},scriptsLoaded:[],lastMode:"",initComponent:function(){var a=this;a.addEvents("initialize","activate","deactivate","change","modechanged","cursoractivity","gutterclick","scroll","highlightcomplete","update","keyevent");a.callParent(arguments);a.createToolbar(a);a.initLabelable();a.initField();a.on("resize",function(){if(a.editor){a.editor.refresh()}},a)},getMaskTarget:function(){return this.bodyEl},getSubTplData:function(){var a=Ext.baseCSSPrefix;return{$comp:this,cmpId:this.id,id:this.getInputId(),toolbarWrapCls:a+"html-editor-tb",textareaCls:a+"hidden",editorCls:a+"codemirror",editorName:Ext.id(),size:"height:100px;width:100%"}},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},finishRenderChildren:function(){this.callParent();this.toolbar.finishRender()},onRender:function(){var a=this;a.callParent(arguments);a.inputEl=a.editorEl;a.disableItems(true);a.initEditor();a.rendered=true},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){this.beforeSubTpl='
'+Ext.DomHelper.markup(this.toolbar.getRenderTree());return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},initEditor:function(){var c=this,d="text/plain";var b=c.getMime(c.mode);if(b){d=c.getMimeMode(c.mode);if(!d){d="text/plain"}}c.editor=CodeMirror(c.editorEl,{matchBrackets:c.enableMatchBrackets,electricChars:c.enableElectricChars,autoClearEmptyLines:true,value:c.rawValue,indentUnit:c.indentUnit,smartIndent:c.enableSmartIndent,indentWithTabs:c.indentWithTabs,pollInterval:c.pollInterval,lineNumbers:c.enableLineNumbers,lineWrapping:c.enableLineWrapping,firstLineNumber:c.firstLineNumber,tabSize:c.tabSize,gutter:c.enableGutter,fixedGutter:c.enableFixedGutter,theme:c.theme,mode:d,onChange:function(g,e){c.checkChange()},onCursorActivity:function(e){c.fireEvent("cursoractivity",c)},onGutterClick:function(g,e,h){c.fireEvent("gutterclick",c,e,h)},onFocus:function(e){c.fireEvent("activate",c)},onBlur:function(e){c.fireEvent("deactivate",c)},onScroll:function(e){c.fireEvent("scroll",c)},onHighlightComplete:function(e){c.fireEvent("highlightcomplete",c)},onUpdate:function(e){c.fireEvent("update",c)},onKeyEvent:function(e,g){g.cancelBubble=true;c.fireEvent("keyevent",c,g)}});c.setMode(c.mode);c.setReadOnly(c.readOnly);c.fireEvent("initialize",c);var a=Ext.util.CSS.getRule(".CodeMirror");if(a){a.style.height="100%";a.style.position="relative";a.style.overflow="hidden"}var a=Ext.util.CSS.getRule(".CodeMirror-Scroll");if(a){a.style.height="100%"}},createToolbar:function(g){var i=this,b=[],a=Ext.tip.QuickTipManager&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,h,e;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:g,handler:l||g.relayBtnCmd,clickEvent:"mousedown",tooltip:a?g.buttonTips[m]||e:e,overflowText:g.buttonTips[m].title||e,tabIndex:-1}}if(i.showModes){modesSelectItem=Ext.widget("component",{renderTpl:['",{mode:i.mode,isSelected:function(k){return this.mode==k}}],renderData:{cls:d+"font-select",modes:i.listModes},childEls:["selectEl"],afterRender:function(){i.modesSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.superclass.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.superclass.onEnable.apply(this,arguments)},listeners:{change:function(){i.setMode(i.modesSelect.dom.value)},element:"selectEl"}});b.push(modesSelectItem,"-")}if(i.showAutoIndent){b.push(c("justifycenter",false))}if(i.showLineNumbers){b.push(c("insertorderedlist"))}h=Ext.widget("toolbar",{id:i.id+"-toolbar",ownerCt:i,cls:Ext.baseCSSPrefix+"html-editor-tb",enableOverflow:true,items:b,ownerLayout:i.getComponentLayout(),listeners:{click:function(k){k.preventDefault()},element:"el"}});i.toolbar=h;i.updateToolbarButtons()},getToolbar:function(){return this.toolbar},updateToolbarButtons:function(){var b=this;try{btns=b.getToolbar().items.map;if(b.showLineNumbers){btns.insertorderedlist.toggle(b.enableLineNumbers)}}catch(a){}},relayBtnCmd:function(a){this.relayCmd(a.getItemId())},relayCmd:function(a){Ext.defer(function(){var b=this;b.editor.focus();switch(a){case"justifycenter":if(!CodeMirror.extensions.autoIndentRange){b.loadDependencies(b.extensions.format,b.pathExtensions,b.doIndentSelection,b)}else{b.doIndentSelection()}break;case"insertorderedlist":b.doChangeLineNumbers();break}},10,this)},reloadExtentions:function(){var b=this;for(var a in CodeMirror.extensions){if(CodeMirror.extensions.propertyIsEnumerable(a)&&!b.editor.propertyIsEnumerable(a)){b.editor[a]=CodeMirror.extensions[a]}}},doChangeLineNumbers:function(){var a=this;a.enableLineNumbers=!a.enableLineNumbers;a.editor.setOption("lineNumbers",a.enableLineNumbers)},doIndentSelection:function(){var c=this;c.reloadExtentions();try{var a={from:c.editor.getCursor(true),to:c.editor.getCursor(false)};c.editor.autoIndentRange(a.from,a.to)}catch(b){}},getMime:function(e){var c=this,b,d=false;for(var a=0;a - -

Welcome to the Language Independent Markup Editor


+
+ +

Welcome to the Language Independent Markup Editor

To start using the editor click on the File menu and create a new document, import a document or open an example.

diff --git a/build/production/LIME/config/examples/editorStartContent-es.html b/build/production/LIME/config/examples/editorStartContent-es.html index d24b82c6..ea468109 100644 --- a/build/production/LIME/config/examples/editorStartContent-es.html +++ b/build/production/LIME/config/examples/editorStartContent-es.html @@ -1,5 +1,5 @@ -
- -

Welcome to the Language Independent Markup Editor


+
+ +

Welcome to the Language Independent Markup Editor

To start using the editor click on the File menu and create a new document, import a document or open an example.

diff --git a/build/production/LIME/config/examples/editorStartContent-it.html b/build/production/LIME/config/examples/editorStartContent-it.html index 8474014f..b1791356 100644 --- a/build/production/LIME/config/examples/editorStartContent-it.html +++ b/build/production/LIME/config/examples/editorStartContent-it.html @@ -1,5 +1,5 @@ -
- -

Benvenuti nel "Language Independent Markup Editor"


+
+ +

Benvenuti nel "Language Independent Markup Editor"

Per iniziare ad usare l'editor importa un documento o apri uno degli esempi.

diff --git a/build/production/LIME/config/examples/editorStartContent-ro.html b/build/production/LIME/config/examples/editorStartContent-ro.html index d24b82c6..ea468109 100644 --- a/build/production/LIME/config/examples/editorStartContent-ro.html +++ b/build/production/LIME/config/examples/editorStartContent-ro.html @@ -1,5 +1,5 @@ -
- -

Welcome to the Language Independent Markup Editor


+
+ +

Welcome to the Language Independent Markup Editor

To start using the editor click on the File menu and create a new document, import a document or open an example.

diff --git a/build/production/LIME/config/examples/editorStartContent-ru.html b/build/production/LIME/config/examples/editorStartContent-ru.html index d24b82c6..ea468109 100644 --- a/build/production/LIME/config/examples/editorStartContent-ru.html +++ b/build/production/LIME/config/examples/editorStartContent-ru.html @@ -1,5 +1,5 @@ -
- -

Welcome to the Language Independent Markup Editor


+
+ +

Welcome to the Language Independent Markup Editor

To start using the editor click on the File menu and create a new document, import a document or open an example.

diff --git a/build/production/LIME/config/locale/lang-es.json b/build/production/LIME/config/locale/lang-es.json index 147d388e..5b0af871 100644 --- a/build/production/LIME/config/locale/lang-es.json +++ b/build/production/LIME/config/locale/lang-es.json @@ -84,7 +84,7 @@ }, "typeNotSupported": "Este tipo de archivo no es (todavía) compatible con arrastrar y soltar", "uploadError": "Se produjo un error al cargar el archivo.
Inténtelo de nuevo.", - "savedToTpl": "El documento {docName} se salvó con éxito en {docUrl}", + "savedToTpl": "El documento {docName} se guardó con éxito en {docUrl}", "saveAs": "Guardar como ...", "welcome": "Bienvenido", "continueStr": "Continuar", diff --git a/build/production/LIME/config/locale/languages.json b/build/production/LIME/config/locale/languages.json index da685872..4e6d7c02 100644 --- a/build/production/LIME/config/locale/languages.json +++ b/build/production/LIME/config/locale/languages.json @@ -545,7 +545,7 @@ "name": "Fon" }, { - "code": "fre", + "code": "fra", "name": "French" }, { @@ -597,7 +597,7 @@ "name": "Georgian" }, { - "code": "ger", + "code": "deu", "name": "German" }, { diff --git a/resources/xslt/AKNToXHTMLDiff.xsl b/build/production/LIME/languagesPlugins/akoma3.0/AknToXhtml.xsl similarity index 82% rename from resources/xslt/AKNToXHTMLDiff.xsl rename to build/production/LIME/languagesPlugins/akoma3.0/AknToXhtml.xsl index 29ba75f7..38bdf66c 100644 --- a/resources/xslt/AKNToXHTMLDiff.xsl +++ b/build/production/LIME/languagesPlugins/akoma3.0/AknToXhtml.xsl @@ -3,17 +3,19 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/" + xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD10" exclude-result-prefixes="xs" version="1.0"> - + - + +
+
@@ -35,11 +37,22 @@ - - - + + + + + + + + + + + + + + - +
@@ -258,34 +275,7 @@ - -
- - - - - - - - -
-
- - + akn:attachments | + akn:components | + akn:debateBody | + akn:amendmentBody | + akn:judgementBody | + akn:fragment | + akn:extractStructure | + akn:subFlow + "> +
+ + + + + + + + +
+ +

+ + + + + + + + + + +

+
+ + +
+ + + + + +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + diff --git a/build/production/LIME/languagesPlugins/akoma3.0/HtmlToAkn.xsl b/build/production/LIME/languagesPlugins/akoma3.0/HtmlToAkn.xsl new file mode 100644 index 00000000..4f16910d --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/HtmlToAkn.xsl @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/Language.js b/build/production/LIME/languagesPlugins/akoma3.0/client/Language.js index b4a9deb9..f3e8f702 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/client/Language.js +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/Language.js @@ -1,48 +1,48 @@ /* - * Copyright (c) 2014 - Copyright holders CIRSFID and Department of - * Computer Science and Engineering of the University of Bologna - * - * Authors: - * Monica Palmirani – CIRSFID of the University of Bologna - * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna - * Luca Cervone – CIRSFID of the University of Bologna - * - * Permission is hereby granted to any person obtaining a copy of this - * software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The Software can be used by anyone for purposes without commercial gain, - * including scientific, individual, and charity purposes. If it is used - * for purposes having commercial gains, an agreement with the copyright - * holders is required. The above copyright notice and this permission - * notice shall be included in all copies or substantial portions of the - * Software. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders and authors shall not be used in advertising or otherwise to - * promote the sale, use or other dealings in this Software without prior - * written authorization. - * - * The end-user documentation included with the redistribution, if any, - * must include the following acknowledgment: "This product includes - * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, - * Fabio Vitali, Luca Cervone)", in the same place and form as other - * third-party acknowledgments. Alternatively, this acknowledgment may - * appear in the software itself, in the same form and location as other - * such third-party acknowledgments. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ /** * Language dependent utilities @@ -51,33 +51,102 @@ Ext.define('LIME.ux.Language', { /* Since this is merely a utility class define it as a singleton (static members by default) */ singleton : true, alternateClassName : 'Language', - - name: 'Akoma ntoso', - + + name : 'Akoma ntoso', + + config : { + elementIdAttribute: "eId", + attributePrefix: "akn_", + metadataStructure : {}, + abbreviations : { + "adjournment" : "adj", + "administrationOfOath" : "admoath", + "address" : "addr", + "answer" : "ans", + "article" : "art", + "attachment" : "att", + "chapter" : "chp", + "citation" : "cit", + "citations" : "cits", + "clause" : "cl", + "component" : "cmp", + "communication" : "comm", + "componentRef" : "cref", + "debateSection" : "dbtsec", + "declarationOfVote" : "dclvote", + "documentRef" : "dref", + "embeddedStructure" : "estr", + "embeddedText" : "etxt", + "fragment" : "frag", + "heading" : "hdg", + "intro" : "intro", + "listIntroduction" : "intro", + "blockList" : "list", + "list" : "list", + "party" : "lwr", + "ministerialStatements" : "mnstm", + "noticesOfMotion" : "ntcmot", + "nationalInterest" : "ntnint", + "oralStatements" : "orlstm", + "paragraph" : "para", + "pointOfOrder" : "pntord", + "proceduralMotions" : "prcmot", + "personalStatements" : "prnstm", + "prayers" : "pry", + "petitions" : "pts", + "question" : "qst", + "quotedStructure" : "qstr", + "questions" : "qsts", + "quotedText" : "qtxt", + "recital" : "rec", + "recitals" : "recs", + "rollCall" : "roll", + "resolutions" : "res", + "section" : "sec", + "subchapter" : "subchp", + "subclause" : "subcl", + "subheading" : "subhdg", + "subparagraph" : "subpara", + "subsection" : "subsec", + "transitional" : "trans", + "listWrap" : "wrap", + "wrap" : "wrap", + "writtenStatements" : "wrtst" + }, + noContextElements : ["listIntroduction", "listConclusion", "docDate", "docNumber", "docTitle", "location", "docType", "heading", "num", "proponent", "signature", "role", "person", "quotedText", "subheading", "ref", "mref", "rref", "date", "time", "organization", "concept", "object", "event", "process", "from", "term", "quantity", "def", "entity", "courtType", "neutralCitation", "party", "judge", "lower", "scene", "opinion", "argument", "affectedDocument", "relatedDocument", "change", "inline", "mmod", "rmod", "remark", "recorderedTime", "vote", "outcome", "ins", "del", "legislature", "session", "shortTitle", "docPurpose", "docCommittee", "docIntroducer", "docStage", "docStatus", "docJurisdiction", "docketNumber", "placeholder", "fillIn", "decoration", "docProponent", "omissis", "extractText", "narrative", "summery", "tocItem"], + prefixSeparator: "__", + numSeparator: "_" + }, + /** - * Translate the content based on an external web service (called by + * Translate the content based on an external web service (called by * an ajax request) which uses a XSLT stylesheet. * If the ajax request is successful the success callback is called. * Note that this function doesn't return anything since it asynchronously * call callback functions. - * + * * @param {String} content The content to translate - * @param {Object} callbacks Functions to call after translating + * @param {Object} callbacks Functions to call after translating */ translateContent : function(content, markingLanguage, callbacks) { - + var params = { + requestedService : Statics.services.xsltTrasform, + output : 'akn', + input : content, + markingLanguage : markingLanguage + }, transformFile = Config.getLanguageTransformationFile("LIMEtoLanguage"); + if (transformFile) { + params = Ext.merge(params, { + transformFile : transformFile + }); + } //Calling the translate service Ext.Ajax.request({ // the url of the web service url : Utilities.getAjaxUrl(), method : 'POST', // send the content in XML format - params : { - requestedService : Statics.services.xsltTrasform, - output : 'akn', - input : content, - markingLanguage: markingLanguage - }, + params : params, scope : this, // if the translation was performed success : function(result, request) { @@ -85,8 +154,35 @@ Ext.define('LIME.ux.Language', { callbacks.success(result.responseText); } }, - failure: callbacks.failure + failure : callbacks.failure }); + }, + + getLanguageMarkingId : function(element, langPrefix, root) { + var me = this, elementId = element.getAttribute(DomUtils.elementIdAttribute), + button = DomUtils.getButtonByElement(element), elName, + markedParent, markingId = "", attributeName = langPrefix + DomUtils.langElementIdAttribute, + parentId, elNum = 1, siblings, elIndexInParent; + if (elementId && button) { + elName = button.name; + markedParent = DomUtils.getFirstMarkedAncestor(element.parentNode); + if(markedParent){ + if(markedParent.getAttribute(attributeName)) { + markingId = markedParent.getAttribute(attributeName)+me.getPrefixSeparator(); + } + siblings = markedParent.querySelectorAll("*[class~="+elName+"]"); + } else { + siblings = root.querySelectorAll("*[class~="+elName+"]"); + } + + if(siblings.length) { + elIndexInParent = Array.prototype.indexOf.call(siblings, element); + elNum = (elIndexInParent!=-1) ? elIndexInParent+1 : elNum; + } + + elName = (me.getAbbreviations()[elName]) ? (me.getAbbreviations()[elName]) : elName; + markingId += elName+me.getNumSeparator()+elNum; + } + return markingId; } - -}); \ No newline at end of file +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/LoadPlugin.js b/build/production/LIME/languagesPlugins/akoma3.0/client/LoadPlugin.js index b28f5ca3..3a3f8c49 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/client/LoadPlugin.js +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/LoadPlugin.js @@ -51,38 +51,44 @@ Ext.define('LIME.ux.LoadPlugin', { singleton : true, alternateClassName : 'LoadPlugin', - - metadataClass : 'meta', - authorialNoteClass : 'authorialNote', - changePosAttr: 'chposid', - changePosTargetAttr: 'chpos_id', - refToAttribute: 'refto', - - supLinkTemplate : new Ext.Template('{markerNumber}'), + + config: { + authorialNoteClass: 'authorialNote', + metadataClass: 'meta', + refToAttribute: 'noteref', + noteTmpId: 'notetmpid', + tmpSpanCls: 'posTmpSpan' + }, beforeLoad : function(params) { var metaResults = [], extdom, documents, treeData = []; if (params.docDom) { extdom = new Ext.Element(params.docDom); documents = extdom.query("*[class~=" + DocProperties.documentBaseClass + "]"); - Ext.each(documents, function(doc, index) { - metaResults.push(Ext.Object.merge(this.processMeta(doc, params), {docDom: doc})); - }, this); - - this.processNotes(extdom); + if(documents.length) { + Ext.each(documents, function(doc, index) { + metaResults.push(Ext.Object.merge(this.processMeta(doc, params), {docDom: doc})); + }, this); + } else { + metaResults.push(this.processMeta(null, params)); + } + this.preProcessNotes(params.docDom); + // Set the properties of main document which is the first docuemnt found - if (metaResults[0]) { - // params object contains properties inserted by user, - // metaResults contains properties founded in the document - metaResults[0].docLang = metaResults[0].docLang || params.docLang; - metaResults[0].docLocale = metaResults[0].docLocale || params.docLocale; - metaResults[0].docType = metaResults[0].docType || params.docType; - params.docLang = metaResults[0].docLang; - params.docLocale = metaResults[0].docLocale; - params.docType = metaResults[0].docType; - params.metaDom = metaResults[0].metaDom; - } + // params object contains properties inserted by user, + // metaResults contains properties founded in the document + metaResults[0].docLang = metaResults[0].docLang || params.docLang; + metaResults[0].docLocale = metaResults[0].docLocale || params.docLocale; + metaResults[0].docType = metaResults[0].docType || params.docType; + params.docLang = metaResults[0].docLang; + params.docLocale = metaResults[0].docLocale; + params.docType = metaResults[0].docType; + params.metaDom = metaResults[0].metaDom; + } else { + metaResults.push(this.processMeta(null, params)); + metaResults[0].docType = params.docType; + params.metaDom = metaResults[0].metaDom; } params.treeData = treeData; params.metaResults = metaResults; @@ -90,64 +96,113 @@ Ext.define('LIME.ux.LoadPlugin', { }, afterLoad : function(params, app) { + var me = this, + schemaUrl = Config.getLanguageSchemaPath(), + langId = Language.getAttributePrefix()+Language.getElementIdAttribute(); + Ext.Ajax.request({ + url : schemaUrl, + method : 'GET', + scope : this, + success : function(result, request) { + var doc = DomUtils.parseFromString(result.responseText); + if(doc) { + me.langSchema = doc; + me.getMetaDataStructure(doc); + } + } + }); + //TODO: remove all existent language id + /*var elementsWithId = params.docDom.querySelectorAll("["+langId+"]"); + Ext.each(elementsWithId, function(element) { + var id = element.getAttribute(langId); + console.log(id); + });*/ + }, + + + getMetaDataStructure: function(schemaDoc) { + var me = this; + var elements = me.getSchemaElements(schemaDoc, "meta"); + if(elements) { + Language.setMetadataStructure(elements); + } + }, + + + getSchemaElements: function(schema, elementName) { + var me = this, + element = schema.querySelector("element[name = '"+elementName+"']"), + children = [], + obj = {}; + if(element) { + obj.name = elementName; + Ext.each(element.querySelectorAll("element"), function(child) { + var name = child.getAttribute("ref"), + chObj = me.getSchemaElements(schema, name); + if(chObj) { + children.push(chObj); + } + }); + obj.children = children; + } else { + return null; + } + return obj; }, processMeta: function(doc, params) { - var extdom = new Ext.Element(doc), - meta = extdom.down("*[class=" + this.metadataClass + "]"), - result = {}; - - result.docType = DomUtils.getDocTypeByNode(doc); + var extdom, meta, result = {}, ownDoc; + result.docMarkingLanguage = params.docMarkingLanguage; - if (meta && meta.dom.parentNode) { - var language = meta.down("*[class=FRBRlanguage]", true), - country = meta.down("*[class=FRBRcountry]", true); - - if (language) { - result.docLang = language.getAttribute('language'); - } - if (country) { - result.docLocale = country.getAttribute('value'); + + if(!doc || !doc.querySelector("*[class="+this.getMetadataClass()+"]")) { + result.metaDom = this.createBlankMeta(); + } else { + extdom = new Ext.Element(doc); + meta = extdom.down("*[class=" + this.getMetadataClass() + "]"); + result = {}, ownDoc = doc.ownerDocument; + result.docType = DomUtils.getDocTypeByNode(doc); + if (meta && meta.dom.parentNode) { + var language = meta.down("*[class=FRBRlanguage]", true), + country = meta.down("*[class=FRBRcountry]", true); + + if (language) { + result.docLang = language.getAttribute('language'); + } + if (country) { + result.docLocale = country.getAttribute('value'); + } + result.metaDom = meta.dom.parentNode.removeChild(meta.dom); } - result.metaDom = meta.dom.parentNode.removeChild(meta.dom); - } + } + return result; }, - processNotes : function(extdom) { - var athNotes = extdom.query("*[class~=" + this.authorialNoteClass + "]"), - linkTemplate = this.supLinkTemplate, - authCounter = 0; + createBlankMeta: function() { + var meta = Utilities.jsonToHtml(Config.getLanguageConfig().metaTemplate); + if(meta) { + meta.setAttribute('class', this.getMetadataClass()); + return meta; + } + }, + + /* + * Is important to call this function before loading the document in the editor. + * */ + preProcessNotes : function(dom) { + var athNotes = dom.querySelectorAll("*[class~=" + this.getAuthorialNoteClass() + "]"), + markerTemplate = new Ext.Template(''); Ext.each(athNotes, function(element, index) { - var parent = element.parentNode, - markerNumber = element.getAttribute('akn_marker'), - elId = 'athNote_' + index, - tmpElement, link, tmpExtEl; - - while(!markerNumber) { - var newMarker = 'note'+(++authCounter); - if (extdom.query("*[akn_marker=" + newMarker + "]").length == 0) { - markerNumber = newMarker; - } - } - tmpElement = Ext.DomHelper.createDom({ - tag : 'span', - cls: 'posTmpSpan', - html : linkTemplate.apply({ - 'markerNumber' : markerNumber - }) - }); - tmpElement.querySelector('a').setAttribute(this.refToAttribute, elId); - //TODO: move to constants - tmpElement.setAttribute(this.changePosAttr, elId); - element.setAttribute(this.changePosTargetAttr, elId); - element = parent.replaceChild(tmpElement, element); - //TODO: imporve this - if (parent.nextSibling) { - parent.parentNode.insertBefore(element, parent.nextSibling); - } else { - parent.parentNode.appendChild(element); + var noteTmpId = "note_"+index; + Ext.DomHelper.insertHtml("beforeBegin", element, markerTemplate.apply({ + 'ref' : noteTmpId + })); + element.setAttribute(this.getNoteTmpId(), noteTmpId); + // Move the element to the end of parent to prevent split in parent + if(element.nextSibling) { + element.parentNode.appendChild(element); } }, this); } diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js index dab91d34..cc03ec72 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js @@ -62,10 +62,15 @@ Ext.define('LIME.controller.AknPreviewController', { }, doTranslate: function() { - var me = this; - me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { - me.updateContent(xml); - }, this.getXml()); + if(this.getXml()) { + var me = this, + activeTab = this.getXml().up("main").getActiveTab(); + if (activeTab == this.getXml()) { + me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { + me.updateContent(xml); + }, this.getXml()); + } + } }, /** @@ -79,6 +84,16 @@ Ext.define('LIME.controller.AknPreviewController', { } }, + onRemoveController: function() { + var me = this; + me.application.removeListener(Statics.eventsNames.afterLoad, me.doTranslate, me); + }, + + onInitPlugin: function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.doTranslate, me); + }, + init : function() { var me = this; this.control({ diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js index 75efbf5b..f6cad383 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js @@ -61,7 +61,9 @@ Ext.define('LIME.controller.DocumentCollectionController', { }], config: { - pluginName: "documentCollection" + pluginName: "documentCollection", + colModSuffix: "-mod", + docColAlternateType: "documentCollectionContent" }, onDocumentLoaded : function(docConfig) { @@ -88,24 +90,24 @@ Ext.define('LIME.controller.DocumentCollectionController', { if (docConfig.docType != "documentCollection") { tabPanel.setActiveTab(0); tabPanel.getTabBar().items.items[1].disable(); + } else { + // Wrap beforeTrasnalte for customizate it + TranslatePlugin.beforeTranslate = function(params) { + var newParams = Ext.Function.bind(beforeTranslate, TranslatePlugin, [params])() || params; + return me.docCollectionBeforeTranslate(newParams); + }; } } - if (docConfig.docType == "documentCollection") { + if (docConfig.docType == "documentCollection" && !docConfig.colectionMod) { tabPanel.setActiveTab(collTab); tabPanel.getTabBar().items.items[0].disable(); app.fireEvent(Statics.eventsNames.disableEditing); } else { app.fireEvent(Statics.eventsNames.enableEditing); } - + me.selectActiveDocument(docConfig.treeDocId, true); - - // Wrap beforeTrasnalte for customizate it - TranslatePlugin.beforeTranslate = function(params) { - var newParams = Ext.Function.bind(beforeTranslate, TranslatePlugin, [params])() || params; - return me.docCollectionBeforeTranslate(newParams); - }; }, newDocumentCollection : function(modify) { @@ -177,18 +179,16 @@ Ext.define('LIME.controller.DocumentCollectionController', { var me = this, editor = me.getController('Editor'), newSnapshot = me.createEditorSnapshot(), snapshotDoc, newSnapshot, editorDoc, editorDocId; - if (newSnapshot.dom) { editorDoc = newSnapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"]"); if (editorDoc) { editorDocId = editorDoc.getAttribute(DocProperties.docIdAttribute); - if (editorDocId === 0) { - snapshot.dom = newSnapshot.dom; + if(me.isDocColMod(editorDoc)) { + snapshot.dom = me.docColModToSnapshot(editorDoc, editorDocId, snapshot); + } else if (parseInt(editorDocId) === 0) { + snapshot.dom = newSnapshot.dom; } else { - snapshotDoc = snapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"='" + editorDocId + "']"); - if (snapshotDoc && snapshotDoc.parentNode) { - snapshotDoc.parentNode.replaceChild(editorDoc, snapshotDoc); - } + Utilities.replaceChildByQuery(snapshot.dom, "["+DocProperties.docIdAttribute+"='" + editorDocId + "']", editorDoc); } snapshot.content = DomUtils.serializeToString(snapshot.dom); } @@ -196,31 +196,48 @@ Ext.define('LIME.controller.DocumentCollectionController', { return Ext.merge(snapshot, {editorDocId: editorDocId}); }, + isDocColMod: function(doc) { + var colMod = parseInt(doc.getAttribute("colmod")); + if(isNaN(colMod)) { + return false; + } + return (colMod) ? true : false; + }, + docToTreeData: function(doc, dom, textSufix, qtip) { var res = {}, collBody, children, docChildren = [], languageController = this.getController("Language"), langPrefix = languageController.getLanguagePrefix(), chDoc, cmpDoc; if (doc) { + if(Ext.DomQuery.is(doc, "[class~=documentCollection]")) { + docChildren.push({text: doc.getAttribute(langPrefix+"name") || "collection", + leaf: true, + id: doc.getAttribute("docid")+this.getColModSuffix(), + qtip: "collection"}); + } collBody = doc.querySelector("*[class*=collectionBody]"); - children = (collBody) ? collBody.childNodes : []; + children = (collBody) ? DomUtils.filterMarkedNodes(collBody.childNodes) : []; for (var i = 0; i < children.length; i++) { cmpDoc = children[i]; if (cmpDoc.getAttribute("class").indexOf("component") != -1) { - cmpDoc = cmpDoc.firstChild; + cmpDoc = DomUtils.filterMarkedNodes(cmpDoc.childNodes)[0]; } - if (cmpDoc.getAttribute("class").indexOf("documentRef") != -1) { - var docRef = cmpDoc.getAttribute(langPrefix+"href"); - docRef = (docRef) ? docRef.substr(1) : ""; //Removing the '#' - if (docRef) { - chDoc = dom.querySelector("*["+langPrefix+"currentId="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]") - || dom.querySelector("*["+langPrefix+"currentid="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]"); - if (chDoc) { - docChildren.push(this.docToTreeData(chDoc, dom, '#'+docRef, cmpDoc.getAttribute(langPrefix+"showAs"))); + if(cmpDoc) { + if (DomUtils.getElementNameByNode(cmpDoc) == "documentRef") { + var docRef = cmpDoc.getAttribute(langPrefix+"href"); + docRef = (docRef) ? docRef.substr(1) : ""; //Removing the '#' + if (docRef) { + chDoc = dom.querySelector("*[class~='components'] *["+langPrefix+Language.getElementIdAttribute()+"="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]") + || dom.querySelector("*[class~='components'] *["+langPrefix+Language.getElementIdAttribute().toLowerCase()+"="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]"); + if (chDoc) { + docChildren.push(this.docToTreeData(chDoc, dom, '#'+docRef, cmpDoc.getAttribute(langPrefix+"showAs"))); + } } + } else if(cmpDoc.getAttribute("class").indexOf(DocProperties.documentBaseClass) != -1) { + docChildren.push(this.docToTreeData(cmpDoc, dom)); } - } else if(cmpDoc.getAttribute("class").indexOf(DocProperties.documentBaseClass) != -1) { - docChildren.push(this.docToTreeData(cmpDoc, dom)); } + } res = {text:DomUtils.getDocTypeByNode(doc) + ((textSufix) ? " "+ textSufix : ""), children: docChildren, @@ -342,9 +359,11 @@ Ext.define('LIME.controller.DocumentCollectionController', { switchDoc: function(config) { var me = this, app = me.application, editor = me.getController('Editor'), - docId = config.id, + docId = Ext.isString(config.id) ? parseInt(config.id) : config.id, docMeta = DocProperties.docsMeta[docId], - snapshot = me.completeEditorSnapshot; + colMod = Ext.isString(config.id) ? (config.id.indexOf(me.getColModSuffix()) != -1) : false; + snapshot = me.completeEditorSnapshot, prevColMod = 0; + if (snapshot && snapshot.dom) { /* Before loading a new document we need to update * the snapshot with new content from the editor @@ -352,11 +371,58 @@ Ext.define('LIME.controller.DocumentCollectionController', { newSnapshot = me.updateEditorSnapshot(snapshot); // Select the document in the snapshot and load it doc = (docId === 0) ? snapshot.dom : snapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"); - if (doc && parseInt(docId) != parseInt(newSnapshot.editorDocId)) { - app.fireEvent(Statics.eventsNames.loadDocument, - Ext.Object.merge(docMeta, {docText: DomUtils.serializeToString(doc), lightLoad: true, treeDocId: docId})); + prevColMod = doc.querySelector("[colmod]"); + prevColMod = (prevColMod) ? parseInt(prevColMod.getAttribute("colmod")) : 0; + if (doc && ((docId != parseInt(newSnapshot.editorDocId)) || colMod || prevColMod)) { + if(colMod) { + doc = me.snapshotToDocColMod(snapshot, docId); + docTypeAlternateName = ""; + } + var docEl = doc.querySelector("["+DocProperties.docIdAttribute+"]"); + if(docEl) { + docEl.setAttribute("colmod", (colMod) ? 1 : 0); + } + app.fireEvent(Statics.eventsNames.loadDocument, Ext.Object.merge(docMeta, { + docMarkingLanguage: Config.getLanguage(), + docText : DomUtils.serializeToString(doc), + alternateDocType: (colMod) ? me.getDocColAlternateType() : null, + lightLoad : true, + treeDocId : config.id, + colectionMod : colMod + })); + } + } + }, + + snapshotToDocColMod: function(snapshot, docId) { + // Create a temporary copy of the snapshot, don't modify it directly! + var breakingElement, completeSnapshotDom = DomUtils.parseFromString(snapshot.content), + doc = (docId === 0) ? completeSnapshotDom : completeSnapshotDom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"), + docCol = completeSnapshotDom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"), + colBody; + Utilities.removeNodeByQuery(doc, "[class=components]"); + if(docCol) { + colBody = docCol.querySelector("[class*=collectionBody]"); + //Utilities.removeNodeByQuery(docCol, "[class*=collectionBody]"); + if(colBody) { + // Add breaking element to be able to insert text + Ext.DomHelper.insertHtml('beforeBegin', colBody, "

"); } } + return doc; + }, + + docColModToSnapshot: function(doc, docId, snapshot) { + var completeSnapshotDom = DomUtils.parseFromString(snapshot.content), oldDoc, collectionBody; + if (completeSnapshotDom) { + /*oldDoc = completeSnapshotDom.querySelector("["+DocProperties.docIdAttribute+"='" + docId + "']"); + if (oldDoc) { + collectionBody = oldDoc.querySelector("[class*=collectionBody]"); + doc.appendChild(collectionBody); + }*/ + Utilities.replaceChildByQuery(completeSnapshotDom, "["+DocProperties.docIdAttribute+"='" + docId + "']", doc); + } + return completeSnapshotDom; }, getDocumentsFromSnapshot: function(snapshot) { diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js new file mode 100644 index 00000000..5569c698 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +Ext.define('LIME.ux.metadataManager.MetaGrid', { + + extend : 'Ext.grid.Panel', + + requires : ['Ext.grid.plugin.CellEditing'], + + alias : 'widget.metaGrid', + + config : { + pluginName : "metadataManager", + genericColumn: { + resizable : false, + hideable : false, + menuDisabled : true, + editor : { + selectOnFocus : true, + allowBlank : false + } + } + }, + columns : [], + plugins : [{ + ptype : "cellediting", + pluginId : 'cellediting', + clicksToEdit : 1 + }], + tools : [{ + type : 'plusUri', + tooltip : Locale.getString("addUri", "uriManager"), + listeners : { + afterrender : function(cmp) { + this.up("metaGrid").setAddIcon(cmp); + } + } + }], + setAddIcon : function(cmp) { + cmp.toolEl.removeCls("x-tool-plus"); + cmp.toolEl.setStyle("backgroundImage", 'url("resources/images/icons/add.png")'); + }, + initComponent: function() { + var me = this, templateColumn = me.getGenericColumn(); + me.columns = []; + Ext.each(me.columnsNames, function(name) { + var column = Ext.merge(Ext.clone(templateColumn), { + text: Ext.String.capitalize(name.replace("akn_", "")), + dataIndex: name, + flex: 1 + }); + if(me.customColumns && Ext.isArray(me.customColumns[name])) { + column.editor.xtype = "combo"; + var store = Ext.create('Ext.data.Store', { + fields: ["type"], + data : me.customColumns[name].map(function(el) {return {"type": el};}) + }); + column.editor.store = store; + column.editor.queryMode = 'local'; + column.editor.displayField = 'type'; + column.editor.valueField = 'type'; + } + me.columns.push(column); + + }); + + me.columns.push({ + xtype : 'actioncolumn', + width : 30, + sortable : false, + menuDisabled : true, + items : [{ + icon : 'resources/images/icons/delete.png', + tooltip : Locale.getString("removeComponent", "uriManager"), + scope : me, + handler : function(grid, rowIndex) { + grid.getStore().removeAt(rowIndex); + } + }] + }); + + me.store.grid = me; + + me.callParent(arguments); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js new file mode 100644 index 00000000..be9f9118 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js @@ -0,0 +1,423 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.MetadataManagerController', { + extend : 'Ext.app.Controller', + + views : ["LIME.ux.metadataManager.MetaGrid", "LIME.ux.metadataManager.MetadataManagerTabPanel"], + + refs : [{ + selector : 'appViewport', + ref : 'appViewport' + }, { + selector : 'main toolbar', + ref : 'mainToolbar' + }, { + selector: 'metaManagerPanel', + ref: 'metaManagerPanel' + }, { + selector: 'contextPanel', + ref: 'contextPanel' + }], + + config : { + pluginName : "metadataManager", + btnCls : "openMetadataBtn" + }, + + tabMetaMap: {}, + + addMetadataButton : function() { + var me = this, toolbar = me.getMainToolbar(); + if (!toolbar.down("[cls=" + me.getBtnCls() + "]")) { + toolbar.add("->"); + toolbar.add({ + cls : me.getBtnCls(), + margin : "0 10 0 0", + text : Locale.getString("title", me.getPluginName()), + listeners : { + click : Ext.bind(me.openManager, me) + } + }); + } + }, + + removeMetadataButton : function() { + var me = this, toolbar = me.getMainToolbar(), + btn = toolbar.down("[cls=" + me.getBtnCls() + "]"); + if (btn) { + toolbar.remove(btn); + } + }, + + openManager: function() { + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + true, this.getPluginName()); + }, + + addTab: function(conf) { + conf = conf || {}; + var cmp = Ext.widget("metaManagerPanel", Ext.merge({ + name: "metaManagerPanel", + autoDestroy: false, + groupName: this.getPluginName() + }, conf)); + this.application.fireEvent(Statics.eventsNames.addContextPanelTab, cmp); + return cmp; + }, + + onInitPlugin : function() { + //this.application.on(Statics.eventsNames.afterLoad, this.onDocumentLoaded, this); + this.addMetadataButton(); + //this.addTab(); + }, + + onRemoveController : function() { + this.removeMetadataButton(); + }, + + addMetadataFields: function() { + var me = this, + metaTemplate = Config.getLanguageConfig().metaTemplate, + newTab; + + Ext.Object.each(metaTemplate, function(key, value) { + if(key == "identification") { + var frbrFieldsets = Ext.Object.getKeys(value).filter(function(name) { + return name.charAt(0) != "@"; + }); + Ext.each(frbrFieldsets, function(name) { + newTab = me.addMetaFRBRFieldset(name, value[name]); + me.tabMetaMap[name] = { + tab: newTab, + metaParent: key + }; + }); + } else { + newTab = me.addMetaFieldset(key, value); + me.tabMetaMap[key] = { + tab: newTab + }; + } + }); + }, + + storeGridChanged: function(store) { + var data = []; + store.each(function(record) { + var recordData = record.getData(), + filtredData = {}; + Ext.Object.each(recordData, function(key, val) { + if(val != undefined) { + filtredData[key] = val; + } + }); + data.push(filtredData); + }); + this.updateMetadata(store.grid, data, { + overwrite: false, + after: (store.grid.name == "FRBRuri") ? "FRBRthis" : "FRBRuri" + }); + }, + + getValuesFromObj: function(obj) { + return Ext.Object.getKeys(obj).filter(function(el) { + return (el.charAt(0) == "@"); + }).map(function(attr) { + return attr.substr(1); + }); + }, + + createMetaGrid: function(name, values, customColumns) { + var me = this; + return Ext.widget("metaGrid", { + title: name, + width: "98%", + margin: '5 0 0 5', + name: name, + columnsNames: values, + customColumns: customColumns, + store: Ext.create('Ext.data.Store', { + fields : values, + listeners: { + remove: Ext.bind(me.storeGridChanged, me), + update: Ext.bind(me.storeGridChanged, me) + } + }) + }); + }, + + addMetaFRBRFieldset: function(name, conf) { + var me = this, + items = []; + Ext.Object.each(conf, function(key) { + var values = me.getValuesFromObj(conf[key]); + if(key == "FRBRuri" || key == "FRBRalias") { + items.push(me.createMetaGrid(key, values)); + } else { + items.push(me.createFieldsetItem(key, values)); + } + }); + return me.addMetaFieldset(name, conf, items); + }, + + addMetaFieldset: function(name, conf, items) { + var me = this, + tab = me.getMetaManagerPanel(), + possibleChildren = conf["!possibleChildren"], + values; + + if(!Ext.isArray(items)) { + items = [me.createFieldsetItem(name, me.getValuesFromObj(conf))]; + } + + if(possibleChildren) { + values = Ext.Array.push("type", me.getValuesFromObj(possibleChildren.attributes)); + items.push(me.createMetaGrid("Children", values, { + "type": possibleChildren.names + })); + } + return me.addTab({ + name: name, + title: name, + items: items + }); + }, + + createFieldsetItem: function(name, values) { + return { + xtype: "form", + width: "98%", + name: name, + bodyPadding: 10, + margin: '5 0 0 5', + layout: { + type: (values.length > 3) ? 'anchor' : 'hbox', + padding:'5', + align:'right' + }, + title: name, + items: values.map(function(attr) { + return { + xtype: (attr == "date") ? "datefield" : "textfield", + format: (attr == "date") ? "Y-m-d" : "", + fieldLabel: Ext.String.capitalize(attr.replace("akn_", "")), + labelAlign : 'right', + anchor: '30%', + labelWidth: 50, + name: attr + }; + }) + }; + }, + + // TODO: update every time + fillMetadataFields: function(tab) { + var me = this, editor = me.getController("Editor"), + metadata = editor.getDocumentMetadata(), + tabMap = me.tabMetaMap[tab.name]; + + if(!tabMap || tabMap.filled ) return; + metadata = (metadata && metadata.obj && tabMap.metaParent) ? metadata.obj[tabMap.metaParent] : metadata.obj; + if(metadata && metadata[tab.name]) { + Ext.each(metadata[tab.name].children, function(el) { + var cmpToFill = tabMap.tab.down("*[name='"+el.attr.class+"']"); + + if(tabMap.tab.down("*[name='Children']")) { + cmpToFill = tabMap.tab.down("*[name='Children']"); + el.attr["type"] = el.attr["class"]; + } + + if(cmpToFill) { + if(cmpToFill.xtype == "metaGrid") { + me.fillGridFields(cmpToFill, el); + } else { + me.fillFormFields(cmpToFill, el); + } + } else { + //console.log(tab, el); + } + }); + } + + tabMap.filled = true; + }, + + fillGridFields: function(grid, data) { + this.addRecord(grid, data.attr, false, true); + }, + + fillFormFields: function(form, data) { + Ext.Object.each(data.attr, function(attr, val) { + var field = form.down("*[name='"+attr+"']"); + if(field) { + if(Ext.isEmpty(val)) { + field.reset(); + } else { + field.setValue(val); + } + } + }); + }, + + tabActivated: function(tab) { + this.fillMetadataFields(tab); + }, + + addRecord : function(grid, record, index, noEdit) { + var store = grid.getStore(), + plugin = grid.getPlugin("cellediting"), + index = index || store.getCount(); + store.insert(index, [record]); + if(!noEdit) { + plugin.startEdit(index, 0); + } + }, + + /*resetFields: function() { + var me = this; + Ext.Object.each(me.tabMetaMap, function(el, obj) { + obj.filled = false; + if(obj.tab) { + Ext.each(obj.tab.query("textfield"), function(cmp) { + cmp.reset(); + }); + Ext.each(obj.tab.query("metaGrid"), function(cmp) { + cmp.getStore().removeAll(true); + }); + } + }); + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + false, this.getPluginName()); + }, + */ + + docLoaded: function() { + this.tabMetaMap = {}; + this.application.fireEvent(Statics.eventsNames.removeGroupContextPanel, this.getPluginName()); + Ext.defer(this.addMetadataFields, 200, this); + }, + + updateMetadata: function(cmp, data, conf) { + var me = this, editor = me.getController("Editor"), + tab = cmp.up("metaManagerPanel"), + tabMap = me.tabMetaMap[tab.name], + name = cmp.name, + path = ""; + conf = conf || {}; + + if(tabMap && cmp) { + path = (tabMap.metaParent) ? tabMap.metaParent + "/" : ""; + if(name == "Children") { + var groups = {}; + Ext.each(data, function(obj) { + var type = obj.type; + if(type != undefined) { + delete obj.type; + groups[type] = groups[type] || []; + groups[type].push(obj); + } + }); + Ext.Object.each(groups, function(group, gData) { + var result = DocProperties.updateMetadata(Ext.merge({ + metadata : editor.getDocumentMetadata(), + path : path+tab.name+"/"+group, + data : gData + })); + if (result) { + Ext.MessageBox.alert("Error", "Error " + result); + } else { + //remove this + editor.changed = true; + } + }); + } else { + path += (tab.name != name) ? tab.name + "/" + name : tab.name; + //move this to a controller + var result = DocProperties.updateMetadata(Ext.merge({ + metadata : editor.getDocumentMetadata(), + path : path, + data : data, + overwrite: true + }, conf)); + if (result) { + Ext.MessageBox.alert("Error", "Error " + result); + } else { + //remove this + editor.changed = true; + } + } + } + }, + + init : function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.docLoaded, me); + me.control({ + 'metaManagerPanel': { + activate: me.tabActivated + }, + 'metaManagerPanel textfield': { + change: function(cmp, newValue, oldValue) { + if(!cmp.up("metaGrid")) { + var form = cmp.up("form"); + me.updateMetadata(form, form.getValues()); + } + } + }, + 'metaGrid tool' : { + click : function(cmp) { + var grid = cmp.up("metaGrid"); + var records = {}; + Ext.each(grid.columnsNames, function(name) { + records[name] = name; + }); + me.addRecord(grid, records); + } + }, + }); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js new file mode 100644 index 00000000..c5af7176 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +Ext.define('LIME.ux.metadataManager.MetadataManagerTabPanel', { + + extend : 'Ext.panel.Panel', + + alias : 'widget.metaManagerPanel', + + config : { + pluginName : "metadataManager" + }, + + autoScroll: true, + + initComponent: function() { + this.title = this.title || Locale.getString("title", this.getPluginName()); + this.callParent(arguments); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/strings.json b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/strings.json new file mode 100644 index 00000000..e91239f9 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/strings.json @@ -0,0 +1,8 @@ +{ + "en": { + "title": "Metadata editor" + }, + "it": { + "title": "Editor metadati" + } +} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/structure.json b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/structure.json new file mode 100644 index 00000000..c7eb5af7 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/metadataManager/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["MetaGrid", "MetadataManagerTabPanel"], + "controllers": ["MetadataManagerController"] +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js new file mode 100644 index 00000000..d5621451 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js @@ -0,0 +1,1827 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.ModsMarkerController', { + extend : 'Ext.app.Controller', + + views : ['LIME.ux.modsMarker.ModsMarkerWindow'], + + refs : [{ + ref : 'contextMenu', + selector : 'contextMenu' + },{ + selector : 'appViewport', + ref : 'appViewport' + },{ + selector: 'modsMarkerWindow', + ref: 'modsWindow' + },{ + selector: 'modsMarkerWindow textfield[name=selection]', + ref: 'selectionField' + }], + + config: { + pluginName: "modsMarker", + renumberingAttr: "renumbering", + joinAttr: "joined", + splitAttr: "splitted", + externalConnectedElements: ["quotedStructure", "quotedText", "ref", "rref", "mref"] + }, + + onDocumentLoaded : function(docConfig) { + var me = this, modPosChecked = Ext.bind(this.modPosChecked, this); + this.addModificationButtons(); + + this.posMenu = { + items : [{ + type: "start" + },{ + type: "before" + },{ + type: "inside" + },{ + type: "after" + },{ + type: "end" + },{ + type: "unspecified" + }] + }; + + Ext.each(this.posMenu.items, function(item) { + item.text = Locale.getString(item.type, me.getPluginName()); + item.checkHandler = modPosChecked; + item.group = "modPos"; + item.checked = false; + }); + + try { + this.detectExistingMods(); + } catch(e) { + Ext.log({level: "error"}, e); + } + __ME = this; + }, + + modPosChecked: function(cmp, checked) { + var me = this, language = me.getController("Language"), + typesMenu = cmp.up("*[name=types]"), + pos, destination; + if(checked && typesMenu && typesMenu.textMod) { + destination = typesMenu.textMod.querySelector('*[class="destination"]'); + if(destination) { + pos = language.nodeGetLanguageAttribute(destination, "pos"); + destination.setAttribute(pos.name, cmp.type); + } + } + }, + + detectExistingMods: function(noEffect) { + var me = this, editor = me.getController("Editor"), + editorBody = editor.getBody(), + docMeta = me.getDocumentMetadata(), + langPrefix = docMeta.langPrefix, + language = me.getController("Language"), + markingMenu = me.getController("MarkingMenu"), + metaDom = docMeta.metadata.originalMetadata.metaDom, + button = markingMenu.getFirstButtonByName("mod"), + modsElements = editorBody.querySelectorAll("*[" + DomUtils.elementIdAttribute + "][class~='mod']"), + returnMods = [], + hrefAttr = langPrefix+"href"; + + Ext.each(modsElements, function(element) { + var elId = language.nodeGetLanguageAttribute(element, "eId"), + intId = element.getAttribute(DomUtils.elementIdAttribute), + metaMod, textMod, modType, buttonCfg; + if (elId.value) { + metaMod = metaDom.querySelector('*[class="source"]['+langPrefix+'href="'+elId.value+'"], *[class="source"]['+langPrefix+'href="#'+elId.value+'"]'); + } else { + metaMod = metaDom.querySelector('*[class="source"]['+langPrefix+'href="'+intId+'"], *[class="source"]['+langPrefix+'href="#'+intId+'"]'); + } + if(metaMod) { + textMod = metaMod.parentNode; + modType = textMod.getAttribute('type'); + if(!noEffect) { + metaMod.setAttribute(langPrefix+'href', "#"+intId); + element.removeAttribute(elId.name); + } + returnMods.push({ + node: element, + type: modType, + textMod: textMod + }); + if(modType) { + buttonCfg = Ext.Object.getValues(me.activeModButtons).filter(function(cfg) { + return cfg.modType == modType; + })[0]; + if(buttonCfg && !noEffect) { + me.setElementStyles([element], button, null, buttonCfg); + } + } + } + }); + + + modsElements = metaDom.querySelectorAll("[class=passiveModifications] [class=textualMod]"); + Ext.each(modsElements, function(element) { + var modEls = element.querySelectorAll("["+hrefAttr+"]"); + var modType = element.getAttribute('type'); + if(modType) { + var buttonCfg = Ext.Object.getValues(me.passiveModButtons).filter(function(cfg) { + return cfg.modType == modType; + })[0]; + if(buttonCfg) { + button = markingMenu.getFirstButtonByName(buttonCfg.markAsButton); + } + Ext.each(modEls, function(modEl) { + var href = modEl.getAttribute(hrefAttr); + if(!Ext.isEmpty(href.trim())) { + var id = (href.charAt(0) == "#") ? href.substring(1) : href; + var editorEl = editorBody.querySelector("*[" + langPrefix + "eid='"+id+"']"); + if(editorEl && !noEffect) { + var edElId = editorEl.getAttribute(DomUtils.elementIdAttribute); + modEl.setAttribute(hrefAttr, href.replace(id, edElId)); + editorEl.removeAttribute(hrefAttr); + if(buttonCfg && button && DomUtils.getButtonByElement(editorEl).name == button.name) { + me.setElementStyles([editorEl], button, null, buttonCfg); + } + } + } + }); + } + }); + + //TODO:passive mods + return returnMods; + }, + + beforeContextMenuShow: function(menu, node) { + var me = this, elementName = DomUtils.getElementNameByNode(node), + markedParent, language = me.getController("Language"); + if(!elementName) { + node = DomUtils.getFirstMarkedAncestor(node.parentNode); + elementName = DomUtils.getElementNameByNode(node); + } + if(node && elementName) { + markedParent = DomUtils.getFirstMarkedAncestor(node.parentNode); + if(markedParent && (elementName == "quotedStructure" + || elementName == "quotedText") && DomUtils.getElementNameByNode(markedParent) == "mod" ) { + + var textMod = me.detectModifications(markedParent, false, false, true); + textMod = (textMod) ? textMod.textMod : null; + if(textMod && textMod.getAttribute("type") == "substitution") { + var href = language.nodeGetLanguageAttribute(node, "href"), + elId = node.getAttribute(DomUtils.elementIdAttribute), + langId = language.nodeGetLanguageAttribute(node, "eid"), + modElement = textMod.querySelector("*[akn_href*="+elId+"], *[akn_href*="+langId.value+"]"), + modType = (modElement) ? modElement.getAttribute("class") : "", + destination = textMod.querySelector('*[class="destination"]'), pos, + posMenu = Ext.clone(me.posMenu), menuItem; + + if(destination) { + pos = language.nodeGetLanguageAttribute(destination, "pos"); + if(pos.value) { + menuItem = posMenu.items.filter(function(item) { + return item.type == pos.value; + })[0]; + if(menuItem) { + menuItem.checked = true; + } + } + } + + if(!menu.down("*[name=modType]")) { + menu.add(['-', { + text : 'Type', + name: "modType", + menu : { + name: "types", + textMod: textMod, + refNode: node, + modElement: modElement, + items : [{ + text : 'Old', + group : 'modType', + textMod: textMod, + modElement: modElement, + refNode: node, + type: "old", + checked: (modType == "old") ? true : false, + checkHandler : Ext.bind(me.onTypeSelected, me) + }, { + text : 'New', + group : 'modType', + checked: (modType == "new") ? true : false, + textMod: textMod, + refNode: node, + modElement: modElement, + type: "new", + checkHandler : Ext.bind(me.onTypeSelected, me) + }, { + text : 'Pos', + group : 'modType', + checked: (modType == "pos") ? true : false, + type: "pos", + checkHandler : Ext.bind(me.onTypeSelected, me), + menu: posMenu + }] + } + }]); + } + } + } else if(elementName == "mod") { + var meta = this.getAnalysisByNodeOrNodeId(node); + if(meta && !menu.down("*[name=modType]")) { + var modType = meta.type; + menu.add(['-', { + text : 'Type', + name: "modType", + menu : { + items : [{ + text : Locale.getString("insertion", me.getPluginName()), + modType: 'insertion', + group : 'modType', + refNode: node, + checked: (modType == "insertion") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }, { + text : Locale.getString("repeal", me.getPluginName()), + modType: 'repeal', + group : 'modType', + refNode: node, + checked: (modType == "repeal") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }, { + text : Locale.getString("substitution", me.getPluginName()), + modType: 'substitution', + group : 'modType', + refNode: node, + checked: (modType == "substitution") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }] + } + }]); + } + } + + me.addPosMenuItems(menu, node, elementName, markedParent); + me.addExternalContextMenuItems(menu, node, elementName, markedParent); + } + }, + + + addPosMenuItems: function(menu, node, elementName, markedParent) { + var me = this, language = me.getController("Language"), cls, + mod = me.detectModifications(node, false, false, true); + + if(mod && mod.modElement) { + cls = mod.modElement.getAttribute("class"); + if(cls == "destination" || cls == "source") { + if(!menu.down("*[name=modPos]")) { + var posMenu = Ext.clone(me.posMenu); + var pos = language.nodeGetLanguageAttribute(mod.modElement, "pos"); + if(pos.value) { + menuItem = posMenu.items.filter(function(item) { + return item.type == pos.value; + })[0]; + if(menuItem) { + menuItem.checked = true; + } + } + posMenu.textMod = mod.textMod; + posMenu.name = "types"; + menu.add(['-', { + name: "modPos", + text : 'Pos', + type: "pos", + menu: posMenu + }]); + } + } + } + }, + + addExternalContextMenuItems: function(menu, node, elementName, markedParent) { + var me = this; + if(Ext.Array.contains(me.getExternalConnectedElements(), elementName)) { + if(!menu.down("*[name=connectExternal]")) { + var mods = me.detectExistingMods(true), + items = []; + Ext.each(mods, function(mod) { + items.push({ + text : Locale.getString(mod.type, me.getPluginName()), + modType: mod.type, + group : 'connectExternal', + refMod: mod, + checked: false, + checkHandler : Ext.bind(me.onExternalConnect, me), + listeners: { + focus: Ext.bind(me.onFocusExternalMenuItem, me) + } + }); + }); + + menu.add(['-', { + text : 'Set as external mod element', + name: "connectExternal", + menu : { + items : items + } + }]); + } + } + }, + + onFocusExternalMenuItem: function(cmp) { + this.application.fireEvent('nodeFocusedExternally', cmp.refMod.node, { + select : true, + scroll : true + }); + }, + + onExternalConnect: function(cmp, checked) { + console.log(cmp, checked); + }, + + onModTypeSelected: function(cmp, checked) { + var me = this, buttonCfg = Ext.Object.getValues(me.activeModButtons).filter(function(cfg) { + return cfg.modType == cmp.modType; + })[0]; + if(buttonCfg) { + if(checked && cmp.refNode) { + var meta = me.getAnalysisByNodeOrNodeId(cmp.refNode), + markingMenu = me.getController("MarkingMenu"), + button = markingMenu.getFirstButtonByName("mod"); + meta.analysis.setAttribute("type", cmp.modType); + me.setElementStyles([cmp.refNode], button, null, buttonCfg); + } else if(!checked) { + me.removeElementStyles(cmp.refNode, buttonCfg); + } + } + + }, + + onTypeSelected: function(cmp, checked) { + var me = this, sameType, oldType; + if(checked && cmp.textMod && cmp.modElement) { + oldType = cmp.modElement.getAttribute("class"); + sameType = cmp.textMod.querySelectorAll("*[class="+cmp.type+"]"); + if(sameType.length == 1) { + sameType[0].setAttribute("class", oldType); + } + cmp.modElement.setAttribute("class", cmp.type); + me.insertTextModChildInOrder(cmp.textMod, cmp.modElement); + } else if(checked && cmp.textMod) { + var languageController = me.getController("Language"), + langPrefix = languageController.getLanguagePrefix(), + elId = cmp.refNode.getAttribute(DomUtils.elementIdAttribute), + existedEl = cmp.textMod.querySelector("*[class='"+cmp.type+"']["+langPrefix+"href='#']"), + href = (elId) ? "#"+elId : "#"; + + if(existedEl) { + existedEl.setAttribute(langPrefix+"href", href); + } else { + var textModObj = { + name: cmp.type, + attributes: [{ + name: langPrefix+"href", + value: href + }] + }; + var modEl = me.objToDom(cmp.textMod.ownerDocument, textModObj); + me.insertTextModChildInOrder(cmp.textMod, modEl); + } + } + }, + + removeElementStyles: function(node, buttonCfg) { + if(node) { + node.removeAttribute(buttonCfg.modType); + } + }, + + addModificationButtons: function() { + this.addActiveMofigicationButtons(); + this.addPassiveModificationButtons(); + }, + + addPassiveModificationButtons: function() { + var me = this, app = me.application; + markerButtons = { + passiveModifications: { + label: Locale.getString("passiveModifications", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + insertionCustom: { + label: Locale.getString("insertion", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.insertionHandler, + markAsButton: "ins" + }, + repealCustom: { + label: Locale.getString("repeal", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.delHandler, + markAsButton: "del" + }, + substitutionCustom: { + label: Locale.getString("substitution", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.substitutionHandler, + markAsButton: "ins", + elementStyle: "background-color: #fcf8e3;border-color: #faebcc;", + labelStyle: "border-color: #faebcc;", + shortLabel: Locale.getString("substitution", me.getPluginName()), + modType: "substitution" + }, + splitCustom: { + label: Locale.getString("split", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.splitHandler + }, + joinCustom: { + label: Locale.getString("join", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.joinHandler + }, + renumberingCustom: { + label: Locale.getString("renumbering", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.renumberingHandler + }, + destintionText: { + label: Locale.getString("destinationText", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + action: { + label: Locale.getString("action", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + } + }, + rules = { + elements: { + passiveModifications: { + //children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + children: ["commonReference", "destintionText", "action"] + }, + destintionText: { + children: ["quotedStructure", "quotedText"] + }, + action: { + children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + } + } + }, + config = { + name : 'passiveModifications', + group: "commons", + after: "activeModifications", + buttons: markerButtons, + rules: rules, + scope: me + }; + app.fireEvent(Statics.eventsNames.addMarkingButton, config); + me.passiveModButtons = markerButtons; + }, + + addActiveMofigicationButtons: function() { + var me = this, app = me.application; + markerButtons = { + activeModifications: { + label: Locale.getString("activeModifications", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + insertionCustom: { + label: Locale.getString("insertion", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeInsertionHandler, + elementStyle: "background-color: #dff0d8; border-color: #d6e9c6;", + labelStyle: "border-color: #d6e9c6;", + markAsButton: "mod", + shortLabel: Locale.getString("insertion", me.getPluginName()), + modType: "insertion" + }, + repealCustom: { + label: Locale.getString("repeal", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeDelHandler, + elementStyle: "background-color: #f2dede;border-color: #ebccd1;", + labelStyle: "border-color: #ebccd1;", + markAsButton: "mod", + shortLabel: Locale.getString("repeal", me.getPluginName()), + modType: "repeal" + }, + substitutionCustom: { + label: Locale.getString("substitution", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeSubstitutionHandler, + elementStyle: "background-color: #fcf8e3;border-color: #faebcc;", + labelStyle: "border-color: #faebcc;", + markAsButton: "mod", + shortLabel: Locale.getString("substitution", me.getPluginName()), + modType: "substitution" + }, + splitCustom: { + label: Locale.getString("split", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeSplitHandler, + elementStyle: "background-color: #D4E7ED; border-color: #74A6BD;", + labelStyle: "border-color: #74A6BD", + markAsButton: "mod", + shortLabel: Locale.getString("split", me.getPluginName()), + modType: "split" + }, + joinCustom: { + label: Locale.getString("join", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeJoinHandler, + elementStyle: "background-color: #AB988B; border-color: #B06A3B;", + labelStyle: "border-color: #B06A3B;", + markAsButton: "mod", + shortLabel: Locale.getString("join", me.getPluginName()), + modType: "join" + }, + renumberingCustom: { + label: Locale.getString("renumbering", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeRenumberingHandler, + elementStyle: "background-color: #EB8540; border-color: #AB988B;", + labelStyle: "border-color: #AB988B;", + markAsButton: "mod", + shortLabel: Locale.getString("renumbering", me.getPluginName()), + modType: "renumbering" + }, + destintionText: { + label: Locale.getString("destinationText", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + action: { + label: Locale.getString("action", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + } + }, + rules = { + elements: { + activeModifications: { + children: ["commonReference", "destintionText", "action"] + }, + destintionText: { + children: ["quotedStructure", "quotedText"] + }, + action: { + children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + } + } + }, + config = { + name : 'activeModifications', + group: "commons", + after: "commonReference", + buttons: markerButtons, + rules: rules, + scope: me + }; + app.fireEvent(Statics.eventsNames.addMarkingButton, config); + me.activeModButtons = markerButtons; + }, + + getOrCreatePath: function(dom, path) { + var me = this, elements = path.split("/"), node, + iterNode = dom, tmpNode; + + for(var i = 0; i', { + xtype : 'button', + icon : 'resources/images/icons/cancel.png', + text : "No", + handler: function() { + this.up("window").close(); + } + }, { + xtype : 'button', + icon : 'resources/images/icons/accept.png', + text : "Yes", + handler: function() { + this.up("window").close(); + me.addRenumberingAfterMod(modEl, textualMod); + } + }] + }] + }).show(); + /*Ext.Msg.confirm("Renumbering", "This modification has caused a renumbering?", function(response) { + if(response == "yes") { + console.log(modEl, textualMod); + } + }, this);*/ + }, + + addRenumberingAfterMod: function(modEl, textualMod) { + //TODO: + }, + + editorNodeFocused: function(node) { + var me = this; + if(me.openedForm) { + me.openedForm.close(); + me.openedForm = null; + } + if(node) { + try { + me.detectModifications(node); + } catch(e) { + Ext.log({level: "error"}, e); + } + } + }, + + nodesUnmarked: function(nodesIds) { + var me = this; + Ext.each(nodesIds, function(nodeId) { + try { + me.detectModifications(null, nodeId, true); + } catch(e) { + Ext.log({level: "error"}, e); + } + }); + }, + + onRemoveController: function() { + var me = this; + me.application.removeListener(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.removeListener(Statics.eventsNames.editorDomNodeFocused, me.editorNodeFocused, me); + me.application.removeListener(Statics.eventsNames.unmarkedNodes, me.nodesUnmarked, me); + }, + + onInitPlugin: function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.on(Statics.eventsNames.editorDomNodeFocused, me.editorNodeFocused, me); + me.application.on(Statics.eventsNames.unmarkedNodes, me.nodesUnmarked, me); + me.application.fireEvent(Statics.eventsNames.registerContextMenuBeforeShow, Ext.bind(me.beforeContextMenuShow, me)); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js new file mode 100644 index 00000000..6df46384 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * This view is used as wizard window to creating document collections + */ + +Ext.define('LIME.ux.modsMarker.ModsMarkerWindow', { + + extend : 'Ext.window.Window', + + alias : 'widget.modsMarkerWindow', + + layout : 'card', + + draggable : true, + + border : false, + + modal : false, + + title : Locale.getString("windowTitle", "modsMarker"), + + width : 605, + + /** + * Return the data set in the view + * @return {Object} An object containing the key-value pairs in the form + */ + getData : function() { + var form = this.down('form[itemId=step1]').getForm(); + if (!form.isValid()) + return null; + return form.getValues(false, false, false, true); + }, + + setData: function(data) { + var form = this.down('form[itemId=step1]').getForm(); + form.setValues(data); + }, + + items : [{ + xtype : 'form', + frame : true, + padding : '10px', + layout : 'anchor', + defaults : { + anchor : '100%' + }, + + defaultType : 'textfield', + items : [{ + name: "selection", + fieldLabel: 'Selection' + }], + + dockedItems : [{ + xtype : 'toolbar', + dock : 'bottom', + ui : 'footer', + items : ['->', { + xtype : 'button', + cls: 'createDocumentCollection', + minWidth : 100, + text : Locale.getString("ok") + }] + }] + }] +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/strings.json b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/strings.json new file mode 100644 index 00000000..787453e9 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/strings.json @@ -0,0 +1,43 @@ +{ + "en": { + "insertion": "Insertion", + "substitution": "Substitution", + "repeal": "Repeal", + "activeModifications": "Active modifications", + "passiveModifications": "Passive modifications", + "split": "Split", + "join": "Join", + "renumbering": "Renumbering", + "destinationText": "Destination Text", + "action": "Action", + "renumbered": "renumbered", + "joined": "joined", + "splitted": "splitted" + }, + "it": { + "insertion": "Inserimento", + "substitution": "Sostituzione", + "repeal": "Abrogazione", + "activeModifications": "Modifiche attive", + "passiveModifications": "Modifiche passive", + "split": "Divisione", + "join": "Unione", + "renumbering": "Rinumerazione", + "renumbered": "renumerato", + "joined": "unito", + "splitted": "diviso" + }, + "es": { + "insertion": "Insertion", + "substitution": "Sustitución", + "repeal": "Revocación", + "activeModifications": "Cambios Activos", + "passiveModifications": "Cambios Pasivos", + "split": "División", + "join": "Unirse", + "renumbering": "Renumeración", + "renumbered": "renumerado", + "joined": "unido", + "splitted": "diviso" + } +} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/structure.json b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/structure.json new file mode 100644 index 00000000..5ecf2c34 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/modsMarker/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["ModsMarkerWindow"], + "controllers": ["ModsMarkerController"] +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js new file mode 100644 index 00000000..567162df --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.NotesManagerController', { + extend : 'Ext.app.Controller', + + config : { + pluginName : "notesManager", + authorialNoteClass : 'authorialNote', + changePosAttr: 'chposid', + changePosTargetAttr: 'chpos_id', + refToAttribute: 'refto', + notesContainerCls: 'notesContainer' + }, + + processNotes : function(editorBody) { + var me = this, + athNotes = editorBody.querySelectorAll("*[class~='"+me.getAuthorialNoteClass()+"']"); + Ext.each(athNotes, function(element) { + me.processNote(element, editorBody); + }, me); + }, + + getNotesContainer: function(editorBody) { + var notesContainer = editorBody.querySelector("."+this.getNotesContainerCls()), + docNode = editorBody.querySelector("."+DocProperties.documentBaseClass); + if(!notesContainer && docNode) { + notesContainer = Ext.DomHelper.createDom({ + tag : 'div', + cls: this.getNotesContainerCls() + }); + docNode.appendChild(notesContainer); + } + + return notesContainer; + }, + + + setNotePosition: function(note, refNode, editorBody) { + var me = this, languageController = me.getController("Language"), + placement = languageController.nodeGetLanguageAttribute(note, "placement"), + allRefs = Array.prototype.slice.call(editorBody.querySelectorAll("*["+LoadPlugin.getRefToAttribute()+"]")), + notesContainer, changed = false, refIndex, siblingNote, refSibling, refSiblingIndex; + + if (placement.value == "bottom" && note.parentNode && + (!note.parentNode.getAttribute("class") || + note.parentNode.getAttribute("class").indexOf(me.getNotesContainerCls()) == -1)) { + notesContainer = me.getNotesContainer(editorBody); + if(!notesContainer.childNodes.length) { + notesContainer.appendChild(note); + } else { + // Insert the note in order + refIndex = allRefs.indexOf(refNode); + for(var i = 0; i < notesContainer.childNodes.length; i++) { + siblingNote = notesContainer.childNodes[i]; + refSibling = allRefs.filter(function(el) { + return el.getAttribute(LoadPlugin.getRefToAttribute()) == siblingNote.getAttribute(LoadPlugin.getNoteTmpId()); + })[0]; + if(refSibling) { + refSiblingIndex = allRefs.indexOf(refSibling); + if(refSiblingIndex > refIndex) { + break; + } + } + } + if(siblingNote && refSiblingIndex > refIndex) { + notesContainer.insertBefore(note, siblingNote); + } else { + notesContainer.appendChild(note); + } + } + changed = true; + } else if (placement.value == "inline" && note.parentNode && + (note.parentNode.getAttribute("class") && + note.parentNode.getAttribute("class").indexOf(me.getNotesContainerCls()) != -1)) { + if (refNode.nextSibling) { + refNode.parentNode.insertBefore(note, refNode.nextSibling); + } else { + refNode.parentNode.appendChild(note); + } + changed = true; + } + return changed; + }, + + + processNote: function(node, editorBody) { + var me = this, parent = node.parentNode, app = me.application, + languageController = me.getController("Language"), + elId, tmpElement, link, tmpExtEl, + marker = languageController.nodeGetLanguageAttribute(node, "marker"), + placement = languageController.nodeGetLanguageAttribute(node, "placement"), + supLinkTemplate = new Ext.Template('{markerNumber}'), + notTmpId = node.getAttribute(LoadPlugin.getNoteTmpId()), + tmpRef = editorBody.querySelector("*["+LoadPlugin.getRefToAttribute()+"="+notTmpId+"]"), + allRefs = Array.prototype.slice.call(editorBody.querySelectorAll("*["+LoadPlugin.getRefToAttribute()+"]")), + clickLinker = function() { + var marker = this.getAttribute(me.getRefToAttribute()), + note; + if (marker) { + note = editorBody.querySelector("*["+LoadPlugin.getNoteTmpId()+"="+marker+"]"); + if(note) { + app.fireEvent('nodeFocusedExternally', note, { + select : true, + scroll : true, + click : true + }); + } + } + }; + if (tmpRef) { + elId = allRefs.indexOf(tmpRef); + elId = (elId != -1) ? elId+1 : "note"; + marker.value = marker.value || elId; + placement.value = placement.value || "bottom"; + + if(!tmpRef.querySelector('a')) { + tmpElement = Ext.DomHelper.insertHtml("afterBegin", tmpRef, supLinkTemplate.apply({ + 'markerNumber' : marker.value + })); + tmpElement.querySelector('a').setAttribute(me.getRefToAttribute(), notTmpId); + tmpElement.querySelector('a').onclick = clickLinker; + } + + node.setAttribute(marker.name, marker.value); + node.setAttribute(placement.name, placement.value); + me.setNotePosition(node, tmpRef, editorBody); + } + }, + + updateNote: function(node, editorBody) { + var me = this, languageController = me.getController("Language"), + marker = languageController.nodeGetLanguageAttribute(node, "marker"), + eId = node.getAttribute(LoadPlugin.getNoteTmpId()), + ref = editorBody.querySelector("*["+LoadPlugin.getRefToAttribute()+"="+eId+"]"), + linker, result = {marker: false, placement: false}; + if(eId && ref) { + linker = ref.querySelector('a'); + if(marker.value.trim() != DomUtils.getTextOfNode(linker).trim()) { + result.marker = true; + linker.replaceChild(editorBody.ownerDocument.createTextNode(marker.value), linker.firstChild); + } + result.placement = me.setNotePosition(node, ref, editorBody); + } + return result; + }, + + beforeProcessNotes: function(config) { + this.processNotes(this.getController("Editor").getBody()); + }, + + nodeChangedAttributes: function(node) { + if(node.getAttribute("class").indexOf(this.getAuthorialNoteClass())!=-1) { + var result = this.updateNote(node, this.getController("Editor").getBody()); + if(result.placement) { + this.application.fireEvent('nodeFocusedExternally', node, { + select : true, + scroll : true, + click : true + }); + } + } + }, + + init : function() { + var me = this; + //Listening progress events + me.application.on(Statics.eventsNames.afterLoad, me.beforeProcessNotes, me); + me.application.on(Statics.eventsNames.nodeAttributesChanged, me.nodeChangedAttributes, me); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/strings.json b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/strings.json new file mode 100644 index 00000000..786c8eba --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/strings.json @@ -0,0 +1,12 @@ +{ + "en": { + }, + "it": { + }, + "es": { + }, + "ro": { + }, + "ru": { + } +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/structure.json b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/structure.json new file mode 100644 index 00000000..56b118ac --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/notesManager/structure.json @@ -0,0 +1,3 @@ +{ + "controllers": ["NotesManagerController"] +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/ParsersController.js b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/ParsersController.js new file mode 100644 index 00000000..af9cfaec --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/ParsersController.js @@ -0,0 +1,998 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.ParsersController', { + extend : 'Ext.app.Controller', + + config : { + pluginName : "parsers" + }, + refs : [{ + selector : 'appViewport', + ref : 'appViewport' + }], + + /** + * @property {Number} parserAjaxTimeOut + */ + parserAjaxTimeOut : 4000, + + /** + * @property {Object} parsersConfig + * avaible parsers configuration + */ + parsersConfig : { + 'date' : { + 'url' : 'php/parsers/date/index.php', + 'method' : 'POST' + }, + 'docNum' : { + 'url' : 'php/parsers/docNum/index.php', + 'method' : 'POST' + }, + 'list' : { + 'url' : 'php/parsers/list/index.php', + 'method' : 'POST' + }, + 'docDate' : { + 'url' : 'php/parsers/date/index.php', + 'method' : 'POST' + }, + 'body' : { + 'url' : 'php/parsers/body/index.php', + 'method' : 'POST' + }, + 'structure' : { + 'url' : 'php/parsers/structure/index.php', + 'method' : 'POST' + }, + 'reference' : { + 'url' : 'php/parsers/reference/index.php', + 'method' : 'POST' + }, + 'quote' : { + 'url' : 'php/parsers/quote/index.php', + 'method' : 'POST' + }, + 'docType': { + 'url' : 'php/parsers/doctype/index.php', + 'method' : 'POST' + } + }, + + /** + * @property {Object} parsersListConfig + * temporary solution to list config + */ + parsersListConfig : { + 'blockList' : { + 'intro' : 'listIntroduction', + 'item' : 'item', + 'conclusion' : 'listConclusion' + }, + 'list' : { + 'intro' : 'intro', + 'item' : 'point', + 'conclusion' : 'wrap' + } + }, + + /** + * @property {String[]} docNumImpossibleParents + */ + docNumImpossibleParents : ["h1", "h2", "a"], + + onDocumentLoaded : function(docConfig) { + var me = this; + me.addParserMenuItem(); + }, + + addParserMenuItem : function() { + var me = this; + menu = { + text : Locale.getString("parseDocumentText", me.getPluginName()), + tooltip : Locale.getString("parseDocumentTooltip", me.getPluginName()), + icon : 'resources/images/icons/lightbulb.png', + name : 'parseDocument', + handler : Ext.bind(me.activateParsers, me) + }; + me.application.fireEvent("addMenuItem", me, { + menu : "editMenuButton" + }, menu); + }, + + /** + * This function call parsers for passed elements + * @param {HTMLElement[]} elements Elements to parse + * @param {Object} [config] + */ + parseElements : function(elements, config) { + var me = this; + if (config.silent) + return; + Ext.each(elements, function(markedNode) { + var elementId = markedNode.getAttribute(DomUtils.elementIdAttribute); + if (elementId) { + var button = DocProperties.markedElements[elementId].button, + widgetConfig = button.waweConfig.widgetConfig, markedWrapper = new Ext.dom.Element(markedNode), + contentToParse = markedWrapper.getHTML(), editor = this.getController("Editor"), + app = this.application, viewport = this.getAppViewport(); + //TODO: make an configuration file with all parsers avaible + if (widgetConfig && (button.waweConfig.name == 'docDate')) { + Ext.each(widgetConfig.list, function(widget) { + if (widget.xtype == 'datefield') { + var widgetComponent = button.queryById(elementId); + if (widgetComponent) { + widgetComponent.setLoading(true); + me.callParser("date", Ext.util.Format.stripTags(contentToParse), function(result) { + var jsonData = Ext.decode(result.responseText, true); + var dates; + if (jsonData.response.dates) { + dates = jsonData.response.dates; + } + for (var i in dates) { + widgetComponent.setContent(widgetComponent.id, dates[i].date); + break; + } + widgetComponent.setLoading(false); + }, function() { + widgetComponent.setLoading(false); + }); + } + } + }, this); + } else if (button.waweConfig.name == 'list' || button.waweConfig.name == 'blockList') { + viewport.setLoading(true); + me.callParser("list", Ext.util.Format.stripTags(contentToParse), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseLists(jsonData, markedNode, button); + } + viewport.setLoading(false); + }, function() { + viewport.setLoading(false); + }); + } else if (button.waweConfig.name == 'preface') { + if (viewport) { + viewport.setLoading(true); + } + + me.callParser("docNum", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseDocNum(jsonData, markedNode, button); + } + }, function() { + }); + me.callParser("docDate", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseDocDate(jsonData, markedNode, button); + } + if (viewport) { + viewport.setLoading(false); + } + }, function() { + if (viewport) { + viewport.setLoading(false); + } + }); + + } else if (button.waweConfig.name == 'body') { + //contentToParse = contentToParse.replace(/ /g,' '); + //markedWrapper.setHTML(contentToParse); + me.callParser("body", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + try { + me.parseBodyParts(jsonData, markedNode, button); + } catch(e) {}; + } + }, function() { + }); + } + + } + }, this); + }, + + /** + * This function marks the docDate + * @param {Object} data An object with date result from parser + * @param {HTMLELement} node + * @param {Object} editor An istance of the editor controller + * @param {Object} app A reference to the whole application object (to fire global events) + * @param {Object} button A reference to the button used for marking + */ + parseDocDate : function(data, node, button) { + var me = this, dates = data.response.dates, app = me.application, + editor = me.getController("Editor"), markButton = button.getChildByName("docDate"), + attributeName = markButton.waweConfig.rules.askFor.date1.insert.attribute.name; + config = { + app : app, + editor : editor, + markButton : markButton + }; + if (dates) { + Ext.Object.each(dates, function(item) { + var dateParsed = dates[item]; + config.marker = { + silent : true, + attribute : { + name : attributeName, + value : dateParsed.date + } + }; + me.searchInlinesToMark(node, dateParsed.match, config); + }, me); + } + }, + + /** + * This function marks all input parsed items + * @param {Object} data An object with some items + * @param {HTMLELement} node + * @param {Object} editor An istance of the editor controller + * @param {Object} app A reference to the whole application object (to fire global events) + * @param {Object} button A reference to the button used for marking + */ + parseLists : function(data, node, button) { + var me = this, intro = data.response.intro, items = data.response.items, + app = me.application, editor = me.getController("Editor"), + editorContent = editor.getContent(), listConfig = me.parsersListConfig[button.waweConfig.name]; + if (intro) { + var markNode = DomUtils.findNodeByText(intro, node), introButton = button.getChildByName(listConfig.intro); + if (markNode) { + editor.selectNode(markNode); + app.fireEvent('markingMenuClicked', introButton, { + silent : true + }); + } + } + if (items) { + var itemButton = button.getChildByName(listConfig.item), + numButton = itemButton.getChildByName("num"), config = { + silent : true + }; + Ext.each(items, function(item) { + var markNode = DomUtils.findNodeByText(item.match, node); + if (markNode) { + editor.selectNode(markNode); + app.fireEvent('markingMenuClicked', itemButton, config); + var extWrapper = new Ext.Element(markNode); + extWrapper.setHTML(extWrapper.getHTML().replace(item.match, me.getParsingTemplate(item.match))); + var elementToMark = extWrapper.query("." + DomUtils.tempParsingClass)[0]; + if (elementToMark) { + elementToMark.removeAttribute("class"); + editor.selectNode(elementToMark); + app.fireEvent('markingMenuClicked', numButton, config); + } + } + }, this); + } + + }, + + parseDocTypes : function(docTypes) { + var me = this, app = me.application, + editor = me.getController("Editor"), markingMenu = me.getController("MarkingMenu"), + markButton = button = markingMenu.getFirstButtonByName('docType'), + body = editor.getBody(); + config = { + app : app, + editor : editor, + markButton : markButton + }; + if (docTypes && docTypes.length) { + Ext.each(docTypes, function(docType) { + if(docType) { + var docString = docType.string; + config.marker = { + silent : true + }; + me.searchInlinesToMark(body, docString, config); + } + }, me); + } + }, + + parseDocNum : function(data, node, button) { + var me = this, response = data.response, markButton = button.getChildByName('docNumber'), + app = me.application, editor = me.getController("Editor"), config = { + app : app, + editor : editor, + markButton : markButton, + marker : { + silent : true + } + }; + if (response) { + Ext.each(response, function(item) { + var docNumImpossible = me.docNumImpossibleParents; + me.searchInlinesToMark(node, item.match.trim(), config, function(n) { + var extNode = new Ext.Element(n); + for (var i = 0; i < docNumImpossible.length; i++) { + if (extNode.up(docNumImpossible[i])) { + return false; + } + } + return true; + }); + }, me); + } + + }, + + /** + * This function all occurences of the matchStr in the node and fire mark event for + * those text nodes that passed the filter function. + * @param {HTMLElement} node Search in this node + * @param {String} matchStr The string to search + * @param {Object} config Configuration object that have the marker object inside + * example: { + * app:app, + * editor:editor, + * markButton: markButton, + * marker:{silent:true} + * } + * @param {function} [filter] The text node will be passed to this function + * if it returns false the node will be skipped + */ + searchInlinesToMark : function(node, matchStr, config, filter, beforeMarking) { + if (!node | !matchStr | !(config && config.app && config.editor && config.marker && config.markButton)) + return; + var textNodes = DomUtils.findTextNodes(matchStr, node); + Ext.each(textNodes, function(tNode) { + var index; + while ((!index | index != -1) && ( index = tNode.data.indexOf(matchStr)) != -1) { + var newNode = tNode; + if (Ext.isFunction(filter)) { + if (!filter(newNode)) + break; + } + if (index > 0) { + //TODO: fix bug, IndexSizeError: Index or size is negative or greater than the allowed amount + newNode = newNode.splitText(index); + } + if (newNode.data.length > matchStr.length) { + tNode = newNode.splitText(matchStr.length); + newNode = tNode.previousSibling; + } else { + index = -1; + } + var newWrapper = Ext.DomHelper.createDom({ + tag : 'span' + }); + newNode.parentNode.insertBefore(newWrapper, newNode); + newWrapper.appendChild(newNode); + if (Ext.isFunction(beforeMarking)) { + beforeMarking(newWrapper); + } + + config.editor.selectNode(newWrapper); + config.app.fireEvent('markingMenuClicked', config.markButton, config.marker); + }; + }, this); + }, + + searchTextToMark : function(node, matchStr, config, filter) { + var me = this; + if (!node | !matchStr | !(config && config.app && config.editor && config.marker && config.markButton)) + return; + var textNodes = DomUtils.findTextNodes(matchStr, node); + if(!textNodes.length) { + var tags = matchStr.match(DomUtils.tagRegex); + var re = new RegExp(tags.join("|"), "gi"); + var fragments = matchStr.split(re); + var firstFragment = fragments[0]; + var lastFragment = fragments[fragments.length-1]; + + if(firstFragment != lastFragment) { + var txNodes = DomUtils.findTextNodes(firstFragment, node); + if(txNodes.length == 1) { + //var span = me.textNodeToSpans(txNodes[0], firstFragment)[0]; + var span = txNodes[0]; + if(span) { + txNodes = DomUtils.findTextNodes(lastFragment, node); + //console.log(DomUtils.isNodeSiblingOfNode(span, txNodes[0])); + var objAsc = DomUtils.getCommonAscendant(span, txNodes[0]); + var newWrapper = Ext.DomHelper.createDom({ + tag : 'div', + cls : DomUtils.tempParsingClass + }); + if(objAsc.ascendant) { + //console.log(objAsc.firstParent, objAsc.ascendant, newWrapper); + objAsc.ascendant.insertBefore(newWrapper, objAsc.firstParent); + me.wrapPartNodeSibling(newWrapper, null, function(sibling) { + if(sibling == objAsc.secondParent) { + return true; + } + return false; + }); + me.application.fireEvent('markingRequest', config.markButton, { + nodes : [newWrapper] + }); + } + } + } + } + } + }, + + wrapPartNodeSibling : function(wrapNode, guardFunction, isLastNodeFunction) { + var sibling = wrapNode.nextSibling; + while (sibling) { + if (Ext.isFunction(guardFunction)) { + if (guardFunction(sibling)) { + break; + } + } + wrapNode.appendChild(sibling); + if (Ext.isFunction(isLastNodeFunction)) { + if (isLastNodeFunction(sibling)) { + break; + } + } + sibling = wrapNode.nextSibling; + } + }, + + wrapPartNode : function(partNode, delimiterNode) { + var newWrapper = Ext.DomHelper.createDom({ + tag : 'div', + cls : DomUtils.tempParsingClass + }); + while (partNode.parentNode && partNode.parentNode != delimiterNode) { + partNode = partNode.parentNode; + } + if(partNode.parentNode) { + partNode.parentNode.insertBefore(newWrapper, partNode); + } + newWrapper.appendChild(partNode); + return newWrapper; + }, + + wrapBodyParts : function(partName, parts, node, button) { + var me = this, app = me.application, editor = me.getController("Editor"), + markButton, numButton, nodesToMark = [], numsToMark = [], + markButton = button.getChildByName(partName), numButton = markButton.getChildByName("num"); + + Ext.each(parts, function(element) { + if(!element.value.trim()) return; + var textNodes = DomUtils.findTextNodes(element.value, node), + extNode = new Ext.Element(textNodes[0]), + extParent = extNode.parent("." + DomUtils.tempParsingClass, true), parent, + partNode; + if (extParent || textNodes.length == 0) { + return; + } else { + partNode = (extNode.dom.parentNode == node) ? extNode.dom : extNode.dom.parentNode; + var newWrapper = me.wrapPartNode(partNode, node); + element.wrapper = newWrapper; + nodesToMark.push(newWrapper); + } + numsToMark = Ext.Array.push(numsToMark, me.textNodeToSpans(textNodes[0], element.value)); + }, this); + Ext.each(nodesToMark, function(node) { + me.wrapPartNodeSibling(node, function(sibling) { + var extSib = new Ext.Element(sibling), elButton = DomUtils.getButtonByElement(sibling); + /* If sibling is marked with the same button or it is temp element then stop the loop */ + if ((elButton && (elButton.id === markButton.id)) || (extSib.is('.' + DomUtils.tempParsingClass))) { + return true; + } + return false; + }); + }, this); + if (numsToMark.length > 0) { + app.fireEvent('markingRequest', numButton, { + silent : true, + noEvent : true, + nodes : numsToMark + }); + } + if (nodesToMark.length > 0) { + app.fireEvent('markingRequest', markButton, { + silent : true, + noEvent : true, + nodes : nodesToMark + }); + } + // Do contains elements + Ext.each(parts, function(element) { + var contains = element.contains, containsPartName = Ext.Object.getKeys(contains)[0]; + if (containsPartName && contains[containsPartName]) { + try { + me.wrapBodyParts(containsPartName, contains[containsPartName], element.wrapper, button); + } catch (e) { + Ext.log({level: "error"}, e); + } + } + }, this); + }, + + parseBodyParts : function(data, node, button) { + var me = this, app = me.application, parts = data.response, partName; + if (parts) { + partName = Ext.Object.getKeys(parts)[0]; + if (partName) { + me.wrapBodyParts(partName, parts[partName], node, button); + app.fireEvent('nodeChangedExternally', node, { + change : true, + silent: true + }); + } + } + }, + + wrapStructurePart : function(name, delimiter, prevPartNode) { + var me = this, app = me.application, editor = me.getController("Editor"), + body = editor.getBody(), partNode, wrapNode, + iterNode = Ext.query('*[class='+DocProperties.getDocClassList()+']', body)[0]; + + if (!prevPartNode) { + while (iterNode && iterNode.childNodes.length == 1) { + iterNode = iterNode.firstChild; + } + partNode = iterNode.firstChild; + wrapNode = me.wrapPartNode(partNode, partNode.parentNode); + me.wrapPartNodeSibling(wrapNode, function(sibling) { + var textNodes = DomUtils.findTextNodes(delimiter.value, sibling); + if (textNodes.length > 0) { + return true; + } + return false; + }); + } else if (prevPartNode.nextSibling) { + partNode = prevPartNode.nextSibling; + wrapNode = me.wrapPartNode(partNode, partNode.parentNode); + + if (delimiter.value) { + me.wrapPartNodeSibling(wrapNode, function(sibling) { + if (delimiter.flags && delimiter.flags.indexOf("i") != -1) { + sibling = sibling.previousSibling; + } + var textNodes = DomUtils.findTextNodes(delimiter.value, sibling); + if (textNodes.length > 0) { + return true; + } + return false; + }); + + } else + me.wrapPartNodeSibling(wrapNode); + } + return wrapNode; + }, + + parseQuotes : function(data) { + var me = this, app = me.application, + editor = me.getController("Editor"), markingMenu = me.getController("MarkingMenu"), + markButton = markingMenu.getFirstButtonByName('quotedText'), + markButtonStructure = markingMenu.getFirstButtonByName('quotedStructure'), + body = editor.getBody(); + config = { + app : app, + editor : editor, + marker : { + silent : true + } + }; + if (data && data.length) { + Ext.each(data, function(quote) { + if(quote.start.string && quote.quoted.string && quote.end.string) { + //var string = quote.start.string+quote.quoted.string+quote.end.string; + var string = quote.quoted.string; + // If the string doesn't contains tags + if(!string.match(DomUtils.tagRegex)) { + config.markButton = markButton; + me.searchInlinesToMark(body, string, config, null, function(node) { + if(node.parentNode && node.parentNode.nodeName.toLowerCase() == "span" + && node.parentNode.childNodes.length == 3 && node.parentNode.parentNode) { + if(node.previousSibling) { + node.parentNode.parentNode.insertBefore(node.previousSibling, node.parentNode); + } + if(node.nextSibling) { + DomUtils.insertAfter(node.nextSibling, node.parentNode); + } + } + }); + } else { + config.markButton = markButtonStructure; + try { + me.searchTextToMark(body, string, config); + } catch(e) { + console.log(e); + } + + } + } + }, me); + } + }, + + parseStructure : function(data) { + var me = this, app = me.application, structure = data.structure, prevPartNode = null, + markingMenu = me.getController("MarkingMenu"), markButton, siblings; + if (structure && data.success) { + Ext.each(structure, function(name) { + siblings = DomUtils.getSiblingsFromNode(prevPartNode); + if(!DomUtils.allNodesHaveClass(siblings, DomUtils.breakingElementClass)) { + prevPartNode = me.wrapStructurePart(name, data[name], prevPartNode); + if (prevPartNode) { + markButton = markingMenu.getFirstButtonByName(name); + app.fireEvent('markingRequest', markButton, { + nodes : [prevPartNode] + }); + } + } + }); + } + }, + + parseReference: function(data) { + var me = this, editor = me.getController("Editor"), + body = editor.getBody(), nodesToMark = [], button = Ext.getCmp('ref0'); + + Ext.each(data, function(obj) { + var matchStr = obj.ref, + textNodes = DomUtils.findTextNodes(matchStr,body); + Ext.each(textNodes,function(tNode){ + if(!me.canPassNode(tNode,button.id,[DomUtils.tempParsingClass])){ + return; + } + me.textNodeToSpans(tNode, matchStr, function(node){ + nodesToMark.push(node); + }); + }, this); + }, this); + if (nodesToMark.length>0) { + me.application.fireEvent('markingRequest', button, {silent:true, nodes:nodesToMark}); + } + }, + + /* This function decides if a node can pass by parent class or id + * @param {HTMLElement} node + * @param {String} parentButtonId if this is equal to parent's button id the function returns false + * @param {String[]} [parentClasses] if parent has one of these classes the function returns false + * @returns boolean + */ + canPassNode : function(node,parentButtonId,parentClasses, parentButtonName){ + var parent = node.parentNode; + if(parent){ + var parentId = parent.getAttribute(DomUtils.elementIdAttribute); + if(DomUtils.getButtonIdByElementId(parentId) == parentButtonId){ + return false; + } + if(parentButtonName && parentId){ + var markedElement = DocProperties.getMarkedElement(parentId); + if(markedElement && markedElement.button.waweConfig.name == parentButtonName) + return false; + } + var classes = parent.getAttribute("class"); + if(classes && parentClasses){ + for(var i=0; i" + content + ""; + }, + + /* This function wrap part of textnode in span element(s) + * can apply the passed function to every new element + * Example of usage: + * the result of calling + * textNodeToSpans(, "textNode") + * will be: + * [textNode] + * + * and the result of calling + * textNodeToSpans(, "is") + * will be: + * [is, is] + * one span for every occurrence of "is". + * + * @param {TextNode} tNode The textnode containing str + * @param {String} str String to wrap in a span element, + * can have multiple occurrences in tNode, every occurrence + * will be wrapped in a span element + * @param {Function} [applyFn] Function that takes the new node as argument + * to apply to every new element + * @returns {HTMLElement[]} A list of span elements with "tempParsingClass" class + * */ + textNodeToSpans : function(tNode, str, applyFn) { + var index, spanElements = []; + // This is a while instead of if because in the tNode may be + // multiple occurrences of str, every occurrences will be a span + while ((!index | index != -1) && ( index = tNode.data.indexOf(str)) != -1) { + var newNode = tNode; + if (index > 0) { + newNode = newNode.splitText(index); + } + if (newNode.data.length > str.length) { + tNode = newNode.splitText(str.length); + newNode = tNode.previousSibling; + } else { + index = -1; + } + var newWrapper = Ext.DomHelper.createDom({ + tag : 'span', + cls : DomUtils.tempParsingClass + }); + if (newNode.parentNode) { + newNode.parentNode.insertBefore(newWrapper, newNode); + newWrapper.appendChild(newNode); + } + if (Ext.isFunction(applyFn)) { + applyFn(newWrapper); + } + spanElements.push(newWrapper); + }; + return spanElements; + }, + + restoreQuotes: function(node) { + var me = this, finalQuotes, markingMenu = me.getController("MarkingMenu"), + markButton = markingMenu.getFirstButtonByName('body') || markingMenu.getFirstButtonByName('mainBody'), + markStructureButton = markingMenu.getFirstButtonByName('quotedStructure'); + Ext.each(me.quotedElements, function(quote, index) { + var tmpEl = node.querySelector("[poslist='"+index+"']"); + if(tmpEl) { + tmpEl.parentNode.replaceChild(quote, tmpEl); + } + }); + + finalQuotes = node.querySelectorAll("[class~=quotedText], [class~=quotedStructure]"); + + Ext.each(finalQuotes, function(quote) { + me.callParser("body", Ext.fly(quote).getHTML(), function(result) { + var jsonData = Ext.decode(result.responseText, true), + nodeToParse = quote, elName = DomUtils.getElementNameByNode(quote); + if (jsonData) { + //TODO: else case + if(Ext.Object.getKeys(jsonData.response).length) { + if(elName == "quotedText") { + nodeToParse = Ext.DomHelper.createDom({ + tag : 'div' + }); + quote.parentNode.insertBefore(nodeToParse, quote); + DomUtils.moveChildrenNodes(quote, nodeToParse); + quote.parentNode.removeChild(quote); + me.application.fireEvent('markingRequest', markStructureButton, { + nodes : [nodeToParse], + onFinish: function(nodes) { + try { + me.parseBodyParts(jsonData, nodes[0], markButton); + } catch(e) {}; + } + }); + } else { + try { + me.parseBodyParts(jsonData, nodeToParse, markButton); + } catch(e) {}; + } + } + } + }); + }); + + me.quotedElements = []; + }, + + saveQuotes: function(node) { + var me = this; + me.quotedElements = node.querySelectorAll("[class~=quotedText], [class~=quotedStructure]"); + + Ext.each(me.quotedElements, function(quote, index) { + var tmpEl = Ext.DomHelper.createDom({ + tag : 'span', + cls : DomUtils.tempParsingClass + }); + tmpEl.setAttribute("poslist", index); + quote.parentNode.replaceChild(tmpEl, quote); + }); + }, + + activateParsers : function() { + var me = this, editor = me.getController("Editor"), + app = me.application, buttonName; + + if (!DocProperties.getLang()) { + Ext.MessageBox.alert(Locale.strings.parsersErrors.LANG_MISSING_ERROR_TITLE, Locale.strings.parsersErrors.langMissingError); + return; + } + + app.fireEvent(Statics.eventsNames.progressStart, null, { + value : 0.1, + text : Locale.getString("parsing", me.getPluginName()) + }); + Ext.defer(function() { + // Clean docuement, removing white spaces, before parsing + /*var extNode = new Ext.Element(editor.getBody()); + extNode.clean();*/ + app.fireEvent(Statics.eventsNames.progressUpdate, Locale.getString("parsing", me.getPluginName())); + + var callDocTypeParser = function() { + me.callParser("docType", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + me.parseDocTypes([jsonData.response[0]]); + } + app.fireEvent(Statics.eventsNames.progressEnd); + }, function() { + app.fireEvent(Statics.eventsNames.progressEnd); + }); + }; + var callQuoteParser = function() { + var content = editor.getContent(); + + content = content.replace(/<([a-z][a-z0-9]*)[^>]*?(\/?)>/gi, "<$1$2>"); + + me.callParser("quote", content, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + me.parseQuotes(jsonData.response); + } + //callDocTypeParser(); + //callReferenceParser(); + callStrParser(); + }, function() { + //callDocTypeParser(); + //callReferenceParser(); + callStrParser(); + }); + }; + var callDateParser = function() { + callDocTypeParser(); + /*me.callParser("date", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + //me.parseQuotes(jsonData.response); + } + callDocTypeParser(); + }, function() { + callDocTypeParser(); + });*/ + }; + var callStrParser = function() { + me.saveQuotes(editor.getBody()); + + me.callParser("structure", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseStructure(jsonData.response); + } + me.restoreQuotes(editor.getBody()); + callReferenceParser(); + }, function() { + me.restoreQuotes(editor.getBody()); + callReferenceParser(); + }); + }; + + var callReferenceParser = function() { + me.callParser("reference", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseReference(jsonData.response); + } + callDateParser(); + }, function() { + callDateParser(); + }); + }; + + callQuoteParser(); + + }, 5, me); + }, + + /** + * This function call server side parser with different callbacks + * @param {String} name + * @param {String} sendString + * @param {Function} success + * @param {Function} failure + * @param {Function} callback Call anyway + */ + callParser : function(name, sendString, success, failure, callback) { + var me = this, contentLang = DocProperties.getLang(), config = me.parsersConfig[name]; + + if (!contentLang) { + return; + } + + if (config) { + Ext.Ajax.request({ + // the url of the web service + url : config.url, + timeout : me.parserAjaxTimeOut, + // set the method + method : config.method, + params : { + s : sendString, + f : 'json', + l : contentLang, + doctype : DocProperties.getDocType() + }, + success : success, + failure : failure, + callback : callback + }); + } else if (failure) { + failure(); + if (callback) { + callback(); + } + } + }, + + init : function() { + var me = this; + //Listening progress events + me.application.on(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.on(Statics.eventsNames.nodeChangedExternally, me.parseElements, me); + } +}); diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/strings.json b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/strings.json new file mode 100644 index 00000000..b94cf234 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/strings.json @@ -0,0 +1,27 @@ +{ + "en": { + "parseDocumentText": "Automatic markup", + "parseDocumentTooltip": "Try to markup automatically this document", + "parsing": "Parsing" + }, + "it": { + "parseDocumentText": "Markup automatico", + "parseDocumentTooltip": "Prova a marcare il documento automaticamente", + "parsing": "Riconoscimento" + }, + "es": { + "parseDocumentText": "Marcado Autimático", + "parseDocumentTooltip": "Trate de analizar el documento automáticamente", + "parsing": "Análisis" + }, + "ro": { + "parseDocumentText": "Parser", + "parseDocumentTooltip": "Încercă să analizăzi documentul în mod automat", + "parsing": "Parsing" + }, + "ru": { + "parseDocumentText": "Парсер", + "parseDocumentTooltip": "Попробуйте анализировать этот документ автоматически", + "parsing": "Анализ" + } +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/structure.json b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/structure.json new file mode 100644 index 00000000..0454bfe3 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/client/parsers/structure.json @@ -0,0 +1,3 @@ +{ + "controllers": ["ParsersController"] +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json index dc5a665c..82d10448 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json index ad761e90..8ab93669 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, @@ -380,4 +386,5 @@ }, "commonReference": { } + } diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu.json index 07f48637..f5f82e6d 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -219,6 +222,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json index 31ca5c9f..bbd8b2ff 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/viewConfigs.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/act/viewConfigs.json deleted file mode 100644 index 86a78b62..00000000 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/act/viewConfigs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "allowedViews": ["xml","pdf"] -} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json index 8199a7c7..414b037d 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json @@ -95,6 +95,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -201,7 +204,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -224,6 +227,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json index 12ee68b6..7efcaf30 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/content.css b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/content.css new file mode 100644 index 00000000..4c196377 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/content.css @@ -0,0 +1,13 @@ +.docTitle { + font-size: 12pt; + font-weight: bold; +} + +.docProponent { + font-style: italic; +} + +.article > .num { + font-weight: bold; + margin-right: 40px; +} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json index ad761e90..f7fe261e 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json index ad761e90..f7fe261e 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu.json index a24f92f2..a71ff23a 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json index 2c11d1b4..1afff351 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json index 6ca8122d..21d11e58 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json index 5f3be380..3e4a8a85 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json @@ -1,7 +1,7 @@ { "elements": { "preface": { - "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature", "autoridad"] + "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docAuthority", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature", "autoridad"] } } } diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/content.css b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/content.css new file mode 100644 index 00000000..68f3803b --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/content.css @@ -0,0 +1,7 @@ +.ins { + font-weight: bold; +} + +.del { + text-decoration: line-through; +} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_buttons.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_buttons.json index 47cb0946..bfd36fe3 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_buttons.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_buttons.json @@ -1,4 +1,9 @@ { + "docType" : { + "wrapperStyle": { + "this": "font-weight: bold;" + } + }, "annex": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { @@ -11,7 +16,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border:1px solid #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, @@ -19,7 +24,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color: #8C489F;" } }, @@ -27,10 +32,10 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color:#FF6600;" } }, - + "coverPage": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { @@ -38,33 +43,33 @@ "this": "border:1px solid #74BAAC;" } }, - + "mainBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color:#2385A0;" } }, "amendmentBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, "debateBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#29A2C6;" } }, "fragmentBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#29A2C6;" } }, "attachments": { @@ -85,7 +90,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, @@ -93,7 +98,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border:1px solid #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color: #66A15E;" } }, "item": { @@ -102,6 +107,16 @@ }, "wrapperElement": "

&content;

" }, + "p": { + "wrapperElement": "

&content;

", + "remove": { + "wrapperStyle": ["after", "before", "this"] + }, + "wrapperStyle" : { + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" + } + }, "recitals": { "remove": { "wrapperRules": ["addWrapperElement"] @@ -134,12 +149,21 @@ } } }, + "ref": { + "wrapperStyle": { + "this": "background-color: #DBEADC;text-decoration:underline;" + } + }, "quotedStructure": { "wrapperRules": { "addWrapperElement": { "type" : "mod" } + }, + "wrapperStyle": { + "this": "border-radius: 3px; border:1px solid #C0E0DA; border-left: 10px solid #CCC; padding:3px; margin:3px 0px 3px 0px;" } + }, "quotedText": { "wrapperRules": { @@ -160,7 +184,7 @@ } } }, - + "subdivision":{ "wrapperClass":"patternName patternName", "wrapperRules": { @@ -168,11 +192,11 @@ "values":{ "name": "subdivision" } - + } } }, - + "signature": { "wrapperStyle": "padding: 3px;" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_patterns.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_patterns.json index e07e0329..b041ec9c 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_patterns.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/custom_patterns.json @@ -8,7 +8,7 @@ } }, "wrapperStyle" : { - "before":"border: 1px solid #A5D3CA; background-color: #A5D3CA; font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display:block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #A5D3CA; background-color: #A5D3CA; color: black; font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display:block;text-align:center; margin-bottom:5px; cursor:pointer;", "this": "border-radius: 3px; border:1px solid #A5D3CA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -16,7 +16,7 @@ "container":{ "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -24,7 +24,7 @@ "block":{ "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -32,9 +32,9 @@ "inline":{ "buttonStyle": "background-color:#DBEADC; border-radius: 3px;", "wrapperStyle" : { - "before": "background-color:#DBEADC; border-radius: 3px 0px 0px 3px; border:1px solid #6CA870; padding-left:2px; padding-right:2px; margin-right:2px; margin-left:2px; color:#6D6D6D;", - "after": "background-color:#DBEADC; border-radius: 0px 3px 3px 0px; border:1px solid #6CA870; padding-left:2px; padding-right:2px; margin-left:2px; margin-right:2px; color:#6D6D6D;", - "this": "border-radius: 3px; line-height:19px;" + "before": "background-color:#DBEADC; border-radius: 10px 0px 0px 10px; border:1px solid #6CA870; border-right:0px; padding-left:4px; padding-right:2px; margin-right:2px; color:#6D6D6D; ", + "after": "background-color:#DBEADC; border-radius: 0px 10px 10px 0px; border:1px solid #6CA870; border-left:0px; padding-left:2px; padding-right:4px; margin-left:2px; color:#6D6D6D;", + "this": "border-radius: 10px; line-height:19px; margin: 0 2px;" } }, "popup":{ @@ -42,7 +42,7 @@ "wrapperClass" : "patternName elementName", "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json index a8181161..5299513f 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json @@ -493,7 +493,7 @@ }, "quotedStructure": { "label": "Set quoted structure", - "shortLabel": "quotedStructure" + "shortLabel": "quoted structure" }, "quotedText": { "label": "Set quoted text", diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json index 034c26b0..0f7b1303 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json @@ -140,8 +140,8 @@ "shortLabel": "tapa" }, "date": { - "label": "fFecha", - "shortLabel": "data" + "label": "Fecha", + "shortLabel": "Fecha" }, "debateBody": { "label": "Cuerpo", @@ -181,7 +181,7 @@ }, "docDate": { "label": "Fecha del documento", - "shortLabel": "data-doc" + "shortLabel": "Fecha-Doc" }, "docIntroducer": { "label": "Introductor", @@ -217,7 +217,7 @@ }, "docTitle": { "label": "Título de documento", - "shortLabel": "titolo-doc" + "shortLabel": "Título-doc" }, "docType": { "label": "Tipo de documento", @@ -228,8 +228,8 @@ "shortLabel": "link-doc" }, "entity": { - "label": "Entidad'", - "shortLabel": "entita" + "label": "Entidad", + "shortLabel": "Entidad" }, "eol": { "label": "Final de la línea", @@ -237,7 +237,7 @@ }, "eop": { "label": "Final de la pagina", - "shortLabel": "fine-pagina" + "shortLabel": "Final-pagina" }, "event": { "label": "Evento", @@ -269,7 +269,7 @@ }, "from": { "label": "De", - "shortLabel": "da" + "shortLabel": "De" }, "hcontainer": { "label": "Contenedor jerárquico genérico", @@ -280,12 +280,12 @@ "shortLabel": "Encabezado-juicio" }, "heading": { - "label": "Rúbrica", - "shortLabel": "Rúbrica" + "label": "Nomen juris", + "shortLabel": "Nomen-juris" }, "indent": { - "label": "Inciso", - "shortLabel": "Inciso" + "label": "Indentación", + "shortLabel": "Indentación" }, "inline": { "label": "Inline", @@ -341,7 +341,7 @@ }, "mainBody": { "label": "cuerpo de documento", - "shortLabel": "corpo-doc" + "shortLabel": "cuerpo-doc" }, "marker": { "label": "marcador", @@ -357,7 +357,7 @@ }, "mod": { "label": "Modificación", - "shortLabel": "modifica" + "shortLabel": "Modificación" }, "motivation": { "label": "Motivación", @@ -365,7 +365,7 @@ }, "mref": { "label": "Referencias múltiples", - "shortLabel": "rif-multipli" + "shortLabel": "Ref-Multiple" }, "narrative": { "label": "Narración", @@ -425,7 +425,7 @@ }, "paragraph": { "label": "Inciso", - "shortLabel": "comma" + "shortLabel": "Inciso" }, "part": { "label": "Parte", @@ -480,8 +480,8 @@ "shortLabel": "disposizione" }, "quantity": { - "label": "Cantidad'", - "shortLabel": "quantita" + "label": "Cantidad", + "shortLabel": "Cantidad" }, "question": { "label": "Pregunta", @@ -493,11 +493,11 @@ }, "quotedStructure": { "label": "Novella estructurada", - "shortLabel": "novella-strutturata" + "shortLabel": "novella strutturata" }, "quotedText": { "label": "Novella textual", - "shortLabel": "novella-testo" + "shortLabel": "novella testo" }, "recital": { "label": "Justificación", @@ -509,7 +509,7 @@ }, "ref": { "label": "Referencia", - "shortLabel": "riferimento" + "shortLabel": "Referencia" }, "relatedDocument": { "label": "Documento relacionado", @@ -528,16 +528,16 @@ "shortLabel": "intervallo-mod" }, "role": { - "label": "Ruolo", - "shortLabel": "ruolo" + "label": "Rol", + "shortLabel": "Rol" }, "rollCall": { "label": "Acta de Votación", "shortLabel": "atto-votazione" }, "rref": { - "label": "Intervallo di riferimenti", - "shortLabel": "intervallo-rif" + "label": "Intervalo de la Referencia", + "shortLabel": "Intervalo-ref" }, "rule": { "label": "Regla", @@ -588,8 +588,8 @@ "shortLabel": "subFlow" }, "subheading": { - "label": "Subrúbrica", - "shortLabel": "subrúbrica" + "label": "SubNomen", + "shortLabel": "subnomen" }, "sublist": { "label": "Sub-list", diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu.json index 51bc1a13..a3c2a9c2 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu.json @@ -81,7 +81,7 @@ "pattern": "container" }, "component": { - "pattern": "patternless" + "pattern": "container" }, "componentRef": { "pattern": "patternless" @@ -131,6 +131,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -168,7 +171,7 @@ "pattern": "inline" }, "documentRef": { - "pattern": "patternless" + "pattern": "inline" }, "entity": { "pattern": "inline" @@ -314,6 +317,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "papers": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json index de9bf9a4..f044b28e 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json @@ -1,6 +1,6 @@ { "rootElements": ["coverPage", "preface", "preamble", "body", "mainBody", "amendmentBody", "debateBody", "fragmentBody", "collectionBody", "conclusions", "attachments", "components"], - "commonElements": ["commonElement", "hierarchicalStructure", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "commonJudgement", "commonReport", "argument", "header", "declarationOfVote", "writtenStatements", "speech", "speechGroup", "remark", "rollCall", "resolutions", "questions", "pointOfOrder", "proceduralMotions", "personalStatements", "petitions", "party", "ministerialStatements", "judge", "change", "narrative", "nationalInterest", "neutralCitation", "papers", "opinion", "oralStatements", "scene", "noticesOfMotion", "foreign", "address", "administrationOfOath"], + "commonElements": ["commonElement", "hierarchicalStructure", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "commonJudgement", "commonReport", "argument", "header", "declarationOfVote", "writtenStatements", "speech", "speechGroup", "remark", "rollCall", "resolutions", "questions", "pointOfOrder", "proceduralMotions", "personalStatements", "petitions", "party", "ministerialStatements", "judge", "change", "narrative", "nationalInterest", "neutralCitation", "papers", "opinion", "oralStatements", "scene", "noticesOfMotion", "foreign", "address", "administrationOfOath"], "defaults": { "leaveExpanded": false, @@ -13,7 +13,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] @@ -22,10 +22,10 @@ "children": ["def", "decoration", "docPurpose"] }, "contentInline": { - "children": ["del", "omissis", "outcome", "ins", "eop", "noteRef", "authorialNote"] + "children": ["omissis", "outcome", "eop", "noteRef", "authorialNote"] }, "commonElement": { - "children": ["process", "location", "concept", "quantity", "organization", "object", "date", "term", "time", "event", "person", "role", "entity"] + "children": ["process", "location", "concept", "quantity", "organization", "object", "date", "term", "time", "event", "person", "role", "entity", "component"] }, "commonReference": { "children": ["ref", "rref", "mref"] @@ -37,7 +37,7 @@ "children": ["vote", "question", "answer"] }, "article": { - "children": ["num", "heading", "subheading", "paragraph", "subparagraph", "blockList"] + "children": ["num", "heading", "subheading", "paragraph", "subparagraph", "blockList", "p"] }, "blockList": { @@ -51,7 +51,7 @@ "children": ["num", "heading", "subheading"] }, "section" : { - "children": ["num", "heading", "subheading", "subsection"] + "children": ["num", "heading", "subheading", "subsection", "p"] }, "body": { "children": ["title", "chapter", "section", "article", "clause", "subclause", "list", "point", "paragraph", "mod"] @@ -76,7 +76,7 @@ }, "clause": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "questions": { "children": ["question"] @@ -88,14 +88,14 @@ "children": ["subrule"] }, "chapter": { - "children": ["num", "heading", "subheading", "subchapter"] + "children": ["num", "heading", "subheading", "subchapter", "p"] }, "speech": { "children": ["from"] }, "paragraph": { - "children": ["num", "heading", "subparagraph"] + "children": ["num", "heading", "subparagraph", "p"] }, "conclusions": { "children": ["date", "location", "blockContainer", "signature"] @@ -148,11 +148,11 @@ }, "list": { - "children": ["intro", "num", "heading", "subheading", "point", "wrap"] + "children": ["intro", "num", "heading", "subheading", "point", "wrap", "p"] }, "point": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "preamble": { @@ -160,7 +160,7 @@ }, "preface": { - "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature"] + "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docAuthority", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature"] }, "attachments": { @@ -174,10 +174,10 @@ }, "subclause": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "title": { - "children": ["num", "heading", "subheading", "subtitle"] + "children": ["num", "heading", "subheading", "subtitle", "p"] }, "ref": { "askFor": { @@ -235,7 +235,8 @@ }, "placement": { "label": "Placement", - "type": "text", + "type": "list", + "values": ["inline", "bottom"], "insert": { "attribute": { "name": "placement" diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/viewConfigs.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/viewConfigs.json index 47f6bb70..0923cb75 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/default/viewConfigs.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/default/viewConfigs.json @@ -1,3 +1,3 @@ { - "allowedViews": ["xml","pdf", "at4am"] + "allowedViews": ["xml","pdf", "at4am", "xmlDiff", "newPdf"] } diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu.json index 31f78a42..6b6a5396 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu.json @@ -87,6 +87,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -222,6 +225,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json index 428c2dd8..7f0776f6 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json new file mode 100644 index 00000000..6649c309 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json @@ -0,0 +1,4 @@ +{ + "rootElements": ["coverPage", "preface", "preamble", "collectionBody", "conclusions"], + "commonElements": ["commonElement", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "remark", "foreign"] +} diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu.json index 8d66256b..e136195d 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu.json @@ -81,6 +81,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -210,6 +213,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json b/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json index 5d0ee47e..4b8d517e 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/build/production/LIME/languagesPlugins/akoma3.0/licence.txt b/build/production/LIME/languagesPlugins/akoma3.0/licence.txt new file mode 100644 index 00000000..0475a094 --- /dev/null +++ b/build/production/LIME/languagesPlugins/akoma3.0/licence.txt @@ -0,0 +1,43 @@ +Copyright (c) 2014 - Copyright holders CIRSFID and Department of +Computer Science and Engineering of the University of Bologna + +Authors: +Monica Palmirani – CIRSFID of the University of Bologna +Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +Luca Cervone – CIRSFID of the University of Bologna + +Permission is hereby granted to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The Software can be used by anyone for purposes without commercial gain, +including scientific, individual, and charity purposes. If it is used +for purposes having commercial gains, an agreement with the copyright +holders is required. The above copyright notice and this permission +notice shall be included in all copies or substantial portions of the +Software. + +Except as contained in this notice, the name(s) of the above copyright +holders and authors shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without prior +written authorization. + +The end-user documentation included with the redistribution, if any, +must include the following acknowledgment: "This product includes +software developed by University of Bologna (CIRSFID and Department of +Computer Science and Engineering) and its authors (Monica Palmirani, +Fabio Vitali, Luca Cervone)", in the same place and form as other +third-party acknowledgments. Alternatively, this acknowledgment may +appear in the software itself, in the same form and location as other +such third-party acknowledgments. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/akoma3.0/schema.xsd b/build/production/LIME/languagesPlugins/akoma3.0/schema.xsd index 3d66126d..22bfa130 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/schema.xsd +++ b/build/production/LIME/languagesPlugins/akoma3.0/schema.xsd @@ -1,7 +1,7 @@ - @@ -11,12 +11,8 @@ ===================================================================== Akoma Ntoso main schema - supported by Africa i-Parliaments, a project sponsored by United - Nations Department of Economic and Social Affairs - Copyright (C) Africa i-Parliaments - - Release 16/01/2014 - Akoma Ntoso 3.0 CSD08 + Release 16/04/2014 - Akoma Ntoso 3.0 CSD10 Complete version. @@ -51,9 +47,9 @@ - Group - ANhier - + Group + ANhier + The group ANhier lists the elements that belong to the Akoma Ntoso legislative hierarchy @@ -91,9 +87,9 @@ The group ANhier lists the elements that belong to the Akoma Ntoso legislative h - Group - ANcontainers - + Group + ANcontainers + The group ANcontainers lists the elements that are containers and are specific to the Akoma Ntoso debate vocabulary @@ -113,9 +109,9 @@ The group ANcontainers lists the elements that are containers and are specific t - Group - basicContainers - + Group + basicContainers + The group basicContainers lists the elements that are containers and are specific to vocabulary of preambles, prefaces, conclusions and coverPages @@ -130,9 +126,9 @@ The group basicContainers lists the elements that are containers and are specifi - Group - preambleContainers - + Group + preambleContainers + The group preambleContainers lists the elements that are containers and are specific to the Akoma Ntoso preamble vocabulary @@ -148,9 +144,9 @@ The group preambleContainers lists the elements that are containers and are spec - Group - prefaceContainers - + Group + prefaceContainers + The group prefaceContainers lists the elements that are containers and are specific to the Akoma Ntoso preface vocabulary @@ -165,9 +161,9 @@ The group prefaceContainers lists the elements that are containers and are speci - Group - ANblock - + Group + ANblock + The group ANblock lists the elements that are blocks and are specific to the Akoma Ntoso vocabulary @@ -183,9 +179,9 @@ The group ANblock lists the elements that are blocks and are specific to the Ako - Group - ANinline - + Group + ANinline + The group ANinline lists the elements that are inline and are specific to the Akoma Ntoso vocabulary @@ -215,9 +211,9 @@ The group ANinline lists the elements that are inline and are specific to the Ak - Group - ANtitleInline - + Group + ANtitleInline + The group ANtitleInline lists the elements that are inline, are specific to the Akoma Ntoso vocabulary, and should only be used within the title element @@ -245,9 +241,9 @@ The group ANtitleInline lists the elements that are inline, are specific to the - Group - ANheaderInline - + Group + ANheaderInline + The group ANheaderInline lists the elements that are inline, are specific to the Akoma Ntoso vocabulary, and should only be used within the header element @@ -267,9 +263,9 @@ The group ANheaderInline lists the elements that are inline, are specific to the - Group - ANsemanticInline - + Group + ANsemanticInline + The group ANsemanticInline lists additional elements that are inline, and are specific to the Akoma Ntoso vocabulary @@ -295,9 +291,9 @@ The group ANsemanticInline lists additional elements that are inline, and are sp - Group - ANmarker - + Group + ANmarker + The group ANmarker lists the elements that are markers and are specific to the Akoma Ntoso vocabulary @@ -312,9 +308,9 @@ The group ANmarker lists the elements that are markers and are specific to the A - Group - ANsubFlow - + Group + ANsubFlow + The group ANsubFlow lists the elements that are subFlows and are specific to the Akoma Ntoso vocabulary @@ -327,9 +323,9 @@ The group ANsubFlow lists the elements that are subFlows and are specific to the - Group - HTMLcontainers - + Group + HTMLcontainers + The group HTMLcontainers lists the elements that are containers and were inherited from the HTML vocabulary @@ -342,9 +338,9 @@ The group HTMLcontainers lists the elements that are containers and were inherit - Group - HTMLblock - + Group + HTMLblock + The group HTMLblock lists the elements that are blocks and were inherited from the HTML vocabulary @@ -360,9 +356,9 @@ The group HTMLblock lists the elements that are blocks and were inherited from t - Group - HTMLinline - + Group + HTMLinline + The group HTMLinline lists the elements that are inline and were inherited from the HTML vocabulary @@ -382,9 +378,9 @@ The group HTMLinline lists the elements that are inline and were inherited from - Group - HTMLmarker - + Group + HTMLmarker + The group HTMLmarker lists the elements that are marker and were inherited from the HTML vocabulary @@ -398,9 +394,9 @@ The group HTMLmarker lists the elements that are marker and were inherited from - Group - judgmentBlock - + Group + judgmentBlock + The group judgmentBlock lists the structures that should be found in a judgment @@ -418,9 +414,9 @@ The group judgmentBlock lists the structures that should be found in a judgment< - Group - amendmentBlock - + Group + amendmentBlock + The group amendmentBlock lists the structures that should be found in an amendment @@ -436,9 +432,9 @@ The group amendmentBlock lists the structures that should be found in an amendme - Group - amendmentInline - + Group + amendmentInline + The group amendmentInline lists the inline elements that should be found in the preface of an amendment @@ -453,9 +449,9 @@ The group amendmentInline lists the inline elements that should be found in the - Group - speechSection - + Group + speechSection + The group speechSection lists the structures that should contain speeches @@ -487,9 +483,9 @@ The group speechSection lists the structures that should contain speeches - Group - hierElements - + Group + hierElements + The group hierElements lists all the elements that are hierarchical @@ -503,9 +499,9 @@ The group hierElements lists all the elements that are hierarchical - Group - containerElements - + Group + containerElements + The group containerElements lists all the elements that are containers @@ -520,9 +516,9 @@ The group containerElements lists all the elements that are containers - Group - blockElements - + Group + blockElements + The group blockElements lists all the elements that are blocks @@ -538,9 +534,9 @@ The group blockElements lists all the elements that are blocks - Group - inlineElements - + Group + inlineElements + The group inlineElements lists all the elements that are inline @@ -559,9 +555,9 @@ The group inlineElements lists all the elements that are inline - Group - subFlowElements - + Group + subFlowElements + The group subFlowElements lists all the elements that are subFlows @@ -575,9 +571,9 @@ The group subFlowElements lists all the elements that are subFlows - Group - markerElements - + Group + markerElements + The group markerElements lists all the elements that are markers @@ -592,9 +588,9 @@ The group markerElements lists all the elements that are markers - Group - inlineCM - + Group + inlineCM + The group inlineCM is the content model of blocks and inlines, and is composed of all the inlines and all the markers @@ -619,10 +615,10 @@ The group inlineCM is the content model of blocks and inlines, and is composed o - Attlist - alt - -The attribute alternativeTo is used to specify, when the element contains an alternative version of some content, the currentId of the main element which this element is an alternative copy of + Attlist + alt + +The attribute alternativeTo is used to specify, when the element contains an alternative version of some content, the eId of the main element which this element is an alternative copy of @@ -632,9 +628,9 @@ The attribute alternativeTo is used to specify, when the element contains an alt - Attlist - name - + Attlist + name + The attribute name is used to give a name to all generic elements @@ -645,9 +641,9 @@ The attribute name is used to give a name to all generic elements - Attlist - number - + Attlist + number + The attribute number is used to specify a number in the publication of the document @@ -658,9 +654,9 @@ The attribute number is used to specify a number in the publication of the docum - Attlist - source - + Attlist + source + The attribute source links to the agent (person, organization) providing the specific annotation or markup @@ -671,9 +667,9 @@ The attribute source links to the agent (person, organization) providing the spe - Attlist - date - + Attlist + date + The attribute date is used to give a normalized value for a date according to the XSD syntax YYYY-MM-DD or a normalized value for a dateTime according to the XSD syntax YYYY-MM-DDThh:mm:ss(zzzz) @@ -695,22 +691,33 @@ The attribute date is used to give a normalized value for a date according to th - Attlist - time - + Attlist + time + The attribute time is used to give a normalized value for a time according to the XSD syntax HH:MM:SS - + + + + + + + + + + + + - Attlist - link - + Attlist + link + The attribute href is used to specify an internal or external destination for a reference, a citation, an access to the ontology or a hypertext link. In elements using this attribute definition the href attribute is required @@ -721,9 +728,9 @@ The attribute href is used to specify an internal or external destination for a - Attlist - linkopt - + Attlist + linkopt + The attribute href is used to specify an internal or external destination for a reference, a citation, an access to the ontology or a hypertext link. In elements using this attribute definition the href attribute is optional @@ -734,9 +741,9 @@ The attribute href is used to specify an internal or external destination for a - Attlist - value - + Attlist + value + The attribute value is used to specify a value for metadata elements. In elements using this attribute definition the value attribute is required @@ -747,9 +754,9 @@ The attribute value is used to specify a value for metadata elements. In element - Attlist - optvalue - + Attlist + optvalue + The attribute value is used to specify a value for metadata elements. In elements using this attribute definition the value attribute is optional @@ -760,9 +767,9 @@ The attribute value is used to specify a value for metadata elements. In element - Attlist - booleanvalue - + Attlist + booleanvalue + The attribute value is used here to specify a boolean value for metadata elements. In elements using this attribute definition the value attribute is required @@ -773,9 +780,9 @@ The attribute value is used here to specify a boolean value for metadata element - Attlist - speechAtts - + Attlist + speechAtts + The attributes in speechAtts are used in speeches to identify actors and roles of speeches. In particular, attribute 'by' identifies the speaker, optional attribute 'as' identifies the role under which the speaker is speaking, optional attribute startTime specifies the absolute date and time where the individual speech item started, optional attribute endTime specifies the absolute date and time where the individual speech item ended, and optional attribute to identifies the addressee of the speech. All of them are references to person or organization elements in the references section @@ -790,9 +797,9 @@ The attributes in speechAtts are used in speeches to identify actors and roles o - Attlist - voteAtts - + Attlist + voteAtts + The attributes in voteAtts are used in votes to identify actors and choices in votes. In particular, attribute 'by' identifies the voter, optional attribute 'as' identifies the role under which the voter is acting, optional attribute 'choice' specifies the voe that was casted. @@ -805,9 +812,9 @@ The attributes in voteAtts are used in votes to identify actors and choices in v - Attlist - show - + Attlist + show + These attributes are used in metadata to propose visible representations of the metadata itself. Both a full visualization (attribute showAs) and an abbreviated one (attribute shortForm) can be specified @@ -826,9 +833,9 @@ These attributes are used in metadata to propose visible representations of the - Attlist - src - + Attlist + src + These attributes are used in manifestation-level references to specify external manifestation-level resources to be loaded in place. The src attribute holds the manifestation-level IRI of the resource, whule the alt attribute holds the text to be displayed in case the loading of the external resource is not possible for any reason. @@ -840,9 +847,9 @@ These attributes are used in manifestation-level references to specify external - Attlist - period - + Attlist + period + The period attribute is used in versioned content and metadata elements to indicate a time interval in which they were in force, in efficacy, or in any other type of interval as specified in the corresponding temporalGroup. @@ -853,9 +860,9 @@ The period attribute is used in versioned content and metadata elements to indic - Attlist - enactment - + Attlist + enactment + These attributes are those already defined in attribute list "period", plus the attribute status, that allows to specify the status of the piece of text it wraps. @@ -867,9 +874,9 @@ These attributes are those already defined in attribute list "period", plus the - Attlist - notes - + Attlist + notes + These attributes are used by notes, both authorial and editorial @@ -882,9 +889,9 @@ These attributes are used by notes, both authorial and editorial - Attlist - modifiers - + Attlist + modifiers + These attributes are used in the analysis to allow manifestation editors to specify whether the analysis is complete and/or ignored in the text @@ -896,9 +903,9 @@ These attributes are used in the analysis to allow manifestation editors to spec - Attlist - role - + Attlist + role + The attribute role is used to identify the role of an individual mentioned in the text. It is a reference to a TLCRole element in the references section @@ -909,9 +916,9 @@ The attribute role is used to identify the role of an individual mentioned in th - Attlist - actor - + Attlist + actor + The attribute actor is used to identify the actor of a step of a workflow of the document. It is a reference to a TLCPerson or TLCOrganization element in the references section @@ -922,9 +929,9 @@ The attribute actor is used to identify the actor of a step of a workflow of the - Attlist - outcome - + Attlist + outcome + The attribute outcome is used to identify the outcome of a step in a workflow. It is a reference to a TLCConcept element in the references section @@ -935,9 +942,9 @@ The attribute outcome is used to identify the outcome of a step in a workflow. I - Attlist - quote - + Attlist + quote + The attributes startQuote and endQuote are used in quotedText, quotedStructure, embeddedText and embeddedStructure to specify the start and quote character delimiting the quoted or embedded part. If the characters are the same, one can use only startQuote. @@ -949,9 +956,9 @@ The attributes startQuote and endQuote are used in quotedText, quotedStructure, - Attlist - cellattrs - + Attlist + cellattrs + These attributes are used to specify that table cells span more than one row or one column, exactly as in HTML @@ -963,9 +970,9 @@ These attributes are used to specify that table cells span more than one row or - Attlist - HTMLattrs - + Attlist + HTMLattrs + These attributes are used to specify class, style and title of the element, exactly as in HTML @@ -978,54 +985,52 @@ These attributes are used to specify class, style and title of the element, exac - Attlist - core - + Attlist + core + This attribute list are used to specify the fact that any attribute can be specified for this element if it belongs to a different namespace. - + - Attlist - idreq - -These attributes identify the element in an absolute manner. In elements using this attribute definition the currentId attribute is required. The originalId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. + Attlist + idreq + +These attributes identify the element in an absolute manner. In elements using this attribute definition the eId attribute is required. The wId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. - - - + + + - Attlist - idopt - -These attributes identify the element in an absolute manner. In elements using this attribute definition the currentId attribute is optional. The originalId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. + Attlist + idopt + +These attributes identify the element in an absolute manner. In elements using this attribute definition the eId attribute is optional. The wId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. - - - + + + - Attlist - refersreq - + Attlist + refersreq + This attribute creates a connection between the element and an element of the Akoma Ntoso ontology to which it refers. In elements using this attribute definition the refersTo attribute is required @@ -1044,9 +1049,9 @@ This attribute creates a connection between the element and an element of the Ak - Attlist - refers - + Attlist + refers + This attribute creates a connection between the element and an element of the Akoma Ntoso ontology to which it refers. In elements using this attribute definition the refersTo attribute is optional @@ -1065,9 +1070,9 @@ This attribute creates a connection between the element and an element of the Ak - Attlist - xmllang - + Attlist + xmllang + These attribute specify the human language in which the content of the element is expressed as well as the rules for whitespace management in the element. Values for xml:lang are taken from the RFC 4646. Both xml:lang and xml:space are reserved attributes of the XML language, and cannot be used for any other purpose than these ones. @@ -1079,10 +1084,10 @@ These attribute specify the human language in which the content of the element i - Attlist - corereq - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition the refersTo attribute is optional but the currentId attribute is required + Attlist + corereq + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition the refersTo attribute is optional but the eId attribute is required @@ -1098,10 +1103,10 @@ This is the list of the core attributes that all elements in the content part of - Attlist - corereqreq - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the currentId attribute are required + Attlist + corereqreq + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the eId attribute are required @@ -1117,10 +1122,10 @@ This is the list of the core attributes that all elements in the content part of - Attlist - coreopt - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the currentId attribute are optional + Attlist + coreopt + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the eId attribute are optional @@ -1143,12 +1148,27 @@ This is the list of the core attributes that all elements in the content part of + + + + Simple + noWhiteSpace + +This attribute the values of ids such as eId, wId and GUID as a collection of any printable character except whitespaces. + + + + + + + + - Simple - language - + Simple + language + This attribute specifies the human language in which the document the element refers to is expressed. Values are taken from the RFC 4646. @@ -1159,9 +1179,9 @@ This attribute specifies the human language in which the document the element re - Simple - versionType - + Simple + versionType + This is the list of allowed values for the contains attribute @@ -1176,9 +1196,9 @@ This is the list of allowed values for the contains attribute - Simple - placementType - + Simple + placementType + This is the list of allowed values for the placement attribute of notes @@ -1195,9 +1215,9 @@ This is the list of allowed values for the placement attribute of notes - Simple - eventType - + Simple + eventType + This is the list of allowed values for the type attribute of the event and action elements @@ -1212,9 +1232,9 @@ This is the list of allowed values for the type attribute of the event and actio - Simple - statusType - + Simple + statusType + This is the list of allowed values for the status attribute. This is the list of possible reasons for a dscrepancy between the manifestation as it should be (e.g., a faithful representation of the content of an expression), and the manifestation as it actually is. Values should be interpreted as follows: - removed: the content of the element is present in the markup (manifestation) but is not present in the real content of the document (expression level) because it has been definitely removed (either ex tunc, as in annullments, or ex nunc, as in abrogations). - temporarily removed: the content of the element is present in the markup (manifestation) but is not present in the real content of the document (expression level) because it has been temporarily removed (e.g., for a temporary suspension or limitation of efficacy). @@ -1246,9 +1266,9 @@ This is the list of allowed values for the status attribute. This is the list of - Simple - remarkType - + Simple + remarkType + This is the list of allowed values for the type attribute of the remark element @@ -1264,9 +1284,9 @@ This is the list of allowed values for the type attribute of the remark element< - Simple - timeType - + Simple + timeType + This is the list of allowed values for the type attribute of the recordedTime element @@ -1280,9 +1300,9 @@ This is the list of allowed values for the type attribute of the recordedTime el - Simple - opinionType - + Simple + opinionType + This is the list of allowed values for the type attribute of the opinion element @@ -1297,9 +1317,9 @@ This is the list of allowed values for the type attribute of the opinion element - Simple - resultType - + Simple + resultType + This is the list of allowed values for the type attribute of the result element @@ -1319,9 +1339,9 @@ This is the list of allowed values for the type attribute of the result element< - Simple - posType - + Simple + posType + This is the list of possible positions of the text being analyzed by the element in the analysis section @@ -1339,9 +1359,9 @@ This is the list of possible positions of the text being analyzed by the element - Simple - restrictionType - + Simple + restrictionType + This is the list of allowed values for the restriction type attribute @@ -1364,9 +1384,9 @@ This is the list of allowed values for the restriction type attribute - Complex - basehierarchy - + Complex + basehierarchy + The complex type basehierarchy is not used by any element, but is derived by other types to contain the basic structure of hierarchical elements @@ -1381,9 +1401,9 @@ The complex type basehierarchy is not used by any element, but is derived by oth - Complex - hierarchy - + Complex + hierarchy + The complex type hierarchy is used by most or all the hierarchical elements of act-like documents. @@ -1397,7 +1417,7 @@ The complex type hierarchy is used by most or all the hierarchical elements of a - + @@ -1409,9 +1429,9 @@ The complex type hierarchy is used by most or all the hierarchical elements of a - Complex - althierarchy - + Complex + althierarchy + The complex type althierarchy is used by most or all the hierarchical elements of documents that are not act-like. @@ -1432,10 +1452,10 @@ The complex type althierarchy is used by most or all the hierarchical elements o - Complex - blocksreq - -the complex type blocksreq defines the content model and attributes shared by all containers. Here the currentId attribute is required + Complex + blocksreq + +the complex type blocksreq defines the content model and attributes shared by all containers. Here the eId attribute is required @@ -1448,10 +1468,10 @@ the complex type blocksreq defines the content model and attributes shared by al - Complex - blocksopt - -the complex type blocksopt defines the content model and attributes shared by all containers. Here the currentId attribute is optional + Complex + blocksopt + +the complex type blocksopt defines the content model and attributes shared by all containers. Here the eId attribute is optional @@ -1464,10 +1484,10 @@ the complex type blocksopt defines the content model and attributes shared by al - Complex - inline - -the complex type inline defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is optional + Complex + inline + +the complex type inline defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is optional @@ -1480,10 +1500,10 @@ the complex type inline defines the content model and attributes shared by all b - Complex - inlinereq - -the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is required + Complex + inlinereq + +the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is required @@ -1496,10 +1516,10 @@ the complex type inlinereq defines the content model and attributes shared by al - Complex - inlinereqreq - -the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is required and also the refersTo is required + Complex + inlinereqreq + +the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is required and also the refersTo is required @@ -1512,10 +1532,10 @@ the complex type inlinereq defines the content model and attributes shared by al - Complex - markerreq - -the complex type markerreq defines the content model and attributes shared by all marker elements. Here the currentId attribute is required + Complex + markerreq + +the complex type markerreq defines the content model and attributes shared by all marker elements. Here the eId attribute is required @@ -1525,10 +1545,10 @@ the complex type markerreq defines the content model and attributes shared by al - Complex - markeropt - -the complex type markeropt defines the content model and attributes shared by all marker elements. Here the currentId attribute is optional + Complex + markeropt + +the complex type markeropt defines the content model and attributes shared by all marker elements. Here the eId attribute is optional @@ -1538,10 +1558,10 @@ the complex type markeropt defines the content model and attributes shared by al - Complex - metareq - -the complex type metareq defines the content model and attributes shared by all metadata elements. Here the currentId attribute is required + Complex + metareq + +the complex type metareq defines the content model and attributes shared by all metadata elements. Here the eId attribute is required @@ -1552,10 +1572,10 @@ the complex type metareq defines the content model and attributes shared by all - Complex - metaopt - -the complex type metaopt defines the content model and attributes shared by all metadata elements. Here the currentId attribute is optional + Complex + metaopt + +the complex type metaopt defines the content model and attributes shared by all metadata elements. Here the eId attribute is optional @@ -1566,9 +1586,9 @@ the complex type metaopt defines the content model and attributes shared by all - Complex - maincontent - + Complex + maincontent + the complex type maincontent is used by container elements that can contain basically any other Akoma Ntoso structure @@ -1585,10 +1605,10 @@ the complex type maincontent is used by container elements that can contain basi - Complex - speechType - -the complex type speechType defines the content model and attributes shared by all speech elements. Here the currentId attribute is optional + Complex + speechType + +the complex type speechType defines the content model and attributes shared by all speech elements. Here the eId attribute is optional @@ -1609,9 +1629,9 @@ the complex type speechType defines the content model and attributes shared by a - Complex - itemType - + Complex + itemType + The complex type itemType is similar to a hierarchical element, but is isolated and does not belong to a full hierarchy. @@ -1629,9 +1649,9 @@ The complex type itemType is similar to a hierarchical element, but is isolated - Complex - referenceType - + Complex + referenceType + the complex type referenceType defines the empty content model and the list of attributes for metadata elements in the references section @@ -1645,9 +1665,9 @@ the complex type referenceType defines the empty content model and the list of a - Complex - srcType - + Complex + srcType + the complex type srcType defines the empty content model and the list of attributes for manifestation-level references to external resources @@ -1661,9 +1681,9 @@ the complex type srcType defines the empty content model and the list of attribu - Complex - linkType - + Complex + linkType + the complex type linkType defines the empty content model and the list of attributes for Work- or Expression-level references to external resources @@ -1677,9 +1697,9 @@ the complex type linkType defines the empty content model and the list of attrib - Complex - anyOtherType - + Complex + anyOtherType + the complex type anyOtherType defines an open content model for elements that may use elements from other namespaces. @@ -1695,20 +1715,24 @@ the complex type anyOtherType defines an open content model for elements that ma - Complex - docContainerType - + Complex + docContainerType + the complex type docContainerType defines a shared content model for elements that contain whole documents, namely attachment, collectionItem, component. - - - - - - - + + + + + + + + + + + @@ -1727,9 +1751,9 @@ the complex type docContainerType defines a shared content model for elements th - Group - documentType - + Group + documentType + the type documentType lists all the document types that are managed by Akoma Ntoso @@ -1766,9 +1790,9 @@ the type documentType lists all the document types that are managed by Akoma Nto - Complex - akomaNtosoType - + Complex + akomaNtosoType + the complex type akomaNtosoType is the type for the root element in Akoma Ntoso. @@ -1784,9 +1808,9 @@ the complex type akomaNtosoType is the type for the root element in Akoma Ntoso. - Element (root) - akomaNtoso - + Element (root) + akomaNtoso + NAME akomaNtoso the element akomaNtoso is the root element of all document types in Akoma Ntoso. It follows the pattern Universal Root (http://www.xmlpatterns.com/UniversalRootMain.shtml) @@ -1799,9 +1823,9 @@ the element akomaNtoso is the root element of all document types in Akoma Ntoso. - Complex - openStructure - + Complex + openStructure + the type openStructure specifies the overall content model of all the document types that do not have a specific and peculiar structure @@ -1820,13 +1844,12 @@ the type openStructure specifies the overall content model of all the document t - - + + - Element - doc - + Element + doc + Element doc is used for describing the structure and content of any other document that is not included in the list of document explicitly managed by Akoma Ntoso @@ -1843,9 +1866,9 @@ Element doc is used for describing the structure and content of any other docume - Element - mainBody - + Element + mainBody + the element mainBody is the container of the main part of all other document types @@ -1853,13 +1876,12 @@ the element mainBody is the container of the main part of all other document typ - - + + - Element - statement - + Element + statement + Element statement is used for describing the structure and content of a official documents of a legislative assembly that are not normative in structure (e.g., statements, non-normative resolutions, etc.). @@ -1884,9 +1906,9 @@ Element statement is used for describing the structure and content of a official - Element - component - + Element + component + The element component is a container of a subdocument specified in a composite document @@ -1897,9 +1919,9 @@ The element component is a container of a subdocument specified in a composite d - Complex - collectionStructure - + Complex + collectionStructure + the type collectionStructure specifies the overall content model of the document types that are collections of other documents @@ -1921,9 +1943,9 @@ the type collectionStructure specifies the overall content model of the document - Element - amendmentList - + Element + amendmentList + Element amendmentList is used for describing the structure and content of a collection of amendments @@ -1934,9 +1956,9 @@ Element amendmentList is used for describing the structure and content of a coll - Element - officialGazette - + Element + officialGazette + Element officialGazette is used for describing the structure and content of an issue of an official gazette @@ -1947,9 +1969,9 @@ Element officialGazette is used for describing the structure and content of an i - Element - documentCollection - + Element + documentCollection + Element documentCollection is used for describing the structure and content of a collection of other documents chosen and combined for any reason whatsoever @@ -1960,9 +1982,9 @@ Element documentCollection is used for describing the structure and content of a - Complex - collectionBodyType - + Complex + collectionBodyType + the type collectionBodyType specifies a content model of a container of a list of other documents (e.g, acts, bills, amendments, etc.) possibly interspersed with interstitial elements with content that does not form an individual document @@ -1975,9 +1997,9 @@ the type collectionBodyType specifies a content model of a container of a list o - Element - collectionBody - + Element + collectionBody + the element collectionBody is the container of a list of other documents (e.g, acts, bills, amendments, etc.) possibly interspersed with interstitial elements with content that does not form an individual document @@ -1988,9 +2010,9 @@ the element collectionBody is the container of a list of other documents (e.g, a - Complex - fragmentStructure - + Complex + fragmentStructure + the type fragmentStructure specifies the overall content model of the document type that is a fragment of another document @@ -2002,13 +2024,12 @@ the type fragmentStructure specifies the overall content model of the document t - - + + - Element - fragment - + Element + fragment + Element fragment is used for describing the structure and content of an independent fragment of a document @@ -2025,9 +2046,9 @@ Element fragment is used for describing the structure and content of an independ - Complex - fragmentBodyType - + Complex + fragmentBodyType + the type fragmentBodyType specifies a content model of a container of a fragment of another document @@ -2045,9 +2066,9 @@ the type fragmentBodyType specifies a content model of a container of a fragment - Element - fragmentBody - + Element + fragmentBody + the element fragmentBody is the container of a fragment of another document @@ -2058,9 +2079,9 @@ the element fragmentBody is the container of a fragment of another document - Complex - hierarchicalStructure - + Complex + hierarchicalStructure + the type hierarchicalStructure specifies the overall content model of the document types that are hierarchical in nature, especially acts and bills @@ -2079,13 +2100,12 @@ the type hierarchicalStructure specifies the overall content model of the docume - - + + - Element - act - + Element + act + Element act is used for describing the structure and content of an act @@ -2099,13 +2119,12 @@ Element act is used for describing the structure and content of an act - - + + - Element - bill - + Element + bill + Element bill is used for describing the structure and content of a bill @@ -2122,9 +2141,9 @@ Element bill is used for describing the structure and content of a bill - Complex - bodyType - + Complex + bodyType + the type bodyType specifies a content model of the main hierarchy of a hierarchical document (e.g, an act or a bill) @@ -2139,9 +2158,9 @@ the type bodyType specifies a content model of the main hierarchy of a hierarchi - Element - body - + Element + body + the element body is the container of the main hierarchy of a hierarchical document (e.g, an act or a bill) @@ -2152,9 +2171,9 @@ the element body is the container of the main hierarchy of a hierarchical docume - Complex - debateStructure - + Complex + debateStructure + the type debateStructure specifies the overall content model of the document types that describe debates @@ -2172,14 +2191,12 @@ the type debateStructure specifies the overall content model of the document typ - - + + - Element - debateReport - + Element + debateReport + Element debateReport is used for describing the structure and content of a report @@ -2193,13 +2210,12 @@ Element debateReport is used for describing the structure and content of a repor - - + + - Element - debate - + Element + debate + Element debate is used for describing the structure and content of a debate record @@ -2216,9 +2232,9 @@ Element debate is used for describing the structure and content of a debate reco - Complex - debateBodyType - + Complex + debateBodyType + the type debateBodyType specifies a content model of the main hierarchy of a debate @@ -2232,9 +2248,9 @@ the type debateBodyType specifies a content model of the main hierarchy of a deb - Element - debateBody - + Element + debateBody + the element debateBody is the container of the main hierarchy of a debate @@ -2245,9 +2261,9 @@ the element debateBody is the container of the main hierarchy of a debate - Complex - judgmentStructure - + Complex + judgmentStructure + the type judgmentStructure specifies the overall content model of the document types that describe judgments @@ -2265,13 +2281,12 @@ the type judgmentStructure specifies the overall content model of the document t - - + + - Element - judgment - + Element + judgment + Element judgment is used for describing the structure and content of a judgment @@ -2288,9 +2303,9 @@ Element judgment is used for describing the structure and content of a judgment< - Complex - judgmentBodyType - + Complex + judgmentBodyType + the type judgmentBodyType specifies a content model of the main hierarchy of a judgment document @@ -2304,9 +2319,9 @@ the type judgmentBodyType specifies a content model of the main hierarchy of a j - Element - judgmentBody - + Element + judgmentBody + the element judgmentBody is the container of the main hierarchy of a judgment document @@ -2317,9 +2332,9 @@ the element judgmentBody is the container of the main hierarchy of a judgment do - Complex - amendmentStructure - + Complex + amendmentStructure + the type amendmentStructure specifies the overall content model of the document types that describe amendments @@ -2337,13 +2352,12 @@ the type amendmentStructure specifies the overall content model of the document - - + + - Element - amendment - + Element + amendment + Element amendment is used for describing the structure and content of an amendment @@ -2360,9 +2374,9 @@ Element amendment is used for describing the structure and content of an amendme - Complex - amendmentBodyType - + Complex + amendmentBodyType + the type amendmentBodyType specifies a content model of the main hierarchy of a amendment document @@ -2376,9 +2390,9 @@ the type amendmentBodyType specifies a content model of the main hierarchy of a - Element - amendmentBody - + Element + amendmentBody + the element amendmentBody is the container of the main hierarchy of a amendment document @@ -2397,7 +2411,7 @@ the element amendmentBody is the container of the main hierarchy of a amendment - + @@ -2407,9 +2421,9 @@ the element amendmentBody is the container of the main hierarchy of a amendment - Element - recitals - + Element + recitals + the element recitals is the section of the preface that contains recitals @@ -2420,9 +2434,9 @@ the element recitals is the section of the preface that contains recitals - Element - recital - + Element + recital + the element recital is the individual element of the preface that is called recital @@ -2441,7 +2455,7 @@ the element recital is the individual element of the preface that is called reci - + @@ -2451,9 +2465,9 @@ the element recital is the individual element of the preface that is called reci - Element - citations - + Element + citations + the element citations is the section of the preface that contains citations @@ -2464,9 +2478,9 @@ the element citations is the section of the preface that contains citations - Element - citation - + Element + citation + the element citation is the individual element of the preface that is called citation @@ -2477,9 +2491,9 @@ the element citation is the individual element of the preface that is called cit - Element - longTitle - + Element + longTitle + the element longTitle is the section of the preface or preamble that is called long title @@ -2490,9 +2504,9 @@ the element longTitle is the section of the preface or preamble that is called l - Element - formula - + Element + formula + the element formula is a section of the preface or preamble that contains a formulaic expression that is systematically or frequently present in a preface or a preamble and has e precise legal meaning (e.g. an enacting formula). Use the refersTo attribute for the specification of the actual type of formula. @@ -2509,10 +2523,10 @@ the element formula is a section of the preface or preamble that contains a form - Complex - basicopt - -the complex type basicopt defines the content model and attributes used by basic containers such as coverPage and conclusions. Here the currentId attribute is optional + Complex + basicopt + +the complex type basicopt defines the content model and attributes used by basic containers such as coverPage and conclusions. Here the eId attribute is optional @@ -2526,9 +2540,9 @@ the complex type basicopt defines the content model and attributes used by basic - Element - coverPage - + Element + coverPage + the element coverPage is used as a container of the text that acts as a cover page @@ -2539,10 +2553,10 @@ the element coverPage is used as a container of the text that acts as a cover pa - Complex - preambleopt - -the complex type preambleopt defines the content model and attributes used by preambles. Here the currentId attribute is optional + Complex + preambleopt + +the complex type preambleopt defines the content model and attributes used by preambles. Here the eId attribute is optional @@ -2556,9 +2570,9 @@ the complex type preambleopt defines the content model and attributes used by pr - Element - preamble - + Element + preamble + the element preamble is used as a container of the text that opens the main body of the document as a preamble @@ -2569,10 +2583,10 @@ the element preamble is used as a container of the text that opens the main body - Complex - prefaceopt - -the complex type prefaceopt defines the content model and attributes used by preface. Here the currentId attribute is optional + Complex + prefaceopt + +the complex type prefaceopt defines the content model and attributes used by preface. Here the eId attribute is optional @@ -2586,9 +2600,9 @@ the complex type prefaceopt defines the content model and attributes used by pre - Element - preface - + Element + preface + the element preface is used as a container of all prefacing material (e.g. headers, formulas, etc.) @@ -2599,9 +2613,9 @@ the element preface is used as a container of all prefacing material (e.g. heade - Element - conclusions - + Element + conclusions + the element conclusion is used as a container of all concluding material (e.g. dates, signatures, formulas, etc.) @@ -2612,9 +2626,9 @@ the element conclusion is used as a container of all concluding material (e.g. d - Element - header - + Element + header + the element header is used as a container of all prefacing material of judgments (e.g. headers, formulas, etc.) @@ -2633,9 +2647,9 @@ the element header is used as a container of all prefacing material of judgments - Element - attachment - + Element + attachment + the element attachment is used as a container of individual attachment elements @@ -2646,9 +2660,9 @@ the element attachment is used as a container of individual attachment elements< - Element - interstitial - + Element + interstitial + the element interstitial is used as a container of text elements and blocks that are placed for any reason between individual documents in a collection of documents @@ -2659,9 +2673,9 @@ the element interstitial is used as a container of text elements and blocks that - Element - componentRef - + Element + componentRef + the element componentRef is a reference to a separate manifestation-level resource that holds the content of the component of the document not physically placed at the position specified. Actual resources can either be external (e.g. in the package or even in a different position) or internal (within the components element) @@ -2672,9 +2686,9 @@ the element componentRef is a reference to a separate manifestation-level resour - Element - documentRef - + Element + documentRef + the element documentRef is a reference to a separate work- or expression-level resource that should be placed in this position. Actual resources are external (e.g. in the package or even in a different position) and are (an expression or any expression of) a separate Work. @@ -2695,9 +2709,9 @@ the element documentRef is a reference to a separate work- or expression-level r - Element - clause - + Element + clause + this element is a hierarchical container called "clause" either explicitly or due to the local tradition @@ -2708,9 +2722,9 @@ this element is a hierarchical container called "clause" either explicitly or du - Element - section - + Element + section + this element is a hierarchical container called "section" either explicitly or due to the local tradition @@ -2721,9 +2735,9 @@ this element is a hierarchical container called "section" either explicitly or d - Element - part - + Element + part + this element is a hierarchical container called "part" either explicitly or due to the local tradition @@ -2734,9 +2748,9 @@ this element is a hierarchical container called "part" either explicitly or due - Element - paragraph - + Element + paragraph + this element is a hierarchical container called "paragraph" either explicitly or due to the local tradition @@ -2747,9 +2761,9 @@ this element is a hierarchical container called "paragraph" either explicitly or - Element - chapter - + Element + chapter + this element is a hierarchical container called "chapter" either explicitly or due to the local tradition @@ -2760,9 +2774,9 @@ this element is a hierarchical container called "chapter" either explicitly or d - Element - title - + Element + title + this element is a hierarchical container called "title" either explicitly or due to the local tradition @@ -2773,9 +2787,9 @@ this element is a hierarchical container called "title" either explicitly or due - Element - book - + Element + book + this element is a hierarchical container called "book" either explicitly or due to the local tradition @@ -2786,9 +2800,9 @@ this element is a hierarchical container called "book" either explicitly or due - Element - tome - + Element + tome + this element is a hierarchical container called "tome" either explicitly or due to the local tradition @@ -2799,9 +2813,9 @@ this element is a hierarchical container called "tome" either explicitly or due - Element - article - + Element + article + this element is a hierarchical container called "article" either explicitly or due to the local tradition @@ -2812,9 +2826,9 @@ this element is a hierarchical container called "article" either explicitly or d - Element - division - + Element + division + this element is a hierarchical container called "division" either explicitly or due to the local tradition @@ -2825,9 +2839,9 @@ this element is a hierarchical container called "division" either explicitly or - Element - list - + Element + list + this element is a hierarchical container called "list" either explicitly or due to the local tradition @@ -2838,9 +2852,9 @@ this element is a hierarchical container called "list" either explicitly or due - Element - point - + Element + point + this element is a hierarchical container called "point" either explicitly or due to the local tradition @@ -2851,9 +2865,9 @@ this element is a hierarchical container called "point" either explicitly or due - Element - indent - + Element + indent + this element is a hierarchical container called "indent" either explicitly or due to the local tradition @@ -2864,9 +2878,9 @@ this element is a hierarchical container called "indent" either explicitly or du - Element - alinea - + Element + alinea + this element is a hierarchical container called "alinea" either explicitly or due to the local tradition @@ -2877,9 +2891,9 @@ this element is a hierarchical container called "alinea" either explicitly or du - Element - rule - + Element + rule + this element is a hierarchical container called "rule" either explicitly or due to the local tradition @@ -2890,9 +2904,9 @@ this element is a hierarchical container called "rule" either explicitly or due - Element - subrule - + Element + subrule + this element is a hierarchical container called "subrule" either explicitly or due to the local tradition @@ -2903,9 +2917,9 @@ this element is a hierarchical container called "subrule" either explicitly or d - Element - proviso - + Element + proviso + this element is a hierarchical container called "proviso" either explicitly or due to the local tradition @@ -2916,9 +2930,9 @@ this element is a hierarchical container called "proviso" either explicitly or d - Element - subsection - + Element + subsection + this element is a hierarchical container called "subsection" either explicitly or due to the local tradition @@ -2929,9 +2943,9 @@ this element is a hierarchical container called "subsection" either explicitly o - Element - subpart - + Element + subpart + this element is a hierarchical container called "subpart" either explicitly or due to the local tradition @@ -2942,9 +2956,9 @@ this element is a hierarchical container called "subpart" either explicitly or d - Element - subparagraph - + Element + subparagraph + this element is a hierarchical container called "subparagraph" either explicitly or due to the local tradition @@ -2955,9 +2969,9 @@ this element is a hierarchical container called "subparagraph" either explicitly - Element - subchapter - + Element + subchapter + this element is a hierarchical container called "subchapter" either explicitly or due to the local tradition @@ -2968,9 +2982,9 @@ this element is a hierarchical container called "subchapter" either explicitly o - Element - subtitle - + Element + subtitle + this element is a hierarchical container called "subtitle" either explicitly or due to the local tradition @@ -2981,9 +2995,9 @@ this element is a hierarchical container called "subtitle" either explicitly or - Element - subdivision - + Element + subdivision + this element is a hierarchical container called "subdivision" either explicitly or due to the local tradition @@ -2994,9 +3008,9 @@ this element is a hierarchical container called "subdivision" either explicitly - Element - subclause - + Element + subclause + this element is a hierarchical container called "subclause" either explicitly or due to the local tradition @@ -3007,9 +3021,9 @@ this element is a hierarchical container called "subclause" either explicitly or - Element - sublist - + Element + sublist + this element is a hierarchical container called "sublist" either explicitly or due to the local tradition @@ -3020,9 +3034,9 @@ this element is a hierarchical container called "sublist" either explicitly or d - Element - transitional - + Element + transitional + this element is a hierarchical container called "transitional" either explicitly or due to the local tradition @@ -3033,9 +3047,9 @@ this element is a hierarchical container called "transitional" either explicitly - Element - content - + Element + content + the element content is the final container in a hierarchy, and is where the blocks of text of the content of the structure are finally specified @@ -3046,9 +3060,9 @@ the element content is the final container in a hierarchy, and is where the bloc - Element - num - + Element + num + the element num is a heading element in a hierarchy that contains a number or any other ordered mechanism to identify the structure. @@ -3059,9 +3073,9 @@ the element num is a heading element in a hierarchy that contains a number or an - Element - heading - + Element + heading + the element heading is a heading element in a hierarchy that contains a title or any other textual content to describe the structure. @@ -3069,12 +3083,12 @@ the element heading is a heading element in a hierarchy that contains a title or - + - Element - subheading - + Element + subheading + the element subheading is a heading element in a hierarchy that contains a subtitle or any other textual content to further describe the structure. @@ -3085,9 +3099,9 @@ the element subheading is a heading element in a hierarchy that contains a subti - Element - intro - + Element + intro + the element intro is a heading element in a hierarchy that contains paragraphs introducing one or more lower hierarchical elements. @@ -3095,13 +3109,13 @@ the element intro is a heading element in a hierarchy that contains paragraphs i - + - Element - wrap - -the element wrap is a concluding element in a hierarchy that contains paragraphs wrapping up the preceding lower hierarchical elements. + Element + wrapUp + +the element wrapUp is a concluding element in a hierarchy that contains paragraphs wrapping up the preceding lower hierarchical elements. @@ -3121,9 +3135,9 @@ the element wrap is a concluding element in a hierarchy that contains paragraphs - Element - administrationOfOath - + Element + administrationOfOath + this element is a structural container for parts of a debates that contain the administration of an oath @@ -3134,9 +3148,9 @@ this element is a structural container for parts of a debates that contain the a - Element - rollCall - + Element + rollCall + this element is a structural container for parts of a debates that contain a roll call of individuals @@ -3147,9 +3161,9 @@ this element is a structural container for parts of a debates that contain a rol - Element - prayers - + Element + prayers + this element is a structural container for parts of a debates that contain prayers @@ -3160,9 +3174,9 @@ this element is a structural container for parts of a debates that contain praye - Element - oralStatements - + Element + oralStatements + this element is a structural container for parts of a debates that contain oral statements by participants @@ -3173,9 +3187,9 @@ this element is a structural container for parts of a debates that contain oral - Element - writtenStatements - + Element + writtenStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3186,9 +3200,9 @@ this element is a structural container for parts of a debates that contain writt - Element - personalStatements - + Element + personalStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3199,9 +3213,9 @@ this element is a structural container for parts of a debates that contain writt - Element - ministerialStatements - + Element + ministerialStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3212,9 +3226,9 @@ this element is a structural container for parts of a debates that contain writt - Element - resolutions - + Element + resolutions + this element is a structural container for parts of a debates that contain resolutions @@ -3225,9 +3239,9 @@ this element is a structural container for parts of a debates that contain resol - Element - nationalInterest - + Element + nationalInterest + this element is a structural container for parts of a debates that contain resolutions @@ -3238,9 +3252,9 @@ this element is a structural container for parts of a debates that contain resol - Element - declarationOfVote - + Element + declarationOfVote + this element is a structural container for parts of a debates that are relevant to the declaration of votes @@ -3251,9 +3265,9 @@ this element is a structural container for parts of a debates that are relevant - Element - communication - + Element + communication + this element is a structural container for parts of a debates that contain communications from the house @@ -3264,9 +3278,9 @@ this element is a structural container for parts of a debates that contain commu - Element - petitions - + Element + petitions + this element is a structural container for parts of a debates that are relevant to petitions @@ -3277,9 +3291,9 @@ this element is a structural container for parts of a debates that are relevant - Element - papers - + Element + papers + this element is a structural container for parts of a debates that are relevant to the display of papers @@ -3290,9 +3304,9 @@ this element is a structural container for parts of a debates that are relevant - Element - noticesOfMotion - + Element + noticesOfMotion + this element is a structural container for parts of a debates that are relevant to the notices of motions @@ -3303,9 +3317,9 @@ this element is a structural container for parts of a debates that are relevant - Element - questions - + Element + questions + this element is a structural container for parts of a debates that are relevant to questions @@ -3316,9 +3330,9 @@ this element is a structural container for parts of a debates that are relevant - Element - address - + Element + address + this element is a structural container for parts of a debates that are relevant to addresses @@ -3329,9 +3343,9 @@ this element is a structural container for parts of a debates that are relevant - Element - proceduralMotions - + Element + proceduralMotions + this element is a structural container for parts of a debates that are relevant to procedural motions @@ -3342,9 +3356,9 @@ this element is a structural container for parts of a debates that are relevant - Element - pointOfOrder - + Element + pointOfOrder + this element is a structural container for parts of a debates that are relevant to points of order @@ -3355,9 +3369,9 @@ this element is a structural container for parts of a debates that are relevant - Element - adjournment - + Element + adjournment + this element is a structural container for parts of a debates that contain adjournment notices @@ -3368,9 +3382,9 @@ this element is a structural container for parts of a debates that contain adjou - Element - debateSection - + Element + debateSection + this element is a generic structural container for all other parts of a debates that are not explicitly supported with a named element @@ -3387,9 +3401,9 @@ this element is a generic structural container for all other parts of a debates - Element - speechGroup - + Element + speechGroup + the element speechGroup is a container of speech elements. This element is meant to pooint out, in a complex sequence of individual speech elements, the main contributor, i.e., the individual speech who was introducedand expected and that is causing the complex sequence that follows. Attributes by, as and to are those of the main speech. @@ -3406,9 +3420,9 @@ the element speechGroup is a container of speech elements. This element is meant - Element - speech - + Element + speech + the element speech is a container of a single speech utterance in a debate. Dialogs between speakers need a speech element each @@ -3419,9 +3433,9 @@ the element speech is a container of a single speech utterance in a debate. Dial - Element - question - + Element + question + the element question is a container of a single official question as proposed by an MP to a person holding an official position @@ -3432,9 +3446,9 @@ the element question is a container of a single official question as proposed by - Element - answer - + Element + answer + the element answer is a container of a single official answer to a question @@ -3445,9 +3459,9 @@ the element answer is a container of a single official answer to a question - Element - other - + Element + other + the element other is a container of parts of a debate that are not speeches, nor scene comments (e.g., lists of papers, etc.) @@ -3458,9 +3472,9 @@ the element other is a container of parts of a debate that are not speeches, nor - Element - scene - + Element + scene + the element scene is a container of descriptions of the scene elements happening in a given moment during a debate (e.g., applauses) @@ -3471,9 +3485,9 @@ the element scene is a container of descriptions of the scene elements happening - Element - narrative - + Element + narrative + the element narrative is a block element in a debate to mark description in the third person of events taking place in the meeting, e.g. "Mr X. takes the Chair" @@ -3484,9 +3498,9 @@ the element narrative is a block element in a debate to mark description in the - Element - summary - + Element + summary + the element summary is a block element in a debate to mark summaries of speeches that are individually not interesting (e.g.: "Question put and agreed to") @@ -3497,9 +3511,9 @@ the element summary is a block element in a debate to mark summaries of speeches - Element - from - + Element + from + the element from is a heading element in a debate that contains the name or role or a reference to the person doing the speech @@ -3510,9 +3524,9 @@ the element from is a heading element in a debate that contains the name or role - Element - vote - + Element + vote + the element vote is an inline that wraps either the name of the voter (when organized by choice) or the vote (when organized by name) in a voting report. @@ -3529,9 +3543,9 @@ the element vote is an inline that wraps either the name of the voter (when orga - Element - outcome - + Element + outcome + the element outcome is an inline that wraps the outcome of a vote @@ -3542,9 +3556,9 @@ the element outcome is an inline that wraps the outcome of a vote - Element - introduction - + Element + introduction + this element is a structural container for the section of a judgment containing introductory material @@ -3555,9 +3569,9 @@ this element is a structural container for the section of a judgment containing - Element - background - + Element + background + this element is a structural container for the section of a judgment containing the background @@ -3568,9 +3582,9 @@ this element is a structural container for the section of a judgment containing - Element - arguments - + Element + arguments + this element is a structural container for the section of a judgment containing the arguments @@ -3581,9 +3595,9 @@ this element is a structural container for the section of a judgment containing - Element - remedies - + Element + remedies + this element is a structural container for the section of a judgment containing the remedies @@ -3594,9 +3608,9 @@ this element is a structural container for the section of a judgment containing - Element - motivation - + Element + motivation + this element is a structural container for the section of a judgment containing the motivation @@ -3607,9 +3621,9 @@ this element is a structural container for the section of a judgment containing - Element - decision - + Element + decision + this element is a structural container for the section of a judgment containing the decision @@ -3620,9 +3634,9 @@ this element is a structural container for the section of a judgment containing - Element - affectedDocument - + Element + affectedDocument + the element affectedDocument is an inline element within preamble to identify the document that this amendment affects @@ -3639,9 +3653,9 @@ the element affectedDocument is an inline element within preamble to identify th - Element - relatedDocument - + Element + relatedDocument + the element relatedDocument is an inline element to identify the document for which this document is a report of @@ -3658,9 +3672,9 @@ the element relatedDocument is an inline element to identify the document for wh - Element - change - + Element + change + the element change is an inline element that identifies the changes expressed in the two columns of an amendment document @@ -3671,9 +3685,9 @@ the element change is an inline element that identifies the changes expressed in - Element - amendmentHeading - + Element + amendmentHeading + this element is a structural container for the section of an amendment containing the heading @@ -3684,9 +3698,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentContent - + Element + amendmentContent + this element is a structural container for the section of an amendment containing the actual amendment text @@ -3697,9 +3711,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentReference - + Element + amendmentReference + this element is a structural container for the section of an amendment containing the reference @@ -3710,9 +3724,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentJustification - + Element + amendmentJustification + this element is a structural container for the section of an amendment containing the justification @@ -3736,9 +3750,9 @@ this element is a structural container for the section of an amendment containin - Complex - blockContainerType - + Complex + blockContainerType + the element blockContainer is used as a container of many individual block elements in a block context @@ -3751,7 +3765,7 @@ the element blockContainer is used as a container of many individual block eleme - + @@ -3772,7 +3786,7 @@ the element blockContainer is used as a container of many individual block eleme - + @@ -3787,9 +3801,9 @@ the element blockContainer is used as a container of many individual block eleme - Element - listIntroduction - + Element + listIntroduction + the element listIntroduction is an optional element of list before any item of the list itself. @@ -3797,13 +3811,13 @@ the element listIntroduction is an optional element of list before any item of t - + - Element - listConclusion - -the element listConclusion is an optional element of list after all items of the list itself. + Element + listWrapUp + +the element listWrapUp is an optional element of list after all items of the list itself. @@ -3813,9 +3827,9 @@ the element listConclusion is an optional element of list after all items of the - Element - tblock - + Element + tblock + The element tblock (titled block) is used to specify a container for blocks introduced by heading elements, similarly to a hierarchical structure @@ -3835,9 +3849,9 @@ The element tblock (titled block) is used to specify a container for blocks intr - Element - tocItem - + Element + tocItem + the element tocItem is a component of the table of content and contains header information about sections or parts of the rest of the document @@ -3857,9 +3871,9 @@ the element tocItem is a component of the table of content and contains header i - Element - docType - + Element + docType + the element docType is an inline element within preface to identify the string used by the document for its own type @@ -3870,9 +3884,9 @@ the element docType is an inline element within preface to identify the string u - Element - docTitle - + Element + docTitle + the element docTitle is an inline element within preface to identify the string used by the document for its own title @@ -3883,9 +3897,9 @@ the element docTitle is an inline element within preface to identify the string - Element - docNumber - + Element + docNumber + the element docNumber is an inline element within preface to identify the string used by the document for its own number @@ -3896,9 +3910,9 @@ the element docNumber is an inline element within preface to identify the string - Element - docProponent - + Element + docProponent + the element docProponent is an inline element within preface to identify the string used by the document for its proponent @@ -3915,9 +3929,9 @@ the element docProponent is an inline element within preface to identify the str - Element - docDate - + Element + docDate + the element docDate is an inline element within preface to identify the string used by the document for its own date(s). Documents with multiple dates may use multiple docDate elements. @@ -3934,9 +3948,9 @@ the element docDate is an inline element within preface to identify the string u - Element - legislature - + Element + legislature + the element legislature is an inline element within preface to identify the string used by the document for the legislature relative to the document. Use #refersTo to a TLCEvent to refer to the event of the specific legislature. @@ -3953,9 +3967,9 @@ the element legislature is an inline element within preface to identify the stri - Element - session - + Element + session + the element session is an inline element within preface to identify the string used by the document for the session of the legislature relative to the document. Use #refersTo to a TLCEvent to refer to the event of the specific session. @@ -3972,9 +3986,9 @@ the element session is an inline element within preface to identify the string u - Element - shortTitle - + Element + shortTitle + the element shortTitle is an inline element within preface to identify the string used by the document for the short title of the document. @@ -3985,9 +3999,9 @@ the element shortTitle is an inline element within preface to identify the strin - Element - docAuthority - + Element + docAuthority + the element docAuthority is an inline element within preface to identify the string used by the document detailing the Auhtority to which the document was submitted @@ -3998,9 +4012,9 @@ the element docAuthority is an inline element within preface to identify the str - Element - docPurpose - + Element + docPurpose + the element docPurpose is an inline element within preface to identify the string used by the document detailing its own purpose @@ -4011,9 +4025,9 @@ the element docPurpose is an inline element within preface to identify the strin - Element - docCommittee - + Element + docCommittee + the element docCommittee is an inline element within preface to identify the string used by the document detailing the committee within which the document originated @@ -4030,9 +4044,9 @@ the element docCommittee is an inline element within preface to identify the str - Element - docIntroducer - + Element + docIntroducer + the element docIntroducer is an inline element within preface to identify the string used by the document detailing the individual introducing of the document @@ -4043,9 +4057,9 @@ the element docIntroducer is an inline element within preface to identify the st - Element - docStage - + Element + docStage + the element docStage is an inline element within preface to identify the string used by the document detailing the stage in which the document sits @@ -4056,9 +4070,9 @@ the element docStage is an inline element within preface to identify the string - Element - docStatus - + Element + docStatus + the element docStatus is an inline element within preface to identify the string used by the document detailing the status of the document @@ -4069,9 +4083,9 @@ the element docStatus is an inline element within preface to identify the string - Element - docJurisdiction - + Element + docJurisdiction + the element docJurisdiction is an inline element within preface to identify the string used by the document detailing the jurisdiction of the document @@ -4082,9 +4096,9 @@ the element docJurisdiction is an inline element within preface to identify the - Element - docketNumber - + Element + docketNumber + the element docketNumber is an inline element within preface to identify the string used by the document for the number of the docket, case, file, etc which the document belongs to @@ -4095,9 +4109,9 @@ the element docketNumber is an inline element within preface to identify the str - Element - courtType - + Element + courtType + the element courtType is an inline element within judgments to identify the string used by the document for the type of the court doing the judgment @@ -4108,9 +4122,9 @@ the element courtType is an inline element within judgments to identify the stri - Element - neutralCitation - + Element + neutralCitation + the element neutralCitation is an inline element within judgments to identify the string declared by the document as being the neutral citation for the judgment @@ -4121,9 +4135,9 @@ the element neutralCitation is an inline element within judgments to identify th - Element - party - + Element + party + the element party is an inline element within judgments to identify where the document defines one of the parties @@ -4140,9 +4154,9 @@ the element party is an inline element within judgments to identify where the do - Element - judge - + Element + judge + the element judge is an inline element within judgments to identify where the document defines one of the judges, and his/her role @@ -4159,9 +4173,9 @@ the element judge is an inline element within judgments to identify where the do - Element - lawyer - + Element + lawyer + the element lawyer is an inline element within judgments to identify where the document defines one of the lawyers, his/her role, which party it represents, and the other lawyer, if any, this lawyer received the power delegation of power in some role @@ -4180,9 +4194,9 @@ the element lawyer is an inline element within judgments to identify where the d - Element - opinion - + Element + opinion + the element opinion is an inline element within judgments to identify where the document defines the opinion of one of the judges @@ -4199,9 +4213,9 @@ the element opinion is an inline element within judgments to identify where the - Element - argument - + Element + argument + the element argument is an inline element within judgments for classifying the arguments in the motivation part of the judgment @@ -4212,9 +4226,9 @@ the element argument is an inline element within judgments for classifying the a - Element - signature - + Element + signature + the element signature is an inline element within conclusions to identify where the document defines one of the signatures @@ -4225,9 +4239,9 @@ the element signature is an inline element within conclusions to identify where - Element - date - + Element + date + the element date is an inline element to identify a date expressed in the text and to propose a normalized representation in the date attribute. @@ -4244,9 +4258,9 @@ the element date is an inline element to identify a date expressed in the text a - Element - time - + Element + time + the element time is an inline element to identify a time expressed in the text and to propose a normalized representation in the time attribute. @@ -4263,9 +4277,9 @@ the element time is an inline element to identify a time expressed in the text a - Element - entity - + Element + entity + the element entity is a generic inline element to identify a text fragment introducing or referring to a concept in the ontology @@ -4282,9 +4296,9 @@ the element entity is a generic inline element to identify a text fragment intro - Element - person - + Element + person + the element person is an inline element to identify a text fragment introducing or referring to a person in the ontology. Attribute as allows to specify a TLCrole the person is holding in the context of the document's mention @@ -4301,9 +4315,9 @@ the element person is an inline element to identify a text fragment introducing - Element - organization - + Element + organization + The element organization is an inline element to identify a text fragment introducing or referring to an organization in the ontology @@ -4314,9 +4328,9 @@ The element organization is an inline element to identify a text fragment introd - Element - concept - + Element + concept + The element concept is is an inline element to identify a text fragment introducing or referring to a concept in the ontology @@ -4327,9 +4341,9 @@ The element concept is is an inline element to identify a text fragment introduc - Element - object - + Element + object + The element object is is an inline element to identify a text fragment introducing or referring to an object in the ontology @@ -4340,9 +4354,9 @@ The element object is is an inline element to identify a text fragment introduci - Element - event - + Element + event + The element event is an inline element to identify a text fragment introducing or referring to an event in the ontology @@ -4353,9 +4367,9 @@ The element event is an inline element to identify a text fragment introducing o - Element - location - + Element + location + The element location is an inline element to identify a text fragment introducing or referring to a location in the ontology @@ -4366,9 +4380,9 @@ The element location is an inline element to identify a text fragment introducin - Element - process - + Element + process + The element process is an inline element to identify a text fragment introducing or referring to a process in the ontology @@ -4379,9 +4393,9 @@ The element process is an inline element to identify a text fragment introducing - Element - role - + Element + role + The element role is an inline element to identify a text fragment introducing or referring to a role in the ontology @@ -4392,9 +4406,9 @@ The element role is an inline element to identify a text fragment introducing or - Element - term - + Element + term + The element term is an inline element to identify a text fragment introducing or referring to a term in the ontology @@ -4405,9 +4419,9 @@ The element term is an inline element to identify a text fragment introducing or - Element - quantity - + Element + quantity + The element quantity is an inline element to identify a text fragment introducing or referring to a quantity. This could be a dimensionless number, or a number referring to a length, weight, duration, etc. or even a sum of money. The attribute normalized contains the value normalized in a number, if appropriate. @@ -4424,9 +4438,9 @@ The element quantity is an inline element to identify a text fragment introducin - Element - def - + Element + def + the element def is an inline element used for the definition of a term used in the rest of the document @@ -4437,9 +4451,9 @@ the element def is an inline element used for the definition of a term used in t - Element - ref - + Element + ref + the element ref is an inline element containing a legal references (i.e. a reference to a document with legal status and for which an Akoma Ntoso IRI exists) @@ -4456,9 +4470,9 @@ the element ref is an inline element containing a legal references (i.e. a refer - Element - mref - + Element + mref + the element mref is an inline element containing multiple references (each in turn represented by a ref element) @@ -4469,9 +4483,9 @@ the element mref is an inline element containing multiple references (each in tu - Element - rref - + Element + rref + the element rref is an inline element containing a range of references between the IRI specified in the href attribute and the one specified in the upTo attribute. @@ -4489,9 +4503,9 @@ the element rref is an inline element containing a range of references between t - Complex - modType - + Complex + modType + the complex type modType specifies the content that is allowed within mod, mmod and rmod elements, i.e. it adds quotedText and quotedStructure to the normal list of inline elements @@ -4507,9 +4521,9 @@ the complex type modType specifies the content that is allowed within mod, mmod - Element - mod - + Element + mod + the element mod is an inline element containing the specification of a modification on another document @@ -4520,9 +4534,9 @@ the element mod is an inline element containing the specification of a modificat - Element - mmod - + Element + mmod + the element mmod is an inline element containing multiple specifications of modifications on another document @@ -4533,9 +4547,9 @@ the element mmod is an inline element containing multiple specifications of modi - Element - rmod - + Element + rmod + the element rmod is an inline element containing the specification of a range of modifications on another document @@ -4553,10 +4567,10 @@ the element rmod is an inline element containing the specification of a range of - Element - quotedText - -the element quotedText is an inline element containing a small string that is used either as the text being replaced, or the replacement, or the positioning at which some modification should take place. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + quotedText + +the element quotedText is an inline element containing a small string that is used either as the text being replaced, or the replacement, or the positioning at which some modification should take place. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4573,9 +4587,9 @@ the element quotedText is an inline element containing a small string that is us - Element - remark - + Element + remark + the element remark is an inline element for the specification of editorial remarks (e.g., applauses, laughters, etc.) especially within debate records @@ -4592,9 +4606,9 @@ the element remark is an inline element for the specification of editorial remar - Element - recordedTime - + Element + recordedTime + the element recordedTime is an inline element for the specification of an explicit mention of a time (e.g., in a debate) @@ -4612,9 +4626,9 @@ the element recordedTime is an inline element for the specification of an explic - Element - ins - + Element + ins + the element ins is an inline element for the specification of editorial insertions @@ -4625,9 +4639,9 @@ the element ins is an inline element for the specification of editorial insertio - Element - del - + Element + del + the element del is an inline element for the specification of editorial deletions @@ -4638,9 +4652,9 @@ the element del is an inline element for the specification of editorial deletion - Element - omissis - + Element + omissis + the element omissis is an inline element for the specification of a text that substitutes a textual omission (e.g., dots, spaces, the word "omissis", etc. @@ -4651,9 +4665,9 @@ the element omissis is an inline element for the specification of a text that su - Element - placeholder - + Element + placeholder + the element placeholder is an inline element containing the text of a computable expression (e.g., '30 days after the publication of this act') that can be replaced editorially with an actual value @@ -4670,9 +4684,9 @@ the element placeholder is an inline element containing the text of a computable - Element - fillIn - + Element + fillIn + the element fillIn is an inline element shown as a dotted line or any other typoaphical characteristics to represent a fill-in element in a printed form, that is as ane example of an actual form. It is NOT meant to be used for form elements as in HTML, i.e. as a way to collect input from the reader and deliver to some server-side process. @@ -4689,9 +4703,9 @@ the element fillIn is an inline element shown as a dotted line or any other typo - Element - decoration - + Element + decoration + the element decoration is an inline element to represent a decorative aspect that is present in the orignal text and that is meant as additional information to the text (e.g., the annotation 'new' on the side of a freshly inserted structure. @@ -4715,9 +4729,9 @@ the element decoration is an inline element to represent a decorative aspect tha - Element - noteRef - + Element + noteRef + the element noteRef is a reference to a editorial note placed in the notes metadata section @@ -4735,9 +4749,9 @@ the element noteRef is a reference to a editorial note placed in the notes metad - Complex - eolType - + Complex + eolType + the complex type eolType is shared by eol and eop elements as being able to specify a position within the next word in which the break can happen, and the number if any, associated to the page or line at issue @@ -4753,9 +4767,9 @@ the complex type eolType is shared by eol and eop elements as being able to spec - Element - eol - + Element + eol + the element eol (end of line) is a marker for where in the original text the line breaks. If the line breaks within a word, place the element BEFORE the word and place the number of characters before the break in the attribute breakat @@ -4766,9 +4780,9 @@ the element eol (end of line) is a marker for where in the original text the lin - Element - eop - + Element + eop + the element eop (end of page) is a marker for where in the original text the page breaks. Do NOT use a eol element, too. If the page breaks within a word, place the element BEFORE the word and place the number of characters before the break in the attribute breakat @@ -4792,9 +4806,9 @@ the element eop (end of page) is a marker for where in the original text the pag - Complex - subFlowStructure - + Complex + subFlowStructure + the type subFlowStructure specifies the overall content model of the elements that are subFlows @@ -4819,7 +4833,7 @@ the type subFlowStructure specifies the overall content model of the elements th - + @@ -4831,10 +4845,10 @@ the type subFlowStructure specifies the overall content model of the elements th - Element - quotedStructure - -the element quotedStructure is a subFlow element containing a full structure proposed as an insertion or a replacement. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + quotedStructure + +the element quotedStructure is a subFlow element containing a full structure proposed as an insertion or a replacement. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4851,9 +4865,9 @@ the element quotedStructure is a subFlow element containing a full structure pro - Element - embeddedText - + Element + embeddedText + the element embeddedText is an inline element containing a string used as an extract from another document. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. @@ -4871,10 +4885,10 @@ the element embeddedText is an inline element containing a string used as an ext - Element - embeddedStructure - -the element embeddedStructure is a subFlow element containing a full structure used as an extract from another document or position. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + embeddedStructure + +the element embeddedStructure is a subFlow element containing a full structure used as an extract from another document or position. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4891,9 +4905,9 @@ the element embeddedStructure is a subFlow element containing a full structure u - Element - authorialNote - + Element + authorialNote + the element authorialNote is a subFlow element containing an authorial (non-editorial) note in the main flow of the text. @@ -4914,9 +4928,9 @@ the element authorialNote is a subFlow element containing an authorial (non-edit - Element - foreign - + Element + foreign + the element foreign is a generic container for elements not belonging to the Akoma Ntoso namespace (e.g., mathematical formulas). It is a block element and thus can be placed in a container. @@ -4952,9 +4966,9 @@ the element foreign is a generic container for elements not belonging to the Ako - Element - hcontainer - + Element + hcontainer + the element hcontainer is a generic element for a hierarchical container. It can be placed in a hierarchy instead of any of the other hierarchical containers. The attribute name is required and gives a name to the element. @@ -4971,9 +4985,9 @@ the element hcontainer is a generic element for a hierarchical container. It can - Complex - containerType - + Complex + containerType + the complex type containerType is the content model for the generic element for a container. It can be placed in a container instead of any of the other containers. The attribute name is required and gives a name to the element. @@ -4989,9 +5003,9 @@ the complex type containerType is the content model for the generic element for - Element - container - + Element + container + the element container is a generic element for a container. @@ -5002,9 +5016,9 @@ the element container is a generic element for a container. - Element - block - + Element + block + the element block is a generic element for a container. It can be placed in a container instead of any of the other blocks. The attribute name is required and gives a name to the element. @@ -5021,9 +5035,9 @@ the element block is a generic element for a container. It can be placed in a co - Element - inline - + Element + inline + the element inline is a generic element for an inline. It can be placed inside a block instead of any of the other inlines. The attribute name is required and gives a name to the element. @@ -5040,9 +5054,9 @@ the element inline is a generic element for an inline. It can be placed inside a - Element - marker - + Element + marker + the element marker is a generic element for a marker. It can be placed in a block instead of any of the other markers. The attribute name is required and gives a name to the element. @@ -5061,9 +5075,9 @@ the element marker is a generic element for a marker. It can be placed in a bloc - Element - div - + Element + div + The element div is an HTML element, but is NOT used in Akoma Ntoso as in HTML. Instead of being used as a generic block, Akoma Ntoso uses div as a generic container (as in common practice) @@ -5074,9 +5088,9 @@ The element div is an HTML element, but is NOT used in Akoma Ntoso as in HTML. I - Element - p - + Element + p + The element p is an HTML element and is used in Akoma Ntoso as in HTML, for the generic paragraph of text (a block) @@ -5087,9 +5101,9 @@ The element p is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - span - + Element + span + The element span is an HTML element and is used in Akoma Ntoso as in HTML, for the generic inline @@ -5100,9 +5114,9 @@ The element span is an HTML element and is used in Akoma Ntoso as in HTML, for t - Element - br - + Element + br + The element br is an HTML element and is used in Akoma Ntoso as in HTML, for the breaking of a line @@ -5113,9 +5127,9 @@ The element br is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - b - + Element + b + The element b is an HTML element and is used in Akoma Ntoso as in HTML, for the bold style (an inline) @@ -5126,9 +5140,9 @@ The element b is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - i - + Element + i + The element i is an HTML element and is used in Akoma Ntoso as in HTML, for the italic style (an inline) @@ -5139,9 +5153,9 @@ The element i is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - u - + Element + u + The element u is an HTML element and is used in Akoma Ntoso as in HTML, for the underline style (an inline) @@ -5152,9 +5166,9 @@ The element u is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - sup - + Element + sup + The element sup is an HTML element and is used in Akoma Ntoso as in HTML, for the superscript style (an inline) @@ -5165,9 +5179,9 @@ The element sup is an HTML element and is used in Akoma Ntoso as in HTML, for th - Element - sub - + Element + sub + The element sub is an HTML element and is used in Akoma Ntoso as in HTML, for the subscript style (an inline) @@ -5178,9 +5192,9 @@ The element sub is an HTML element and is used in Akoma Ntoso as in HTML, for th - Element - abbr - + Element + abbr + The element abbr is an HTML element and is used in Akoma Ntoso as in HTML, for the specification of an abbreviation or an acronym (an inline). As in HTML, use attribute title to specify the full expansion of the abbreviation or acronym. @@ -5191,9 +5205,9 @@ The element abbr is an HTML element and is used in Akoma Ntoso as in HTML, for t - Element - a - + Element + a + The element a is an HTML element and is used in Akoma Ntoso as in HTML, for the generic link to a web resource (NOT to an Akoma Ntoso document: use ref for that). It is an inline. @@ -5211,9 +5225,9 @@ The element a is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - img - + Element + img + The element img is an HTML element and is used in Akoma Ntoso as in HTML, for including an image. It is a marker. @@ -5232,9 +5246,9 @@ The element img is an HTML element and is used in Akoma Ntoso as in HTML, for in - Complex - listItems - + Complex + listItems + the complex type listItems specifies the content model of elements ul and ol, and specifies just a sequence of list items (elements li). @@ -5248,9 +5262,9 @@ the complex type listItems specifies the content model of elements ul and ol, an - Element - ul - + Element + ul + The element ul is an HTML element and is used in Akoma Ntoso as in HTML, for an unordered list of list item (elements li) @@ -5261,9 +5275,9 @@ The element ul is an HTML element and is used in Akoma Ntoso as in HTML, for an - Element - ol - + Element + ol + The element ol is an HTML element and is used in Akoma Ntoso as in HTML, for an ordered list of list item (elements li) @@ -5274,9 +5288,9 @@ The element ol is an HTML element and is used in Akoma Ntoso as in HTML, for an - Element - li - + Element + li + TYPE Element NAME @@ -5314,9 +5328,9 @@ The element li is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - caption - + Element + caption + The element caption is an HTML element and is used in Akoma Ntoso as in HTML, for the caption of a table (a block) @@ -5337,9 +5351,9 @@ The element caption is an HTML element and is used in Akoma Ntoso as in HTML, fo - Element - th - + Element + th + The element th is an HTML element and is used in Akoma Ntoso as in HTML, for a header cell of a table @@ -5356,9 +5370,9 @@ The element th is an HTML element and is used in Akoma Ntoso as in HTML, for a h - Element - td - + Element + td + The element td is an HTML element and is used in Akoma Ntoso as in HTML, for a data cell of a table @@ -5407,9 +5421,9 @@ The element td is an HTML element and is used in Akoma Ntoso as in HTML, for a d - Complex - coreProperties - + Complex + coreProperties + The complexType coreProperties lists the identifying properties available at any of the FRBR hierarchy levels. @@ -5428,9 +5442,9 @@ The complexType coreProperties lists the identifying properties available at any - Group - workProperties - + Group + workProperties + The group workProperties lists the properties that are characteristics of the FRBR Work level. @@ -5448,15 +5462,16 @@ The group workProperties lists the properties that are characteristics of the FR - Group - exprProperties - + Group + exprProperties + The group exprProperties lists the properties that are characteristics of the FRBR Expression level. + @@ -5465,9 +5480,9 @@ The group exprProperties lists the properties that are characteristics of the FR - Group - manifProperties - + Group + manifProperties + The group manifProperties lists the properties that are characteristics of the FRBR Expression level. @@ -5480,9 +5495,9 @@ The group manifProperties lists the properties that are characteristics of the F - Element - FRBRWork - + Element + FRBRWork + The element FRBRWork is the metadata container of identifying properties related to the Work level according to the FRBR hierarchy @@ -5501,9 +5516,9 @@ The element FRBRWork is the metadata container of identifying properties related - Element - FRBRExpression - + Element + FRBRExpression + The element FRBRExpression is the metadata container of identifying properties related to the Expression level according to the FRBR hierarchy @@ -5522,9 +5537,9 @@ The element FRBRExpression is the metadata container of identifying properties r - Element - FRBRManifestation - + Element + FRBRManifestation + The element FRBRManifestation is the metadata container of identifying properties related to the Manifestation level according to the FRBR hierarchy @@ -5543,9 +5558,9 @@ The element FRBRManifestation is the metadata container of identifying propertie - Element - FRBRItem - + Element + FRBRItem + The element FRBRItem is the metadata container of identifying properties related to the Item level according to the FRBR hierarchy. @@ -5556,9 +5571,9 @@ The element FRBRItem is the metadata container of identifying properties related - Complex - valueType - + Complex + valueType + The type valueType specifies a value attribute to FRBR elements. @@ -5575,9 +5590,9 @@ The type valueType specifies a value attribute to FRBR elements. - Complex - booleanValueType - + Complex + booleanValueType + The type booleanValueType specifies a boolean value attribute to FRBR elements. @@ -5592,9 +5607,9 @@ The type booleanValueType specifies a boolean value attribute to FRBR elements.< - Element - FRBRthis - + Element + FRBRthis + The element FRBRthis is the metadata property containing the IRI of the specific component of the document in the respective level of the FRBR hierarchy @@ -5605,9 +5620,9 @@ The element FRBRthis is the metadata property containing the IRI of the specific - Element - FRBRuri - + Element + FRBRuri + The element FRBRuri is the metadata property containing the IRI of the whole document in the respective level of the FRBR hierarchy @@ -5618,9 +5633,9 @@ The element FRBRuri is the metadata property containing the IRI of the whole doc - Element - FRBRalias - + Element + FRBRalias + The element FRBRalias is the metadata property containing additional well-known names of the document in the respective level of the FRBR hierarchy @@ -5637,9 +5652,9 @@ The element FRBRalias is the metadata property containing additional well-known - Element - FRBRdate - + Element + FRBRdate + The element FRBRdate is the metadata property containing a relevant date of the document in the respective level of the FRBR hierarchy. Attribute name specifies which actual date is contained here. @@ -5657,9 +5672,9 @@ The element FRBRdate is the metadata property containing a relevant date of the - Element - FRBRauthor - + Element + FRBRauthor + The element FRBRauthor is the metadata property containing a relevant author of the document in the respective level of the FRBR hierarchy. Attribute as specifies the role of the author. @@ -5677,9 +5692,9 @@ The element FRBRauthor is the metadata property containing a relevant author of - Element - FRBRlanguage - + Element + FRBRlanguage + The element FRBRlanguage is the metadata property containing a RFC4646 (three-letter code) of the main human language used in the content of this expression @@ -5696,9 +5711,9 @@ The element FRBRlanguage is the metadata property containing a RFC4646 (three-le - Element - FRBRtranslation - + Element + FRBRtranslation + The element FRBRtranslation is the metadata property specifying the source of which this expression is a translation of. @@ -5719,9 +5734,9 @@ The element FRBRtranslation is the metadata property specifying the source of wh - Element - FRBRsubtype - + Element + FRBRsubtype + The element FRBRsubtype is the metadata property containing a string for the specific subtype of the document to be used in the work-level IRI of this document @@ -5732,9 +5747,9 @@ The element FRBRsubtype is the metadata property containing a string for the spe - Element - FRBRcountry - + Element + FRBRcountry + The element FRBRcountry is the metadata property containing a ISO 3166-1 Alpha-2 code for the country or jurisdiction to be used in the work-level IRI of this document @@ -5745,9 +5760,9 @@ The element FRBRcountry is the metadata property containing a ISO 3166-1 Alpha-2 - Element - FRBRnumber - + Element + FRBRnumber + The element FRBRnumber is the metadata property containing a string or number for the number to be used in the work-level IRI of this document @@ -5758,9 +5773,9 @@ The element FRBRnumber is the metadata property containing a string or number fo - Element - FRBRname - + Element + FRBRname + The element FRBRname is the metadata property containing a string for the title to be used in the work-level IRI of this document @@ -5771,9 +5786,9 @@ The element FRBRname is the metadata property containing a string for the title - Element - FRBRformat - + Element + FRBRformat + The element FRBRformat is the metadata property containing a string for the data format to be used in the manifestation-level IRI of this document @@ -5784,9 +5799,9 @@ The element FRBRformat is the metadata property containing a string for the data - Element - FRBRprescriptive - + Element + FRBRprescriptive + The element FRBRprescriptive is the metadata property containing a boolean value to determine whether the document contains prescriptive text (i.e., text that is or might become prescriptive, such as an act or a bill) or not (such as, for instance, a non-normative resolution from an assembly. @@ -5797,9 +5812,9 @@ The element FRBRprescriptive is the metadata property containing a boolean value - Element - FRBRauthoritative - + Element + FRBRauthoritative + The element FRBRauthoritative is the metadata property containing a boolean value to determine whether the document contains authoritative text (i.e., content that is the official, authoritative product of an official workflow from an entity that is entrusted with generating an official, authoriative version of the document. @@ -5807,6 +5822,19 @@ The element FRBRauthoritative is the metadata property containing a boolean valu + + + + Element + FRBRmasterExpression + +The element FRBRmasterExpression is the metadata property identifying the master expression, i.e., the expression whose ids are used as permanent ids in the wId attributes. An expression without the FRBRmasterExpression element is considered a master expression itself, i.e., the first version, or the most important version, of a document expressed in the only language, or in the most important language. Any other situation (subsequent versions, or language variants, or content variants) must have the FRBRmasterExpression element pointing to the URI of the master expression. If the FRBRmasterEpression is specified, but without a href pointing to the masterExpression, it is assumed that NO master expression exist in reality, but an UR-Expression exist, whose ids are used in this expression as wIds. In this case, the refersTo attribute must be used to point to an TLCConcept specifying facts about the UR-Expression. + + + + + + @@ -5831,9 +5859,9 @@ The element FRBRauthoritative is the metadata property containing a boolean valu - Element - preservation - + Element + preservation + The element preservation is the metadata property containing an arbitrary list of elements detailing the preservation actions taken for the document is the respective level of the FRBR hierarchy.. @@ -5844,9 +5872,9 @@ The element preservation is the metadata property containing an arbitrary list o - Element - publication - + Element + publication + The element publication is the metadata container specifying a publication event for the FRBR expression of the document. @@ -5876,9 +5904,9 @@ The element publication is the metadata container specifying a publication event - Element - keyword - + Element + keyword + The element keyword is a metadata element specifying a keyword associated to the FRBR expression of the document. Attribute dictionary (required) specifies the thesaurus out of which the keyword has been taken. Attribute href points to the fragment of text this keyword is associated to. Keywords without href attribute refer to the content as a whole. @@ -5907,9 +5935,9 @@ The element keyword is a metadata element specifying a keyword associated to th - Element - eventRef - + Element + eventRef + The element eventInfo is a metadata element specifying facts about an event that had an effect on the document. For each event, a date, a type and a document that generated the event must be referenced. @@ -5939,9 +5967,9 @@ The element eventInfo is a metadata element specifying facts about an event that - Element - step - + Element + step + The element step is a metadata element specifying facts about a workflow step occurred to the document. For each event, a date, a type, an actor (and the corresponding role) that generated the action must be referenced. The outcome, too, can be specified. @@ -5967,6 +5995,7 @@ The element step is a metadata element specifying facts about a workflow step oc + @@ -5976,9 +6005,9 @@ The element step is a metadata element specifying facts about a workflow step oc - Complex - Amendments - + Complex + Amendments + The complex type Amendments is a list of all the amendment elements that can be used on a document analysis @@ -5996,9 +6025,9 @@ The complex type Amendments is a list of all the amendment elements that can be - Complex - modificationType - + Complex + modificationType + The complex type modificationType lists all the properties associated to modification elements. @@ -6022,9 +6051,9 @@ The complex type modificationType lists all the properties associated to modific - Simple - TextualMods - + Simple + TextualMods + The simple type TextualMods lists all the types of textual modifications as values for the type attribute of the textualMod element. @@ -6043,9 +6072,9 @@ The simple type TextualMods lists all the types of textual modifications as valu - Simple - MeaningMods - + Simple + MeaningMods + The simple type MeaningMods lists all the types of modifications in meaning as values for the type attribute of the meaningMod element. @@ -6060,9 +6089,9 @@ The simple type MeaningMods lists all the types of modifications in meaning as v - Simple - ScopeMods - + Simple + ScopeMods + The simple type ScopeMods lists all the types of modifications in scope as values for the type attribute of the scopeMod element. @@ -6076,9 +6105,9 @@ The simple type ScopeMods lists all the types of modifications in scope as value - Simple - ForceMods - + Simple + ForceMods + The simple type ForceMods lists all the types of modifications in force as values for the type attribute of the forceMod element. @@ -6096,9 +6125,9 @@ The simple type ForceMods lists all the types of modifications in force as value - Simple - EfficacyMods - + Simple + EfficacyMods + The simple type EfficacyMods lists all the types of modifications in efficacy as values for the type attribute of the efficacyMod element. @@ -6117,9 +6146,9 @@ The simple type EfficacyMods lists all the types of modifications in efficacy as - Simple - LegalSystemMods - + Simple + LegalSystemMods + The simple type LegalSystemMods lists all the types of modifications in the legal system as values for the type attribute of the LegalSystemMod element. @@ -6143,9 +6172,9 @@ The simple type LegalSystemMods lists all the types of modifications in the lega - Element - activeModifications - + Element + activeModifications + The element activeModifications is a metadata container of the active modifications generated by the document. @@ -6156,9 +6185,9 @@ The element activeModifications is a metadata container of the active modificati - Element - passiveModifications - + Element + passiveModifications + The element passiveModifications is a metadata container of the passive modifications affecting the document. @@ -6169,9 +6198,9 @@ The element passiveModifications is a metadata container of the passive modifica - Element - textualMod - + Element + textualMod + The element textualMod is a metadata element specifying an (active or passive) textual modification for the document. @@ -6180,6 +6209,7 @@ The element textualMod is a metadata element specifying an (active or passive) t + @@ -6192,9 +6222,9 @@ The element textualMod is a metadata element specifying an (active or passive) t - Element - meaningMod - + Element + meaningMod + The element meaningMod is a metadata element specifying an (active or passive) modification in meaning for the document. @@ -6214,9 +6244,9 @@ The element meaningMod is a metadata element specifying an (active or passive) m - Element - scopeMod - + Element + scopeMod + The element scopeMod is a metadata element specifying an (active or passive) modification in scope for the document. @@ -6236,9 +6266,9 @@ The element scopeMod is a metadata element specifying an (active or passive) mod - Element - forceMod - + Element + forceMod + The element forceMod is a metadata element specifying an (active or passive) modification in force for the document. @@ -6255,9 +6285,9 @@ The element forceMod is a metadata element specifying an (active or passive) mod - Element - efficacyMod - + Element + efficacyMod + The element efficacyMod is a metadata element specifying an (active or passive) modification in efficacy for the document. @@ -6274,9 +6304,9 @@ The element efficacyMod is a metadata element specifying an (active or passive) - Element - legalSystemMod - + Element + legalSystemMod + The element legalSystemMod is a metadata element specifying an (active or passive) modification in the legal system for the document. @@ -6293,9 +6323,9 @@ The element legalSystemMod is a metadata element specifying an (active or passiv - Complex - judicialArguments - + Complex + judicialArguments + The complex type judicialArguments is a list of all the judicial analysis elements that can be used on the analysis of a judgment @@ -6321,9 +6351,9 @@ The complex type judicialArguments is a list of all the judicial analysis elemen - Complex - judicialArgumentType - + Complex + judicialArgumentType + The complex type judicialArgumentType lists all the properties associated to judicial elements. @@ -6343,9 +6373,9 @@ The complex type judicialArgumentType lists all the properties associated to jud - Element - judicial - + Element + judicial + The element judicial is a metadata container of the analysis of the judicial arguments of a judgment. @@ -6356,9 +6386,9 @@ The element judicial is a metadata container of the analysis of the judicial arg - Element - result - + Element + result + The element result is a metadata element specifying the overall result of the judgment. @@ -6375,9 +6405,9 @@ The element result is a metadata element specifying the overall result of the ju - Element - supports - + Element + supports + The element supports is a metadata element specifying a reference to a source supported by the argument being described. @@ -6388,9 +6418,9 @@ The element supports is a metadata element specifying a reference to a source su - Element - isAnalogTo - + Element + isAnalogTo + The element isAnalogTo is a metadata element specifying a reference to a source analog to the argument being described. @@ -6401,9 +6431,9 @@ The element isAnalogTo is a metadata element specifying a reference to a source - Element - applies - + Element + applies + The element applies is a metadata element specifying a reference to a source applyed by the argument being described. @@ -6414,9 +6444,9 @@ The element applies is a metadata element specifying a reference to a source app - Element - extends - + Element + extends + The element extends is a metadata element specifying a reference to a source extended by the argument being described. @@ -6427,9 +6457,9 @@ The element extends is a metadata element specifying a reference to a source ext - Element - restricts - + Element + restricts + The element restricts is a metadata element specifying a reference to a source restricted by the argument being described. @@ -6440,9 +6470,9 @@ The element restricts is a metadata element specifying a reference to a source r - Element - derogates - + Element + derogates + The element derogates is a metadata element specifying a reference to a source derogated by the argument being described. @@ -6453,9 +6483,9 @@ The element derogates is a metadata element specifying a reference to a source d - Element - contrasts - + Element + contrasts + The element contrasts is a metadata element specifying a reference to a source contrasted by the argument being described. @@ -6466,9 +6496,9 @@ The element contrasts is a metadata element specifying a reference to a source c - Element - overrules - + Element + overrules + The element overrules is a metadata element specifying a reference to a source overruled by the argument being described. @@ -6479,9 +6509,9 @@ The element overrules is a metadata element specifying a reference to a source o - Element - dissentsFrom - + Element + dissentsFrom + The element dissentsFrom is a metadata element specifying a reference to a source dissented from the argument being described. @@ -6492,9 +6522,9 @@ The element dissentsFrom is a metadata element specifying a reference to a sourc - Element - putsInQuestion - + Element + putsInQuestion + The element putsInQuestions is a metadata element specifying a reference to a source questioned by the argument being described. @@ -6505,9 +6535,9 @@ The element putsInQuestions is a metadata element specifying a reference to a so - Element - distinguishes - + Element + distinguishes + The element distinguishes is a metadata element specifying a reference to a source being distinguished by the argument being described. @@ -6527,9 +6557,9 @@ The element distinguishes is a metadata element specifying a reference to a sour - Element - restriction - + Element + restriction + The element restriction specifies information about a restriction (such as a jurisdiction specification) by pointing to a specific legislative, geographic or temporal events through the @@ -6547,9 +6577,9 @@ The element restriction specifies information about a restriction (such as a jur - Complex - parliamentaryAnalysis - + Complex + parliamentaryAnalysis + The complex type parliamentaryAnalysis is a list of all the parliamentary analysis elements that can be used on the analysis of a debate @@ -6564,9 +6594,9 @@ The complex type parliamentaryAnalysis is a list of all the parliamentary analys - Element - parliamentary - + Element + parliamentary + The element parliamentary is a metadata container of the analysis of the events of a debate. @@ -6577,9 +6607,9 @@ The element parliamentary is a metadata container of the analysis of the events - Complex - parliamentaryAnalysisType - + Complex + parliamentaryAnalysisType + The complex type parliamentaryAnalysisType lists all the properties associated to elements in the parliamentary analysis. @@ -6598,9 +6628,9 @@ The complex type parliamentaryAnalysisType lists all the properties associated t - Element - quorumVerification - + Element + quorumVerification + The element quorumVerification is a metadata container containing information about an event of quorum verification happened within a debate. @@ -6611,9 +6641,9 @@ The element quorumVerification is a metadata container containing information ab - Element - voting - + Element + voting + The element voting is a metadata container containing information about an event of a vote happened within a debate. @@ -6624,9 +6654,9 @@ The element voting is a metadata container containing information about an event - Element - recount - + Element + recount + The element recount is a metadata container containing information about an event of a recount happened within a debate. @@ -6637,9 +6667,9 @@ The element recount is a metadata container containing information about an even - Complex - countType - + Complex + countType + The complex type countType lists all the properties associated to elements of parliamentary count. @@ -6657,9 +6687,9 @@ The complex type countType lists all the properties associated to elements of pa - Element - quorum - + Element + quorum + The element quorum is a metadata container containing the value of a quorum in a vote or a quorum verification. @@ -6670,9 +6700,9 @@ The element quorum is a metadata container containing the value of a quorum in a - Element - count - + Element + count + The element count is a metadata container containing the value of a count in a vote or a quorum verification. @@ -6680,12 +6710,43 @@ The element count is a metadata container containing the value of a count in a v + + + + The element mapping contains a reference to the permanent wId (attribute original) of a structure, and to the eId (attribute current) such structure had during the time interval included between an initial temporalGroup and a final temporalGroup. This is useful for tracking the evolving ids of documents frequently renumbered (e,g., bills). Every single element whose wId does not match its eId needs to be represented here. + + + + + + + + + + + + + + + + + + + + + + + + + + + - Element - otherAnalysis - + Element + otherAnalysis + The element otherAnalysis is a metadata container of any additional metadata analysis element that does not belong to the specific categories provided before. Anything can be placed in this element.. @@ -6702,11 +6763,11 @@ The element otherAnalysis is a metadata container of any additional metadata ana - Attlist - pos - + Attlist + pos + The attribute pos is used to identify the specific position of the reference (e.g., in source or destination) -with respect to the element being identified with the relative currentId. +with respect to the element being identified with the relative eId. @@ -6716,9 +6777,9 @@ with respect to the element being identified with the relative currentId. - Complex - argumentType - + Complex + argumentType + the complex type argumentType defines the empty content model and the list of attributes for metadata elements in the analysis section @@ -6734,9 +6795,9 @@ the complex type argumentType defines the empty content model and the list of at - Complex - periodType - + Complex + periodType + the complex type periodType defines the empty content model and the list of attributes for metadata elements in the analysis section using periods @@ -6749,9 +6810,9 @@ the complex type periodType defines the empty content model and the list of attr - Element - source - + Element + source + The element source is a metadata element specifying the IRI of the source of the modification. @@ -6762,9 +6823,9 @@ The element source is a metadata element specifying the IRI of the source of the - Element - destination - + Element + destination + The element destination is a metadata element specifying the IRI of the destination of the modification. @@ -6775,9 +6836,9 @@ The element destination is a metadata element specifying the IRI of the destinat - Element - force - + Element + force + The element force is a metadata element specifying the period of the force modification. @@ -6788,9 +6849,9 @@ The element force is a metadata element specifying the period of the force modif - Element - efficacy - + Element + efficacy + The element efficacy is a metadata element specifying the period of the efficacy modification. @@ -6801,9 +6862,9 @@ The element efficacy is a metadata element specifying the period of the efficacy - Element - application - + Element + application + The element efficacy is a metadata element specifying the period of the efficacy modification. @@ -6814,9 +6875,9 @@ The element efficacy is a metadata element specifying the period of the efficacy - Element - duration - + Element + duration + The element duration is a metadata element specifying the period of the duration modification. @@ -6827,9 +6888,9 @@ The element duration is a metadata element specifying the period of the duration - Element - condition - + Element + condition + The element condition is a metadata element specifying an open set (non managed by Akoma Ntoso) of conditions on the modification @@ -6843,13 +6904,26 @@ The element condition is a metadata element specifying an open set (non managed + + + + Element + previous + +The element previous is a metadata element referring to the element (rather than the text) of the modification in the previous version of the document. This is especially useful when renumbering occurs, so as to specify the eId of the instance that was modified in the previous version. Attribute href points to the eId of the element being modified in the old version, using a full expression-level URI. + + + + + + - Element - old - -The element old is a metadata element containing (in some non-managed form) the old text of the modification. Attribute href points to the currentId of the element new it is being substituted by. + Element + old + +The element old is a metadata element containing (in some non-managed form) the old text of the modification. Attribute href points to the eId of the element new it is being substituted by. @@ -6859,10 +6933,10 @@ The element old is a metadata element containing (in some non-managed form) the - Element - new - -The element new is a metadata element containing (in some non-managed form) the new text of the modification. Attribute href points to the currentId of the element old it is substituting. + Element + new + +The element new is a metadata element containing (in some non-managed form) the new text of the modification. Attribute href points to the eId of the element old it is substituting. @@ -6872,9 +6946,9 @@ The element new is a metadata element containing (in some non-managed form) the - Element - domain - + Element + domain + The element domain is a metadata element containing (in some non-managed form) the domain to which the modification applies. @@ -6891,7 +6965,6 @@ The element domain is a metadata element containing (in some non-managed form) t - @@ -6931,29 +7004,12 @@ The element domain is a metadata element containing (in some non-managed form) t - - - - - - - - - - - - - - - - - - Group - docRefs - + Group + docRefs + The group docrefs is a list of types of legal references to documents. @@ -6971,9 +7027,9 @@ The group docrefs is a list of types of legal references to documents. - Group - TLCs - + Group + TLCs + The group TLCs is a list of types of Top Level classes of the Akoma Ntoso ontology. @@ -6995,9 +7051,9 @@ The group TLCs is a list of types of Top Level classes of the Akoma Ntoso ontolo - Complex - refItems - + Complex + refItems + The complex type refItems is a list of types of references used in the references section. @@ -7012,9 +7068,9 @@ The complex type refItems is a list of types of references used in the reference - Element - references - + Element + references + The element references is a metadata container of all the references to entities external to the document mentioned in the document. They include references to legal documents of any form,a s well as references to people, organizations, events, roles, concepts, and anything else is managed by the Akoma Ntoso ontology. @@ -7025,9 +7081,9 @@ The element references is a metadata container of all the references to entities - Element - original - + Element + original + The element original is a metadata reference to the Akoma Ntoso IRI of the original version of this document (i.e., the first expression) @@ -7038,9 +7094,9 @@ The element original is a metadata reference to the Akoma Ntoso IRI of the origi - Element - passiveRef - + Element + passiveRef + The element passiveRef is a metadata reference to the Akoma Ntoso IRI of a document providing modifications on this document (i.e., a passive references) @@ -7051,9 +7107,9 @@ The element passiveRef is a metadata reference to the Akoma Ntoso IRI of a docum - Element - activeRef - + Element + activeRef + The element activeRef is a metadata reference to the Akoma Ntoso IRI of a document that is modified by this document (i.e., an active references) @@ -7064,9 +7120,9 @@ The element activeRef is a metadata reference to the Akoma Ntoso IRI of a docume - Element - jurisprudence - + Element + jurisprudence + The element jurisprudence is a metadata reference to the Akoma Ntoso IRI of a document providing jurisprudence on this document @@ -7077,9 +7133,9 @@ The element jurisprudence is a metadata reference to the Akoma Ntoso IRI of a do - Element - hasAttachment - + Element + hasAttachment + The element hasAttachment is a metadata reference to the Akoma Ntoso IRI of an attachment of this document @@ -7096,9 +7152,9 @@ The element hasAttachment is a metadata reference to the Akoma Ntoso IRI of an a - Element - attachmentOf - + Element + attachmentOf + The element attachmentOf is a metadata reference to the Akoma Ntoso IRI of a document of which this document is an attachment @@ -7115,9 +7171,9 @@ The element attachmentOf is a metadata reference to the Akoma Ntoso IRI of a doc - Element - TLCPerson - + Element + TLCPerson + The element TLCPerson is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Person @@ -7128,9 +7184,9 @@ The element TLCPerson is a metadata reference to the Akoma Ntoso IRI of an ontol - Element - TLCOrganization - + Element + TLCOrganization + The element TLCOrganization is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Organization @@ -7141,9 +7197,9 @@ The element TLCOrganization is a metadata reference to the Akoma Ntoso IRI of an - Element - TLCConcept - + Element + TLCConcept + The element TLCConcept is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Concept @@ -7154,9 +7210,9 @@ The element TLCConcept is a metadata reference to the Akoma Ntoso IRI of an onto - Element - TLCObject - + Element + TLCObject + The element TLCObject is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Object @@ -7167,9 +7223,9 @@ The element TLCObject is a metadata reference to the Akoma Ntoso IRI of an ontol - Element - TLCEvent - + Element + TLCEvent + The element TLCEvent is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Event @@ -7180,9 +7236,9 @@ The element TLCEvent is a metadata reference to the Akoma Ntoso IRI of an ontolo - Element - TLCLocation - + Element + TLCLocation + The element TLCLocation is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Location @@ -7193,9 +7249,9 @@ The element TLCLocation is a metadata reference to the Akoma Ntoso IRI of an ont - Element - TLCProcess - + Element + TLCProcess + The element TLCProcess is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Process @@ -7206,9 +7262,9 @@ The element TLCProcess is a metadata reference to the Akoma Ntoso IRI of an onto - Element - TLCRole - + Element + TLCRole + The element TLCRole is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Role @@ -7219,9 +7275,9 @@ The element TLCRole is a metadata reference to the Akoma Ntoso IRI of an ontolog - Element - TLCTerm - + Element + TLCTerm + The element TLCTerm is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Term @@ -7232,9 +7288,9 @@ The element TLCTerm is a metadata reference to the Akoma Ntoso IRI of an ontolog - Element - TLCReference - + Element + TLCReference + The element TLCreference is a generic metadata reference to the Akoma Ntoso IRI of an ontology instance of a class specified through the name attribute @@ -7257,12 +7313,12 @@ The element TLCreference is a generic metadata reference to the Akoma Ntoso IRI - + - Element - note - + Element + note + The element note is a metadata element containing the text of the footnote and endnote specified. @@ -7273,9 +7329,9 @@ The element note is a metadata element containing the text of the footnote and e - Element - proprietary - + Element + proprietary + The element proprietary is a metadata container of any additional metadata property that does not belong to the Akoma Ntoso properties. Anything can be placed in this element. @@ -7292,9 +7348,9 @@ The element proprietary is a metadata container of any additional metadata prope - Element - presentation - + Element + presentation + The element presentation is a metadata container of any presentation specification for the visual rendering of Akoam Ntoso elements. Anything can be placed in this element. diff --git a/build/production/LIME/languagesPlugins/akoma3.0/structure.json b/build/production/LIME/languagesPlugins/akoma3.0/structure.json index 269dea3f..f13cb418 100644 --- a/build/production/LIME/languagesPlugins/akoma3.0/structure.json +++ b/build/production/LIME/languagesPlugins/akoma3.0/structure.json @@ -11,6 +11,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -24,6 +32,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -37,6 +53,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -50,6 +74,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -63,6 +95,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -76,11 +116,114 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] } ], "customViews": ["MarkingMenu"], - "plugins": ["aknPreview", "documentCollection", "at4am"] + "plugins": ["aknPreview", + "documentCollection", + "parsers", + "modsMarker", + "notesManager", + "metadataManager"], + "transformationFiles": { + "languageToLIME": "AknToXhtml.xsl", + "LIMEtoLanguage": "HtmlToAkn.xsl" + }, + "metaTemplate": { + "identification": { + "@source": "", + "FRBRWork": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRalias": { + "@value": "", + "@name": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRcountry": { + "@value": "" + }, + "FRBRnumber": { + "@value": "" + } + }, + "FRBRExpression": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRlanguage": { + "@language": "" + } + }, + "FRBRManifestation": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRformat": { + "@value": "" + } + } + }, + "publication": { + "@name": "", + "@date": "", + "@number": "", + "@showAs": "" + }, + "references": { + "@source": "", + "!possibleChildren": { + "names": ["original", "TLCPerson", "TLCOrganization", "TLCConcept", "TLCObject", "TLCEvent", "TLCLocation", "TLCProcess", "TLCRole", "TLCTerm", "TLCReference"], + "attributes": { + "@eId": "", + "@akn_href": "", + "@akn_showAs": "" + } + } + } + } } diff --git a/build/production/LIME/languagesPlugins/config.json b/build/production/LIME/languagesPlugins/config.json index cbaa44e3..970e31c3 100644 --- a/build/production/LIME/languagesPlugins/config.json +++ b/build/production/LIME/languagesPlugins/config.json @@ -1,3 +1,3 @@ { - "languages": [{name:'akoma3.0'}, {name:'akoma2.0'}] + "languages": [{"name":"akoma3.0"}] } diff --git a/build/production/LIME/languagesPlugins/default/client/importDocument/ImportController.js b/build/production/LIME/languagesPlugins/default/client/importDocument/ImportController.js index 0461996a..06f03f1d 100644 --- a/build/production/LIME/languagesPlugins/default/client/importDocument/ImportController.js +++ b/build/production/LIME/languagesPlugins/default/client/importDocument/ImportController.js @@ -79,22 +79,26 @@ Ext.define('LIME.controller.ImportController', { }, uploadFinished: function(content, request) { - var app = this.application, docMLang; + var app = this.application, docMLang, docLang; if(request.response && request.response[DocProperties.markingLanguageAttribute]) { docMLang = request.response[DocProperties.markingLanguageAttribute]; } - + if(request.response && request.response[DocProperties.languageAttribute]) { + docLang = request.response[DocProperties.languageAttribute] || ""; + } // Upload the editor's content app.fireEvent(Statics.eventsNames.loadDocument, { docText: content, docId: new Date().getTime(), - docMarkingLanguage: docMLang + docMarkingLanguage: docMLang, + docLang: docLang }); }, importDocument : function() { // Create a window with a form where the user can select a file var me = this, + transformFile = Config.getLanguageTransformationFile("languageToLIME", Config.getLanguage()), uploaderView = Ext.widget('uploader', { buttonSelectLabel : Locale.getString("selectDocument", me.getPluginName()), buttonSubmitLabel : Locale.getString("importDocument", me.getPluginName()), @@ -104,7 +108,8 @@ Ext.define('LIME.controller.ImportController', { callbackScope: me, uploadUrl : Utilities.getAjaxUrl(), uploadParams : { - requestedService: Statics.services.fileToHtml + requestedService: Statics.services.fileToHtml, + transformFile: (transformFile) ? transformFile : "" } }); uploaderView.show(); diff --git a/languagesPlugins/default/client/pdfPreview/PdfPreviewController.js b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js similarity index 83% rename from languagesPlugins/default/client/pdfPreview/PdfPreviewController.js rename to build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js index bb9ce8a3..4f599556 100644 --- a/languagesPlugins/default/client/pdfPreview/PdfPreviewController.js +++ b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js @@ -44,27 +44,34 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -Ext.define('LIME.controller.PdfPreviewController', { +Ext.define('LIME.controller.NewPdfPreviewController', { extend : 'Ext.app.Controller', - views: ["LIME.ux.pdfPreview.PdfPreviewPanel"], + views: ["LIME.ux.newPdfPreview.NewPdfPreviewPanel"], refs : [{ selector : 'appViewport', ref : 'appViewport' }, { - selector: 'pdf', + selector: 'newPdf', ref: 'pdf' }], config : { - pluginName : "pdfPreview" + pluginName : "newPdfPreview" }, - callPdfService: function() { - var me = this, pdfTab = me.getPdf(), editor = me.getController("Editor"), - html = editor.getDocHtml(), viewport = me.getAppViewport(); - + initPdf: function() { + var me = this; + me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { + me.callPdfService(xml); + }); + }, + + callPdfService: function(akn) { + var me = this, pdfTab = me.getPdf(), viewport = me.getAppViewport(), + ulrs = Config.getPluginUrl(me.getPluginName()), + cssPath = ulrs.absolute+me.getCssFile(); viewport.setLoading(true); Ext.Ajax.request({ // the url of the web service @@ -75,8 +82,9 @@ Ext.define('LIME.controller.PdfPreviewController', { // send the content in html format params : { - requestedService: Statics.services.htmlToPdf, - source: html + requestedService: "AKN_TO_PDF_FOP", + start_page: 0, + source: akn }, // the scope of the ajax request scope : me, @@ -106,8 +114,8 @@ Ext.define('LIME.controller.PdfPreviewController', { init : function() { var me = this; this.control({ - 'pdf' : { - activate : me.callPdfService + 'newPdf' : { + activate : me.initPdf } }); } diff --git a/languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js similarity index 94% rename from languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js rename to build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js index ec0638e5..b1279c78 100644 --- a/languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js +++ b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js @@ -48,17 +48,17 @@ * Pdf viewer tab, this tab uses two plugins one for converting content * to pdf and the other to show the pdf in the tab */ -Ext.define('LIME.ux.pdfPreview.PdfPreviewPanel', { +Ext.define('LIME.ux.newPdfPreview.NewPdfPreviewPanel', { extend : 'Ext.panel.Panel', requires : ['Ext.ux.Iframe'], config : { - pluginName : "pdfPreview" + pluginName : "newPdfPreview" }, // set the alias - alias : 'widget.pdf', + alias : 'widget.newPdf', cls : 'editorTab', @@ -81,6 +81,10 @@ Ext.define('LIME.ux.pdfPreview.PdfPreviewPanel', { var plugin = this.getPlugin('pdfplugin'); plugin.setSrc(url); }, + + getIframePlugin : function() { + return this.getPlugin('pdfplugin'); + }, initComponent : function() { this.plugins = [{ diff --git a/build/production/LIME/languagesPlugins/default/client/pdfPreview/strings.json b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/strings.json similarity index 100% rename from build/production/LIME/languagesPlugins/default/client/pdfPreview/strings.json rename to build/production/LIME/languagesPlugins/default/client/newPdfPreview/strings.json diff --git a/build/production/LIME/languagesPlugins/default/client/newPdfPreview/structure.json b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/structure.json new file mode 100644 index 00000000..5f0803be --- /dev/null +++ b/build/production/LIME/languagesPlugins/default/client/newPdfPreview/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["NewPdfPreviewPanel"], + "controllers": ["NewPdfPreviewController"] +} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/default/client/pdfPreview/structure.json b/build/production/LIME/languagesPlugins/default/client/pdfPreview/structure.json deleted file mode 100644 index d14481f4..00000000 --- a/build/production/LIME/languagesPlugins/default/client/pdfPreview/structure.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "views": ["PdfPreviewPanel"], - "controllers": ["PdfPreviewController"] -} \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/default/licence.txt b/build/production/LIME/languagesPlugins/default/licence.txt new file mode 100644 index 00000000..0475a094 --- /dev/null +++ b/build/production/LIME/languagesPlugins/default/licence.txt @@ -0,0 +1,43 @@ +Copyright (c) 2014 - Copyright holders CIRSFID and Department of +Computer Science and Engineering of the University of Bologna + +Authors: +Monica Palmirani – CIRSFID of the University of Bologna +Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +Luca Cervone – CIRSFID of the University of Bologna + +Permission is hereby granted to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The Software can be used by anyone for purposes without commercial gain, +including scientific, individual, and charity purposes. If it is used +for purposes having commercial gains, an agreement with the copyright +holders is required. The above copyright notice and this permission +notice shall be included in all copies or substantial portions of the +Software. + +Except as contained in this notice, the name(s) of the above copyright +holders and authors shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without prior +written authorization. + +The end-user documentation included with the redistribution, if any, +must include the following acknowledgment: "This product includes +software developed by University of Bologna (CIRSFID and Department of +Computer Science and Engineering) and its authors (Monica Palmirani, +Fabio Vitali, Luca Cervone)", in the same place and form as other +third-party acknowledgments. Alternatively, this acknowledgment may +appear in the software itself, in the same form and location as other +such third-party acknowledgments. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/build/production/LIME/languagesPlugins/default/structure.json b/build/production/LIME/languagesPlugins/default/structure.json index c4a30197..473458c3 100644 --- a/build/production/LIME/languagesPlugins/default/structure.json +++ b/build/production/LIME/languagesPlugins/default/structure.json @@ -1,3 +1,3 @@ { - "plugins": ["xmlValidation", "importDocument", "exportDocument", "pdfPreview"] + "plugins": ["xmlValidation", "importDocument", "exportDocument", "newPdfPreview"] } diff --git a/build/production/LIME/php/Proxies/Proxies.php b/build/production/LIME/php/Proxies/Proxies.php index 45996068..883f0e1f 100644 --- a/build/production/LIME/php/Proxies/Proxies.php +++ b/build/production/LIME/php/Proxies/Proxies.php @@ -136,10 +136,6 @@ public function __construct($requestedService, $params) header("Content-Type: application/json"); $this->_service = new Proxies_Services_AknToXml($this->_params, true); break; - case 'FILE_TO_STRING': - header("Content-Type: text/html"); // TODO if set to any other type the result is wrapped into a
 tag
-					$this->_service = new Proxies_Services_FileToString($this->_params);
-					break;
 				case 'FILE_TO_HTML':
 					header("Content-Type: application/json"); // TODO if set to any other type the result is wrapped into a 
 tag
 					$this->_service = new Proxies_Services_FileToHtml($this->_params);
@@ -162,7 +158,7 @@ public function __construct($requestedService, $params)
 					break;
 				case 'XML_VALIDATION':
 					header("Content-Type: application/json");
-					$this->_service = new Proxies_Services_AknValidation($this->_params);
+					$this->_service = new Proxies_Services_XmlValidation($this->_params);
 					break;
 				case 'EXPORT_FILES':
 					header("Content-Type: application/json");
@@ -172,6 +168,10 @@ public function __construct($requestedService, $params)
 					header("Content-Type: application/json");
 					$this->_service = new Proxies_Services_FilterUrls($this->_params);
 					break;
+				case 'AKN_TO_PDF_FOP':
+					header("Content-Type: application/json");
+					$this->_service = new Proxies_Services_AknToPdfFop($this->_params);
+					break;
 			}
 			
 		}
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_AknToPdfFop.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
index 8eccd52c..40efc29b 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
@@ -67,6 +67,7 @@ public function __construct($params, $isDownload=false)
 		$this->_submittedSourceXML = $params['source'];
 		
 		$this->_isDownload = $isDownload;
+		$this->_cssFile = (isset($params['css'])) ? $params['css'] : FALSE;
 	}
 	
 	/**
@@ -74,7 +75,7 @@ public function __construct($params, $isDownload=false)
 	 * @return The result that the service computed
 	 */ 
 	public function getResults()
-	{	
+	{
 		//$fop_command = $currentDirFullpath."isafop/fop ";
 		
 		$currentDirFullpath = dirname(__FILE__)."/";
@@ -91,8 +92,7 @@ public function getResults()
 		$sourceXML = trim($this->_submittedSourceXML);
 		if (get_magic_quotes_gpc()) 
 		            $sourceXML = stripcslashes($sourceXML);
-		
-		
+			
 		$doc = new DOMDocument();
 		$output = array();
 
@@ -112,8 +112,26 @@ public function getResults()
 		
 						if (file_exists($xmlFullPathFilename))
 						{
+							
 							$xsl = new DOMDocument;
 							$xsl->load(AKN_TO_PDF);
+							
+							if($this->_cssFile) {
+								$cssRules = cssFileToArray($this->_cssFile);
+								foreach($cssRules as $selector => $rules) {
+									$attributeSet = createAttributeSet($xsl, $selector, $rules);
+									$xsl->documentElement->appendChild($attributeSet);
+								}
+							}
+							
+							$uriNamespace = $doc ->documentElement ->lookupnamespaceURI(NULL);
+							
+							// set namespace uri of the correct AKN3.0 revision
+							$xsl->documentElement->setAttributeNS(
+						        'http://www.w3.org/2000/xmlns/',
+						        'xmlns:akn',
+						        $uriNamespace
+							);
 			
 							// Configure the transformer
 							$proc = new XSLTProcessor;
@@ -131,14 +149,14 @@ public function getResults()
 								/*** FONT-ISSUE ***/
 														
 								$fo->save($currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".XSLFOFILENAME);
-								
-								$foFullPath = $currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".XSLFOFILENAME;
-								$pdfFullPath = $currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".PDFFILENAME;				
-								
-								//$fop_conf = " -c ".$currentDirFullpath."isafop/conf/fop.xconf ";
+							
+								$fullPath = realpath($currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/");	
+								$foFullPath = $fullPath."/".XSLFOFILENAME;
+								$pdfFullPath = $fullPath."/".PDFFILENAME;
+									
+								//$fop_conf = " -c ".$currentDirFullpath."isafop/conf/fop.xconf";
 								$fop_conf = "";
-							    $final_command = FOP_COMMAND." $fop_conf -fo ".$foFullPath." -pdf ".$currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".PDFFILENAME;
-
+							    $final_command = '"'.realpath(FOP_COMMAND).'"'." $fop_conf -fo ".'"'.$foFullPath.'"'." -pdf ".'"'.$pdfFullPath.'"';
 							    exec($final_command);
 
 							    if (file_exists($pdfFullPath)){
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToHtml.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToHtml.php
index 969a00bb..ba89addb 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToHtml.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToHtml.php
@@ -45,6 +45,9 @@
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
+ 
+require_once('utils.php'); 
+ 
 class Proxies_Services_FileToHtml implements Proxies_Services_Interface
 {
 	private $_filePath;
@@ -52,8 +55,6 @@ class Proxies_Services_FileToHtml implements Proxies_Services_Interface
 	private $_fileName;
     
     private $cleaningXsl = CLEAN_CONVERTED_HTML;
-	private $xmlToHtmlXsl20 = AKN20_TO_XHTML;
-	private $xmlToHtmlXsl30 = AKN30_TO_XHTML;
     private $cleaningXslDom;
 	private $xmlMime = "application/xml";
 	private $akn20Namespace = "http://www.akomantoso.org/2.0";
@@ -74,6 +75,7 @@ public function __construct($params)
                 $this->cleaningXslDom = new DOMDocument();
                 $this->cleaningXslDom->load($this->cleaningXsl);
 		}
+		$this->_transformFile = (isset($params['transformFile']) && $params['transformFile']) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
 	}
 	
 	/**
@@ -89,7 +91,7 @@ public function getResults()
             if ($fileType === $this->xmlMime) {
             	$doc = new DOMDocument();
 				if ($doc->load($this->_filePath)) {
-					$result = aknToHtml($doc, FALSE, FALSE, TRUE);
+					$result = aknToHtml($doc, $this->_transformFile, FALSE, TRUE);
 					$output['markinglanguage'] = $result["markinglanguage"];
 					$resultXml = $result["xml"];
 					if ($resultXml) {
@@ -112,8 +114,6 @@ public function getResults()
 				exec($cmd);
 				$htmlSource = file_get_contents($filePath);
 				$output['html'] = $this->cleanHtml($htmlSource);
-				//$output['html'] = $this->htmlToAkn($htmlSource);
-				//$output['html'] = aknToHtml($aknDoc);
 				if ($this->_fileSize && (strlen($output['html']) == 0)) {
 					$output['success'] = false;
 				} else {
@@ -130,6 +130,13 @@ public function getResults()
 			$output['fileName'] = $this->_fileName;
 		}
 		
+		if(array_key_exists('html', $output) && strlen($output['html'])) {
+			$lang = detectLanguage($output['html'], 3);
+			if($lang) {
+				$output['language'] = $lang;
+			}	
+		}
+		
 		return str_replace('\/','/',json_encode($output));
 	}
     
@@ -151,22 +158,9 @@ private function cleanHtml($htmlSource){
         return $result;
     }
 	
-	private function htmlToAkn($htmlSource) {
-        $xslt = new DOMDocument();
-		$xslt->load(HTML_TO_AKN3_0);
-		$xml = new DOMDocument();
-		$xml->loadXML($htmlSource);
-		// create the processor 
-		$xslProcessor = new XSLTProcessor();
-		// add the stylesheet
-		$xslProcessor->importStylesheet($xslt);
-		// transform the input
-		$result = $xslProcessor->transformToXML($xml);
-        return $result;
-    }
-	
 	private function isTypeAllowed($mime) {
-		$allowedTypes = array("text/html", "application/msword", "application/pdf", "application/vnd.oasis.opendocument.text", "text/plain");
+		$allowedTypes = array("text/html", "application/msword", "application/pdf", "application/vnd.oasis.opendocument.text", "text/plain",
+							   "application/rtf","text/rtf");
 		$docxExtension = ".docx";
 		$fileExtension = (false === $pos = strrpos($this->_fileName, '.')) ? '' : substr($this->_fileName, $pos);
 		
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_FilterUrls.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_FilterUrls.php
index 1f9f204e..9adad33c 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_FilterUrls.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_FilterUrls.php
@@ -69,7 +69,7 @@ public function __construct($params) {
 	 */
 	public function getResults() {
 		$output = Array();
-		$rootDirPath = dirname(__FILE__)."/../../../";
+		$rootDirPath = LIMEROOT;
 		foreach ($this -> _urls as &$value) {
 			$internalPath = realpath($rootDirPath.'/'.$value["url"]);
 			if ($internalPath) {
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_GetFileContent.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_GetFileContent.php
index 45cd47a4..c04f95fb 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_GetFileContent.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_GetFileContent.php
@@ -57,6 +57,7 @@ class Proxies_Services_GetFileContent implements Proxies_Services_Interface
 		 */
 		public function __construct($params) {
 			$this->_params = $params;
+			$this->_transformFile = (isset($params['transformFile']) && $params['transformFile']) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
 		}
 		
 		/**
@@ -74,7 +75,7 @@ public function getResults() {
 			if ($doc->loadXML($xmlResult)) {
 				// Checking if the document is marked
 				if($doc->documentElement->tagName == $this->markedRootName) {
-					$xmlResult = aknToHtml($doc);
+					$xmlResult = aknToHtml($doc, $this->_transformFile);
 				}
 			}
 			
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_SaveFile.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_SaveFile.php
index 7a8483e9..4dec314c 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_SaveFile.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_SaveFile.php
@@ -80,6 +80,11 @@ public function getResults() {
                 'metadata' => $this->_metadata,
             );
 			
+			// TODO: remove this, is temporary trick
+			if(strpos($this->_params['file'], "/diff/") || strpos($this->_params['file'], "wawe_users_documents/firstDoc.xml")) {
+				$this->_params['file'] = "";
+			}
+			
 			$credential = EXIST_ADMIN_USER .':'. EXIST_ADMIN_PASSWORD;
 			require_once(dirname(__FILE__) . './../../dbInterface/class.dbInterface.php');
 			$DBInterface = new DBInterface(EXIST_URL,$credential);
diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_XSLTTransform.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_XSLTTransform.php
index 98dab554..f9d8042b 100644
--- a/build/production/LIME/php/Proxies/Services/Proxies_Services_XSLTTransform.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_XSLTTransform.php
@@ -67,6 +67,8 @@ public function __construct($params)
 			
 			// save the document marking language
 			$this->_markingLanguage = $params['markingLanguage'];
+			
+			$this->_transformFile = (isset($params['transformFile'])) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
 		}
 		
 		/**
@@ -81,44 +83,44 @@ public function getResults()
 			// create the processor 
 			$xslProcessor = new XSLTProcessor();
 			
-			switch($this->_output)
-			{
-				case 'akn':
-				// create the xml file
-				$xml = new DOMDocument();
-				$xml->loadXML('' . stripcslashes($this->_input));
-				
-				if ($this->_markingLanguage == 'akoma2.0') {
-					$xslt->load(HTML_TO_AKN2_0);		
-				} else {
-					$xslt->load(HTML_TO_AKN3_0);
-				}
-				
-				$xpath = new DOMXPath($xml);
-				// The element which has an attribute 'language' which contains 'akoma' has the akn namespace  
-				$elements = $xpath->evaluate("//*[@markinglanguage]");
-				// Loocking for the namespace
-				if (!is_null($elements) && $elements->length) {
-					foreach( $xpath->query('namespace::*', $elements->item(0)) as $node ) {
-						$name = ($node->nodeName == 'xmlns:akn') ? 'xmlns' : $node->nodeName;
-						$xslt->documentElement->setAttributeNS('http://www.w3.org/2000/xmlns/',$name,$node->nodeValue);
+			if($this->_transformFile) {
+				switch($this->_output)
+				{
+					case 'akn':
+					// create the xml file
+					$xml = new DOMDocument();
+					$xml->loadXML('' . stripcslashes($this->_input));
+					
+					$xslt->load($this->_transformFile);
+					
+					$xpath = new DOMXPath($xml);
+					// The element which has an attribute 'language' which contains 'akoma' has the akn namespace  
+					$elements = $xpath->evaluate("//*[@markinglanguage]");
+					// Loocking for the namespace
+					if (!is_null($elements) && $elements->length) {
+						foreach( $xpath->query('namespace::*', $elements->item(0)) as $node ) {
+							$name = ($node->nodeName == 'xmlns:akn') ? 'xmlns' : $node->nodeName;
+							$xslt->documentElement->setAttributeNS('http://www.w3.org/2000/xmlns/',$name,$node->nodeValue);
+						}
 					}
+					break;
 				}
-				break;
-			}
-	
-			// add the stylesheet
-			$xslProcessor->importStylesheet($xslt);
-	
-			// transform the input
-			$xml = $xslProcessor->transformToDoc($xml);
-			
-			// Normalize attributes
-			$xslt->load(ATTRIBUTES_NORMALIZER);
-			$xslProcessor->importStylesheet($xslt);
-			$result = $xslProcessor->transformToXML($xml);
 		
-			// return the translated document
-			return $result; 		
+				// add the stylesheet
+				$xslProcessor->importStylesheet($xslt);
+		
+				// transform the input
+				$xml = $xslProcessor->transformToDoc($xml);
+				
+				// Normalize attributes
+				$xslt->load(ATTRIBUTES_NORMALIZER);
+				$xslProcessor->importStylesheet($xslt);
+				$result = $xslProcessor->transformToXML($xml);
+			
+				// return the translated document
+				return $result;
+			} else {
+				return "XSL transform file not found";	
+			}		 		
 		}
 	}
\ No newline at end of file
diff --git a/php/Proxies/Services/Proxies_Services_AknValidation.php b/build/production/LIME/php/Proxies/Services/Proxies_Services_XmlValidation.php
similarity index 92%
rename from php/Proxies/Services/Proxies_Services_AknValidation.php
rename to build/production/LIME/php/Proxies/Services/Proxies_Services_XmlValidation.php
index 1a22d6b1..2f94de6d 100644
--- a/php/Proxies/Services/Proxies_Services_AknValidation.php
+++ b/build/production/LIME/php/Proxies/Services/Proxies_Services_XmlValidation.php
@@ -44,7 +44,7 @@
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
-class Proxies_Services_AknValidation implements Proxies_Services_Interface {
+class Proxies_Services_XmlValidation implements Proxies_Services_Interface {
 	// the XML source
 	private $_source;
 	private $_schema;
@@ -67,13 +67,9 @@ public function __construct($params) {
 	public function getResults() {
 		libxml_use_internal_errors(true);
 		$result = Array();
-		$rootDirPath = dirname(__FILE__) . "/../../../";
-		$internalSchemaPath = ($this -> _schema) ? realpath($rootDirPath . '/' . $this -> _schema) : NULL;
+		$internalSchemaPath = ($this -> _schema) ? realpath(LIMEROOT . '/' . $this -> _schema) : NULL;
 		// creates the URL of the curl with the address and the parameters
-		/*
-		 * Using the Free Akoma Ntoso Validator: http://legixinfo.wordpress.com/2013/08/22/free-akoma-ntoso-validator/
-		 * */
-		//$url = "http://legisproweb.com/validation/Validator.aspx";
+
 		$dom = new DOMDocument();
 		/* Trick to get the right line numbers by validator
 		 * save the xml in pritty formatting and load it again in the dom
@@ -98,8 +94,7 @@ public function getResults() {
 			$result["started"] = false;
 			$result["msg"] = "Cannot load xml source";
 		}
-		/*$result["fatal_error"] = Array(Array("message"=> "ciao"));
-		$result["warning"] = Array(Array("message"=> "ciao"));*/
+
 		// return the results
 		return str_replace('\/', '/', json_encode($result));
 	}
diff --git a/build/production/LIME/php/Services.php b/build/production/LIME/php/Services.php
index 155ab463..8f756d03 100644
--- a/build/production/LIME/php/Services.php
+++ b/build/production/LIME/php/Services.php
@@ -64,15 +64,15 @@
 	require('./Proxies/Services/Proxies_Services_AknToEpub.php');
 	require('./Proxies/Services/Proxies_Services_AknToXml.php');
 	require('./Proxies/Services/Proxies_Services_AknToHtml.php');
-	require('./Proxies/Services/Proxies_Services_FileToString.php');
 	require('./Proxies/Services/Proxies_Services_FileToHtml.php');
 	require('./Proxies/Services/Proxies_Services_Upload.php');
 	require('./Proxies/Services/Proxies_Services_HtmlToPdf.php');
 	require('./Proxies/Services/Proxies_Services_CreateDocumentCollection.php');
-	require('./Proxies/Services/Proxies_Services_AknValidation.php');
+	require('./Proxies/Services/Proxies_Services_XmlValidation.php');
 	require('./Proxies/Services/Proxies_Services_ExportFiles.php');
 	require('./Proxies/Services/Proxies_Services_FilterUrls.php');
 	require('./Proxies/Proxies.php');
+	require('./Proxies/Services/Proxies_Services_AknToPdfFop.php');
 	
 	// the method of the request
 	$type = $_SERVER['REQUEST_METHOD'];
diff --git a/build/production/LIME/php/config.php b/build/production/LIME/php/config.php
index 2794a41b..819c160f 100644
--- a/build/production/LIME/php/config.php
+++ b/build/production/LIME/php/config.php
@@ -106,7 +106,7 @@
 	define('HTML_TO_AKN3_0', XSLT_BASE_DIR . 'HtmlToAkn3.0.xsl');
 	
 	// the xslt that translates akomantoso to pdf
-	define('AKN_TO_PDF', XSLT_BASE_DIR . 'AknToPdf.xsl');
+	define('AKN_TO_PDF', XSLT_BASE_DIR . 'AknToPdfGeneric.xsl');
 	
 	// the xslt that translates akomantoso2 to xhtml
 	define('AKN2_TO_HTML', XSLT_BASE_DIR . 'Akn20ToXhtml.xsl');
@@ -117,8 +117,6 @@
 	// the xslt that translates akomantoso2 to a package for ebook
 	define('AKN30_TO_XHTML', XSLT_BASE_DIR . 'AknToXhtml30.xsl');
 	
-	define('AKNToXHTMLDiff', XSLT_BASE_DIR . 'AKNToXHTMLDiff.xsl');
-	
 	// the xslt that translates akomantoso3 to xhtml
 	define('AKN3_TO_HTML', XSLT_BASE_DIR . 'Akn30ToXhtml.xsl');
 	
@@ -143,6 +141,9 @@
 	// relative path to temp directory
 	define('TMPSUBDIRLOCALPATH', '../../tmp/');
 	
+	// path to root of LIME
+	define('LIMEROOT', realpath(dirname(__FILE__)."/../"));
+	
 	// web relative path to temp directory
 	define('TMPSUBDIRWEBPATH', 'tmp/');
 	
@@ -150,7 +151,7 @@
 	define('SOURCEXMLFILENAME', 'source.xml');
 
 	// the name of fo xsl files
-	define('XSLFOFILENAME', 'intermediate.fo');	
+	define('XSLFOFILENAME', 'intermediate.xml');	
 	
 	// the name of pdf files
 	define('PDFFILENAME', 'final.pdf');
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect.php b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect.php
new file mode 100644
index 00000000..9ba9542d
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect.php
@@ -0,0 +1,1708 @@
+
+ * @copyright 2005-2006 Nicholas Pisarro
+ * @license   http://www.debian.org/misc/bsd.license BSD
+ * @version   SVN: $Id: LanguageDetect.php 322353 2012-01-16 08:41:43Z cweiske $
+ * @link      http://pear.php.net/package/Text_LanguageDetect/
+ * @link      http://langdetect.blogspot.com/
+ */
+
+require_once dirname(__FILE__).'/LanguageDetect/Exception.php';
+require_once dirname(__FILE__).'/LanguageDetect/Parser.php';
+require_once dirname(__FILE__).'/LanguageDetect/ISO639.php';
+
+/**
+ * Language detection class
+ *
+ * Requires the langauge model database (lang.dat) that should have
+ * accompanied this class definition in order to be instantiated.
+ *
+ * Example usage:
+ *
+ * 
+ * require_once 'Text/LanguageDetect.php';
+ *
+ * $l = new Text_LanguageDetect;
+ *
+ * $stdin = fopen('php://stdin', 'r');
+ *
+ * echo "Supported languages:\n";
+ *
+ * try {
+ *     $langs = $l->getLanguages();
+ * } catch (Text_LanguageDetect_Exception $e) {
+ *     die($e->getMessage());
+ * }
+ *
+ * sort($langs);
+ * echo join(', ', $langs);
+ *
+ * while ($line = fgets($stdin)) {
+ *     print_r($l->detect($line, 4));
+ * }
+ * 
+ *
+ * @category  Text
+ * @package   Text_LanguageDetect
+ * @author    Nicholas Pisarro 
+ * @copyright 2005 Nicholas Pisarro
+ * @license   http://www.debian.org/misc/bsd.license BSD
+ * @version   Release: @package_version@
+ * @link      http://pear.php.net/package/Text_LanguageDetect/
+ * @todo      allow users to generate their own language models
+ */
+class Text_LanguageDetect
+{
+    /**
+     * The filename that stores the trigram data for the detector
+     *
+     * If this value starts with a slash (/) or a dot (.) the value of
+     * $this->_data_dir will be ignored
+     *
+     * @var      string
+     * @access   private
+     */
+    var $_db_filename = 'lang.dat';
+
+    /**
+     * The filename that stores the unicode block definitions
+     *
+     * If this value starts with a slash (/) or a dot (.) the value of
+     * $this->_data_dir will be ignored
+     *
+     * @var string
+     * @access private
+     */
+    var $_unicode_db_filename = 'unicode_blocks.dat';
+
+    /**
+     * The data directory
+     *
+     * Should be set by PEAR installer
+     *
+     * @var      string
+     * @access   private
+     */
+    var $_data_dir = '@data_dir@';
+
+    /**
+     * The trigram data for comparison
+     *
+     * Will be loaded on start from $this->_db_filename
+     *
+     * @var      array
+     * @access   private
+     */
+    var $_lang_db = array();
+
+    /**
+     * stores the map of the trigram data to unicode characters
+     *
+     * @access private
+     * @var array
+     */
+    var $_unicode_map;
+
+    /**
+     * The size of the trigram data arrays
+     *
+     * @var      int
+     * @access   private
+     */
+    var $_threshold = 300;
+
+    /**
+     * the maximum possible score.
+     *
+     * needed for score normalization. Different depending on the
+     * perl compatibility setting
+     *
+     * @access  private
+     * @var     int
+     * @see     setPerlCompatible()
+     */
+    var $_max_score = 0;
+
+    /**
+     * Whether or not to simulate perl's Language::Guess exactly
+     *
+     * @access  private
+     * @var     bool
+     * @see     setPerlCompatible()
+     */
+    var $_perl_compatible = false;
+
+    /**
+     * Whether to use the unicode block detection to speed up processing
+     *
+     * @access private
+     * @var bool
+     */
+    var $_use_unicode_narrowing = true;
+
+    /**
+     * stores the result of the clustering operation
+     *
+     * @access  private
+     * @var     array
+     * @see     clusterLanguages()
+     */
+    var $_clusters;
+
+    /**
+     * Which type of "language names" are accepted and returned:
+     *
+     * 0 - language name ("english")
+     * 2 - 2-letter ISO 639-1 code ("en")
+     * 3 - 3-letter ISO 639-2 code ("eng")
+     */
+    var $_name_mode = 0;
+
+    /**
+     * Constructor
+     *
+     * Will attempt to load the language database. If it fails, you will get
+     * an exception.
+     */
+    function __construct()
+    {
+        $data = $this->_readdb($this->_db_filename);
+        $this->_checkTrigram($data['trigram']);
+        $this->_lang_db = $data['trigram'];
+
+        if (isset($data['trigram-unicodemap'])) {
+            $this->_unicode_map = $data['trigram-unicodemap'];
+        }
+
+        // Not yet implemented:
+        if (isset($data['trigram-clusters'])) {
+            $this->_clusters = $data['trigram-clusters'];
+        }
+    }
+
+    /**
+     * Returns the path to the location of the database
+     *
+     * @param string $fname File name to load
+     *
+     * @return string expected path to the language model database
+     * @access private
+     */
+    function _get_data_loc($fname)
+    {
+        if ($fname{0} == '/' || $fname{0} == '.') {
+            // if filename starts with a slash, assume it's an absolute pathname
+            // and skip whatever is in $this->_data_dir
+            return $fname;
+
+        } elseif ($this->_data_dir != '@' . 'data_dir' . '@') {
+            // if the data dir was set by the PEAR installer, use that
+            return $this->_data_dir . '/Text_LanguageDetect/' . $fname;
+
+        } else {
+            // assume this was just unpacked somewhere
+            // try the local working directory if otherwise
+            return __DIR__ . '/../data/' . $fname;
+        }
+    }
+
+    /**
+     * Loads the language trigram database from filename
+     *
+     * Trigram datbase should be a serialize()'d array
+     *
+     * @param string $fname the filename where the data is stored
+     *
+     * @return array the language model data
+     * @throws Text_LanguageDetect_Exception
+     * @access private
+     */
+    function _readdb($fname)
+    {
+        // finds the correct data dir
+        $fname = $this->_get_data_loc($fname);
+
+        // input check
+        if (!file_exists($fname)) {
+            throw new Text_LanguageDetect_Exception(
+                'Language database does not exist: ' . $fname,
+                Text_LanguageDetect_Exception::DB_NOT_FOUND
+            );
+        } elseif (!is_readable($fname)) {
+            throw new Text_LanguageDetect_Exception(
+                'Language database is not readable: ' . $fname,
+                Text_LanguageDetect_Exception::DB_NOT_READABLE
+            );
+        }
+
+        return unserialize(file_get_contents($fname));
+    }
+
+
+    /**
+     * Checks if this object is ready to detect languages
+     *
+     * @param array $trigram Trigram data from database
+     *
+     * @return void
+     * @access private
+     */
+    function _checkTrigram($trigram)
+    {
+        if (!is_array($trigram)) {
+            if (ini_get('magic_quotes_runtime')) {
+                throw new Text_LanguageDetect_Exception(
+                    'Error loading database. Try turning magic_quotes_runtime off.',
+                    Text_LanguageDetect_Exception::MAGIC_QUOTES
+                );
+            }
+            throw new Text_LanguageDetect_Exception(
+                'Language database is not an array.',
+                Text_LanguageDetect_Exception::DB_NOT_ARRAY
+            );
+        } elseif (empty($trigram)) {
+            throw new Text_LanguageDetect_Exception(
+                'Language database has no elements.',
+                Text_LanguageDetect_Exception::DB_EMPTY
+            );
+        }
+    }
+
+    /**
+     * Omits languages
+     *
+     * Pass this function the name of or an array of names of
+     * languages that you don't want considered
+     *
+     * If you're only expecting a limited set of languages, this can greatly
+     * speed up processing
+     *
+     * @param mixed $omit_list    language name or array of names to omit
+     * @param bool  $include_only if true will include (rather than
+     *                            exclude) only those in the list
+     *
+     * @return int number of languages successfully deleted
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function omitLanguages($omit_list, $include_only = false)
+    {
+        $deleted = 0;
+
+        $omit_list = $this->_convertFromNameMode($omit_list);
+
+        if (!$include_only) {
+            // deleting the given languages
+            if (!is_array($omit_list)) {
+                $omit_list = strtolower($omit_list); // case desensitize
+                if (isset($this->_lang_db[$omit_list])) {
+                    unset($this->_lang_db[$omit_list]);
+                    $deleted++;
+                }
+            } else {
+                foreach ($omit_list as $omit_lang) {
+                    if (isset($this->_lang_db[$omit_lang])) {
+                        unset($this->_lang_db[$omit_lang]);
+                        $deleted++;
+                    }
+                }
+            }
+
+        } else {
+            // deleting all except the given languages
+            if (!is_array($omit_list)) {
+                $omit_list = array($omit_list);
+            }
+
+            // case desensitize
+            foreach ($omit_list as $key => $omit_lang) {
+                $omit_list[$key] = strtolower($omit_lang);
+            }
+
+            foreach (array_keys($this->_lang_db) as $lang) {
+                if (!in_array($lang, $omit_list)) {
+                    unset($this->_lang_db[$lang]);
+                    $deleted++;
+                }
+            }
+        }
+
+        // reset the cluster cache if the number of languages changes
+        // this will then have to be recalculated
+        if (isset($this->_clusters) && $deleted > 0) {
+            $this->_clusters = null;
+        }
+
+        return $deleted;
+    }
+
+
+    /**
+     * Returns the number of languages that this object can detect
+     *
+     * @access public
+     * @return int            the number of languages
+     * @throws   Text_LanguageDetect_Exception
+     */
+    function getLanguageCount()
+    {
+        return count($this->_lang_db);
+    }
+
+    /**
+     * Checks if the language with the given name exists in the database
+     *
+     * @param mixed $lang Language name or array of language names
+     *
+     * @return bool true if language model exists
+     */
+    public function languageExists($lang)
+    {
+        $lang = $this->_convertFromNameMode($lang);
+
+        if (is_string($lang)) {
+            return isset($this->_lang_db[strtolower($lang)]);
+
+        } elseif (is_array($lang)) {
+            foreach ($lang as $test_lang) {
+                if (!isset($this->_lang_db[strtolower($test_lang)])) {
+                    return false;
+                }
+            }
+            return true;
+
+        } else {
+            throw new Text_LanguageDetect_Exception(
+                'Unsupported parameter type passed to languageExists()',
+                Text_LanguageDetect_Exception::PARAM_TYPE
+            );
+        }
+    }
+
+    /**
+     * Returns the list of detectable languages
+     *
+     * @access public
+     * @return array        the names of the languages known to this object<<<<<<<
+     * @throws   Text_LanguageDetect_Exception
+     */
+    function getLanguages()
+    {
+        return $this->_convertToNameMode(
+            array_keys($this->_lang_db)
+        );
+    }
+
+    /**
+     * Make this object behave like Language::Guess
+     *
+     * @param bool $setting false to turn off perl compatibility
+     *
+     * @return void
+     */
+    public function setPerlCompatible($setting = true)
+    {
+        if (is_bool($setting)) { // input check
+            $this->_perl_compatible = $setting;
+
+            if ($setting == true) {
+                $this->_max_score = $this->_threshold;
+            } else {
+                $this->_max_score = 0;
+            }
+        }
+
+    }
+
+    /**
+     * Sets the way how language names are accepted and returned.
+     *
+     * @param integer $name_mode One of the following modes:
+     *                           0 - language name ("english")
+     *                           2 - 2-letter ISO 639-1 code ("en")
+     *                           3 - 3-letter ISO 639-2 code ("eng")
+     *
+     * @return void
+     */
+    function setNameMode($name_mode)
+    {
+        $this->_name_mode = $name_mode;
+    }
+
+    /**
+     * Whether to use unicode block ranges in detection
+     *
+     * Should speed up most detections if turned on (detault is on). In some
+     * circumstances it may be slower, such as for large text samples (> 10K)
+     * in languages that use latin scripts. In other cases it should speed up
+     * detection noticeably.
+     *
+     * @param bool $setting false to turn off
+     *
+     * @return void
+     */
+    public function useUnicodeBlocks($setting = true)
+    {
+        if (is_bool($setting)) {
+            $this->_use_unicode_narrowing = $setting;
+        }
+    }
+
+    /**
+     * Converts a piece of text into trigrams
+     *
+     * @param string $text text to convert
+     *
+     * @return     array array of trigram frequencies
+     * @access     private
+     * @deprecated Superceded by the Text_LanguageDetect_Parser class
+     */
+    function _trigram($text)
+    {
+        $s = new Text_LanguageDetect_Parser($text);
+        $s->prepareTrigram();
+        $s->prepareUnicode(false);
+        $s->setPadStart(!$this->_perl_compatible);
+        $s->analyze();
+        return $s->getTrigramFreqs();
+    }
+
+    /**
+     * Converts a set of trigrams from frequencies to ranks
+     *
+     * Thresholds (cuts off) the list at $this->_threshold
+     *
+     * @param array $arr array of trigram
+     *
+     * @return array ranks of trigrams
+     * @access protected
+     */
+    function _arr_rank($arr)
+    {
+
+        // sorts alphabetically first as a standard way of breaking rank ties
+        $this->_bub_sort($arr);
+
+        // below might also work, but seemed to introduce errors in testing
+        //ksort($arr);
+        //asort($arr);
+
+        $rank = array();
+
+        $i = 0;
+        foreach ($arr as $key => $value) {
+            $rank[$key] = $i++;
+
+            // cut off at a standard threshold
+            if ($i >= $this->_threshold) {
+                break;
+            }
+        }
+
+        return $rank;
+    }
+
+    /**
+     * Sorts an array by value breaking ties alphabetically
+     *
+     * @param array &$arr the array to sort
+     *
+     * @return void
+     * @access private
+     */
+    function _bub_sort(&$arr)
+    {
+        // should do the same as this perl statement:
+        // sort { $trigrams{$b} == $trigrams{$a}
+        //   ?  $a cmp $b : $trigrams{$b} <=> $trigrams{$a} }
+
+        // needs to sort by both key and value at once
+        // using the key to break ties for the value
+
+        // converts array into an array of arrays of each key and value
+        // may be a better way of doing this
+        $combined = array();
+
+        foreach ($arr as $key => $value) {
+            $combined[] = array($key, $value);
+        }
+
+        usort($combined, array($this, '_sort_func'));
+
+        $replacement = array();
+        foreach ($combined as $key => $value) {
+            list($new_key, $new_value) = $value;
+            $replacement[$new_key] = $new_value;
+        }
+
+        $arr = $replacement;
+    }
+
+    /**
+     * Sort function used by bubble sort
+     *
+     * Callback function for usort().
+     *
+     * @param array $a first param passed by usort()
+     * @param array $b second param passed by usort()
+     *
+     * @return int 1 if $a is greater, -1 if not
+     * @see    _bub_sort()
+     * @access private
+     */
+    function _sort_func($a, $b)
+    {
+        // each is actually a key/value pair, so that it can compare using both
+        list($a_key, $a_value) = $a;
+        list($b_key, $b_value) = $b;
+
+        if ($a_value == $b_value) {
+            // if the values are the same, break ties using the key
+            return strcmp($a_key, $b_key);
+
+        } else {
+            // if not, just sort normally
+            if ($a_value > $b_value) {
+                return -1;
+            } else {
+                return 1;
+            }
+        }
+
+        // 0 should not be possible because keys must be unique
+    }
+
+    /**
+     * Calculates a linear rank-order distance statistic between two sets of
+     * ranked trigrams
+     *
+     * Sums the differences in rank for each trigram. If the trigram does not
+     * appear in both, consider it a difference of $this->_threshold.
+     *
+     * This distance measure was proposed by Cavnar & Trenkle (1994). Despite
+     * its simplicity it has been shown to be highly accurate for language
+     * identification tasks.
+     *
+     * @param array $arr1 the reference set of trigram ranks
+     * @param array $arr2 the target set of trigram ranks
+     *
+     * @return int the sum of the differences between the ranks of
+     *             the two trigram sets
+     * @access private
+     */
+    function _distance($arr1, $arr2)
+    {
+        $sumdist = 0;
+
+        foreach ($arr2 as $key => $value) {
+            if (isset($arr1[$key])) {
+                $distance = abs($value - $arr1[$key]);
+            } else {
+                // $this->_threshold sets the maximum possible distance value
+                // for any one pair of trigrams
+                $distance = $this->_threshold;
+            }
+            $sumdist += $distance;
+        }
+
+        return $sumdist;
+
+        // todo: there are other distance statistics to try, e.g. relative
+        //       entropy, but they're probably more costly to compute
+    }
+
+    /**
+     * Normalizes the score returned by _distance()
+     *
+     * Different if perl compatible or not
+     *
+     * @param int $score      the score from _distance()
+     * @param int $base_count the number of trigrams being considered
+     *
+     * @return float the normalized score
+     * @see    _distance()
+     * @access private
+     */
+    function _normalize_score($score, $base_count = null)
+    {
+        if ($base_count === null) {
+            $base_count = $this->_threshold;
+        }
+
+        if (!$this->_perl_compatible) {
+            return 1 - ($score / $base_count / $this->_threshold);
+        } else {
+            return floor($score / $base_count);
+        }
+    }
+
+
+    /**
+     * Detects the closeness of a sample of text to the known languages
+     *
+     * Calculates the statistical difference between the text and
+     * the trigrams for each language, normalizes the score then
+     * returns results for all languages in sorted order
+     *
+     * If perl compatible, the score is 300-0, 0 being most similar.
+     * Otherwise, it's 0-1 with 1 being most similar.
+     *
+     * The $sample text should be at least a few sentences in length;
+     * should be ascii-7 or utf8 encoded, if another and the mbstring extension
+     * is present it will try to detect and convert. However, experience has
+     * shown that mb_detect_encoding() *does not work very well* with at least
+     * some types of encoding.
+     *
+     * @param string $sample a sample of text to compare.
+     * @param int    $limit  if specified, return an array of the most likely
+     *                       $limit languages and their scores.
+     *
+     * @return mixed sorted array of language scores, blank array if no
+     *               useable text was found
+     * @see    _distance()
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function detect($sample, $limit = 0)
+    {
+        // input check
+        if (!Text_LanguageDetect_Parser::validateString($sample)) {
+            return array();
+        }
+
+        // check char encoding
+        // (only if mbstring extension is compiled and PHP > 4.0.6)
+        if (function_exists('mb_detect_encoding')
+            && function_exists('mb_convert_encoding')
+        ) {
+            // mb_detect_encoding isn't very reliable, to say the least
+            // detection should still work with a sufficient sample
+            //  of ascii characters
+            $encoding = mb_detect_encoding($sample);
+
+            // mb_detect_encoding() will return FALSE if detection fails
+            // don't attempt conversion if that's the case
+            if ($encoding != 'ASCII' && $encoding != 'UTF-8'
+                && $encoding !== false
+            ) {
+                // verify the encoding exists in mb_list_encodings
+                if (in_array($encoding, mb_list_encodings())) {
+                    $sample = mb_convert_encoding($sample, 'UTF-8', $encoding);
+                }
+            }
+        }
+
+        $sample_obj = new Text_LanguageDetect_Parser($sample);
+        $sample_obj->prepareTrigram();
+        if ($this->_use_unicode_narrowing) {
+            $sample_obj->prepareUnicode();
+        }
+        $sample_obj->setPadStart(!$this->_perl_compatible);
+        $sample_obj->analyze();
+
+        $trigram_freqs =& $sample_obj->getTrigramRanks();
+        $trigram_count = count($trigram_freqs);
+
+        if ($trigram_count == 0) {
+            return array();
+        }
+
+        $scores = array();
+
+        // use unicode block detection to narrow down the possibilities
+        if ($this->_use_unicode_narrowing) {
+            $blocks =& $sample_obj->getUnicodeBlocks();
+
+            if (is_array($blocks)) {
+                $present_blocks = array_keys($blocks);
+            } else {
+                throw new Text_LanguageDetect_Exception(
+                    'Error during block detection',
+                    Text_LanguageDetect_Exception::BLOCK_DETECTION
+                );
+            }
+
+            $possible_langs = array();
+
+            foreach ($present_blocks as $blockname) {
+                if (isset($this->_unicode_map[$blockname])) {
+
+                    $possible_langs = array_merge(
+                        $possible_langs,
+                        array_keys($this->_unicode_map[$blockname])
+                    );
+
+                    // todo: faster way to do this?
+                }
+            }
+
+            // could also try an intersect operation rather than a union
+            // in other words, choose languages whose trigrams contain
+            // ALL of the unicode blocks found in this sample
+            // would improve speed but would be completely thrown off by an
+            // unexpected character, like an umlaut appearing in english text
+
+            $possible_langs = array_intersect(
+                array_keys($this->_lang_db),
+                array_unique($possible_langs)
+            );
+
+            // needs to intersect it with the keys of _lang_db in case
+            // languages have been omitted
+
+        } else {
+            // or just try 'em all
+            $possible_langs = array_keys($this->_lang_db);
+        }
+
+
+        foreach ($possible_langs as $lang) {
+            $scores[$lang] = $this->_normalize_score(
+                $this->_distance($this->_lang_db[$lang], $trigram_freqs),
+                $trigram_count
+            );
+        }
+
+        unset($sample_obj);
+
+        if ($this->_perl_compatible) {
+            asort($scores);
+        } else {
+            arsort($scores);
+        }
+
+        // todo: drop languages with a score of $this->_max_score?
+
+        // limit the number of returned scores
+        if ($limit && is_numeric($limit)) {
+            $limited_scores = array();
+
+            $i = 0;
+            foreach ($scores as $key => $value) {
+                if ($i++ >= $limit) {
+                    break;
+                }
+
+                $limited_scores[$key] = $value;
+            }
+
+            return $this->_convertToNameMode($limited_scores, true);
+        } else {
+            return $this->_convertToNameMode($scores, true);
+        }
+    }
+
+    /**
+     * Returns only the most similar language to the text sample
+     *
+     * Calls $this->detect() and returns only the top result
+     *
+     * @param string $sample text to detect the language of
+     *
+     * @return string the name of the most likely language
+     *                or null if no language is similar
+     * @see    detect()
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function detectSimple($sample)
+    {
+        $scores = $this->detect($sample, 1);
+
+        // if top language has the maximum possible score,
+        // then the top score will have been picked at random
+        if (!is_array($scores) || empty($scores)
+            || current($scores) == $this->_max_score
+        ) {
+            return null;
+        } else {
+            return key($scores);
+        }
+    }
+
+    /**
+     * Returns an array containing the most similar language and a confidence
+     * rating
+     *
+     * Confidence is a simple measure calculated from the similarity score
+     * minus the similarity score from the next most similar language
+     * divided by the highest possible score. Languages that have closely
+     * related cousins (e.g. Norwegian and Danish) should generally have lower
+     * confidence scores.
+     *
+     * The similarity score answers the question "How likely is the text the
+     * returned language regardless of the other languages considered?" The
+     * confidence score is one way of answering the question "how likely is the
+     * text the detected language relative to the rest of the language model
+     * set?"
+     *
+     * To see how similar languages are a priori, see languageSimilarity()
+     *
+     * @param string $sample text for which language will be detected
+     *
+     * @return array most similar language, score and confidence rating
+     *               or null if no language is similar
+     * @see    detect()
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function detectConfidence($sample)
+    {
+        $scores = $this->detect($sample, 2);
+
+        // if most similar language has the max score, it
+        // will have been picked at random
+        if (!is_array($scores) || empty($scores)
+            || current($scores) == $this->_max_score
+        ) {
+            return null;
+        }
+
+        $arr['language'] = key($scores);
+        $arr['similarity'] = current($scores);
+        if (next($scores) !== false) { // if false then no next element
+            // the goal is to return a higher value if the distance between
+            // the similarity of the first score and the second score is high
+
+            if ($this->_perl_compatible) {
+                $arr['confidence'] = (current($scores) - $arr['similarity'])
+                    / $this->_max_score;
+
+            } else {
+                $arr['confidence'] = $arr['similarity'] - current($scores);
+
+            }
+
+        } else {
+            $arr['confidence'] = null;
+        }
+
+        return $arr;
+    }
+
+    /**
+     * Returns the distribution of unicode blocks in a given utf8 string
+     *
+     * For the block name of a single char, use unicodeBlockName()
+     *
+     * @param string $str          input string. Must be ascii or utf8
+     * @param bool   $skip_symbols if true, skip ascii digits, symbols and
+     *                             non-printing characters. Includes spaces,
+     *                             newlines and common punctutation characters.
+     *
+     * @return array
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function detectUnicodeBlocks($str, $skip_symbols)
+    {
+        $skip_symbols = (bool)$skip_symbols;
+        $str          = (string)$str;
+
+        $sample_obj = new Text_LanguageDetect_Parser($str);
+        $sample_obj->prepareUnicode();
+        $sample_obj->prepareTrigram(false);
+        $sample_obj->setUnicodeSkipSymbols($skip_symbols);
+        $sample_obj->analyze();
+        $blocks = $sample_obj->getUnicodeBlocks();
+        unset($sample_obj);
+        return $blocks;
+    }
+
+    /**
+     * Returns the block name for a given unicode value
+     *
+     * If passed a string, will assume it is being passed a UTF8-formatted
+     * character and will automatically convert. Otherwise it will assume it
+     * is being passed a numeric unicode value.
+     *
+     * Make sure input is of the correct type!
+     *
+     * @param mixed $unicode unicode value or utf8 char
+     *
+     * @return mixed the block name string or false if not found
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function unicodeBlockName($unicode)
+    {
+        if (is_string($unicode)) {
+            // assume it is being passed a utf8 char, so convert it
+            if (self::utf8strlen($unicode) > 1) {
+                throw new Text_LanguageDetect_Exception(
+                    'Pass a single char only to this method',
+                    Text_LanguageDetect_Exception::PARAM_TYPE
+                );
+            }
+            $unicode = $this->_utf8char2unicode($unicode);
+
+        } elseif (!is_int($unicode)) {
+            throw new Text_LanguageDetect_Exception(
+                'Input must be of type string or int.',
+                Text_LanguageDetect_Exception::PARAM_TYPE
+            );
+        }
+
+        $blocks = $this->_read_unicode_block_db();
+
+        $result = $this->_unicode_block_name($unicode, $blocks);
+
+        if ($result == -1) {
+            return false;
+        } else {
+            return $result[2];
+        }
+    }
+
+    /**
+     * Searches the unicode block database
+     *
+     * Returns the block name for a given unicode value. unicodeBlockName() is
+     * the public interface for this function, which does input checks which
+     * this function omits for speed.
+     *
+     * @param int   $unicode     the unicode value
+     * @param array $blocks      the block database
+     * @param int   $block_count the number of defined blocks in the database
+     *
+     * @return mixed Block name, -1 if it failed
+     * @see    unicodeBlockName()
+     * @access protected
+     */
+    function _unicode_block_name($unicode, $blocks, $block_count = -1)
+    {
+        // for a reference, see
+        // http://www.unicode.org/Public/UNIDATA/Blocks.txt
+
+        // assume that ascii characters are the most common
+        // so try it first for efficiency
+        if ($unicode <= $blocks[0][1]) {
+            return $blocks[0];
+        }
+
+        // the optional $block_count param is for efficiency
+        // so we this function doesn't have to run count() every time
+        if ($block_count != -1) {
+            $high = $block_count - 1;
+        } else {
+            $high = count($blocks) - 1;
+        }
+
+        $low = 1; // start with 1 because ascii was 0
+
+        // your average binary search algorithm
+        while ($low <= $high) {
+            $mid = floor(($low + $high) / 2);
+
+            if ($unicode < $blocks[$mid][0]) {
+                // if it's lower than the lower bound
+                $high = $mid - 1;
+
+            } elseif ($unicode > $blocks[$mid][1]) {
+                // if it's higher than the upper bound
+                $low = $mid + 1;
+
+            } else {
+                // found it
+                return $blocks[$mid];
+            }
+        }
+
+        // failed to find the block
+        return -1;
+
+        // todo: differentiate when it's out of range or when it falls
+        //       into an unassigned range?
+    }
+
+    /**
+     * Brings up the unicode block database
+     *
+     * @return array the database of unicode block definitions
+     * @throws Text_LanguageDetect_Exception
+     * @access protected
+     */
+    function _read_unicode_block_db()
+    {
+        // since the unicode definitions are always going to be the same,
+        // might as well share the memory for the db with all other instances
+        // of this class
+        static $data;
+
+        if (!isset($data)) {
+            $data = $this->_readdb($this->_unicode_db_filename);
+        }
+
+        return $data;
+    }
+
+    /**
+     * Calculate the similarities between the language models
+     *
+     * Use this function to see how similar languages are to each other.
+     *
+     * If passed 2 language names, will return just those languages compared.
+     * If passed 1 language name, will return that language compared to
+     * all others.
+     * If passed none, will return an array of every language model compared
+     * to every other one.
+     *
+     * @param string $lang1 the name of the first language to be compared
+     * @param string $lang2 the name of the second language to be compared
+     *
+     * @return array scores of every language compared
+     *               or the score of just the provided languages
+     *               or null if one of the supplied languages does not exist
+     * @throws Text_LanguageDetect_Exception
+     */
+    public function languageSimilarity($lang1 = null, $lang2 = null)
+    {
+        $lang1 = $this->_convertFromNameMode($lang1);
+        $lang2 = $this->_convertFromNameMode($lang2);
+        if ($lang1 != null) {
+            $lang1 = strtolower($lang1);
+
+            // check if language model exists
+            if (!isset($this->_lang_db[$lang1])) {
+                return null;
+            }
+
+            if ($lang2 != null) {
+                if (!isset($this->_lang_db[$lang2])) {
+                    // check if language model exists
+                    return null;
+                }
+
+                $lang2 = strtolower($lang2);
+
+                // compare just these two languages
+                return $this->_normalize_score(
+                    $this->_distance(
+                        $this->_lang_db[$lang1],
+                        $this->_lang_db[$lang2]
+                    )
+                );
+
+            } else {
+                // compare just $lang1 to all languages
+                $return_arr = array();
+                foreach ($this->_lang_db as $key => $value) {
+                    if ($key != $lang1) {
+                        // don't compare a language to itself
+                        $return_arr[$key] = $this->_normalize_score(
+                            $this->_distance($this->_lang_db[$lang1], $value)
+                        );
+                    }
+                }
+                asort($return_arr);
+
+                return $return_arr;
+            }
+
+
+        } else {
+            // compare all languages to each other
+            $return_arr = array();
+            foreach (array_keys($this->_lang_db) as $lang1) {
+                foreach (array_keys($this->_lang_db) as $lang2) {
+                    // skip comparing languages to themselves
+                    if ($lang1 != $lang2) {
+
+                        if (isset($return_arr[$lang2][$lang1])) {
+                            // don't re-calculate what's already been done
+                            $return_arr[$lang1][$lang2]
+                                = $return_arr[$lang2][$lang1];
+
+                        } else {
+                            // calculate
+                            $return_arr[$lang1][$lang2]
+                                = $this->_normalize_score(
+                                    $this->_distance(
+                                        $this->_lang_db[$lang1],
+                                        $this->_lang_db[$lang2]
+                                    )
+                                );
+
+                        }
+                    }
+                }
+            }
+            return $return_arr;
+        }
+    }
+
+    /**
+     * Cluster known languages according to languageSimilarity()
+     *
+     * WARNING: this method is EXPERIMENTAL. It is not recommended for common
+     * use, and it may disappear or its functionality may change in future
+     * releases without notice.
+     *
+     * Uses a nearest neighbor technique to generate the maximum possible
+     * number of dendograms from the similarity data.
+     *
+     * @access      public
+     * @return      array language cluster data
+     * @throws      Text_LanguageDetect_Exception
+     * @see         languageSimilarity()
+     * @deprecated  this function will eventually be removed and placed into
+     *              the model generation class
+     */
+    function clusterLanguages()
+    {
+        // todo: set the maximum number of clusters
+        // return cached result, if any
+        if (isset($this->_clusters)) {
+            return $this->_clusters;
+        }
+
+        $langs = array_keys($this->_lang_db);
+
+        $arr = $this->languageSimilarity();
+
+        sort($langs);
+
+        foreach ($langs as $lang) {
+            if (!isset($this->_lang_db[$lang])) {
+                throw new Text_LanguageDetect_Exception(
+                    "missing $lang!",
+                    Text_LanguageDetect_Exception::UNKNOWN_LANGUAGE
+                );
+            }
+        }
+
+        // http://www.psychstat.missouristate.edu/multibook/mlt04m.html
+        foreach ($langs as $old_key => $lang1) {
+            $langs[$lang1] = $lang1;
+            unset($langs[$old_key]);
+        }
+
+        $result_data = $really_map = array();
+
+        $i = 0;
+        while (count($langs) > 2 && $i++ < 200) {
+            $highest_score = -1;
+            $highest_key1 = '';
+            $highest_key2 = '';
+            foreach ($langs as $lang1) {
+                foreach ($langs as $lang2) {
+                    if ($lang1 != $lang2
+                        && $arr[$lang1][$lang2] > $highest_score
+                    ) {
+                        $highest_score = $arr[$lang1][$lang2];
+                        $highest_key1 = $lang1;
+                        $highest_key2 = $lang2;
+                    }
+                }
+            }
+
+            if (!$highest_key1) {
+                // should not ever happen
+                throw new Text_LanguageDetect_Exception(
+                    "no highest key? (step: $i)",
+                    Text_LanguageDetect_Exception::NO_HIGHEST_KEY
+                );
+            }
+
+            if ($highest_score == 0) {
+                // languages are perfectly dissimilar
+                break;
+            }
+
+            // $highest_key1 and $highest_key2 are most similar
+            $sum1 = array_sum($arr[$highest_key1]);
+            $sum2 = array_sum($arr[$highest_key2]);
+
+            // use the score for the one that is most similar to the rest of
+            // the field as the score for the group
+            // todo: could try averaging or "centroid" method instead
+            // seems like that might make more sense
+            // actually nearest neighbor may be better for binary searching
+
+
+            // for "Complete Linkage"/"furthest neighbor"
+            // sign should be <
+            // for "Single Linkage"/"nearest neighbor" method
+            // should should be >
+            // results seem to be pretty much the same with either method
+
+            // figure out which to delete and which to replace
+            if ($sum1 > $sum2) {
+                $replaceme = $highest_key1;
+                $deleteme = $highest_key2;
+            } else {
+                $replaceme = $highest_key2;
+                $deleteme = $highest_key1;
+            }
+
+            $newkey = $replaceme . ':' . $deleteme;
+
+            // $replaceme is most similar to remaining languages
+            // replace $replaceme with '$newkey', deleting $deleteme
+
+            // keep a record of which fork is really which language
+            $really_lang = $replaceme;
+            while (isset($really_map[$really_lang])) {
+                $really_lang = $really_map[$really_lang];
+            }
+            $really_map[$newkey] = $really_lang;
+
+
+            // replace the best fitting key, delete the other
+            foreach ($arr as $key1 => $arr2) {
+                foreach ($arr2 as $key2 => $value2) {
+                    if ($key2 == $replaceme) {
+                        $arr[$key1][$newkey] = $arr[$key1][$key2];
+                        unset($arr[$key1][$key2]);
+                        // replacing $arr[$key1][$key2] with $arr[$key1][$newkey]
+                    }
+
+                    if ($key1 == $replaceme) {
+                        $arr[$newkey][$key2] = $arr[$key1][$key2];
+                        unset($arr[$key1][$key2]);
+                        // replacing $arr[$key1][$key2] with $arr[$newkey][$key2]
+                    }
+
+                    if ($key1 == $deleteme || $key2 == $deleteme) {
+                        // deleting $arr[$key1][$key2]
+                        unset($arr[$key1][$key2]);
+                    }
+                }
+            }
+
+
+            unset($langs[$highest_key1]);
+            unset($langs[$highest_key2]);
+            $langs[$newkey] = $newkey;
+
+
+            // some of these may be overkill
+            $result_data[$newkey] = array(
+                                'newkey' => $newkey,
+                                'count' => $i,
+                                'diff' => abs($sum1 - $sum2),
+                                'score' => $highest_score,
+                                'bestfit' => $replaceme,
+                                'otherfit' => $deleteme,
+                                'really' => $really_lang,
+                            );
+        }
+
+        $return_val = array(
+                'open_forks' => $langs,
+                        // the top level of clusters
+                        // clusters that are mutually exclusive
+                        // or specified by a specific maximum
+
+                'fork_data' => $result_data,
+                        // data for each split
+
+                'name_map' => $really_map,
+                        // which cluster is really which language
+                        // using the nearest neighbor technique, the cluster
+                        // inherits all of the properties of its most-similar member
+                        // this keeps track
+            );
+
+
+        // saves the result in the object
+        $this->_clusters = $return_val;
+
+        return $return_val;
+    }
+
+
+    /**
+     * Perform an intelligent detection based on clusterLanguages()
+     *
+     * WARNING: this method is EXPERIMENTAL. It is not recommended for common
+     * use, and it may disappear or its functionality may change in future
+     * releases without notice.
+     *
+     * This compares the sample text to top the top level of clusters. If the
+     * sample is similar to the cluster it will drop down and compare it to the
+     * languages in the cluster, and so on until it hits a leaf node.
+     *
+     * this should find the language in considerably fewer compares
+     * (the equivalent of a binary search), however clusterLanguages() is costly
+     * and the loss of accuracy from this technique is significant.
+     *
+     * This method may need to be 'fuzzier' in order to become more accurate.
+     *
+     * This function could be more useful if the universe of possible languages
+     * was very large, however in such cases some method of Bayesian inference
+     * might be more helpful.
+     *
+     * @param string $str input string
+     *
+     * @return array language scores (only those compared)
+     * @throws Text_LanguageDetect_Exception
+     * @see    clusterLanguages()
+     */
+    public function clusteredSearch($str)
+    {
+        // input check
+        if (!Text_LanguageDetect_Parser::validateString($str)) {
+            return array();
+        }
+
+        // clusterLanguages() will return a cached result if possible
+        // so it's safe to call it every time
+        $result = $this->clusterLanguages();
+
+        $dendogram_start = $result['open_forks'];
+        $dendogram_data  = $result['fork_data'];
+        $dendogram_alias = $result['name_map'];
+
+        $sample_obj = new Text_LanguageDetect_Parser($str);
+        $sample_obj->prepareTrigram();
+        $sample_obj->setPadStart(!$this->_perl_compatible);
+        $sample_obj->analyze();
+        $sample_result = $sample_obj->getTrigramRanks();
+        $sample_count  = count($sample_result);
+
+        // input check
+        if ($sample_count == 0) {
+            return array();
+        }
+
+        $i = 0; // counts the number of steps
+
+        foreach ($dendogram_start as $lang) {
+            if (isset($dendogram_alias[$lang])) {
+                $lang_key = $dendogram_alias[$lang];
+            } else {
+                $lang_key = $lang;
+            }
+
+            $scores[$lang] = $this->_normalize_score(
+                $this->_distance($this->_lang_db[$lang_key], $sample_result),
+                $sample_count
+            );
+
+            $i++;
+        }
+
+        if ($this->_perl_compatible) {
+            asort($scores);
+        } else {
+            arsort($scores);
+        }
+
+        $top_score = current($scores);
+        $top_key = key($scores);
+
+        // of starting forks, $top_key is the most similar to the sample
+
+        $cur_key = $top_key;
+        while (isset($dendogram_data[$cur_key])) {
+            $lang1 = $dendogram_data[$cur_key]['bestfit'];
+            $lang2 = $dendogram_data[$cur_key]['otherfit'];
+            foreach (array($lang1, $lang2) as $lang) {
+                if (isset($dendogram_alias[$lang])) {
+                    $lang_key = $dendogram_alias[$lang];
+                } else {
+                    $lang_key = $lang;
+                }
+
+                $scores[$lang] = $this->_normalize_score(
+                    $this->_distance($this->_lang_db[$lang_key], $sample_result),
+                    $sample_count
+                );
+
+                //todo: does not need to do same comparison again
+            }
+
+            $i++;
+
+            if ($scores[$lang1] > $scores[$lang2]) {
+                $cur_key = $lang1;
+                $loser_key = $lang2;
+            } else {
+                $cur_key = $lang2;
+                $loser_key = $lang1;
+            }
+
+            $diff = $scores[$cur_key] - $scores[$loser_key];
+
+            // $cur_key ({$dendogram_alias[$cur_key]}) wins
+            // over $loser_key ({$dendogram_alias[$loser_key]})
+            // with a difference of $diff
+        }
+
+        // found result in $i compares
+
+        // rather than sorting the result, preserve it so that you can see
+        // which paths the algorithm decided to take along the tree
+
+        // but sometimes the last item is only the second highest
+        if (($this->_perl_compatible  && (end($scores) > prev($scores)))
+            || (!$this->_perl_compatible && (end($scores) < prev($scores)))
+        ) {
+            $real_last_score = current($scores);
+            $real_last_key = key($scores);
+
+            // swaps the 2nd-to-last item for the last item
+            unset($scores[$real_last_key]);
+            $scores[$real_last_key] = $real_last_score;
+        }
+
+
+        if (!$this->_perl_compatible) {
+            $scores = array_reverse($scores, true);
+            // second param requires php > 4.0.3
+        }
+
+        return $scores;
+    }
+
+    /**
+     * ut8-safe strlen()
+     *
+     * Returns the numbers of characters (not bytes) in a utf8 string
+     *
+     * @param string $str string to get the length of
+     *
+     * @return int number of chars
+     */
+    public static function utf8strlen($str)
+    {
+        // utf8_decode() will convert unknown chars to '?', which is actually
+        // ideal for counting.
+
+        return strlen(utf8_decode($str));
+
+        // idea stolen from dokuwiki
+    }
+
+    /**
+     * Returns the unicode value of a utf8 char
+     *
+     * @param string $char a utf8 (possibly multi-byte) char
+     *
+     * @return int unicode value
+     * @access protected
+     * @link   http://en.wikipedia.org/wiki/UTF-8
+     */
+    function _utf8char2unicode($char)
+    {
+        // strlen() here will actually get the binary length of a single char
+        switch (strlen($char)) {
+        case 1:
+            // normal ASCII-7 byte
+            // 0xxxxxxx -->  0xxxxxxx
+            return ord($char{0});
+
+        case 2:
+            // 2 byte unicode
+            // 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx
+            $z = (ord($char{0}) & 0x000001F) << 6;
+            $x = (ord($char{1}) & 0x0000003F);
+            return ($z | $x);
+
+        case 3:
+            // 3 byte unicode
+            // 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx
+            $z =  (ord($char{0}) & 0x0000000F) << 12;
+            $x1 = (ord($char{1}) & 0x0000003F) << 6;
+            $x2 = (ord($char{2}) & 0x0000003F);
+            return ($z | $x1 | $x2);
+
+        case 4:
+            // 4 byte unicode
+            // 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx -->
+            // 000zzzzz xxxxxxxx xxxxxxxx
+            $z1 = (ord($char{0}) & 0x00000007) << 18;
+            $z2 = (ord($char{1}) & 0x0000003F) << 12;
+            $x1 = (ord($char{2}) & 0x0000003F) << 6;
+            $x2 = (ord($char{3}) & 0x0000003F);
+            return ($z1 | $z2 | $x1 | $x2);
+        }
+    }
+
+    /**
+     * utf8-safe fast character iterator
+     *
+     * Will get the next character starting from $counter, which will then be
+     * incremented. If a multi-byte char the bytes will be concatenated and
+     * $counter will be incremeted by the number of bytes in the char.
+     *
+     * @param string $str             the string being iterated over
+     * @param int    &$counter        the iterator, will increment by reference
+     * @param bool   $special_convert whether to do special conversions
+     *
+     * @return char the next (possibly multi-byte) char from $counter
+     * @access private
+     */
+    static function _next_char($str, &$counter, $special_convert = false)
+    {
+        $char = $str{$counter++};
+        $ord = ord($char);
+
+        // for a description of the utf8 system see
+        // http://www.phpclasses.org/browse/file/5131.html
+
+        // normal ascii one byte char
+        if ($ord <= 127) {
+            // special conversions needed for this package
+            // (that only apply to regular ascii characters)
+            // lower case, and convert all non-alphanumeric characters
+            // other than "'" to space
+            if ($special_convert && $char != ' ' && $char != "'") {
+                if ($ord >= 65 && $ord <= 90) { // A-Z
+                    $char = chr($ord + 32); // lower case
+                } elseif ($ord < 97 || $ord > 122) { // NOT a-z
+                    $char = ' '; // convert to space
+                }
+            }
+
+            return $char;
+
+        } elseif ($ord >> 5 == 6) { // two-byte char
+            // multi-byte chars
+            $nextchar = $str{$counter++}; // get next byte
+
+            // lower-casing of non-ascii characters is still incomplete
+
+            if ($special_convert) {
+                // lower case latin accented characters
+                if ($ord == 195) {
+                    $nextord = ord($nextchar);
+                    $nextord_adj = $nextord + 64;
+                    // for a reference, see
+                    // http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
+
+                    // À - Þ but not ×
+                    if ($nextord_adj >= 192
+                        && $nextord_adj <= 222
+                        && $nextord_adj != 215
+                    ) {
+                        $nextchar = chr($nextord + 32);
+                    }
+
+                } elseif ($ord == 208) {
+                    // lower case cyrillic alphabet
+                    $nextord = ord($nextchar);
+                    // if A - Pe
+                    if ($nextord >= 144 && $nextord <= 159) {
+                        // lower case
+                        $nextchar = chr($nextord + 32);
+
+                    } elseif ($nextord >= 160 && $nextord <= 175) {
+                        // if Er - Ya
+                        // lower case
+                        $char = chr(209); // == $ord++
+                        $nextchar = chr($nextord - 32);
+                    }
+                }
+            }
+
+            // tag on next byte
+            return $char . $nextchar;
+        } elseif ($ord >> 4  == 14) { // three-byte char
+
+            // tag on next 2 bytes
+            return $char . $str{$counter++} . $str{$counter++};
+
+        } elseif ($ord >> 3 == 30) { // four-byte char
+
+            // tag on next 3 bytes
+            return $char . $str{$counter++} . $str{$counter++} . $str{$counter++};
+
+        } else {
+            // error?
+        }
+    }
+
+    /**
+     * Converts an $language input parameter from the configured mode
+     * to the language name that is used internally.
+     *
+     * Works for strings and arrays.
+     *
+     * @param string|array $lang       A language description ("english"/"en"/"eng")
+     * @param boolean      $convertKey If $lang is an array, setting $key
+     *                                 converts the keys to the language name.
+     *
+     * @return string|array Language name
+     */
+    function _convertFromNameMode($lang, $convertKey = false)
+    {
+        if ($this->_name_mode == 0) {
+            return $lang;
+        }
+
+        if ($this->_name_mode == 2) {
+            $method = 'code2ToName';
+        } else {
+            $method = 'code3ToName';
+        }
+
+        if (is_string($lang)) {
+            return (string)Text_LanguageDetect_ISO639::$method($lang);
+        }
+
+        $newlang = array();
+        foreach ($lang as $key => $val) {
+            if ($convertKey) {
+                $newkey = (string)Text_LanguageDetect_ISO639::$method($key);
+                $newlang[$newkey] = $val;
+            } else {
+                $newlang[$key] = (string)Text_LanguageDetect_ISO639::$method($val);
+            }
+        }
+        return $newlang;
+    }
+
+    /**
+     * Converts an $language output parameter from the language name that is
+     * used internally to the configured mode.
+     *
+     * Works for strings and arrays.
+     *
+     * @param string|array $lang       A language description ("english"/"en"/"eng")
+     * @param boolean      $convertKey If $lang is an array, setting $key
+     *                                 converts the keys to the language name.
+     *
+     * @return string|array Language name
+     */
+    function _convertToNameMode($lang, $convertKey = false)
+    {
+        if ($this->_name_mode == 0) {
+            return $lang;
+        }
+
+        if ($this->_name_mode == 2) {
+            $method = 'nameToCode2';
+        } else {
+            $method = 'nameToCode3';
+        }
+
+        if (is_string($lang)) {
+            return Text_LanguageDetect_ISO639::$method($lang);
+        }
+
+        $newlang = array();
+        foreach ($lang as $key => $val) {
+            if ($convertKey) {
+                $newkey = Text_LanguageDetect_ISO639::$method($key);
+                $newlang[$newkey] = $val;
+            } else {
+                $newlang[$key] = Text_LanguageDetect_ISO639::$method($val);
+            }
+        }
+        return $newlang;
+    }
+}
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php
new file mode 100644
index 00000000..196d994f
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php
@@ -0,0 +1,57 @@
+
+ * @copyright 2011 Christian Weiske 
+ * @license   http://www.debian.org/misc/bsd.license BSD
+ * @version   SVN: $Id$
+ * @link      http://pear.php.net/package/Text_LanguageDetect/
+ */
+
+/**
+ * Provides a mapping between the languages from lang.dat and the
+ * ISO 639-1 and ISO-639-2 codes.
+ *
+ * Note that this class contains only languages that exist in lang.dat.
+ *
+ * @category  Text
+ * @package   Text_LanguageDetect
+ * @author    Christian Weiske 
+ * @copyright 2011 Christian Weiske 
+ * @license   http://www.debian.org/misc/bsd.license BSD
+ * @link      http://www.loc.gov/standards/iso639-2/php/code_list.php
+ */
+class Text_LanguageDetect_ISO639
+{
+    /**
+     * Maps all language names from the language database to the
+     * ISO 639-1 2-letter language code.
+     *
+     * NULL indicates that there is no 2-letter code.
+     *
+     * @var array
+     */
+    public static $nameToCode2 = array(
+        'albanian'   => 'sq',
+        'arabic'     => 'ar',
+        'azeri'      => 'az',
+        'bengali'    => 'bn',
+        'bulgarian'  => 'bg',
+        'cebuano'    => null,
+        'croatian'   => 'hr',
+        'czech'      => 'cs',
+        'danish'     => 'da',
+        'dutch'      => 'nl',
+        'english'    => 'en',
+        'estonian'   => 'et',
+        'farsi'      => 'fa',
+        'finnish'    => 'fi',
+        'french'     => 'fr',
+        'german'     => 'de',
+        'hausa'      => 'ha',
+        'hawaiian'   => null,
+        'hindi'      => 'hi',
+        'hungarian'  => 'hu',
+        'icelandic'  => 'is',
+        'indonesian' => 'id',
+        'italian'    => 'it',
+        'kazakh'     => 'kk',
+        'kyrgyz'     => 'ky',
+        'latin'      => 'la',
+        'latvian'    => 'lv',
+        'lithuanian' => 'lt',
+        'macedonian' => 'mk',
+        'mongolian'  => 'mn',
+        'nepali'     => 'ne',
+        'norwegian'  => 'no',
+        'pashto'     => 'ps',
+        'pidgin'     => null,
+        'polish'     => 'pl',
+        'portuguese' => 'pt',
+        'romanian'   => 'ro',
+        'russian'    => 'ru',
+        'serbian'    => 'sr',
+        'slovak'     => 'sk',
+        'slovene'    => 'sl',
+        'somali'     => 'so',
+        'spanish'    => 'es',
+        'swahili'    => 'sw',
+        'swedish'    => 'sv',
+        'tagalog'    => 'tl',
+        'turkish'    => 'tr',
+        'ukrainian'  => 'uk',
+        'urdu'       => 'ur',
+        'uzbek'      => 'uz',
+        'vietnamese' => 'vi',
+        'welsh'      => 'cy',
+    );
+
+    /**
+     * Maps all language names from the language database to the
+     * ISO 639-2 3-letter language code.
+     *
+     * @var array
+     */
+    public static $nameToCode3 = array(
+        'albanian'   => 'sqi',
+        'arabic'     => 'ara',
+        'azeri'      => 'aze',
+        'bengali'    => 'ben',
+        'bulgarian'  => 'bul',
+        'cebuano'    => 'ceb',
+        'croatian'   => 'hrv',
+        'czech'      => 'ces',
+        'danish'     => 'dan',
+        'dutch'      => 'nld',
+        'english'    => 'eng',
+        'estonian'   => 'est',
+        'farsi'      => 'fas',
+        'finnish'    => 'fin',
+        'french'     => 'fra',
+        'german'     => 'deu',
+        'hausa'      => 'hau',
+        'hawaiian'   => 'haw',
+        'hindi'      => 'hin',
+        'hungarian'  => 'hun',
+        'icelandic'  => 'isl',
+        'indonesian' => 'ind',
+        'italian'    => 'ita',
+        'kazakh'     => 'kaz',
+        'kyrgyz'     => 'kir',
+        'latin'      => 'lat',
+        'latvian'    => 'lav',
+        'lithuanian' => 'lit',
+        'macedonian' => 'mkd',
+        'mongolian'  => 'mon',
+        'nepali'     => 'nep',
+        'norwegian'  => 'nor',
+        'pashto'     => 'pus',
+        'pidgin'     => 'crp',
+        'polish'     => 'pol',
+        'portuguese' => 'por',
+        'romanian'   => 'ron',
+        'russian'    => 'rus',
+        'serbian'    => 'srp',
+        'slovak'     => 'slk',
+        'slovene'    => 'slv',
+        'somali'     => 'som',
+        'spanish'    => 'spa',
+        'swahili'    => 'swa',
+        'swedish'    => 'swe',
+        'tagalog'    => 'tgl',
+        'turkish'    => 'tur',
+        'ukrainian'  => 'ukr',
+        'urdu'       => 'urd',
+        'uzbek'      => 'uzb',
+        'vietnamese' => 'vie',
+        'welsh'      => 'cym',
+    );
+
+    /**
+     * Maps ISO 639-1 2-letter language codes to the language names
+     * in the language database
+     *
+     * Not all languages have a 2 letter code, so some are missing
+     *
+     * @var array
+     */
+    public static $code2ToName = array(
+        'ar' => 'arabic',
+        'az' => 'azeri',
+        'bg' => 'bulgarian',
+        'bn' => 'bengali',
+        'cs' => 'czech',
+        'cy' => 'welsh',
+        'da' => 'danish',
+        'de' => 'german',
+        'en' => 'english',
+        'es' => 'spanish',
+        'et' => 'estonian',
+        'fa' => 'farsi',
+        'fi' => 'finnish',
+        'fr' => 'french',
+        'ha' => 'hausa',
+        'hi' => 'hindi',
+        'hr' => 'croatian',
+        'hu' => 'hungarian',
+        'id' => 'indonesian',
+        'is' => 'icelandic',
+        'it' => 'italian',
+        'kk' => 'kazakh',
+        'ky' => 'kyrgyz',
+        'la' => 'latin',
+        'lt' => 'lithuanian',
+        'lv' => 'latvian',
+        'mk' => 'macedonian',
+        'mn' => 'mongolian',
+        'ne' => 'nepali',
+        'nl' => 'dutch',
+        'no' => 'norwegian',
+        'pl' => 'polish',
+        'ps' => 'pashto',
+        'pt' => 'portuguese',
+        'ro' => 'romanian',
+        'ru' => 'russian',
+        'sk' => 'slovak',
+        'sl' => 'slovene',
+        'so' => 'somali',
+        'sq' => 'albanian',
+        'sr' => 'serbian',
+        'sv' => 'swedish',
+        'sw' => 'swahili',
+        'tl' => 'tagalog',
+        'tr' => 'turkish',
+        'uk' => 'ukrainian',
+        'ur' => 'urdu',
+        'uz' => 'uzbek',
+        'vi' => 'vietnamese',
+    );
+
+    /**
+     * Maps ISO 639-2 3-letter language codes to the language names
+     * in the language database.
+     *
+     * @var array
+     */
+    public static $code3ToName = array(
+        'ara' => 'arabic',
+        'aze' => 'azeri',
+        'ben' => 'bengali',
+        'bul' => 'bulgarian',
+        'ceb' => 'cebuano',
+        'ces' => 'czech',
+        'crp' => 'pidgin',
+        'cym' => 'welsh',
+        'dan' => 'danish',
+        'deu' => 'german',
+        'eng' => 'english',
+        'est' => 'estonian',
+        'fas' => 'farsi',
+        'fin' => 'finnish',
+        'fra' => 'french',
+        'hau' => 'hausa',
+        'haw' => 'hawaiian',
+        'hin' => 'hindi',
+        'hrv' => 'croatian',
+        'hun' => 'hungarian',
+        'ind' => 'indonesian',
+        'isl' => 'icelandic',
+        'ita' => 'italian',
+        'kaz' => 'kazakh',
+        'kir' => 'kyrgyz',
+        'lat' => 'latin',
+        'lav' => 'latvian',
+        'lit' => 'lithuanian',
+        'mkd' => 'macedonian',
+        'mon' => 'mongolian',
+        'nep' => 'nepali',
+        'nld' => 'dutch',
+        'nor' => 'norwegian',
+        'pol' => 'polish',
+        'por' => 'portuguese',
+        'pus' => 'pashto',
+        'rom' => 'romanian',
+        'rus' => 'russian',
+        'slk' => 'slovak',
+        'slv' => 'slovene',
+        'som' => 'somali',
+        'spa' => 'spanish',
+        'sqi' => 'albanian',
+        'srp' => 'serbian',
+        'swa' => 'swahili',
+        'swe' => 'swedish',
+        'tgl' => 'tagalog',
+        'tur' => 'turkish',
+        'ukr' => 'ukrainian',
+        'urd' => 'urdu',
+        'uzb' => 'uzbek',
+        'vie' => 'vietnamese',
+    );
+
+    /**
+     * Returns the 2-letter ISO 639-1 code for the given language name.
+     *
+     * @param string $lang English language name like "swedish"
+     *
+     * @return string Two-letter language code (e.g. "sv") or NULL if not found
+     */
+    public static function nameToCode2($lang)
+    {
+        $lang = strtolower($lang);
+        if (!isset(self::$nameToCode2[$lang])) {
+            return null;
+        }
+        return self::$nameToCode2[$lang];
+    }
+
+    /**
+     * Returns the 3-letter ISO 639-2 code for the given language name.
+     *
+     * @param string $lang English language name like "swedish"
+     *
+     * @return string Three-letter language code (e.g. "swe") or NULL if not found
+     */
+    public static function nameToCode3($lang)
+    {
+        $lang = strtolower($lang);
+        if (!isset(self::$nameToCode3[$lang])) {
+            return null;
+        }
+        return self::$nameToCode3[$lang];
+    }
+
+    /**
+     * Returns the language name for the given 2-letter ISO 639-1 code.
+     *
+     * @param string $code Two-letter language code (e.g. "sv")
+     *
+     * @return string English language name like "swedish"
+     */
+    public static function code2ToName($code)
+    {
+        $lang = strtolower($code);
+        if (!isset(self::$code2ToName[$code])) {
+            return null;
+        }
+        return self::$code2ToName[$code];
+    }
+
+    /**
+     * Returns the language name for the given 3-letter ISO 639-2 code.
+     *
+     * @param string $code Three-letter language code (e.g. "swe")
+     *
+     * @return string English language name like "swedish"
+     */
+    public static function code3ToName($code)
+    {
+        $lang = strtolower($code);
+        if (!isset(self::$code3ToName[$code])) {
+            return null;
+        }
+        return self::$code3ToName[$code];
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php
new file mode 100644
index 00000000..1c20c265
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php
@@ -0,0 +1,349 @@
+_string = $string;
+    }
+
+    /**
+     * Returns true if a string is suitable for parsing
+     *
+     * @param   string  $str    input string to test
+     * @return  bool            true if acceptable, false if not
+     */
+    public static function validateString($str) {
+        if (!empty($str) && strlen($str) > 3 && preg_match('/\S/', $str)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * turn on/off trigram counting
+     *
+     * @access  public
+     * @param   bool    $bool true for on, false for off
+     */
+    function prepareTrigram($bool = true)
+    {
+        $this->_compile_trigram = $bool;
+    }
+
+    /**
+     * turn on/off unicode block counting
+     *
+     * @access  public
+     * @param   bool    $bool true for on, false for off
+     */
+    function prepareUnicode($bool = true)
+    {
+        $this->_compile_unicode = $bool;
+    }
+
+    /**
+     * turn on/off padding the beginning of the sample string
+     *
+     * @access  public
+     * @param   bool    $bool true for on, false for off
+     */
+    function setPadStart($bool = true)
+    {
+        $this->_trigram_pad_start = $bool;
+    }
+
+    /**
+     * Should the unicode block counter skip non-alphabetical ascii chars?
+     *
+     * @access  public
+     * @param   bool    $bool true for on, false for off
+     */
+    function setUnicodeSkipSymbols($bool = true)
+    {
+        $this->_unicode_skip_symbols = $bool;
+    }
+
+    /**
+     * Returns the trigram ranks for the text sample
+     *
+     * @access  public
+     * @return  array    trigram ranks in the text sample
+     */
+    function &getTrigramRanks()
+    {
+        return $this->_trigram_ranks;
+    }
+
+    /**
+     * Return the trigram freqency table
+     *
+     * only used in testing to make sure the parser is working
+     *
+     * @access  public
+     * @return  array    trigram freqencies in the text sample
+     */
+    function &getTrigramFreqs()
+    {
+        return $this->_trigram;
+    }
+
+    /**
+     * returns the array of unicode blocks
+     *
+     * @access  public
+     * @return  array   unicode blocks in the text sample
+     */
+    function &getUnicodeBlocks()
+    {
+        return $this->_unicode_blocks;
+    }
+
+    /**
+     * Executes the parsing operation
+     * 
+     * Be sure to call the set*() functions to set options and the 
+     * prepare*() functions first to tell it what kind of data to compute
+     *
+     * Afterwards the get*() functions can be used to access the compiled
+     * information.
+     *
+     * @access public
+     */
+    function analyze()
+    {
+        $len = strlen($this->_string);
+        $byte_counter = 0;
+
+
+        // unicode startup
+        if ($this->_compile_unicode) {
+            $blocks = $this->_read_unicode_block_db();
+            $block_count = count($blocks);
+
+            $skipped_count = 0;
+            $unicode_chars = array();
+        }
+
+        // trigram startup
+        if ($this->_compile_trigram) {
+            // initialize them as blank so the parser will skip the first two
+            // (since it skips trigrams with more than  2 contiguous spaces)
+            $a = ' ';
+            $b = ' ';
+
+            // kludge
+            // if it finds a valid trigram to start and the start pad option is
+            // off, then set a variable that will be used to reduce this
+            // trigram after parsing has finished
+            if (!$this->_trigram_pad_start) {
+                $a = $this->_next_char($this->_string, $byte_counter, true);
+
+                if ($a != ' ') {
+                    $b = $this->_next_char($this->_string, $byte_counter, true);
+                    $dropone = " $a$b";
+                }
+
+                $byte_counter = 0;
+                $a = ' ';
+                $b = ' ';
+            }
+        }
+
+        while ($byte_counter < $len) {
+            $char = $this->_next_char($this->_string, $byte_counter, true);
+
+
+            // language trigram detection
+            if ($this->_compile_trigram) {
+                if (!($b == ' ' && ($a == ' ' || $char == ' '))) {
+                    if (!isset($this->_trigram[$a . $b . $char])) {
+                       $this->_trigram[$a . $b . $char] = 1;
+                    } else {
+                       $this->_trigram[$a . $b . $char]++;
+                    }
+                }
+
+                $a = $b;
+                $b = $char;
+            }
+
+            // unicode block detection
+            if ($this->_compile_unicode) {
+                if ($this->_unicode_skip_symbols
+                        && strlen($char) == 1
+                        && ($char < 'A' || $char > 'z'
+                        || ($char > 'Z' && $char < 'a'))
+                        && $char != "'") {  // does not skip the apostrophe
+                                            // since it's included in the language
+                                            // models
+
+                    $skipped_count++;
+                    continue;
+                }
+
+                // build an array of all the characters
+                if (isset($unicode_chars[$char])) {
+                    $unicode_chars[$char]++;
+                } else {
+                    $unicode_chars[$char] = 1;
+                }
+            }
+
+            // todo: add byte detection here
+        }
+
+        // unicode cleanup
+        if ($this->_compile_unicode) {
+            foreach ($unicode_chars as $utf8_char => $count) {
+                $search_result = $this->_unicode_block_name(
+                        $this->_utf8char2unicode($utf8_char), $blocks, $block_count);
+
+                if ($search_result != -1) {
+                    $block_name = $search_result[2];
+                } else {
+                    $block_name = '[Malformatted]';
+                }
+
+                if (isset($this->_unicode_blocks[$block_name])) {
+                    $this->_unicode_blocks[$block_name] += $count;
+                } else {
+                    $this->_unicode_blocks[$block_name] = $count;
+                }
+            }
+        }
+
+
+        // trigram cleanup
+        if ($this->_compile_trigram) {
+            // pad the end
+            if ($b != ' ') {
+                if (!isset($this->_trigram["$a$b "])) {
+                    $this->_trigram["$a$b "] = 1;
+                } else {
+                    $this->_trigram["$a$b "]++;
+                }
+            }
+
+            // perl compatibility; Language::Guess does not pad the beginning
+            // kludge
+            if (isset($dropone)) {
+                if ($this->_trigram[$dropone] == 1) {
+                    unset($this->_trigram[$dropone]);
+                } else {
+                    $this->_trigram[$dropone]--;
+                }
+            }
+
+            if (!empty($this->_trigram)) {
+                $this->_trigram_ranks = $this->_arr_rank($this->_trigram);
+            } else {
+                $this->_trigram_ranks = array();
+            }
+        }
+    }
+}
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/data/lang.dat b/build/production/LIME/php/lib/Text_LanguageDetect/data/lang.dat
new file mode 100644
index 00000000..c2a44f56
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/data/lang.dat
@@ -0,0 +1 @@
+a:2:{s:7:"trigram";a:52:{s:8:"albanian";a:300:{s:4:"të ";s:1:"0";s:4:" të";s:1:"1";s:4:"në ";s:1:"2";s:4:"për";s:1:"3";s:4:" pë";s:1:"4";s:3:" e ";s:1:"5";s:3:"sht";s:1:"6";s:4:" në";s:1:"7";s:3:" sh";s:1:"8";s:3:"se ";s:1:"9";s:3:"et ";s:2:"10";s:4:"ë s";s:2:"11";s:4:"ë t";s:2:"12";s:3:" se";s:2:"13";s:3:"he ";s:2:"14";s:4:"jë ";s:2:"15";s:4:"ër ";s:2:"16";s:3:"dhe";s:2:"17";s:3:" pa";s:2:"18";s:4:"ë n";s:2:"19";s:4:"ë p";s:2:"20";s:4:" që";s:2:"21";s:3:" dh";s:2:"22";s:4:"një";s:2:"23";s:4:"ë m";s:2:"24";s:3:" nj";s:2:"25";s:4:"ësh";s:2:"26";s:3:"in ";s:2:"27";s:3:" me";s:2:"28";s:4:"që ";s:2:"29";s:3:" po";s:2:"30";s:3:"e n";s:2:"31";s:3:"e t";s:2:"32";s:3:"ish";s:2:"33";s:4:"më ";s:2:"34";s:4:"së ";s:2:"35";s:3:"me ";s:2:"36";s:4:"htë";s:2:"37";s:3:" ka";s:2:"38";s:3:" si";s:2:"39";s:3:"e k";s:2:"40";s:3:"e p";s:2:"41";s:3:" i ";s:2:"42";s:4:"anë";s:2:"43";s:3:"ar ";s:2:"44";s:3:" nu";s:2:"45";s:3:"und";s:2:"46";s:3:"ve ";s:2:"47";s:4:" ës";s:2:"48";s:3:"e s";s:2:"49";s:4:" më";s:2:"50";s:3:"nuk";s:2:"51";s:3:"par";s:2:"52";s:3:"uar";s:2:"53";s:3:"uk ";s:2:"54";s:3:"jo ";s:2:"55";s:4:"rë ";s:2:"56";s:3:"ta ";s:2:"57";s:4:"ë f";s:2:"58";s:3:"en ";s:2:"59";s:3:"it ";s:2:"60";s:3:"min";s:2:"61";s:3:"het";s:2:"62";s:3:"n e";s:2:"63";s:3:"ri ";s:2:"64";s:3:"shq";s:2:"65";s:4:"ë d";s:2:"66";s:3:" do";s:2:"67";s:3:" nd";s:2:"68";s:3:"sh ";s:2:"69";s:4:"ën ";s:2:"70";s:4:"atë";s:2:"71";s:3:"hqi";s:2:"72";s:3:"ist";s:2:"73";s:4:"ë q";s:2:"74";s:3:" gj";s:2:"75";s:3:" ng";s:2:"76";s:3:" th";s:2:"77";s:3:"a n";s:2:"78";s:3:"do ";s:2:"79";s:3:"end";s:2:"80";s:3:"imi";s:2:"81";s:3:"ndi";s:2:"82";s:3:"r t";s:2:"83";s:3:"rat";s:2:"84";s:4:"ë b";s:2:"85";s:4:"ëri";s:2:"86";s:3:" mu";s:2:"87";s:3:"art";s:2:"88";s:3:"ash";s:2:"89";s:3:"qip";s:2:"90";s:3:" ko";s:2:"91";s:3:"e m";s:2:"92";s:3:"edh";s:2:"93";s:3:"eri";s:2:"94";s:3:"je ";s:2:"95";s:3:"ka ";s:2:"96";s:3:"nga";s:2:"97";s:3:"si ";s:2:"98";s:3:"te ";s:2:"99";s:4:"ë k";s:3:"100";s:4:"ësi";s:3:"101";s:3:" ma";s:3:"102";s:3:" ti";s:3:"103";s:3:"eve";s:3:"104";s:3:"hje";s:3:"105";s:3:"ira";s:3:"106";s:3:"mun";s:3:"107";s:3:"on ";s:3:"108";s:3:"po ";s:3:"109";s:3:"re ";s:3:"110";s:3:" pr";s:3:"111";s:3:"im ";s:3:"112";s:3:"lit";s:3:"113";s:3:"o t";s:3:"114";s:3:"ur ";s:3:"115";s:4:"ë e";s:3:"116";s:4:"ë v";s:3:"117";s:4:"ët ";s:3:"118";s:3:" ku";s:3:"119";s:4:" së";s:3:"120";s:3:"e d";s:3:"121";s:3:"es ";s:3:"122";s:3:"ga ";s:3:"123";s:3:"iti";s:3:"124";s:3:"jet";s:3:"125";s:4:"ndë";s:3:"126";s:3:"oli";s:3:"127";s:3:"shi";s:3:"128";s:3:"tje";s:3:"129";s:4:" bë";s:3:"130";s:3:" z ";s:3:"131";s:3:"gje";s:3:"132";s:3:"kan";s:3:"133";s:3:"shk";s:3:"134";s:4:"ënd";s:3:"135";s:4:"ës ";s:3:"136";s:3:" de";s:3:"137";s:3:" kj";s:3:"138";s:3:" ru";s:3:"139";s:3:" vi";s:3:"140";s:3:"ara";s:3:"141";s:3:"gov";s:3:"142";s:3:"kjo";s:3:"143";s:3:"or ";s:3:"144";s:3:"r p";s:3:"145";s:3:"rto";s:3:"146";s:3:"rug";s:3:"147";s:3:"tet";s:3:"148";s:3:"ugo";s:3:"149";s:3:"ali";s:3:"150";s:3:"arr";s:3:"151";s:3:"at ";s:3:"152";s:3:"d t";s:3:"153";s:3:"ht ";s:3:"154";s:3:"i p";s:3:"155";s:4:"ipë";s:3:"156";s:3:"izi";s:3:"157";s:4:"jnë";s:3:"158";s:3:"n n";s:3:"159";s:3:"ohe";s:3:"160";s:3:"shu";s:3:"161";s:4:"shë";s:3:"162";s:3:"t e";s:3:"163";s:3:"tik";s:3:"164";s:3:"a e";s:3:"165";s:4:"arë";s:3:"166";s:4:"etë";s:3:"167";s:3:"hum";s:3:"168";s:3:"nd ";s:3:"169";s:3:"ndr";s:3:"170";s:3:"osh";s:3:"171";s:3:"ova";s:3:"172";s:3:"rim";s:3:"173";s:3:"tos";s:3:"174";s:3:"va ";s:3:"175";s:3:" fa";s:3:"176";s:3:" fi";s:3:"177";s:3:"a s";s:3:"178";s:3:"hen";s:3:"179";s:3:"i n";s:3:"180";s:3:"mar";s:3:"181";s:3:"ndo";s:3:"182";s:3:"por";s:3:"183";s:3:"ris";s:3:"184";s:3:"sa ";s:3:"185";s:3:"sis";s:3:"186";s:4:"tës";s:3:"187";s:4:"umë";s:3:"188";s:3:"viz";s:3:"189";s:3:"zit";s:3:"190";s:3:" di";s:3:"191";s:3:" mb";s:3:"192";s:3:"aj ";s:3:"193";s:3:"ana";s:3:"194";s:3:"ata";s:3:"195";s:4:"dër";s:3:"196";s:3:"e a";s:3:"197";s:3:"esh";s:3:"198";s:3:"ime";s:3:"199";s:3:"jes";s:3:"200";s:3:"lar";s:3:"201";s:3:"n s";s:3:"202";s:3:"nte";s:3:"203";s:3:"pol";s:3:"204";s:3:"r n";s:3:"205";s:3:"ran";s:3:"206";s:3:"res";s:3:"207";s:4:"rrë";s:3:"208";s:3:"tar";s:3:"209";s:4:"ë a";s:3:"210";s:4:"ë i";s:3:"211";s:3:" at";s:3:"212";s:3:" jo";s:3:"213";s:4:" kë";s:3:"214";s:3:" re";s:3:"215";s:3:"a k";s:3:"216";s:3:"ai ";s:3:"217";s:3:"akt";s:3:"218";s:4:"hë ";s:3:"219";s:4:"hën";s:3:"220";s:3:"i i";s:3:"221";s:3:"i m";s:3:"222";s:3:"ia ";s:3:"223";s:3:"men";s:3:"224";s:3:"nis";s:3:"225";s:3:"shm";s:3:"226";s:3:"str";s:3:"227";s:3:"t k";s:3:"228";s:3:"t n";s:3:"229";s:3:"t s";s:3:"230";s:4:"ë g";s:3:"231";s:4:"ërk";s:3:"232";s:4:"ëve";s:3:"233";s:3:" ai";s:3:"234";s:3:" ci";s:3:"235";s:3:" ed";s:3:"236";s:3:" ja";s:3:"237";s:3:" kr";s:3:"238";s:3:" qe";s:3:"239";s:3:" ta";s:3:"240";s:3:" ve";s:3:"241";s:3:"a p";s:3:"242";s:3:"cil";s:3:"243";s:3:"el ";s:3:"244";s:4:"erë";s:3:"245";s:3:"gji";s:3:"246";s:3:"hte";s:3:"247";s:3:"i t";s:3:"248";s:3:"jen";s:3:"249";s:3:"jit";s:3:"250";s:3:"k d";s:3:"251";s:4:"mën";s:3:"252";s:3:"n t";s:3:"253";s:3:"nyr";s:3:"254";s:3:"ori";s:3:"255";s:3:"pas";s:3:"256";s:3:"ra ";s:3:"257";s:3:"rie";s:3:"258";s:4:"rës";s:3:"259";s:3:"tor";s:3:"260";s:3:"uaj";s:3:"261";s:3:"yre";s:3:"262";s:4:"ëm ";s:3:"263";s:4:"ëny";s:3:"264";s:3:" ar";s:3:"265";s:3:" du";s:3:"266";s:3:" ga";s:3:"267";s:3:" je";s:3:"268";s:4:"dës";s:3:"269";s:3:"e e";s:3:"270";s:3:"e z";s:3:"271";s:3:"ha ";s:3:"272";s:3:"hme";s:3:"273";s:3:"ika";s:3:"274";s:3:"ini";s:3:"275";s:3:"ite";s:3:"276";s:3:"ith";s:3:"277";s:3:"koh";s:3:"278";s:3:"kra";s:3:"279";s:3:"ku ";s:3:"280";s:3:"lim";s:3:"281";s:3:"lis";s:3:"282";s:4:"qën";s:3:"283";s:4:"rën";s:3:"284";s:3:"s s";s:3:"285";s:3:"t d";s:3:"286";s:3:"t t";s:3:"287";s:3:"tir";s:3:"288";s:4:"tën";s:3:"289";s:3:"ver";s:3:"290";s:4:"ë j";s:3:"291";s:3:" ba";s:3:"292";s:3:" in";s:3:"293";s:3:" tr";s:3:"294";s:3:" zg";s:3:"295";s:3:"a a";s:3:"296";s:3:"a m";s:3:"297";s:3:"a t";s:3:"298";s:3:"abr";s:3:"299";}s:6:"arabic";a:300:{s:5:" ال";s:1:"0";s:6:"الع";s:1:"1";s:6:"لعر";s:1:"2";s:6:"عرا";s:1:"3";s:6:"راق";s:1:"4";s:5:" في";s:1:"5";s:5:"في ";s:1:"6";s:5:"ين ";s:1:"7";s:5:"ية ";s:1:"8";s:5:"ن ا";s:1:"9";s:6:"الم";s:2:"10";s:5:"ات ";s:2:"11";s:5:"من ";s:2:"12";s:5:"ي ا";s:2:"13";s:5:" من";s:2:"14";s:6:"الأ";s:2:"15";s:5:"ة ا";s:2:"16";s:5:"اق ";s:2:"17";s:5:" وا";s:2:"18";s:5:"اء ";s:2:"19";s:6:"الإ";s:2:"20";s:5:" أن";s:2:"21";s:6:"وال";s:2:"22";s:5:"ما ";s:2:"23";s:5:" عل";s:2:"24";s:5:"لى ";s:2:"25";s:5:"ت ا";s:2:"26";s:5:"ون ";s:2:"27";s:5:"هم ";s:2:"28";s:6:"اقي";s:2:"29";s:5:"ام ";s:2:"30";s:5:"ل ا";s:2:"31";s:5:"أن ";s:2:"32";s:5:"م ا";s:2:"33";s:6:"الت";s:2:"34";s:5:"لا ";s:2:"35";s:6:"الا";s:2:"36";s:5:"ان ";s:2:"37";s:5:"ها ";s:2:"38";s:5:"ال ";s:2:"39";s:5:"ة و";s:2:"40";s:5:"ا ا";s:2:"41";s:6:"رها";s:2:"42";s:6:"لام";s:2:"43";s:6:"يين";s:2:"44";s:5:" ول";s:2:"45";s:6:"لأم";s:2:"46";s:5:"نا ";s:2:"47";s:6:"على";s:2:"48";s:5:"ن ي";s:2:"49";s:6:"الب";s:2:"50";s:5:"اد ";s:2:"51";s:6:"الق";s:2:"52";s:5:"د ا";s:2:"53";s:5:"ذا ";s:2:"54";s:5:"ه ا";s:2:"55";s:5:" با";s:2:"56";s:6:"الد";s:2:"57";s:5:"ب ا";s:2:"58";s:6:"مري";s:2:"59";s:5:"لم ";s:2:"60";s:5:" إن";s:2:"61";s:5:" لل";s:2:"62";s:6:"سلا";s:2:"63";s:6:"أمر";s:2:"64";s:6:"ريك";s:2:"65";s:5:"مة ";s:2:"66";s:5:"ى ا";s:2:"67";s:5:"ا ي";s:2:"68";s:5:" عن";s:2:"69";s:5:" هذ";s:2:"70";s:5:"ء ا";s:2:"71";s:5:"ر ا";s:2:"72";s:6:"كان";s:2:"73";s:6:"قتل";s:2:"74";s:6:"إسل";s:2:"75";s:6:"الح";s:2:"76";s:5:"وا ";s:2:"77";s:5:" إل";s:2:"78";s:5:"ا أ";s:2:"79";s:6:"بال";s:2:"80";s:5:"ن م";s:2:"81";s:6:"الس";s:2:"82";s:5:"رة ";s:2:"83";s:6:"لإس";s:2:"84";s:5:"ن و";s:2:"85";s:6:"هاب";s:2:"86";s:5:"ي و";s:2:"87";s:5:"ير ";s:2:"88";s:5:" كا";s:2:"89";s:5:"لة ";s:2:"90";s:6:"يات";s:2:"91";s:5:" لا";s:2:"92";s:6:"انت";s:2:"93";s:5:"ن أ";s:2:"94";s:6:"يكي";s:2:"95";s:6:"الر";s:2:"96";s:6:"الو";s:2:"97";s:5:"ة ف";s:2:"98";s:5:"دة ";s:2:"99";s:6:"الج";s:3:"100";s:5:"قي ";s:3:"101";s:5:"وي ";s:3:"102";s:6:"الذ";s:3:"103";s:6:"الش";s:3:"104";s:6:"امي";s:3:"105";s:6:"اني";s:3:"106";s:5:"ذه ";s:3:"107";s:5:"عن ";s:3:"108";s:6:"لما";s:3:"109";s:6:"هذه";s:3:"110";s:5:"ول ";s:3:"111";s:5:"اف ";s:3:"112";s:6:"اوي";s:3:"113";s:6:"بري";s:3:"114";s:5:"ة ل";s:3:"115";s:5:" أم";s:3:"116";s:5:" لم";s:3:"117";s:5:" ما";s:3:"118";s:5:"يد ";s:3:"119";s:5:" أي";s:3:"120";s:6:"إره";s:3:"121";s:5:"ع ا";s:3:"122";s:6:"عمل";s:3:"123";s:6:"ولا";s:3:"124";s:6:"إلى";s:3:"125";s:6:"ابي";s:3:"126";s:5:"ن ف";s:3:"127";s:6:"ختط";s:3:"128";s:5:"لك ";s:3:"129";s:5:"نه ";s:3:"130";s:5:"ني ";s:3:"131";s:5:"إن ";s:3:"132";s:6:"دين";s:3:"133";s:5:"ف ا";s:3:"134";s:6:"لذي";s:3:"135";s:5:"ي أ";s:3:"136";s:5:"ي ب";s:3:"137";s:5:" وأ";s:3:"138";s:5:"ا ع";s:3:"139";s:6:"الخ";s:3:"140";s:5:"تل ";s:3:"141";s:5:"تي ";s:3:"142";s:5:"قد ";s:3:"143";s:6:"لدي";s:3:"144";s:5:" كل";s:3:"145";s:5:" مع";s:3:"146";s:5:"اب ";s:3:"147";s:6:"اخت";s:3:"148";s:5:"ار ";s:3:"149";s:6:"الن";s:3:"150";s:6:"علا";s:3:"151";s:5:"م و";s:3:"152";s:5:"مع ";s:3:"153";s:5:"س ا";s:3:"154";s:5:"كل ";s:3:"155";s:6:"لاء";s:3:"156";s:5:"ن ب";s:3:"157";s:5:"ن ت";s:3:"158";s:5:"ي م";s:3:"159";s:6:"عرب";s:3:"160";s:5:"م ب";s:3:"161";s:5:" وق";s:3:"162";s:5:" يق";s:3:"163";s:5:"ا ل";s:3:"164";s:5:"ا م";s:3:"165";s:6:"الف";s:3:"166";s:6:"تطا";s:3:"167";s:6:"داد";s:3:"168";s:6:"لمس";s:3:"169";s:5:"له ";s:3:"170";s:6:"هذا";s:3:"171";s:5:" مح";s:3:"172";s:6:"ؤلا";s:3:"173";s:5:"بي ";s:3:"174";s:5:"ة م";s:3:"175";s:5:"ن ل";s:3:"176";s:6:"هؤل";s:3:"177";s:5:"كن ";s:3:"178";s:6:"لإر";s:3:"179";s:6:"لتي";s:3:"180";s:5:" أو";s:3:"181";s:5:" ان";s:3:"182";s:5:" عم";s:3:"183";s:5:"ا ف";s:3:"184";s:5:"ة أ";s:3:"185";s:6:"طاف";s:3:"186";s:5:"عب ";s:3:"187";s:5:"ل م";s:3:"188";s:5:"ن ع";s:3:"189";s:5:"ور ";s:3:"190";s:5:"يا ";s:3:"191";s:5:" يس";s:3:"192";s:5:"ا ت";s:3:"193";s:5:"ة ب";s:3:"194";s:6:"راء";s:3:"195";s:6:"عال";s:3:"196";s:6:"قوا";s:3:"197";s:6:"قية";s:3:"198";s:6:"لعا";s:3:"199";s:5:"م ي";s:3:"200";s:5:"مي ";s:3:"201";s:6:"مية";s:3:"202";s:6:"نية";s:3:"203";s:5:"أي ";s:3:"204";s:6:"ابا";s:3:"205";s:6:"بغد";s:3:"206";s:5:"بل ";s:3:"207";s:5:"رب ";s:3:"208";s:6:"عما";s:3:"209";s:6:"غدا";s:3:"210";s:6:"مال";s:3:"211";s:6:"ملي";s:3:"212";s:5:"يس ";s:3:"213";s:5:" بأ";s:3:"214";s:5:" بع";s:3:"215";s:5:" بغ";s:3:"216";s:5:" وم";s:3:"217";s:6:"بات";s:3:"218";s:6:"بية";s:3:"219";s:6:"ذلك";s:3:"220";s:5:"عة ";s:3:"221";s:6:"قاو";s:3:"222";s:6:"قيي";s:3:"223";s:5:"كي ";s:3:"224";s:5:"م م";s:3:"225";s:5:"ي ع";s:3:"226";s:5:" عر";s:3:"227";s:5:" قا";s:3:"228";s:5:"ا و";s:3:"229";s:5:"رى ";s:3:"230";s:5:"ق ا";s:3:"231";s:6:"وات";s:3:"232";s:5:"وم ";s:3:"233";s:5:" هؤ";s:3:"234";s:5:"ا ب";s:3:"235";s:6:"دام";s:3:"236";s:5:"دي ";s:3:"237";s:6:"رات";s:3:"238";s:6:"شعب";s:3:"239";s:6:"لان";s:3:"240";s:6:"لشع";s:3:"241";s:6:"لقو";s:3:"242";s:6:"ليا";s:3:"243";s:5:"ن ه";s:3:"244";s:5:"ي ت";s:3:"245";s:5:"ي ي";s:3:"246";s:5:" وه";s:3:"247";s:5:" يح";s:3:"248";s:6:"جرا";s:3:"249";s:6:"جما";s:3:"250";s:6:"حمد";s:3:"251";s:5:"دم ";s:3:"252";s:5:"كم ";s:3:"253";s:6:"لاو";s:3:"254";s:6:"لره";s:3:"255";s:6:"ماع";s:3:"256";s:5:"ن ق";s:3:"257";s:5:"نة ";s:3:"258";s:5:"هي ";s:3:"259";s:5:" بل";s:3:"260";s:5:" به";s:3:"261";s:5:" له";s:3:"262";s:5:" وي";s:3:"263";s:5:"ا ك";s:3:"264";s:6:"اذا";s:3:"265";s:5:"اع ";s:3:"266";s:5:"ت م";s:3:"267";s:6:"تخا";s:3:"268";s:6:"خاب";s:3:"269";s:5:"ر م";s:3:"270";s:6:"لمت";s:3:"271";s:6:"مسل";s:3:"272";s:5:"ى أ";s:3:"273";s:6:"يست";s:3:"274";s:6:"يطا";s:3:"275";s:5:" لأ";s:3:"276";s:5:" لي";s:3:"277";s:6:"أمن";s:3:"278";s:6:"است";s:3:"279";s:6:"بعض";s:3:"280";s:5:"ة ت";s:3:"281";s:5:"ري ";s:3:"282";s:6:"صدا";s:3:"283";s:5:"ق و";s:3:"284";s:6:"قول";s:3:"285";s:5:"مد ";s:3:"286";s:6:"نتخ";s:3:"287";s:6:"نفس";s:3:"288";s:6:"نها";s:3:"289";s:6:"هنا";s:3:"290";s:6:"أعم";s:3:"291";s:6:"أنه";s:3:"292";s:6:"ائن";s:3:"293";s:6:"الآ";s:3:"294";s:6:"الك";s:3:"295";s:5:"حة ";s:3:"296";s:5:"د م";s:3:"297";s:5:"ر ع";s:3:"298";s:6:"ربي";s:3:"299";}s:5:"azeri";a:300:{s:4:"lər";s:1:"0";s:3:"in ";s:1:"1";s:4:"ın ";s:1:"2";s:3:"lar";s:1:"3";s:3:"da ";s:1:"4";s:3:"an ";s:1:"5";s:3:"ir ";s:1:"6";s:4:"də ";s:1:"7";s:3:"ki ";s:1:"8";s:3:" bi";s:1:"9";s:4:"ən ";s:2:"10";s:4:"əri";s:2:"11";s:4:"arı";s:2:"12";s:4:"ər ";s:2:"13";s:3:"dir";s:2:"14";s:3:"nda";s:2:"15";s:3:" ki";s:2:"16";s:3:"rin";s:2:"17";s:4:"nın";s:2:"18";s:4:"əsi";s:2:"19";s:3:"ini";s:2:"20";s:3:" ed";s:2:"21";s:3:" qa";s:2:"22";s:4:" tə";s:2:"23";s:3:" ba";s:2:"24";s:3:" ol";s:2:"25";s:4:"ası";s:2:"26";s:4:"ilə";s:2:"27";s:4:"rın";s:2:"28";s:3:" ya";s:2:"29";s:4:"anı";s:2:"30";s:4:" və";s:2:"31";s:4:"ndə";s:2:"32";s:3:"ni ";s:2:"33";s:3:"ara";s:2:"34";s:5:"ını";s:2:"35";s:4:"ınd";s:2:"36";s:3:" bu";s:2:"37";s:3:"si ";s:2:"38";s:3:"ib ";s:2:"39";s:3:"aq ";s:2:"40";s:4:"dən";s:2:"41";s:3:"iya";s:2:"42";s:4:"nə ";s:2:"43";s:4:"rə ";s:2:"44";s:3:"n b";s:2:"45";s:4:"sın";s:2:"46";s:4:"və ";s:2:"47";s:3:"iri";s:2:"48";s:4:"lə ";s:2:"49";s:3:"nin";s:2:"50";s:4:"əli";s:2:"51";s:3:" de";s:2:"52";s:4:" mü";s:2:"53";s:3:"bir";s:2:"54";s:3:"n s";s:2:"55";s:3:"ri ";s:2:"56";s:4:"ək ";s:2:"57";s:3:" az";s:2:"58";s:4:" sə";s:2:"59";s:3:"ar ";s:2:"60";s:3:"bil";s:2:"61";s:4:"zər";s:2:"62";s:3:"bu ";s:2:"63";s:3:"dan";s:2:"64";s:3:"edi";s:2:"65";s:3:"ind";s:2:"66";s:3:"man";s:2:"67";s:3:"un ";s:2:"68";s:5:"ərə";s:2:"69";s:3:" ha";s:2:"70";s:3:"lan";s:2:"71";s:4:"yyə";s:2:"72";s:3:"iyy";s:2:"73";s:3:" il";s:2:"74";s:3:" ne";s:2:"75";s:3:"r k";s:2:"76";s:4:"ə b";s:2:"77";s:3:" is";s:2:"78";s:3:"na ";s:2:"79";s:3:"nun";s:2:"80";s:4:"ır ";s:2:"81";s:3:" da";s:2:"82";s:4:" hə";s:2:"83";s:3:"a b";s:2:"84";s:4:"inə";s:2:"85";s:3:"sin";s:2:"86";s:3:"yan";s:2:"87";s:4:"ərb";s:2:"88";s:4:" də";s:2:"89";s:4:" mə";s:2:"90";s:4:" qə";s:2:"91";s:4:"dır";s:2:"92";s:3:"li ";s:2:"93";s:3:"ola";s:2:"94";s:3:"rba";s:2:"95";s:4:"azə";s:2:"96";s:3:"can";s:2:"97";s:4:"lı ";s:2:"98";s:3:"nla";s:2:"99";s:3:" et";s:3:"100";s:4:" gö";s:3:"101";s:4:"alı";s:3:"102";s:3:"ayc";s:3:"103";s:3:"bay";s:3:"104";s:3:"eft";s:3:"105";s:3:"ist";s:3:"106";s:3:"n i";s:3:"107";s:3:"nef";s:3:"108";s:4:"tlə";s:3:"109";s:3:"yca";s:3:"110";s:4:"yət";s:3:"111";s:5:"əcə";s:3:"112";s:3:" la";s:3:"113";s:3:"ild";s:3:"114";s:4:"nı ";s:3:"115";s:3:"tin";s:3:"116";s:3:"ldi";s:3:"117";s:3:"lik";s:3:"118";s:3:"n h";s:3:"119";s:3:"n m";s:3:"120";s:3:"oyu";s:3:"121";s:3:"raq";s:3:"122";s:3:"ya ";s:3:"123";s:4:"əti";s:3:"124";s:3:" ar";s:3:"125";s:3:"ada";s:3:"126";s:4:"edə";s:3:"127";s:3:"mas";s:3:"128";s:4:"sı ";s:3:"129";s:4:"ına";s:3:"130";s:4:"ə d";s:3:"131";s:5:"ələ";s:3:"132";s:4:"ayı";s:3:"133";s:3:"iyi";s:3:"134";s:3:"lma";s:3:"135";s:4:"mək";s:3:"136";s:3:"n d";s:3:"137";s:3:"ti ";s:3:"138";s:3:"yin";s:3:"139";s:3:"yun";s:3:"140";s:4:"ət ";s:3:"141";s:4:"azı";s:3:"142";s:3:"ft ";s:3:"143";s:3:"i t";s:3:"144";s:3:"lli";s:3:"145";s:3:"n a";s:3:"146";s:3:"ra ";s:3:"147";s:4:" cə";s:3:"148";s:4:" gə";s:3:"149";s:3:" ko";s:3:"150";s:4:" nə";s:3:"151";s:3:" oy";s:3:"152";s:3:"a d";s:3:"153";s:3:"ana";s:3:"154";s:4:"cək";s:3:"155";s:3:"eyi";s:3:"156";s:3:"ilm";s:3:"157";s:3:"irl";s:3:"158";s:3:"lay";s:3:"159";s:3:"liy";s:3:"160";s:3:"lub";s:3:"161";s:4:"n ə";s:3:"162";s:3:"ril";s:3:"163";s:4:"rlə";s:3:"164";s:3:"unu";s:3:"165";s:3:"ver";s:3:"166";s:4:"ün ";s:3:"167";s:4:"ə o";s:3:"168";s:4:"əni";s:3:"169";s:3:" he";s:3:"170";s:3:" ma";s:3:"171";s:3:" on";s:3:"172";s:3:" pa";s:3:"173";s:3:"ala";s:3:"174";s:3:"dey";s:3:"175";s:3:"i m";s:3:"176";s:3:"ima";s:3:"177";s:4:"lmə";s:3:"178";s:4:"mət";s:3:"179";s:3:"par";s:3:"180";s:4:"yə ";s:3:"181";s:4:"ətl";s:3:"182";s:3:" al";s:3:"183";s:3:" mi";s:3:"184";s:3:" sa";s:3:"185";s:4:" əl";s:3:"186";s:4:"adı";s:3:"187";s:4:"akı";s:3:"188";s:3:"and";s:3:"189";s:3:"ard";s:3:"190";s:3:"art";s:3:"191";s:3:"ayi";s:3:"192";s:3:"i a";s:3:"193";s:3:"i q";s:3:"194";s:3:"i y";s:3:"195";s:3:"ili";s:3:"196";s:3:"ill";s:3:"197";s:4:"isə";s:3:"198";s:3:"n o";s:3:"199";s:3:"n q";s:3:"200";s:3:"olu";s:3:"201";s:3:"rla";s:3:"202";s:4:"stə";s:3:"203";s:4:"sə ";s:3:"204";s:3:"tan";s:3:"205";s:3:"tel";s:3:"206";s:3:"yar";s:3:"207";s:5:"ədə";s:3:"208";s:3:" me";s:3:"209";s:4:" rə";s:3:"210";s:3:" ve";s:3:"211";s:3:" ye";s:3:"212";s:3:"a k";s:3:"213";s:3:"at ";s:3:"214";s:4:"baş";s:3:"215";s:3:"diy";s:3:"216";s:3:"ent";s:3:"217";s:3:"eti";s:3:"218";s:4:"həs";s:3:"219";s:3:"i i";s:3:"220";s:3:"ik ";s:3:"221";s:3:"la ";s:3:"222";s:4:"miş";s:3:"223";s:3:"n n";s:3:"224";s:3:"nu ";s:3:"225";s:3:"qar";s:3:"226";s:3:"ran";s:3:"227";s:4:"tər";s:3:"228";s:3:"xan";s:3:"229";s:4:"ə a";s:3:"230";s:4:"ə g";s:3:"231";s:4:"ə t";s:3:"232";s:4:" dü";s:3:"233";s:3:"ama";s:3:"234";s:3:"b k";s:3:"235";s:3:"dil";s:3:"236";s:3:"era";s:3:"237";s:3:"etm";s:3:"238";s:3:"i b";s:3:"239";s:3:"kil";s:3:"240";s:3:"mil";s:3:"241";s:3:"n r";s:3:"242";s:3:"qla";s:3:"243";s:3:"r s";s:3:"244";s:3:"ras";s:3:"245";s:3:"siy";s:3:"246";s:3:"son";s:3:"247";s:3:"tim";s:3:"248";s:3:"yer";s:3:"249";s:4:"ə k";s:3:"250";s:4:" gü";s:3:"251";s:3:" so";s:3:"252";s:4:" sö";s:3:"253";s:3:" te";s:3:"254";s:3:" xa";s:3:"255";s:3:"ai ";s:3:"256";s:3:"bar";s:3:"257";s:3:"cti";s:3:"258";s:3:"di ";s:3:"259";s:3:"eri";s:3:"260";s:4:"gör";s:3:"261";s:4:"gün";s:3:"262";s:4:"gəl";s:3:"263";s:4:"hbə";s:3:"264";s:4:"ihə";s:3:"265";s:3:"iki";s:3:"266";s:3:"isi";s:3:"267";s:3:"lin";s:3:"268";s:3:"mai";s:3:"269";s:3:"maq";s:3:"270";s:3:"n k";s:3:"271";s:3:"n t";s:3:"272";s:3:"n v";s:3:"273";s:3:"onu";s:3:"274";s:3:"qan";s:3:"275";s:4:"qəz";s:3:"276";s:4:"tə ";s:3:"277";s:3:"xal";s:3:"278";s:3:"yib";s:3:"279";s:3:"yih";s:3:"280";s:3:"zet";s:3:"281";s:4:"zır";s:3:"282";s:4:"ıb ";s:3:"283";s:4:"ə m";s:3:"284";s:4:"əze";s:3:"285";s:3:" br";s:3:"286";s:3:" in";s:3:"287";s:4:" i̇";s:3:"288";s:3:" pr";s:3:"289";s:3:" ta";s:3:"290";s:3:" to";s:3:"291";s:5:" üç";s:3:"292";s:3:"a o";s:3:"293";s:3:"ali";s:3:"294";s:3:"ani";s:3:"295";s:3:"anl";s:3:"296";s:3:"aql";s:3:"297";s:3:"azi";s:3:"298";s:3:"bri";s:3:"299";}s:7:"bengali";a:300:{s:7:"ার ";s:1:"0";s:7:"য় ";s:1:"1";s:9:"েয়";s:1:"2";s:9:"য়া";s:1:"3";s:7:" কর";s:1:"4";s:7:"েত ";s:1:"5";s:7:" কা";s:1:"6";s:7:" পা";s:1:"7";s:7:" তা";s:1:"8";s:7:"না ";s:1:"9";s:9:"ায়";s:2:"10";s:7:"ের ";s:2:"11";s:9:"য়ে";s:2:"12";s:7:" বা";s:2:"13";s:7:"েব ";s:2:"14";s:7:" যা";s:2:"15";s:7:" হে";s:2:"16";s:7:" সা";s:2:"17";s:7:"ান ";s:2:"18";s:7:"েছ ";s:2:"19";s:7:" িন";s:2:"20";s:7:"েল ";s:2:"21";s:7:" িদ";s:2:"22";s:7:" না";s:2:"23";s:7:" িব";s:2:"24";s:7:"েক ";s:2:"25";s:7:"লা ";s:2:"26";s:7:"তা ";s:2:"27";s:7:" বઘ";s:2:"28";s:7:" িক";s:2:"29";s:9:"করে";s:2:"30";s:7:" পચ";s:2:"31";s:9:"াের";s:2:"32";s:9:"িনে";s:2:"33";s:7:"রা ";s:2:"34";s:7:" োব";s:2:"35";s:7:"কা ";s:2:"36";s:7:" কে";s:2:"37";s:7:" টা";s:2:"38";s:7:"র ক";s:2:"39";s:9:"েলা";s:2:"40";s:7:" োক";s:2:"41";s:7:" মা";s:2:"42";s:7:" োদ";s:2:"43";s:7:" োম";s:2:"44";s:7:"দর ";s:2:"45";s:7:"়া ";s:2:"46";s:9:"িদে";s:2:"47";s:9:"াকা";s:2:"48";s:9:"়েছ";s:2:"49";s:9:"েদর";s:2:"50";s:7:" আে";s:2:"51";s:5:" ও ";s:2:"52";s:7:"াল ";s:2:"53";s:7:"িট ";s:2:"54";s:7:" মু";s:2:"55";s:9:"কের";s:2:"56";s:9:"হয়";s:2:"57";s:9:"করা";s:2:"58";s:7:"পর ";s:2:"59";s:9:"পাে";s:2:"60";s:7:" এক";s:2:"61";s:7:" পদ";s:2:"62";s:9:"টাক";s:2:"63";s:7:"ড় ";s:2:"64";s:9:"কান";s:2:"65";s:7:"টা ";s:2:"66";s:9:"দગা";s:2:"67";s:9:"পদગ";s:2:"68";s:9:"াড়";s:2:"69";s:9:"োকা";s:2:"70";s:9:"ওয়";s:2:"71";s:9:"কাপ";s:2:"72";s:9:"হেয";s:2:"73";s:9:"েনর";s:2:"74";s:7:" হয";s:2:"75";s:9:"দেয";s:2:"76";s:7:"নর ";s:2:"77";s:9:"ানা";s:2:"78";s:9:"ােল";s:2:"79";s:7:" আর";s:2:"80";s:5:" ় ";s:2:"81";s:9:"বઘব";s:2:"82";s:9:"িয়";s:2:"83";s:7:" দা";s:2:"84";s:7:" সম";s:2:"85";s:9:"কার";s:2:"86";s:9:"হার";s:2:"87";s:7:"াই ";s:2:"88";s:9:"ড়া";s:2:"89";s:9:"িবি";s:2:"90";s:7:" রা";s:2:"91";s:7:" লা";s:2:"92";s:9:"নার";s:2:"93";s:9:"বহা";s:2:"94";s:7:"বা ";s:2:"95";s:9:"যায";s:2:"96";s:7:"েন ";s:2:"97";s:9:"ઘবহ";s:2:"98";s:7:" ভা";s:2:"99";s:7:" সে";s:3:"100";s:7:" োয";s:3:"101";s:7:"রর ";s:3:"102";s:9:"়ার";s:3:"103";s:9:"়াল";s:3:"104";s:7:"ગা ";s:3:"105";s:9:"থেক";s:3:"106";s:9:"ভাে";s:3:"107";s:7:"়ে ";s:3:"108";s:9:"েরর";s:3:"109";s:7:" ধর";s:3:"110";s:7:" হা";s:3:"111";s:7:"নઘ ";s:3:"112";s:9:"রেন";s:3:"113";s:9:"ােব";s:3:"114";s:9:"িড়";s:3:"115";s:7:"ির ";s:3:"116";s:7:" োথ";s:3:"117";s:9:"তার";s:3:"118";s:9:"বিভ";s:3:"119";s:9:"রেত";s:3:"120";s:9:"সাে";s:3:"121";s:9:"াকে";s:3:"122";s:9:"ােত";s:3:"123";s:9:"িভਭ";s:3:"124";s:7:"ে ব";s:3:"125";s:9:"োথে";s:3:"126";s:7:" োপ";s:3:"127";s:7:" োস";s:3:"128";s:9:"বার";s:3:"129";s:7:"ভਭ ";s:3:"130";s:7:"রন ";s:3:"131";s:7:"াম ";s:3:"132";s:7:" এখ";s:3:"133";s:7:"আর ";s:3:"134";s:9:"কাে";s:3:"135";s:7:"দন ";s:3:"136";s:9:"সাজ";s:3:"137";s:9:"ােক";s:3:"138";s:9:"ােন";s:3:"139";s:9:"েনা";s:3:"140";s:7:" ঘে";s:3:"141";s:7:" তে";s:3:"142";s:7:" রে";s:3:"143";s:9:"তেব";s:3:"144";s:7:"বন ";s:3:"145";s:9:"বઘা";s:3:"146";s:9:"েড়";s:3:"147";s:9:"েবন";s:3:"148";s:7:" খু";s:3:"149";s:7:" চা";s:3:"150";s:7:" সু";s:3:"151";s:7:"কে ";s:3:"152";s:9:"ধরে";s:3:"153";s:7:"র ো";s:3:"154";s:7:"় ি";s:3:"155";s:7:"া ি";s:3:"156";s:9:"ােথ";s:3:"157";s:9:"াਠা";s:3:"158";s:7:"িদ ";s:3:"159";s:7:"িন ";s:3:"160";s:7:" অন";s:3:"161";s:7:" আপ";s:3:"162";s:7:" আম";s:3:"163";s:7:" থা";s:3:"164";s:7:" বચ";s:3:"165";s:7:" োফ";s:3:"166";s:7:" ৌত";s:3:"167";s:9:"ঘের";s:3:"168";s:7:"তে ";s:3:"169";s:9:"ময়";s:3:"170";s:9:"যাਠ";s:3:"171";s:7:"র স";s:3:"172";s:9:"রাখ";s:3:"173";s:7:"া ব";s:3:"174";s:7:"া ো";s:3:"175";s:9:"ালা";s:3:"176";s:7:"িক ";s:3:"177";s:7:"িশ ";s:3:"178";s:7:"েখ ";s:3:"179";s:7:" এর";s:3:"180";s:7:" চઓ";s:3:"181";s:7:" িড";s:3:"182";s:7:"খন ";s:3:"183";s:9:"ড়ে";s:3:"184";s:7:"র ব";s:3:"185";s:7:"়র ";s:3:"186";s:9:"াইে";s:3:"187";s:9:"ােদ";s:3:"188";s:9:"িদন";s:3:"189";s:9:"েরন";s:3:"190";s:7:" তੴ";s:3:"191";s:9:"ছাড";s:3:"192";s:9:"জনઘ";s:3:"193";s:9:"তাই";s:3:"194";s:7:"মা ";s:3:"195";s:9:"মাে";s:3:"196";s:9:"লার";s:3:"197";s:7:"াজ ";s:3:"198";s:9:"াতা";s:3:"199";s:9:"ামা";s:3:"200";s:9:"ਊেল";s:3:"201";s:9:"ગার";s:3:"202";s:7:" সব";s:3:"203";s:9:"আপন";s:3:"204";s:9:"একট";s:3:"205";s:9:"কাি";s:3:"206";s:9:"জাই";s:3:"207";s:7:"টর ";s:3:"208";s:9:"ডজা";s:3:"209";s:9:"দেখ";s:3:"210";s:9:"পনা";s:3:"211";s:7:"রও ";s:3:"212";s:7:"লে ";s:3:"213";s:9:"হেব";s:3:"214";s:9:"াজা";s:3:"215";s:9:"ািট";s:3:"216";s:9:"িডজ";s:3:"217";s:7:"েথ ";s:3:"218";s:7:" এব";s:3:"219";s:7:" জন";s:3:"220";s:7:" জা";s:3:"221";s:9:"আমা";s:3:"222";s:9:"গেল";s:3:"223";s:9:"জান";s:3:"224";s:9:"নেত";s:3:"225";s:9:"বিশ";s:3:"226";s:9:"মুে";s:3:"227";s:9:"মেয";s:3:"228";s:7:"র প";s:3:"229";s:7:"সে ";s:3:"230";s:9:"হেল";s:3:"231";s:7:"় ো";s:3:"232";s:7:"া হ";s:3:"233";s:9:"াওয";s:3:"234";s:9:"োমক";s:3:"235";s:9:"ઘাি";s:3:"236";s:7:" অে";s:3:"237";s:5:" ট ";s:3:"238";s:7:" োগ";s:3:"239";s:7:" োন";s:3:"240";s:7:"জর ";s:3:"241";s:9:"তির";s:3:"242";s:9:"দাম";s:3:"243";s:9:"পড়";s:3:"244";s:9:"পার";s:3:"245";s:9:"বাঘ";s:3:"246";s:9:"মকা";s:3:"247";s:9:"মাম";s:3:"248";s:9:"য়র";s:3:"249";s:9:"যাে";s:3:"250";s:7:"র ম";s:3:"251";s:7:"রে ";s:3:"252";s:7:"লর ";s:3:"253";s:7:"া ক";s:3:"254";s:7:"াগ ";s:3:"255";s:9:"াবা";s:3:"256";s:9:"ারা";s:3:"257";s:9:"ািন";s:3:"258";s:7:"ে গ";s:3:"259";s:7:"েগ ";s:3:"260";s:9:"েলর";s:3:"261";s:9:"োদখ";s:3:"262";s:9:"োবি";s:3:"263";s:7:"ઓল ";s:3:"264";s:7:" দে";s:3:"265";s:7:" পু";s:3:"266";s:7:" বে";s:3:"267";s:9:"অেন";s:3:"268";s:9:"এখন";s:3:"269";s:9:"কছু";s:3:"270";s:9:"কাল";s:3:"271";s:9:"গেয";s:3:"272";s:7:"ছন ";s:3:"273";s:7:"ত প";s:3:"274";s:9:"নেয";s:3:"275";s:9:"পাি";s:3:"276";s:7:"মন ";s:3:"277";s:7:"র আ";s:3:"278";s:9:"রার";s:3:"279";s:7:"াও ";s:3:"280";s:7:"াপ ";s:3:"281";s:9:"িকছ";s:3:"282";s:9:"িগে";s:3:"283";s:9:"েছন";s:3:"284";s:9:"েজর";s:3:"285";s:9:"োমা";s:3:"286";s:9:"োমে";s:3:"287";s:9:"ৌতি";s:3:"288";s:9:"ઘাে";s:3:"289";s:3:" ' ";s:3:"290";s:7:" এছ";s:3:"291";s:7:" ছা";s:3:"292";s:7:" বল";s:3:"293";s:7:" যি";s:3:"294";s:7:" শি";s:3:"295";s:7:" িম";s:3:"296";s:7:" োল";s:3:"297";s:9:"এছা";s:3:"298";s:7:"খা ";s:3:"299";}s:9:"bulgarian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"то ";s:1:"2";s:5:" пр";s:1:"3";s:5:" за";s:1:"4";s:5:"та ";s:1:"5";s:5:" по";s:1:"6";s:6:"ите";s:1:"7";s:5:"те ";s:1:"8";s:5:"а п";s:1:"9";s:5:"а с";s:2:"10";s:5:" от";s:2:"11";s:5:"за ";s:2:"12";s:6:"ата";s:2:"13";s:5:"ия ";s:2:"14";s:4:" в ";s:2:"15";s:5:"е н";s:2:"16";s:5:" да";s:2:"17";s:5:"а н";s:2:"18";s:5:" се";s:2:"19";s:5:" ко";s:2:"20";s:5:"да ";s:2:"21";s:5:"от ";s:2:"22";s:6:"ани";s:2:"23";s:6:"пре";s:2:"24";s:5:"не ";s:2:"25";s:6:"ени";s:2:"26";s:5:"о н";s:2:"27";s:5:"ни ";s:2:"28";s:5:"се ";s:2:"29";s:4:" и ";s:2:"30";s:5:"но ";s:2:"31";s:6:"ане";s:2:"32";s:6:"ето";s:2:"33";s:5:"а в";s:2:"34";s:5:"ва ";s:2:"35";s:6:"ван";s:2:"36";s:5:"е п";s:2:"37";s:5:"а о";s:2:"38";s:6:"ото";s:2:"39";s:6:"ран";s:2:"40";s:5:"ат ";s:2:"41";s:6:"ред";s:2:"42";s:5:" не";s:2:"43";s:5:"а д";s:2:"44";s:5:"и п";s:2:"45";s:5:" до";s:2:"46";s:6:"про";s:2:"47";s:5:" съ";s:2:"48";s:5:"ли ";s:2:"49";s:6:"при";s:2:"50";s:6:"ния";s:2:"51";s:6:"ски";s:2:"52";s:6:"тел";s:2:"53";s:5:"а и";s:2:"54";s:5:"по ";s:2:"55";s:5:"ри ";s:2:"56";s:4:" е ";s:2:"57";s:5:" ка";s:2:"58";s:6:"ира";s:2:"59";s:6:"кат";s:2:"60";s:6:"ние";s:2:"61";s:6:"нит";s:2:"62";s:5:"е з";s:2:"63";s:5:"и с";s:2:"64";s:5:"о с";s:2:"65";s:6:"ост";s:2:"66";s:5:"че ";s:2:"67";s:5:" ра";s:2:"68";s:6:"ист";s:2:"69";s:5:"о п";s:2:"70";s:5:" из";s:2:"71";s:5:" са";s:2:"72";s:5:"е д";s:2:"73";s:6:"ини";s:2:"74";s:5:"ки ";s:2:"75";s:6:"мин";s:2:"76";s:5:" ми";s:2:"77";s:5:"а б";s:2:"78";s:6:"ава";s:2:"79";s:5:"е в";s:2:"80";s:5:"ие ";s:2:"81";s:6:"пол";s:2:"82";s:6:"ств";s:2:"83";s:5:"т н";s:2:"84";s:5:" въ";s:2:"85";s:5:" ст";s:2:"86";s:5:" то";s:2:"87";s:6:"аза";s:2:"88";s:5:"е о";s:2:"89";s:5:"ов ";s:2:"90";s:5:"ст ";s:2:"91";s:5:"ът ";s:2:"92";s:5:"и н";s:2:"93";s:6:"ият";s:2:"94";s:6:"нат";s:2:"95";s:5:"ра ";s:2:"96";s:5:" бъ";s:2:"97";s:5:" че";s:2:"98";s:6:"алн";s:2:"99";s:5:"е с";s:3:"100";s:5:"ен ";s:3:"101";s:6:"ест";s:3:"102";s:5:"и д";s:3:"103";s:6:"лен";s:3:"104";s:6:"нис";s:3:"105";s:5:"о о";s:3:"106";s:6:"ови";s:3:"107";s:5:" об";s:3:"108";s:5:" сл";s:3:"109";s:5:"а р";s:3:"110";s:6:"ато";s:3:"111";s:6:"кон";s:3:"112";s:6:"нос";s:3:"113";s:6:"ров";s:3:"114";s:5:"ще ";s:3:"115";s:5:" ре";s:3:"116";s:4:" с ";s:3:"117";s:5:" сп";s:3:"118";s:6:"ват";s:3:"119";s:6:"еше";s:3:"120";s:5:"и в";s:3:"121";s:6:"иет";s:3:"122";s:5:"о в";s:3:"123";s:6:"ове";s:3:"124";s:6:"ста";s:3:"125";s:5:"а к";s:3:"126";s:5:"а т";s:3:"127";s:6:"дат";s:3:"128";s:6:"ент";s:3:"129";s:5:"ка ";s:3:"130";s:6:"лед";s:3:"131";s:6:"нет";s:3:"132";s:6:"ори";s:3:"133";s:6:"стр";s:3:"134";s:6:"стъ";s:3:"135";s:5:"ти ";s:3:"136";s:6:"тър";s:3:"137";s:5:" те";s:3:"138";s:5:"а з";s:3:"139";s:5:"а м";s:3:"140";s:5:"ад ";s:3:"141";s:6:"ана";s:3:"142";s:6:"ено";s:3:"143";s:5:"и о";s:3:"144";s:6:"ина";s:3:"145";s:6:"ити";s:3:"146";s:5:"ма ";s:3:"147";s:6:"ска";s:3:"148";s:6:"сле";s:3:"149";s:6:"тво";s:3:"150";s:6:"тер";s:3:"151";s:6:"ция";s:3:"152";s:5:"ят ";s:3:"153";s:5:" бе";s:3:"154";s:5:" де";s:3:"155";s:5:" па";s:3:"156";s:6:"ате";s:3:"157";s:6:"вен";s:3:"158";s:5:"ви ";s:3:"159";s:6:"вит";s:3:"160";s:5:"и з";s:3:"161";s:5:"и и";s:3:"162";s:6:"нар";s:3:"163";s:6:"нов";s:3:"164";s:6:"ова";s:3:"165";s:6:"пов";s:3:"166";s:6:"рез";s:3:"167";s:6:"рит";s:3:"168";s:5:"са ";s:3:"169";s:6:"ята";s:3:"170";s:5:" го";s:3:"171";s:5:" ще";s:3:"172";s:6:"али";s:3:"173";s:5:"в п";s:3:"174";s:6:"гра";s:3:"175";s:5:"е и";s:3:"176";s:6:"еди";s:3:"177";s:6:"ели";s:3:"178";s:6:"или";s:3:"179";s:6:"каз";s:3:"180";s:6:"кит";s:3:"181";s:6:"лно";s:3:"182";s:6:"мен";s:3:"183";s:6:"оли";s:3:"184";s:6:"раз";s:3:"185";s:5:" ве";s:3:"186";s:5:" гр";s:3:"187";s:5:" им";s:3:"188";s:5:" ме";s:3:"189";s:5:" пъ";s:3:"190";s:6:"ави";s:3:"191";s:6:"ако";s:3:"192";s:6:"ача";s:3:"193";s:6:"вин";s:3:"194";s:5:"во ";s:3:"195";s:6:"гов";s:3:"196";s:6:"дан";s:3:"197";s:5:"ди ";s:3:"198";s:5:"до ";s:3:"199";s:5:"ед ";s:3:"200";s:6:"ери";s:3:"201";s:6:"еро";s:3:"202";s:6:"жда";s:3:"203";s:6:"ито";s:3:"204";s:6:"ков";s:3:"205";s:6:"кол";s:3:"206";s:6:"лни";s:3:"207";s:6:"мер";s:3:"208";s:6:"нач";s:3:"209";s:5:"о з";s:3:"210";s:6:"ола";s:3:"211";s:5:"он ";s:3:"212";s:6:"она";s:3:"213";s:6:"пра";s:3:"214";s:6:"рав";s:3:"215";s:6:"рем";s:3:"216";s:6:"сия";s:3:"217";s:6:"сти";s:3:"218";s:5:"т п";s:3:"219";s:6:"тан";s:3:"220";s:5:"ха ";s:3:"221";s:5:"ше ";s:3:"222";s:6:"шен";s:3:"223";s:6:"ълг";s:3:"224";s:5:" ба";s:3:"225";s:5:" си";s:3:"226";s:6:"аро";s:3:"227";s:6:"бъл";s:3:"228";s:5:"в р";s:3:"229";s:6:"гар";s:3:"230";s:5:"е е";s:3:"231";s:6:"елн";s:3:"232";s:6:"еме";s:3:"233";s:6:"ико";s:3:"234";s:6:"има";s:3:"235";s:5:"ко ";s:3:"236";s:6:"кои";s:3:"237";s:5:"ла ";s:3:"238";s:6:"лга";s:3:"239";s:5:"о д";s:3:"240";s:6:"ози";s:3:"241";s:6:"оит";s:3:"242";s:6:"под";s:3:"243";s:6:"рес";s:3:"244";s:6:"рие";s:3:"245";s:6:"сто";s:3:"246";s:5:"т к";s:3:"247";s:5:"т м";s:3:"248";s:5:"т с";s:3:"249";s:6:"уст";s:3:"250";s:5:" би";s:3:"251";s:5:" дв";s:3:"252";s:5:" дъ";s:3:"253";s:5:" ма";s:3:"254";s:5:" мо";s:3:"255";s:5:" ни";s:3:"256";s:5:" ос";s:3:"257";s:6:"ала";s:3:"258";s:6:"анс";s:3:"259";s:6:"ара";s:3:"260";s:6:"ати";s:3:"261";s:6:"аци";s:3:"262";s:6:"беш";s:3:"263";s:6:"вър";s:3:"264";s:5:"е р";s:3:"265";s:6:"едв";s:3:"266";s:6:"ема";s:3:"267";s:6:"жав";s:3:"268";s:5:"и к";s:3:"269";s:6:"иал";s:3:"270";s:6:"ица";s:3:"271";s:6:"иче";s:3:"272";s:6:"кия";s:3:"273";s:6:"лит";s:3:"274";s:5:"о б";s:3:"275";s:6:"ово";s:3:"276";s:6:"оди";s:3:"277";s:6:"ока";s:3:"278";s:6:"пос";s:3:"279";s:6:"род";s:3:"280";s:6:"сед";s:3:"281";s:6:"слу";s:3:"282";s:5:"т и";s:3:"283";s:6:"тов";s:3:"284";s:6:"ува";s:3:"285";s:6:"циа";s:3:"286";s:6:"чес";s:3:"287";s:5:"я з";s:3:"288";s:5:" во";s:3:"289";s:5:" ил";s:3:"290";s:5:" ск";s:3:"291";s:5:" тр";s:3:"292";s:5:" це";s:3:"293";s:6:"ами";s:3:"294";s:6:"ари";s:3:"295";s:6:"бат";s:3:"296";s:5:"би ";s:3:"297";s:6:"бра";s:3:"298";s:6:"бъд";s:3:"299";}s:7:"cebuano";a:300:{s:3:"ng ";s:1:"0";s:3:"sa ";s:1:"1";s:3:" sa";s:1:"2";s:3:"ang";s:1:"3";s:3:"ga ";s:1:"4";s:3:"nga";s:1:"5";s:3:" ka";s:1:"6";s:3:" ng";s:1:"7";s:3:"an ";s:1:"8";s:3:" an";s:1:"9";s:3:" na";s:2:"10";s:3:" ma";s:2:"11";s:3:" ni";s:2:"12";s:3:"a s";s:2:"13";s:3:"a n";s:2:"14";s:3:"on ";s:2:"15";s:3:" pa";s:2:"16";s:3:" si";s:2:"17";s:3:"a k";s:2:"18";s:3:"a m";s:2:"19";s:3:" ba";s:2:"20";s:3:"ong";s:2:"21";s:3:"a i";s:2:"22";s:3:"ila";s:2:"23";s:3:" mg";s:2:"24";s:3:"mga";s:2:"25";s:3:"a p";s:2:"26";s:3:"iya";s:2:"27";s:3:"a a";s:2:"28";s:3:"ay ";s:2:"29";s:3:"ka ";s:2:"30";s:3:"ala";s:2:"31";s:3:"ing";s:2:"32";s:3:"g m";s:2:"33";s:3:"n s";s:2:"34";s:3:"g n";s:2:"35";s:3:"lan";s:2:"36";s:3:" gi";s:2:"37";s:3:"na ";s:2:"38";s:3:"ni ";s:2:"39";s:3:"o s";s:2:"40";s:3:"g p";s:2:"41";s:3:"n n";s:2:"42";s:3:" da";s:2:"43";s:3:"ag ";s:2:"44";s:3:"pag";s:2:"45";s:3:"g s";s:2:"46";s:3:"yan";s:2:"47";s:3:"ayo";s:2:"48";s:3:"o n";s:2:"49";s:3:"si ";s:2:"50";s:3:" mo";s:2:"51";s:3:"a b";s:2:"52";s:3:"g a";s:2:"53";s:3:"ail";s:2:"54";s:3:"g b";s:2:"55";s:3:"han";s:2:"56";s:3:"a d";s:2:"57";s:3:"asu";s:2:"58";s:3:"nag";s:2:"59";s:3:"ya ";s:2:"60";s:3:"man";s:2:"61";s:3:"ne ";s:2:"62";s:3:"pan";s:2:"63";s:3:"kon";s:2:"64";s:3:" il";s:2:"65";s:3:" la";s:2:"66";s:3:"aka";s:2:"67";s:3:"ako";s:2:"68";s:3:"ana";s:2:"69";s:3:"bas";s:2:"70";s:3:"ko ";s:2:"71";s:3:"od ";s:2:"72";s:3:"yo ";s:2:"73";s:3:" di";s:2:"74";s:3:" ko";s:2:"75";s:3:" ug";s:2:"76";s:3:"a u";s:2:"77";s:3:"g k";s:2:"78";s:3:"kan";s:2:"79";s:3:"la ";s:2:"80";s:3:"len";s:2:"81";s:3:"sur";s:2:"82";s:3:"ug ";s:2:"83";s:3:" ai";s:2:"84";s:3:"apa";s:2:"85";s:3:"aw ";s:2:"86";s:3:"d s";s:2:"87";s:3:"g d";s:2:"88";s:3:"g g";s:2:"89";s:3:"ile";s:2:"90";s:3:"nin";s:2:"91";s:3:" iy";s:2:"92";s:3:" su";s:2:"93";s:3:"ene";s:2:"94";s:3:"og ";s:2:"95";s:3:"ot ";s:2:"96";s:3:"aba";s:2:"97";s:3:"aha";s:2:"98";s:3:"as ";s:2:"99";s:3:"imo";s:3:"100";s:3:" ki";s:3:"101";s:3:"a t";s:3:"102";s:3:"aga";s:3:"103";s:3:"ban";s:3:"104";s:3:"ero";s:3:"105";s:3:"nan";s:3:"106";s:3:"o k";s:3:"107";s:3:"ran";s:3:"108";s:3:"ron";s:3:"109";s:3:"sil";s:3:"110";s:3:"una";s:3:"111";s:3:"usa";s:3:"112";s:3:" us";s:3:"113";s:3:"a g";s:3:"114";s:3:"ahi";s:3:"115";s:3:"ani";s:3:"116";s:3:"er ";s:3:"117";s:3:"ha ";s:3:"118";s:3:"i a";s:3:"119";s:3:"rer";s:3:"120";s:3:"yon";s:3:"121";s:3:" pu";s:3:"122";s:3:"ini";s:3:"123";s:3:"nak";s:3:"124";s:3:"ro ";s:3:"125";s:3:"to ";s:3:"126";s:3:"ure";s:3:"127";s:3:" ed";s:3:"128";s:3:" og";s:3:"129";s:3:" wa";s:3:"130";s:3:"ili";s:3:"131";s:3:"mo ";s:3:"132";s:3:"n a";s:3:"133";s:3:"nd ";s:3:"134";s:3:"o a";s:3:"135";s:3:" ad";s:3:"136";s:3:" du";s:3:"137";s:3:" pr";s:3:"138";s:3:"aro";s:3:"139";s:3:"i s";s:3:"140";s:3:"ma ";s:3:"141";s:3:"n m";s:3:"142";s:3:"ulo";s:3:"143";s:3:"und";s:3:"144";s:3:" ta";s:3:"145";s:3:"ara";s:3:"146";s:3:"asa";s:3:"147";s:3:"ato";s:3:"148";s:3:"awa";s:3:"149";s:3:"dmu";s:3:"150";s:3:"e n";s:3:"151";s:3:"edm";s:3:"152";s:3:"ina";s:3:"153";s:3:"mak";s:3:"154";s:3:"mun";s:3:"155";s:3:"niy";s:3:"156";s:3:"san";s:3:"157";s:3:"wa ";s:3:"158";s:3:" tu";s:3:"159";s:3:" un";s:3:"160";s:3:"a l";s:3:"161";s:3:"bay";s:3:"162";s:3:"iga";s:3:"163";s:3:"ika";s:3:"164";s:3:"ita";s:3:"165";s:3:"kin";s:3:"166";s:3:"lis";s:3:"167";s:3:"may";s:3:"168";s:3:"os ";s:3:"169";s:3:" ar";s:3:"170";s:3:"ad ";s:3:"171";s:3:"ali";s:3:"172";s:3:"ama";s:3:"173";s:3:"ers";s:3:"174";s:3:"ipa";s:3:"175";s:3:"isa";s:3:"176";s:3:"mao";s:3:"177";s:3:"nim";s:3:"178";s:3:"t s";s:3:"179";s:3:"tin";s:3:"180";s:3:" ak";s:3:"181";s:3:" ap";s:3:"182";s:3:" hi";s:3:"183";s:3:"abo";s:3:"184";s:3:"agp";s:3:"185";s:3:"ano";s:3:"186";s:3:"ata";s:3:"187";s:3:"g i";s:3:"188";s:3:"gan";s:3:"189";s:3:"gka";s:3:"190";s:3:"gpa";s:3:"191";s:3:"i m";s:3:"192";s:3:"iha";s:3:"193";s:3:"k s";s:3:"194";s:3:"law";s:3:"195";s:3:"or ";s:3:"196";s:3:"rs ";s:3:"197";s:3:"siy";s:3:"198";s:3:"tag";s:3:"199";s:3:" al";s:3:"200";s:3:" at";s:3:"201";s:3:" ha";s:3:"202";s:3:" hu";s:3:"203";s:3:" im";s:3:"204";s:3:"a h";s:3:"205";s:3:"bu ";s:3:"206";s:3:"e s";s:3:"207";s:3:"gma";s:3:"208";s:3:"kas";s:3:"209";s:3:"lag";s:3:"210";s:3:"mon";s:3:"211";s:3:"nah";s:3:"212";s:3:"ngo";s:3:"213";s:3:"r s";s:3:"214";s:3:"ra ";s:3:"215";s:3:"sab";s:3:"216";s:3:"sam";s:3:"217";s:3:"sul";s:3:"218";s:3:"uba";s:3:"219";s:3:"uha";s:3:"220";s:3:" lo";s:3:"221";s:3:" re";s:3:"222";s:3:"ada";s:3:"223";s:3:"aki";s:3:"224";s:3:"aya";s:3:"225";s:3:"bah";s:3:"226";s:3:"ce ";s:3:"227";s:3:"d n";s:3:"228";s:3:"lab";s:3:"229";s:3:"pa ";s:3:"230";s:3:"pak";s:3:"231";s:3:"s n";s:3:"232";s:3:"s s";s:3:"233";s:3:"tan";s:3:"234";s:3:"taw";s:3:"235";s:3:"te ";s:3:"236";s:3:"uma";s:3:"237";s:3:"ura";s:3:"238";s:3:" in";s:3:"239";s:3:" lu";s:3:"240";s:3:"a c";s:3:"241";s:3:"abi";s:3:"242";s:3:"at ";s:3:"243";s:3:"awo";s:3:"244";s:3:"bat";s:3:"245";s:3:"dal";s:3:"246";s:3:"dla";s:3:"247";s:3:"ele";s:3:"248";s:3:"g t";s:3:"249";s:3:"g u";s:3:"250";s:3:"gay";s:3:"251";s:3:"go ";s:3:"252";s:3:"hab";s:3:"253";s:3:"hin";s:3:"254";s:3:"i e";s:3:"255";s:3:"i n";s:3:"256";s:3:"kab";s:3:"257";s:3:"kap";s:3:"258";s:3:"lay";s:3:"259";s:3:"lin";s:3:"260";s:3:"nil";s:3:"261";s:3:"pam";s:3:"262";s:3:"pas";s:3:"263";s:3:"pro";s:3:"264";s:3:"pul";s:3:"265";s:3:"ta ";s:3:"266";s:3:"ton";s:3:"267";s:3:"uga";s:3:"268";s:3:"ugm";s:3:"269";s:3:"unt";s:3:"270";s:3:" co";s:3:"271";s:3:" gu";s:3:"272";s:3:" mi";s:3:"273";s:3:" pi";s:3:"274";s:3:" ti";s:3:"275";s:3:"a o";s:3:"276";s:3:"abu";s:3:"277";s:3:"adl";s:3:"278";s:3:"ado";s:3:"279";s:3:"agh";s:3:"280";s:3:"agk";s:3:"281";s:3:"ao ";s:3:"282";s:3:"art";s:3:"283";s:3:"bal";s:3:"284";s:3:"cit";s:3:"285";s:3:"di ";s:3:"286";s:3:"dto";s:3:"287";s:3:"dun";s:3:"288";s:3:"ent";s:3:"289";s:3:"g e";s:3:"290";s:3:"gon";s:3:"291";s:3:"gug";s:3:"292";s:3:"ia ";s:3:"293";s:3:"iba";s:3:"294";s:3:"ice";s:3:"295";s:3:"in ";s:3:"296";s:3:"inu";s:3:"297";s:3:"it ";s:3:"298";s:3:"kaa";s:3:"299";}s:8:"croatian";a:300:{s:3:"je ";s:1:"0";s:3:" na";s:1:"1";s:3:" pr";s:1:"2";s:3:" po";s:1:"3";s:3:"na ";s:1:"4";s:3:" je";s:1:"5";s:3:" za";s:1:"6";s:3:"ije";s:1:"7";s:3:"ne ";s:1:"8";s:3:" i ";s:1:"9";s:3:"ti ";s:2:"10";s:3:"da ";s:2:"11";s:3:" ko";s:2:"12";s:3:" ne";s:2:"13";s:3:"li ";s:2:"14";s:3:" bi";s:2:"15";s:3:" da";s:2:"16";s:3:" u ";s:2:"17";s:3:"ma ";s:2:"18";s:3:"mo ";s:2:"19";s:3:"a n";s:2:"20";s:3:"ih ";s:2:"21";s:3:"za ";s:2:"22";s:3:"a s";s:2:"23";s:3:"ko ";s:2:"24";s:3:"i s";s:2:"25";s:3:"a p";s:2:"26";s:3:"koj";s:2:"27";s:3:"pro";s:2:"28";s:3:"ju ";s:2:"29";s:3:"se ";s:2:"30";s:3:" go";s:2:"31";s:3:"ost";s:2:"32";s:3:"to ";s:2:"33";s:3:"va ";s:2:"34";s:3:" do";s:2:"35";s:3:" to";s:2:"36";s:3:"e n";s:2:"37";s:3:"i p";s:2:"38";s:3:" od";s:2:"39";s:3:" ra";s:2:"40";s:3:"no ";s:2:"41";s:3:"ako";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ni ";s:2:"44";s:3:" ka";s:2:"45";s:3:" se";s:2:"46";s:3:" mo";s:2:"47";s:3:" st";s:2:"48";s:3:"i n";s:2:"49";s:3:"ima";s:2:"50";s:3:"ja ";s:2:"51";s:3:"pri";s:2:"52";s:3:"vat";s:2:"53";s:3:"sta";s:2:"54";s:3:" su";s:2:"55";s:3:"ati";s:2:"56";s:3:"e p";s:2:"57";s:3:"ta ";s:2:"58";s:3:"tsk";s:2:"59";s:3:"e i";s:2:"60";s:3:"nij";s:2:"61";s:3:" tr";s:2:"62";s:3:"cij";s:2:"63";s:3:"jen";s:2:"64";s:3:"nos";s:2:"65";s:3:"o s";s:2:"66";s:3:" iz";s:2:"67";s:3:"om ";s:2:"68";s:3:"tro";s:2:"69";s:3:"ili";s:2:"70";s:3:"iti";s:2:"71";s:3:"pos";s:2:"72";s:3:" al";s:2:"73";s:3:"a i";s:2:"74";s:3:"a o";s:2:"75";s:3:"e s";s:2:"76";s:3:"ija";s:2:"77";s:3:"ini";s:2:"78";s:3:"pre";s:2:"79";s:3:"str";s:2:"80";s:3:"la ";s:2:"81";s:3:"og ";s:2:"82";s:3:"ovo";s:2:"83";s:3:" sv";s:2:"84";s:3:"ekt";s:2:"85";s:3:"nje";s:2:"86";s:3:"o p";s:2:"87";s:3:"odi";s:2:"88";s:3:"rva";s:2:"89";s:3:" ni";s:2:"90";s:3:"ali";s:2:"91";s:3:"min";s:2:"92";s:3:"rij";s:2:"93";s:3:"a t";s:2:"94";s:3:"a z";s:2:"95";s:3:"ats";s:2:"96";s:3:"iva";s:2:"97";s:3:"o t";s:2:"98";s:3:"od ";s:2:"99";s:3:"oje";s:3:"100";s:3:"ra ";s:3:"101";s:3:" hr";s:3:"102";s:3:"a m";s:3:"103";s:3:"a u";s:3:"104";s:3:"hrv";s:3:"105";s:3:"im ";s:3:"106";s:3:"ke ";s:3:"107";s:3:"o i";s:3:"108";s:3:"ovi";s:3:"109";s:3:"red";s:3:"110";s:3:"riv";s:3:"111";s:3:"te ";s:3:"112";s:3:"bi ";s:3:"113";s:3:"e o";s:3:"114";s:3:"god";s:3:"115";s:3:"i d";s:3:"116";s:3:"lek";s:3:"117";s:3:"umi";s:3:"118";s:3:"zvo";s:3:"119";s:3:"din";s:3:"120";s:3:"e u";s:3:"121";s:3:"ene";s:3:"122";s:3:"jed";s:3:"123";s:3:"ji ";s:3:"124";s:3:"lje";s:3:"125";s:3:"nog";s:3:"126";s:3:"su ";s:3:"127";s:3:" a ";s:3:"128";s:3:" el";s:3:"129";s:3:" mi";s:3:"130";s:3:" o ";s:3:"131";s:3:"a d";s:3:"132";s:3:"alu";s:3:"133";s:3:"ele";s:3:"134";s:3:"i u";s:3:"135";s:3:"izv";s:3:"136";s:3:"ktr";s:3:"137";s:3:"lum";s:3:"138";s:3:"o d";s:3:"139";s:3:"ori";s:3:"140";s:3:"rad";s:3:"141";s:3:"sto";s:3:"142";s:3:"a k";s:3:"143";s:3:"anj";s:3:"144";s:3:"ava";s:3:"145";s:3:"e k";s:3:"146";s:3:"men";s:3:"147";s:3:"nic";s:3:"148";s:3:"o j";s:3:"149";s:3:"oj ";s:3:"150";s:3:"ove";s:3:"151";s:3:"ski";s:3:"152";s:3:"tvr";s:3:"153";s:3:"una";s:3:"154";s:3:"vor";s:3:"155";s:3:" di";s:3:"156";s:3:" no";s:3:"157";s:3:" s ";s:3:"158";s:3:" ta";s:3:"159";s:3:" tv";s:3:"160";s:3:"i i";s:3:"161";s:3:"i o";s:3:"162";s:3:"kak";s:3:"163";s:4:"roš";s:3:"164";s:3:"sko";s:3:"165";s:3:"vod";s:3:"166";s:3:" sa";s:3:"167";s:4:" će";s:3:"168";s:3:"a b";s:3:"169";s:3:"adi";s:3:"170";s:3:"amo";s:3:"171";s:3:"eni";s:3:"172";s:3:"gov";s:3:"173";s:3:"iju";s:3:"174";s:3:"ku ";s:3:"175";s:3:"o n";s:3:"176";s:3:"ora";s:3:"177";s:3:"rav";s:3:"178";s:3:"ruj";s:3:"179";s:3:"smo";s:3:"180";s:3:"tav";s:3:"181";s:3:"tru";s:3:"182";s:3:"u p";s:3:"183";s:3:"ve ";s:3:"184";s:3:" in";s:3:"185";s:3:" pl";s:3:"186";s:3:"aci";s:3:"187";s:3:"bit";s:3:"188";s:3:"de ";s:3:"189";s:4:"diš";s:3:"190";s:3:"ema";s:3:"191";s:3:"i m";s:3:"192";s:3:"ika";s:3:"193";s:4:"išt";s:3:"194";s:3:"jer";s:3:"195";s:3:"ki ";s:3:"196";s:3:"mog";s:3:"197";s:3:"nik";s:3:"198";s:3:"nov";s:3:"199";s:3:"nu ";s:3:"200";s:3:"oji";s:3:"201";s:3:"oli";s:3:"202";s:3:"pla";s:3:"203";s:3:"pod";s:3:"204";s:3:"st ";s:3:"205";s:3:"sti";s:3:"206";s:3:"tra";s:3:"207";s:3:"tre";s:3:"208";s:3:"vo ";s:3:"209";s:3:" sm";s:3:"210";s:4:" št";s:3:"211";s:3:"dan";s:3:"212";s:3:"e z";s:3:"213";s:3:"i t";s:3:"214";s:3:"io ";s:3:"215";s:3:"ist";s:3:"216";s:3:"kon";s:3:"217";s:3:"lo ";s:3:"218";s:3:"stv";s:3:"219";s:3:"u s";s:3:"220";s:3:"uje";s:3:"221";s:3:"ust";s:3:"222";s:4:"će ";s:3:"223";s:4:"ći ";s:3:"224";s:4:"što";s:3:"225";s:3:" dr";s:3:"226";s:3:" im";s:3:"227";s:3:" li";s:3:"228";s:3:"ada";s:3:"229";s:3:"aft";s:3:"230";s:3:"ani";s:3:"231";s:3:"ao ";s:3:"232";s:3:"ars";s:3:"233";s:3:"ata";s:3:"234";s:3:"e t";s:3:"235";s:3:"emo";s:3:"236";s:3:"i k";s:3:"237";s:3:"ine";s:3:"238";s:3:"jem";s:3:"239";s:3:"kov";s:3:"240";s:3:"lik";s:3:"241";s:3:"lji";s:3:"242";s:3:"mje";s:3:"243";s:3:"naf";s:3:"244";s:3:"ner";s:3:"245";s:3:"nih";s:3:"246";s:3:"nja";s:3:"247";s:3:"ogo";s:3:"248";s:3:"oiz";s:3:"249";s:3:"ome";s:3:"250";s:3:"pot";s:3:"251";s:3:"ran";s:3:"252";s:3:"ri ";s:3:"253";s:3:"roi";s:3:"254";s:3:"rtk";s:3:"255";s:3:"ska";s:3:"256";s:3:"ter";s:3:"257";s:3:"u i";s:3:"258";s:3:"u o";s:3:"259";s:3:"vi ";s:3:"260";s:3:"vrt";s:3:"261";s:3:" me";s:3:"262";s:3:" ug";s:3:"263";s:3:"ak ";s:3:"264";s:3:"ama";s:3:"265";s:4:"drž";s:3:"266";s:3:"e e";s:3:"267";s:3:"e g";s:3:"268";s:3:"e m";s:3:"269";s:3:"em ";s:3:"270";s:3:"eme";s:3:"271";s:3:"enj";s:3:"272";s:3:"ent";s:3:"273";s:3:"er ";s:3:"274";s:3:"ere";s:3:"275";s:3:"erg";s:3:"276";s:3:"eur";s:3:"277";s:3:"go ";s:3:"278";s:3:"i b";s:3:"279";s:3:"i z";s:3:"280";s:3:"jet";s:3:"281";s:3:"ksi";s:3:"282";s:3:"o u";s:3:"283";s:3:"oda";s:3:"284";s:3:"ona";s:3:"285";s:3:"pra";s:3:"286";s:3:"reb";s:3:"287";s:3:"rem";s:3:"288";s:3:"rop";s:3:"289";s:3:"tri";s:3:"290";s:4:"žav";s:3:"291";s:3:" ci";s:3:"292";s:3:" eu";s:3:"293";s:3:" re";s:3:"294";s:3:" te";s:3:"295";s:3:" uv";s:3:"296";s:3:" ve";s:3:"297";s:3:"aju";s:3:"298";s:3:"an ";s:3:"299";}s:5:"czech";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:4:"ní ";s:1:"2";s:3:"pro";s:1:"3";s:3:" na";s:1:"4";s:3:"na ";s:1:"5";s:4:" př";s:1:"6";s:3:"ch ";s:1:"7";s:3:" je";s:1:"8";s:3:" ne";s:1:"9";s:4:"že ";s:2:"10";s:4:" že";s:2:"11";s:3:" se";s:2:"12";s:3:" do";s:2:"13";s:3:" ro";s:2:"14";s:3:" st";s:2:"15";s:3:" v ";s:2:"16";s:3:" ve";s:2:"17";s:4:"pře";s:2:"18";s:3:"se ";s:2:"19";s:3:"ho ";s:2:"20";s:3:"sta";s:2:"21";s:3:" to";s:2:"22";s:3:" vy";s:2:"23";s:3:" za";s:2:"24";s:3:"ou ";s:2:"25";s:3:" a ";s:2:"26";s:3:"to ";s:2:"27";s:3:" by";s:2:"28";s:3:"la ";s:2:"29";s:3:"ce ";s:2:"30";s:3:"e v";s:2:"31";s:3:"ist";s:2:"32";s:3:"le ";s:2:"33";s:3:"pod";s:2:"34";s:4:"í p";s:2:"35";s:3:" vl";s:2:"36";s:3:"e n";s:2:"37";s:3:"e s";s:2:"38";s:3:"je ";s:2:"39";s:4:"ké ";s:2:"40";s:3:"by ";s:2:"41";s:3:"em ";s:2:"42";s:4:"ých";s:2:"43";s:3:" od";s:2:"44";s:3:"ova";s:2:"45";s:4:"řed";s:2:"46";s:3:"dy ";s:2:"47";s:4:"ení";s:2:"48";s:3:"kon";s:2:"49";s:3:"li ";s:2:"50";s:4:"ně ";s:2:"51";s:3:"str";s:2:"52";s:4:" zá";s:2:"53";s:3:"ve ";s:2:"54";s:3:" ka";s:2:"55";s:3:" sv";s:2:"56";s:3:"e p";s:2:"57";s:3:"it ";s:2:"58";s:4:"lád";s:2:"59";s:3:"oho";s:2:"60";s:3:"rov";s:2:"61";s:3:"roz";s:2:"62";s:3:"ter";s:2:"63";s:4:"vlá";s:2:"64";s:4:"ím ";s:2:"65";s:3:" ko";s:2:"66";s:3:"hod";s:2:"67";s:3:"nis";s:2:"68";s:5:"pří";s:2:"69";s:4:"ský";s:2:"70";s:3:" mi";s:2:"71";s:3:" ob";s:2:"72";s:3:" so";s:2:"73";s:3:"a p";s:2:"74";s:3:"ali";s:2:"75";s:3:"bud";s:2:"76";s:3:"edn";s:2:"77";s:3:"ick";s:2:"78";s:3:"kte";s:2:"79";s:3:"ku ";s:2:"80";s:3:"o s";s:2:"81";s:3:"al ";s:2:"82";s:3:"ci ";s:2:"83";s:3:"e t";s:2:"84";s:3:"il ";s:2:"85";s:3:"ny ";s:2:"86";s:4:"né ";s:2:"87";s:3:"odl";s:2:"88";s:4:"ová";s:2:"89";s:3:"rot";s:2:"90";s:3:"sou";s:2:"91";s:5:"ání";s:2:"92";s:3:" bu";s:2:"93";s:3:" mo";s:2:"94";s:3:" o ";s:2:"95";s:3:"ast";s:2:"96";s:3:"byl";s:2:"97";s:3:"de ";s:2:"98";s:3:"ek ";s:2:"99";s:3:"ost";s:3:"100";s:4:" mí";s:3:"101";s:3:" ta";s:3:"102";s:3:"es ";s:3:"103";s:3:"jed";s:3:"104";s:3:"ky ";s:3:"105";s:3:"las";s:3:"106";s:3:"m p";s:3:"107";s:3:"nes";s:3:"108";s:4:"ním";s:3:"109";s:3:"ran";s:3:"110";s:3:"rem";s:3:"111";s:3:"ros";s:3:"112";s:4:"ého";s:3:"113";s:3:" de";s:3:"114";s:3:" kt";s:3:"115";s:3:" ni";s:3:"116";s:3:" si";s:3:"117";s:4:" vý";s:3:"118";s:3:"at ";s:3:"119";s:4:"jí ";s:3:"120";s:4:"ký ";s:3:"121";s:3:"mi ";s:3:"122";s:3:"pre";s:3:"123";s:3:"tak";s:3:"124";s:3:"tan";s:3:"125";s:3:"y v";s:3:"126";s:4:"řek";s:3:"127";s:3:" ch";s:3:"128";s:3:" li";s:3:"129";s:4:" ná";s:3:"130";s:3:" pa";s:3:"131";s:4:" ře";s:3:"132";s:3:"da ";s:3:"133";s:3:"dle";s:3:"134";s:3:"dne";s:3:"135";s:3:"i p";s:3:"136";s:3:"i v";s:3:"137";s:3:"ly ";s:3:"138";s:3:"min";s:3:"139";s:3:"o n";s:3:"140";s:3:"o v";s:3:"141";s:3:"pol";s:3:"142";s:3:"tra";s:3:"143";s:3:"val";s:3:"144";s:4:"vní";s:3:"145";s:4:"ích";s:3:"146";s:4:"ý p";s:3:"147";s:4:"řej";s:3:"148";s:3:" ce";s:3:"149";s:3:" kd";s:3:"150";s:3:" le";s:3:"151";s:3:"a s";s:3:"152";s:3:"a z";s:3:"153";s:3:"cen";s:3:"154";s:3:"e k";s:3:"155";s:3:"eds";s:3:"156";s:3:"ekl";s:3:"157";s:3:"emi";s:3:"158";s:3:"kl ";s:3:"159";s:3:"lat";s:3:"160";s:3:"lo ";s:3:"161";s:4:"mié";s:3:"162";s:3:"nov";s:3:"163";s:3:"pra";s:3:"164";s:3:"sku";s:3:"165";s:4:"ské";s:3:"166";s:3:"sti";s:3:"167";s:3:"tav";s:3:"168";s:3:"ti ";s:3:"169";s:3:"ty ";s:3:"170";s:4:"ván";s:3:"171";s:4:"vé ";s:3:"172";s:3:"y n";s:3:"173";s:3:"y s";s:3:"174";s:4:"í s";s:3:"175";s:4:"í v";s:3:"176";s:4:"ě p";s:3:"177";s:3:" dn";s:3:"178";s:4:" ně";s:3:"179";s:3:" sp";s:3:"180";s:4:" čs";s:3:"181";s:3:"a n";s:3:"182";s:3:"a t";s:3:"183";s:3:"ak ";s:3:"184";s:4:"dní";s:3:"185";s:3:"doh";s:3:"186";s:3:"e b";s:3:"187";s:3:"e m";s:3:"188";s:3:"ejn";s:3:"189";s:3:"ena";s:3:"190";s:3:"est";s:3:"191";s:3:"ini";s:3:"192";s:3:"m z";s:3:"193";s:3:"nal";s:3:"194";s:3:"nou";s:3:"195";s:4:"ná ";s:3:"196";s:3:"ovi";s:3:"197";s:4:"ové";s:3:"198";s:4:"ový";s:3:"199";s:3:"rsk";s:3:"200";s:4:"stá";s:3:"201";s:4:"tí ";s:3:"202";s:4:"tře";s:3:"203";s:4:"tů ";s:3:"204";s:3:"ude";s:3:"205";s:3:"za ";s:3:"206";s:4:"é p";s:3:"207";s:4:"ém ";s:3:"208";s:4:"í d";s:3:"209";s:3:" ir";s:3:"210";s:3:" zv";s:3:"211";s:3:"ale";s:3:"212";s:4:"aně";s:3:"213";s:3:"ave";s:3:"214";s:4:"cké";s:3:"215";s:3:"den";s:3:"216";s:3:"e z";s:3:"217";s:3:"ech";s:3:"218";s:3:"en ";s:3:"219";s:4:"erý";s:3:"220";s:3:"hla";s:3:"221";s:3:"i s";s:3:"222";s:4:"iér";s:3:"223";s:3:"lov";s:3:"224";s:3:"mu ";s:3:"225";s:3:"neb";s:3:"226";s:3:"nic";s:3:"227";s:3:"o b";s:3:"228";s:3:"o m";s:3:"229";s:3:"pad";s:3:"230";s:3:"pot";s:3:"231";s:3:"rav";s:3:"232";s:3:"rop";s:3:"233";s:4:"rý ";s:3:"234";s:3:"sed";s:3:"235";s:3:"si ";s:3:"236";s:3:"t p";s:3:"237";s:3:"tic";s:3:"238";s:3:"tu ";s:3:"239";s:4:"tě ";s:3:"240";s:3:"u p";s:3:"241";s:3:"u v";s:3:"242";s:4:"vá ";s:3:"243";s:5:"výš";s:3:"244";s:4:"zvý";s:3:"245";s:5:"ční";s:3:"246";s:5:"ří ";s:3:"247";s:4:"ům ";s:3:"248";s:3:" bl";s:3:"249";s:3:" br";s:3:"250";s:3:" ho";s:3:"251";s:3:" ja";s:3:"252";s:3:" re";s:3:"253";s:3:" s ";s:3:"254";s:3:" z ";s:3:"255";s:3:" zd";s:3:"256";s:3:"a v";s:3:"257";s:3:"ani";s:3:"258";s:3:"ato";s:3:"259";s:3:"bla";s:3:"260";s:3:"bri";s:3:"261";s:4:"ečn";s:3:"262";s:4:"eře";s:3:"263";s:3:"h v";s:3:"264";s:3:"i n";s:3:"265";s:3:"ie ";s:3:"266";s:3:"ila";s:3:"267";s:3:"irs";s:3:"268";s:3:"ite";s:3:"269";s:3:"kov";s:3:"270";s:3:"nos";s:3:"271";s:3:"o o";s:3:"272";s:3:"o p";s:3:"273";s:3:"oce";s:3:"274";s:3:"ody";s:3:"275";s:3:"ohl";s:3:"276";s:3:"oli";s:3:"277";s:3:"ovo";s:3:"278";s:3:"pla";s:3:"279";s:4:"poč";s:3:"280";s:4:"prá";s:3:"281";s:3:"ra ";s:3:"282";s:3:"rit";s:3:"283";s:3:"rod";s:3:"284";s:3:"ry ";s:3:"285";s:3:"sd ";s:3:"286";s:3:"sko";s:3:"287";s:3:"ssd";s:3:"288";s:3:"tel";s:3:"289";s:3:"u s";s:3:"290";s:3:"vat";s:3:"291";s:4:"veř";s:3:"292";s:3:"vit";s:3:"293";s:3:"vla";s:3:"294";s:3:"y p";s:3:"295";s:4:"áln";s:3:"296";s:4:"čss";s:3:"297";s:4:"šen";s:3:"298";s:3:" al";s:3:"299";}s:6:"danish";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"der";s:1:"4";s:3:"de ";s:1:"5";s:3:"for";s:1:"6";s:3:" fo";s:1:"7";s:3:" i ";s:1:"8";s:3:"at ";s:1:"9";s:3:" at";s:2:"10";s:3:"re ";s:2:"11";s:3:"det";s:2:"12";s:3:" ha";s:2:"13";s:3:"nde";s:2:"14";s:3:"ere";s:2:"15";s:3:"ing";s:2:"16";s:3:"den";s:2:"17";s:3:" me";s:2:"18";s:3:" og";s:2:"19";s:3:"ger";s:2:"20";s:3:"ter";s:2:"21";s:3:" er";s:2:"22";s:3:" si";s:2:"23";s:3:"and";s:2:"24";s:3:" af";s:2:"25";s:3:"or ";s:2:"26";s:3:" st";s:2:"27";s:3:" ti";s:2:"28";s:3:" en";s:2:"29";s:3:"og ";s:2:"30";s:3:"ar ";s:2:"31";s:3:"il ";s:2:"32";s:3:"r s";s:2:"33";s:3:"ige";s:2:"34";s:3:"til";s:2:"35";s:3:"ke ";s:2:"36";s:3:"r e";s:2:"37";s:3:"af ";s:2:"38";s:3:"kke";s:2:"39";s:3:" ma";s:2:"40";s:4:" på";s:2:"41";s:3:"om ";s:2:"42";s:4:"på ";s:2:"43";s:3:"ed ";s:2:"44";s:3:"ge ";s:2:"45";s:3:"end";s:2:"46";s:3:"nge";s:2:"47";s:3:"t s";s:2:"48";s:3:"e s";s:2:"49";s:3:"ler";s:2:"50";s:3:" sk";s:2:"51";s:3:"els";s:2:"52";s:3:"ern";s:2:"53";s:3:"sig";s:2:"54";s:3:"ne ";s:2:"55";s:3:"lig";s:2:"56";s:3:"r d";s:2:"57";s:3:"ska";s:2:"58";s:3:" vi";s:2:"59";s:3:"har";s:2:"60";s:3:" be";s:2:"61";s:3:" se";s:2:"62";s:3:"an ";s:2:"63";s:3:"ikk";s:2:"64";s:3:"lle";s:2:"65";s:3:"gen";s:2:"66";s:3:"n f";s:2:"67";s:3:"ste";s:2:"68";s:3:"t a";s:2:"69";s:3:"t d";s:2:"70";s:3:"rin";s:2:"71";s:3:" ik";s:2:"72";s:3:"es ";s:2:"73";s:3:"ng ";s:2:"74";s:3:"ver";s:2:"75";s:3:"r b";s:2:"76";s:3:"sen";s:2:"77";s:3:"ede";s:2:"78";s:3:"men";s:2:"79";s:3:"r i";s:2:"80";s:3:" he";s:2:"81";s:3:" et";s:2:"82";s:3:"ig ";s:2:"83";s:3:"lan";s:2:"84";s:3:"med";s:2:"85";s:3:"nd ";s:2:"86";s:3:"rne";s:2:"87";s:3:" da";s:2:"88";s:3:" in";s:2:"89";s:3:"e t";s:2:"90";s:3:"mme";s:2:"91";s:3:"und";s:2:"92";s:3:" om";s:2:"93";s:3:"e e";s:2:"94";s:3:"e m";s:2:"95";s:3:"her";s:2:"96";s:3:"le ";s:2:"97";s:3:"r f";s:2:"98";s:3:"t f";s:2:"99";s:4:"så ";s:3:"100";s:3:"te ";s:3:"101";s:3:" so";s:3:"102";s:3:"ele";s:3:"103";s:3:"t e";s:3:"104";s:3:" ko";s:3:"105";s:3:"est";s:3:"106";s:3:"ske";s:3:"107";s:3:" bl";s:3:"108";s:3:"e f";s:3:"109";s:3:"ekt";s:3:"110";s:3:"mar";s:3:"111";s:3:"bru";s:3:"112";s:3:"e a";s:3:"113";s:3:"el ";s:3:"114";s:3:"ers";s:3:"115";s:3:"ret";s:3:"116";s:3:"som";s:3:"117";s:3:"tte";s:3:"118";s:3:"ve ";s:3:"119";s:3:" la";s:3:"120";s:3:" ud";s:3:"121";s:3:" ve";s:3:"122";s:3:"age";s:3:"123";s:3:"e d";s:3:"124";s:3:"e h";s:3:"125";s:3:"lse";s:3:"126";s:3:"man";s:3:"127";s:3:"rug";s:3:"128";s:3:"sel";s:3:"129";s:3:"ser";s:3:"130";s:3:" fi";s:3:"131";s:3:" op";s:3:"132";s:3:" pr";s:3:"133";s:3:"dt ";s:3:"134";s:3:"e i";s:3:"135";s:3:"n m";s:3:"136";s:3:"r m";s:3:"137";s:3:" an";s:3:"138";s:3:" re";s:3:"139";s:3:" sa";s:3:"140";s:3:"ion";s:3:"141";s:3:"ner";s:3:"142";s:3:"res";s:3:"143";s:3:"t i";s:3:"144";s:3:"get";s:3:"145";s:3:"n s";s:3:"146";s:3:"one";s:3:"147";s:3:"orb";s:3:"148";s:3:"t h";s:3:"149";s:3:"vis";s:3:"150";s:4:"år ";s:3:"151";s:3:" fr";s:3:"152";s:3:"bil";s:3:"153";s:3:"e k";s:3:"154";s:3:"ens";s:3:"155";s:3:"ind";s:3:"156";s:3:"omm";s:3:"157";s:3:"t m";s:3:"158";s:3:" hv";s:3:"159";s:3:" je";s:3:"160";s:3:"dan";s:3:"161";s:3:"ent";s:3:"162";s:3:"fte";s:3:"163";s:3:"nin";s:3:"164";s:3:" mi";s:3:"165";s:3:"e o";s:3:"166";s:3:"e p";s:3:"167";s:3:"n o";s:3:"168";s:3:"nte";s:3:"169";s:3:" ku";s:3:"170";s:3:"ell";s:3:"171";s:3:"nas";s:3:"172";s:3:"ore";s:3:"173";s:3:"r h";s:3:"174";s:3:"r k";s:3:"175";s:3:"sta";s:3:"176";s:3:"sto";s:3:"177";s:3:"dag";s:3:"178";s:3:"eri";s:3:"179";s:3:"kun";s:3:"180";s:3:"lde";s:3:"181";s:3:"mer";s:3:"182";s:3:"r a";s:3:"183";s:3:"r v";s:3:"184";s:3:"rek";s:3:"185";s:3:"rer";s:3:"186";s:3:"t o";s:3:"187";s:3:"tor";s:3:"188";s:4:"tør";s:3:"189";s:4:" få";s:3:"190";s:4:" må";s:3:"191";s:3:" to";s:3:"192";s:3:"boe";s:3:"193";s:3:"che";s:3:"194";s:3:"e v";s:3:"195";s:3:"i d";s:3:"196";s:3:"ive";s:3:"197";s:3:"kab";s:3:"198";s:3:"ns ";s:3:"199";s:3:"oel";s:3:"200";s:3:"se ";s:3:"201";s:3:"t v";s:3:"202";s:3:" al";s:3:"203";s:3:" bo";s:3:"204";s:3:" un";s:3:"205";s:3:"ans";s:3:"206";s:3:"dre";s:3:"207";s:3:"ire";s:3:"208";s:4:"køb";s:3:"209";s:3:"ors";s:3:"210";s:3:"ove";s:3:"211";s:3:"ren";s:3:"212";s:3:"t b";s:3:"213";s:4:"ør ";s:3:"214";s:3:" ka";s:3:"215";s:3:"ald";s:3:"216";s:3:"bet";s:3:"217";s:3:"gt ";s:3:"218";s:3:"isk";s:3:"219";s:3:"kal";s:3:"220";s:3:"kom";s:3:"221";s:3:"lev";s:3:"222";s:3:"n d";s:3:"223";s:3:"n i";s:3:"224";s:3:"pri";s:3:"225";s:3:"r p";s:3:"226";s:3:"rbr";s:3:"227";s:4:"søg";s:3:"228";s:3:"tel";s:3:"229";s:4:" så";s:3:"230";s:3:" te";s:3:"231";s:3:" va";s:3:"232";s:3:"al ";s:3:"233";s:3:"dir";s:3:"234";s:3:"eje";s:3:"235";s:3:"fis";s:3:"236";s:4:"gså";s:3:"237";s:3:"isc";s:3:"238";s:3:"jer";s:3:"239";s:3:"ker";s:3:"240";s:3:"ogs";s:3:"241";s:3:"sch";s:3:"242";s:3:"st ";s:3:"243";s:3:"t k";s:3:"244";s:3:"uge";s:3:"245";s:3:" di";s:3:"246";s:3:"ag ";s:3:"247";s:3:"d a";s:3:"248";s:3:"g i";s:3:"249";s:3:"ill";s:3:"250";s:3:"l a";s:3:"251";s:3:"lsk";s:3:"252";s:3:"n a";s:3:"253";s:3:"on ";s:3:"254";s:3:"sam";s:3:"255";s:3:"str";s:3:"256";s:3:"tet";s:3:"257";s:3:"var";s:3:"258";s:3:" mo";s:3:"259";s:3:"art";s:3:"260";s:3:"ash";s:3:"261";s:3:"att";s:3:"262";s:3:"e b";s:3:"263";s:3:"han";s:3:"264";s:3:"hav";s:3:"265";s:3:"kla";s:3:"266";s:3:"kon";s:3:"267";s:3:"n t";s:3:"268";s:3:"ned";s:3:"269";s:3:"r o";s:3:"270";s:3:"ra ";s:3:"271";s:3:"rre";s:3:"272";s:3:"ves";s:3:"273";s:3:"vil";s:3:"274";s:3:" el";s:3:"275";s:3:" kr";s:3:"276";s:3:" ov";s:3:"277";s:3:"ann";s:3:"278";s:3:"e u";s:3:"279";s:3:"ess";s:3:"280";s:3:"fra";s:3:"281";s:3:"g a";s:3:"282";s:3:"g d";s:3:"283";s:3:"int";s:3:"284";s:3:"ngs";s:3:"285";s:3:"rde";s:3:"286";s:3:"tra";s:3:"287";s:4:" år";s:3:"288";s:3:"akt";s:3:"289";s:3:"asi";s:3:"290";s:3:"em ";s:3:"291";s:3:"gel";s:3:"292";s:3:"gym";s:3:"293";s:3:"hol";s:3:"294";s:3:"kan";s:3:"295";s:3:"mna";s:3:"296";s:3:"n h";s:3:"297";s:3:"nsk";s:3:"298";s:3:"old";s:3:"299";}s:5:"dutch";a:300:{s:3:"en ";s:1:"0";s:3:"de ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"an ";s:1:"4";s:3:" he";s:1:"5";s:3:"er ";s:1:"6";s:3:" va";s:1:"7";s:3:"n d";s:1:"8";s:3:"van";s:1:"9";s:3:"een";s:2:"10";s:3:"het";s:2:"11";s:3:" ge";s:2:"12";s:3:"oor";s:2:"13";s:3:" ee";s:2:"14";s:3:"der";s:2:"15";s:3:" en";s:2:"16";s:3:"ij ";s:2:"17";s:3:"aar";s:2:"18";s:3:"gen";s:2:"19";s:3:"te ";s:2:"20";s:3:"ver";s:2:"21";s:3:" in";s:2:"22";s:3:" me";s:2:"23";s:3:"aan";s:2:"24";s:3:"den";s:2:"25";s:3:" we";s:2:"26";s:3:"at ";s:2:"27";s:3:"in ";s:2:"28";s:3:" da";s:2:"29";s:3:" te";s:2:"30";s:3:"eer";s:2:"31";s:3:"nde";s:2:"32";s:3:"ter";s:2:"33";s:3:"ste";s:2:"34";s:3:"n v";s:2:"35";s:3:" vo";s:2:"36";s:3:" zi";s:2:"37";s:3:"ing";s:2:"38";s:3:"n h";s:2:"39";s:3:"voo";s:2:"40";s:3:"is ";s:2:"41";s:3:" op";s:2:"42";s:3:"tie";s:2:"43";s:3:" aa";s:2:"44";s:3:"ede";s:2:"45";s:3:"erd";s:2:"46";s:3:"ers";s:2:"47";s:3:" be";s:2:"48";s:3:"eme";s:2:"49";s:3:"ten";s:2:"50";s:3:"ken";s:2:"51";s:3:"n e";s:2:"52";s:3:" ni";s:2:"53";s:3:" ve";s:2:"54";s:3:"ent";s:2:"55";s:3:"ijn";s:2:"56";s:3:"jn ";s:2:"57";s:3:"mee";s:2:"58";s:3:"iet";s:2:"59";s:3:"n w";s:2:"60";s:3:"ng ";s:2:"61";s:3:"nie";s:2:"62";s:3:" is";s:2:"63";s:3:"cht";s:2:"64";s:3:"dat";s:2:"65";s:3:"ere";s:2:"66";s:3:"ie ";s:2:"67";s:3:"ijk";s:2:"68";s:3:"n b";s:2:"69";s:3:"rde";s:2:"70";s:3:"ar ";s:2:"71";s:3:"e b";s:2:"72";s:3:"e a";s:2:"73";s:3:"met";s:2:"74";s:3:"t d";s:2:"75";s:3:"el ";s:2:"76";s:3:"ond";s:2:"77";s:3:"t h";s:2:"78";s:3:" al";s:2:"79";s:3:"e w";s:2:"80";s:3:"op ";s:2:"81";s:3:"ren";s:2:"82";s:3:" di";s:2:"83";s:3:" on";s:2:"84";s:3:"al ";s:2:"85";s:3:"and";s:2:"86";s:3:"bij";s:2:"87";s:3:"zij";s:2:"88";s:3:" bi";s:2:"89";s:3:" hi";s:2:"90";s:3:" wi";s:2:"91";s:3:"or ";s:2:"92";s:3:"r d";s:2:"93";s:3:"t v";s:2:"94";s:3:" wa";s:2:"95";s:3:"e h";s:2:"96";s:3:"lle";s:2:"97";s:3:"rt ";s:2:"98";s:3:"ang";s:2:"99";s:3:"hij";s:3:"100";s:3:"men";s:3:"101";s:3:"n a";s:3:"102";s:3:"n z";s:3:"103";s:3:"rs ";s:3:"104";s:3:" om";s:3:"105";s:3:"e o";s:3:"106";s:3:"e v";s:3:"107";s:3:"end";s:3:"108";s:3:"est";s:3:"109";s:3:"n t";s:3:"110";s:3:"par";s:3:"111";s:3:" pa";s:3:"112";s:3:" pr";s:3:"113";s:3:" ze";s:3:"114";s:3:"e g";s:3:"115";s:3:"e p";s:3:"116";s:3:"n p";s:3:"117";s:3:"ord";s:3:"118";s:3:"oud";s:3:"119";s:3:"raa";s:3:"120";s:3:"sch";s:3:"121";s:3:"t e";s:3:"122";s:3:"ege";s:3:"123";s:3:"ich";s:3:"124";s:3:"ien";s:3:"125";s:3:"aat";s:3:"126";s:3:"ek ";s:3:"127";s:3:"len";s:3:"128";s:3:"n m";s:3:"129";s:3:"nge";s:3:"130";s:3:"nt ";s:3:"131";s:3:"ove";s:3:"132";s:3:"rd ";s:3:"133";s:3:"wer";s:3:"134";s:3:" ma";s:3:"135";s:3:" mi";s:3:"136";s:3:"daa";s:3:"137";s:3:"e k";s:3:"138";s:3:"lij";s:3:"139";s:3:"mer";s:3:"140";s:3:"n g";s:3:"141";s:3:"n o";s:3:"142";s:3:"om ";s:3:"143";s:3:"sen";s:3:"144";s:3:"t b";s:3:"145";s:3:"wij";s:3:"146";s:3:" ho";s:3:"147";s:3:"e m";s:3:"148";s:3:"ele";s:3:"149";s:3:"gem";s:3:"150";s:3:"heb";s:3:"151";s:3:"pen";s:3:"152";s:3:"ude";s:3:"153";s:3:" bo";s:3:"154";s:3:" ja";s:3:"155";s:3:"die";s:3:"156";s:3:"e e";s:3:"157";s:3:"eli";s:3:"158";s:3:"erk";s:3:"159";s:3:"le ";s:3:"160";s:3:"pro";s:3:"161";s:3:"rij";s:3:"162";s:3:" er";s:3:"163";s:3:" za";s:3:"164";s:3:"e d";s:3:"165";s:3:"ens";s:3:"166";s:3:"ind";s:3:"167";s:3:"ke ";s:3:"168";s:3:"n k";s:3:"169";s:3:"nd ";s:3:"170";s:3:"nen";s:3:"171";s:3:"nte";s:3:"172";s:3:"r h";s:3:"173";s:3:"s d";s:3:"174";s:3:"s e";s:3:"175";s:3:"t z";s:3:"176";s:3:" b ";s:3:"177";s:3:" co";s:3:"178";s:3:" ik";s:3:"179";s:3:" ko";s:3:"180";s:3:" ov";s:3:"181";s:3:"eke";s:3:"182";s:3:"hou";s:3:"183";s:3:"ik ";s:3:"184";s:3:"iti";s:3:"185";s:3:"lan";s:3:"186";s:3:"ns ";s:3:"187";s:3:"t g";s:3:"188";s:3:"t m";s:3:"189";s:3:" do";s:3:"190";s:3:" le";s:3:"191";s:3:" zo";s:3:"192";s:3:"ams";s:3:"193";s:3:"e z";s:3:"194";s:3:"g v";s:3:"195";s:3:"it ";s:3:"196";s:3:"je ";s:3:"197";s:3:"ls ";s:3:"198";s:3:"maa";s:3:"199";s:3:"n i";s:3:"200";s:3:"nke";s:3:"201";s:3:"rke";s:3:"202";s:3:"uit";s:3:"203";s:3:" ha";s:3:"204";s:3:" ka";s:3:"205";s:3:" mo";s:3:"206";s:3:" re";s:3:"207";s:3:" st";s:3:"208";s:3:" to";s:3:"209";s:3:"age";s:3:"210";s:3:"als";s:3:"211";s:3:"ark";s:3:"212";s:3:"art";s:3:"213";s:3:"ben";s:3:"214";s:3:"e r";s:3:"215";s:3:"e s";s:3:"216";s:3:"ert";s:3:"217";s:3:"eze";s:3:"218";s:3:"ht ";s:3:"219";s:3:"ijd";s:3:"220";s:3:"lem";s:3:"221";s:3:"r v";s:3:"222";s:3:"rte";s:3:"223";s:3:"t p";s:3:"224";s:3:"zeg";s:3:"225";s:3:"zic";s:3:"226";s:3:"aak";s:3:"227";s:3:"aal";s:3:"228";s:3:"ag ";s:3:"229";s:3:"ale";s:3:"230";s:3:"bbe";s:3:"231";s:3:"ch ";s:3:"232";s:3:"e t";s:3:"233";s:3:"ebb";s:3:"234";s:3:"erz";s:3:"235";s:3:"ft ";s:3:"236";s:3:"ge ";s:3:"237";s:3:"led";s:3:"238";s:3:"mst";s:3:"239";s:3:"n n";s:3:"240";s:3:"oek";s:3:"241";s:3:"r i";s:3:"242";s:3:"t o";s:3:"243";s:3:"t w";s:3:"244";s:3:"tel";s:3:"245";s:3:"tte";s:3:"246";s:3:"uur";s:3:"247";s:3:"we ";s:3:"248";s:3:"zit";s:3:"249";s:3:" af";s:3:"250";s:3:" li";s:3:"251";s:3:" ui";s:3:"252";s:3:"ak ";s:3:"253";s:3:"all";s:3:"254";s:3:"aut";s:3:"255";s:3:"doo";s:3:"256";s:3:"e i";s:3:"257";s:3:"ene";s:3:"258";s:3:"erg";s:3:"259";s:3:"ete";s:3:"260";s:3:"ges";s:3:"261";s:3:"hee";s:3:"262";s:3:"jaa";s:3:"263";s:3:"jke";s:3:"264";s:3:"kee";s:3:"265";s:3:"kel";s:3:"266";s:3:"kom";s:3:"267";s:3:"lee";s:3:"268";s:3:"moe";s:3:"269";s:3:"n s";s:3:"270";s:3:"ort";s:3:"271";s:3:"rec";s:3:"272";s:3:"s o";s:3:"273";s:3:"s v";s:3:"274";s:3:"teg";s:3:"275";s:3:"tij";s:3:"276";s:3:"ven";s:3:"277";s:3:"waa";s:3:"278";s:3:"wel";s:3:"279";s:3:" an";s:3:"280";s:3:" au";s:3:"281";s:3:" bu";s:3:"282";s:3:" gr";s:3:"283";s:3:" pl";s:3:"284";s:3:" ti";s:3:"285";s:3:"'' ";s:3:"286";s:3:"ade";s:3:"287";s:3:"dag";s:3:"288";s:3:"e l";s:3:"289";s:3:"ech";s:3:"290";s:3:"eel";s:3:"291";s:3:"eft";s:3:"292";s:3:"ger";s:3:"293";s:3:"gt ";s:3:"294";s:3:"ig ";s:3:"295";s:3:"itt";s:3:"296";s:3:"j d";s:3:"297";s:3:"ppe";s:3:"298";s:3:"rda";s:3:"299";}s:7:"english";a:300:{s:3:" th";s:1:"0";s:3:"the";s:1:"1";s:3:"he ";s:1:"2";s:3:"ed ";s:1:"3";s:3:" to";s:1:"4";s:3:" in";s:1:"5";s:3:"er ";s:1:"6";s:3:"ing";s:1:"7";s:3:"ng ";s:1:"8";s:3:" an";s:1:"9";s:3:"nd ";s:2:"10";s:3:" of";s:2:"11";s:3:"and";s:2:"12";s:3:"to ";s:2:"13";s:3:"of ";s:2:"14";s:3:" co";s:2:"15";s:3:"at ";s:2:"16";s:3:"on ";s:2:"17";s:3:"in ";s:2:"18";s:3:" a ";s:2:"19";s:3:"d t";s:2:"20";s:3:" he";s:2:"21";s:3:"e t";s:2:"22";s:3:"ion";s:2:"23";s:3:"es ";s:2:"24";s:3:" re";s:2:"25";s:3:"re ";s:2:"26";s:3:"hat";s:2:"27";s:3:" sa";s:2:"28";s:3:" st";s:2:"29";s:3:" ha";s:2:"30";s:3:"her";s:2:"31";s:3:"tha";s:2:"32";s:3:"tio";s:2:"33";s:3:"or ";s:2:"34";s:3:" ''";s:2:"35";s:3:"en ";s:2:"36";s:3:" wh";s:2:"37";s:3:"e s";s:2:"38";s:3:"ent";s:2:"39";s:3:"n t";s:2:"40";s:3:"s a";s:2:"41";s:3:"as ";s:2:"42";s:3:"for";s:2:"43";s:3:"is ";s:2:"44";s:3:"t t";s:2:"45";s:3:" be";s:2:"46";s:3:"ld ";s:2:"47";s:3:"e a";s:2:"48";s:3:"rs ";s:2:"49";s:3:" wa";s:2:"50";s:3:"ut ";s:2:"51";s:3:"ve ";s:2:"52";s:3:"ll ";s:2:"53";s:3:"al ";s:2:"54";s:3:" ma";s:2:"55";s:3:"e i";s:2:"56";s:3:" fo";s:2:"57";s:3:"'s ";s:2:"58";s:3:"an ";s:2:"59";s:3:"est";s:2:"60";s:3:" hi";s:2:"61";s:3:" mo";s:2:"62";s:3:" se";s:2:"63";s:3:" pr";s:2:"64";s:3:"s t";s:2:"65";s:3:"ate";s:2:"66";s:3:"st ";s:2:"67";s:3:"ter";s:2:"68";s:3:"ere";s:2:"69";s:3:"ted";s:2:"70";s:3:"nt ";s:2:"71";s:3:"ver";s:2:"72";s:3:"d a";s:2:"73";s:3:" wi";s:2:"74";s:3:"se ";s:2:"75";s:3:"e c";s:2:"76";s:3:"ect";s:2:"77";s:3:"ns ";s:2:"78";s:3:" on";s:2:"79";s:3:"ly ";s:2:"80";s:3:"tol";s:2:"81";s:3:"ey ";s:2:"82";s:3:"r t";s:2:"83";s:3:" ca";s:2:"84";s:3:"ati";s:2:"85";s:3:"ts ";s:2:"86";s:3:"all";s:2:"87";s:3:" no";s:2:"88";s:3:"his";s:2:"89";s:3:"s o";s:2:"90";s:3:"ers";s:2:"91";s:3:"con";s:2:"92";s:3:"e o";s:2:"93";s:3:"ear";s:2:"94";s:3:"f t";s:2:"95";s:3:"e w";s:2:"96";s:3:"was";s:2:"97";s:3:"ons";s:2:"98";s:3:"sta";s:2:"99";s:3:"'' ";s:3:"100";s:3:"sti";s:3:"101";s:3:"n a";s:3:"102";s:3:"sto";s:3:"103";s:3:"t h";s:3:"104";s:3:" we";s:3:"105";s:3:"id ";s:3:"106";s:3:"th ";s:3:"107";s:3:" it";s:3:"108";s:3:"ce ";s:3:"109";s:3:" di";s:3:"110";s:3:"ave";s:3:"111";s:3:"d h";s:3:"112";s:3:"cou";s:3:"113";s:3:"pro";s:3:"114";s:3:"ad ";s:3:"115";s:3:"oll";s:3:"116";s:3:"ry ";s:3:"117";s:3:"d s";s:3:"118";s:3:"e m";s:3:"119";s:3:" so";s:3:"120";s:3:"ill";s:3:"121";s:3:"cti";s:3:"122";s:3:"te ";s:3:"123";s:3:"tor";s:3:"124";s:3:"eve";s:3:"125";s:3:"g t";s:3:"126";s:3:"it ";s:3:"127";s:3:" ch";s:3:"128";s:3:" de";s:3:"129";s:3:"hav";s:3:"130";s:3:"oul";s:3:"131";s:3:"ty ";s:3:"132";s:3:"uld";s:3:"133";s:3:"use";s:3:"134";s:3:" al";s:3:"135";s:3:"are";s:3:"136";s:3:"ch ";s:3:"137";s:3:"me ";s:3:"138";s:3:"out";s:3:"139";s:3:"ove";s:3:"140";s:3:"wit";s:3:"141";s:3:"ys ";s:3:"142";s:3:"chi";s:3:"143";s:3:"t a";s:3:"144";s:3:"ith";s:3:"145";s:3:"oth";s:3:"146";s:3:" ab";s:3:"147";s:3:" te";s:3:"148";s:3:" wo";s:3:"149";s:3:"s s";s:3:"150";s:3:"res";s:3:"151";s:3:"t w";s:3:"152";s:3:"tin";s:3:"153";s:3:"e b";s:3:"154";s:3:"e h";s:3:"155";s:3:"nce";s:3:"156";s:3:"t s";s:3:"157";s:3:"y t";s:3:"158";s:3:"e p";s:3:"159";s:3:"ele";s:3:"160";s:3:"hin";s:3:"161";s:3:"s i";s:3:"162";s:3:"nte";s:3:"163";s:3:" li";s:3:"164";s:3:"le ";s:3:"165";s:3:" do";s:3:"166";s:3:"aid";s:3:"167";s:3:"hey";s:3:"168";s:3:"ne ";s:3:"169";s:3:"s w";s:3:"170";s:3:" as";s:3:"171";s:3:" fr";s:3:"172";s:3:" tr";s:3:"173";s:3:"end";s:3:"174";s:3:"sai";s:3:"175";s:3:" el";s:3:"176";s:3:" ne";s:3:"177";s:3:" su";s:3:"178";s:3:"'t ";s:3:"179";s:3:"ay ";s:3:"180";s:3:"hou";s:3:"181";s:3:"ive";s:3:"182";s:3:"lec";s:3:"183";s:3:"n't";s:3:"184";s:3:" ye";s:3:"185";s:3:"but";s:3:"186";s:3:"d o";s:3:"187";s:3:"o t";s:3:"188";s:3:"y o";s:3:"189";s:3:" ho";s:3:"190";s:3:" me";s:3:"191";s:3:"be ";s:3:"192";s:3:"cal";s:3:"193";s:3:"e e";s:3:"194";s:3:"had";s:3:"195";s:3:"ple";s:3:"196";s:3:" at";s:3:"197";s:3:" bu";s:3:"198";s:3:" la";s:3:"199";s:3:"d b";s:3:"200";s:3:"s h";s:3:"201";s:3:"say";s:3:"202";s:3:"t i";s:3:"203";s:3:" ar";s:3:"204";s:3:"e f";s:3:"205";s:3:"ght";s:3:"206";s:3:"hil";s:3:"207";s:3:"igh";s:3:"208";s:3:"int";s:3:"209";s:3:"not";s:3:"210";s:3:"ren";s:3:"211";s:3:" is";s:3:"212";s:3:" pa";s:3:"213";s:3:" sh";s:3:"214";s:3:"ays";s:3:"215";s:3:"com";s:3:"216";s:3:"n s";s:3:"217";s:3:"r a";s:3:"218";s:3:"rin";s:3:"219";s:3:"y a";s:3:"220";s:3:" un";s:3:"221";s:3:"n c";s:3:"222";s:3:"om ";s:3:"223";s:3:"thi";s:3:"224";s:3:" mi";s:3:"225";s:3:"by ";s:3:"226";s:3:"d i";s:3:"227";s:3:"e d";s:3:"228";s:3:"e n";s:3:"229";s:3:"t o";s:3:"230";s:3:" by";s:3:"231";s:3:"e r";s:3:"232";s:3:"eri";s:3:"233";s:3:"old";s:3:"234";s:3:"ome";s:3:"235";s:3:"whe";s:3:"236";s:3:"yea";s:3:"237";s:3:" gr";s:3:"238";s:3:"ar ";s:3:"239";s:3:"ity";s:3:"240";s:3:"mpl";s:3:"241";s:3:"oun";s:3:"242";s:3:"one";s:3:"243";s:3:"ow ";s:3:"244";s:3:"r s";s:3:"245";s:3:"s f";s:3:"246";s:3:"tat";s:3:"247";s:3:" ba";s:3:"248";s:3:" vo";s:3:"249";s:3:"bou";s:3:"250";s:3:"sam";s:3:"251";s:3:"tim";s:3:"252";s:3:"vot";s:3:"253";s:3:"abo";s:3:"254";s:3:"ant";s:3:"255";s:3:"ds ";s:3:"256";s:3:"ial";s:3:"257";s:3:"ine";s:3:"258";s:3:"man";s:3:"259";s:3:"men";s:3:"260";s:3:" or";s:3:"261";s:3:" po";s:3:"262";s:3:"amp";s:3:"263";s:3:"can";s:3:"264";s:3:"der";s:3:"265";s:3:"e l";s:3:"266";s:3:"les";s:3:"267";s:3:"ny ";s:3:"268";s:3:"ot ";s:3:"269";s:3:"rec";s:3:"270";s:3:"tes";s:3:"271";s:3:"tho";s:3:"272";s:3:"ica";s:3:"273";s:3:"ild";s:3:"274";s:3:"ir ";s:3:"275";s:3:"nde";s:3:"276";s:3:"ose";s:3:"277";s:3:"ous";s:3:"278";s:3:"pre";s:3:"279";s:3:"ste";s:3:"280";s:3:"era";s:3:"281";s:3:"per";s:3:"282";s:3:"r o";s:3:"283";s:3:"red";s:3:"284";s:3:"rie";s:3:"285";s:3:" bo";s:3:"286";s:3:" le";s:3:"287";s:3:"ali";s:3:"288";s:3:"ars";s:3:"289";s:3:"ore";s:3:"290";s:3:"ric";s:3:"291";s:3:"s m";s:3:"292";s:3:"str";s:3:"293";s:3:" fa";s:3:"294";s:3:"ess";s:3:"295";s:3:"ie ";s:3:"296";s:3:"ist";s:3:"297";s:3:"lat";s:3:"298";s:3:"uri";s:3:"299";}s:8:"estonian";a:300:{s:3:"st ";s:1:"0";s:3:" ka";s:1:"1";s:3:"on ";s:1:"2";s:3:"ja ";s:1:"3";s:3:" va";s:1:"4";s:3:" on";s:1:"5";s:3:" ja";s:1:"6";s:3:" ko";s:1:"7";s:3:"se ";s:1:"8";s:3:"ast";s:1:"9";s:3:"le ";s:2:"10";s:3:"es ";s:2:"11";s:3:"as ";s:2:"12";s:3:"is ";s:2:"13";s:3:"ud ";s:2:"14";s:3:" sa";s:2:"15";s:3:"da ";s:2:"16";s:3:"ga ";s:2:"17";s:3:" ta";s:2:"18";s:3:"aja";s:2:"19";s:3:"sta";s:2:"20";s:3:" ku";s:2:"21";s:3:" pe";s:2:"22";s:3:"a k";s:2:"23";s:3:"est";s:2:"24";s:3:"ist";s:2:"25";s:3:"ks ";s:2:"26";s:3:"ta ";s:2:"27";s:3:"al ";s:2:"28";s:3:"ava";s:2:"29";s:3:"id ";s:2:"30";s:3:"saa";s:2:"31";s:3:"mis";s:2:"32";s:3:"te ";s:2:"33";s:3:"val";s:2:"34";s:3:" et";s:2:"35";s:3:"nud";s:2:"36";s:3:" te";s:2:"37";s:3:"inn";s:2:"38";s:3:" se";s:2:"39";s:3:" tu";s:2:"40";s:3:"a v";s:2:"41";s:3:"alu";s:2:"42";s:3:"e k";s:2:"43";s:3:"ise";s:2:"44";s:3:"lu ";s:2:"45";s:3:"ma ";s:2:"46";s:3:"mes";s:2:"47";s:3:" mi";s:2:"48";s:3:"et ";s:2:"49";s:3:"iku";s:2:"50";s:3:"lin";s:2:"51";s:3:"ad ";s:2:"52";s:3:"el ";s:2:"53";s:3:"ime";s:2:"54";s:3:"ne ";s:2:"55";s:3:"nna";s:2:"56";s:3:" ha";s:2:"57";s:3:" in";s:2:"58";s:3:" ke";s:2:"59";s:4:" võ";s:2:"60";s:3:"a s";s:2:"61";s:3:"a t";s:2:"62";s:3:"ab ";s:2:"63";s:3:"e s";s:2:"64";s:3:"esi";s:2:"65";s:3:" la";s:2:"66";s:3:" li";s:2:"67";s:3:"e v";s:2:"68";s:3:"eks";s:2:"69";s:3:"ema";s:2:"70";s:3:"las";s:2:"71";s:3:"les";s:2:"72";s:3:"rju";s:2:"73";s:3:"tle";s:2:"74";s:3:"tsi";s:2:"75";s:3:"tus";s:2:"76";s:3:"upa";s:2:"77";s:3:"use";s:2:"78";s:3:"ust";s:2:"79";s:3:"var";s:2:"80";s:4:" lä";s:2:"81";s:3:"ali";s:2:"82";s:3:"arj";s:2:"83";s:3:"de ";s:2:"84";s:3:"ete";s:2:"85";s:3:"i t";s:2:"86";s:3:"iga";s:2:"87";s:3:"ilm";s:2:"88";s:3:"kui";s:2:"89";s:3:"li ";s:2:"90";s:3:"tul";s:2:"91";s:3:" ei";s:2:"92";s:3:" me";s:2:"93";s:4:" sõ";s:2:"94";s:3:"aal";s:2:"95";s:3:"ata";s:2:"96";s:3:"dus";s:2:"97";s:3:"ei ";s:2:"98";s:3:"nik";s:2:"99";s:3:"pea";s:3:"100";s:3:"s k";s:3:"101";s:3:"s o";s:3:"102";s:3:"sal";s:3:"103";s:4:"sõn";s:3:"104";s:3:"ter";s:3:"105";s:3:"ul ";s:3:"106";s:4:"või";s:3:"107";s:3:" el";s:3:"108";s:3:" ne";s:3:"109";s:3:"a j";s:3:"110";s:3:"ate";s:3:"111";s:3:"end";s:3:"112";s:3:"i k";s:3:"113";s:3:"ita";s:3:"114";s:3:"kar";s:3:"115";s:3:"kor";s:3:"116";s:3:"l o";s:3:"117";s:3:"lt ";s:3:"118";s:3:"maa";s:3:"119";s:3:"oli";s:3:"120";s:3:"sti";s:3:"121";s:3:"vad";s:3:"122";s:5:"ään";s:3:"123";s:3:" ju";s:3:"124";s:4:" jä";s:3:"125";s:4:" kü";s:3:"126";s:3:" ma";s:3:"127";s:3:" po";s:3:"128";s:4:" üt";s:3:"129";s:3:"aas";s:3:"130";s:3:"aks";s:3:"131";s:3:"at ";s:3:"132";s:3:"ed ";s:3:"133";s:3:"eri";s:3:"134";s:3:"hoi";s:3:"135";s:3:"i s";s:3:"136";s:3:"ka ";s:3:"137";s:3:"la ";s:3:"138";s:3:"nni";s:3:"139";s:3:"oid";s:3:"140";s:3:"pai";s:3:"141";s:3:"rit";s:3:"142";s:3:"us ";s:3:"143";s:4:"ütl";s:3:"144";s:3:" aa";s:3:"145";s:3:" lo";s:3:"146";s:3:" to";s:3:"147";s:3:" ve";s:3:"148";s:3:"a e";s:3:"149";s:3:"ada";s:3:"150";s:3:"aid";s:3:"151";s:3:"ami";s:3:"152";s:3:"and";s:3:"153";s:3:"dla";s:3:"154";s:3:"e j";s:3:"155";s:3:"ega";s:3:"156";s:3:"gi ";s:3:"157";s:3:"gu ";s:3:"158";s:3:"i p";s:3:"159";s:3:"idl";s:3:"160";s:3:"ik ";s:3:"161";s:3:"ini";s:3:"162";s:3:"jup";s:3:"163";s:3:"kal";s:3:"164";s:3:"kas";s:3:"165";s:3:"kes";s:3:"166";s:3:"koh";s:3:"167";s:3:"s e";s:3:"168";s:3:"s p";s:3:"169";s:3:"sel";s:3:"170";s:3:"sse";s:3:"171";s:3:"ui ";s:3:"172";s:3:" pi";s:3:"173";s:3:" si";s:3:"174";s:3:"aru";s:3:"175";s:3:"eda";s:3:"176";s:3:"eva";s:3:"177";s:3:"fil";s:3:"178";s:3:"i v";s:3:"179";s:3:"ida";s:3:"180";s:3:"ing";s:3:"181";s:5:"lää";s:3:"182";s:3:"me ";s:3:"183";s:3:"na ";s:3:"184";s:3:"nda";s:3:"185";s:3:"nim";s:3:"186";s:3:"ole";s:3:"187";s:3:"ots";s:3:"188";s:3:"ris";s:3:"189";s:3:"s l";s:3:"190";s:3:"sia";s:3:"191";s:3:"t p";s:3:"192";s:3:" en";s:3:"193";s:3:" mu";s:3:"194";s:3:" ol";s:3:"195";s:4:" põ";s:3:"196";s:3:" su";s:3:"197";s:4:" vä";s:3:"198";s:4:" üh";s:3:"199";s:3:"a l";s:3:"200";s:3:"a p";s:3:"201";s:3:"aga";s:3:"202";s:3:"ale";s:3:"203";s:3:"aps";s:3:"204";s:3:"arv";s:3:"205";s:3:"e a";s:3:"206";s:3:"ela";s:3:"207";s:3:"ika";s:3:"208";s:3:"lle";s:3:"209";s:3:"loo";s:3:"210";s:3:"mal";s:3:"211";s:3:"pet";s:3:"212";s:3:"t k";s:3:"213";s:3:"tee";s:3:"214";s:3:"tis";s:3:"215";s:3:"vat";s:3:"216";s:4:"äne";s:3:"217";s:4:"õnn";s:3:"218";s:3:" es";s:3:"219";s:3:" fi";s:3:"220";s:3:" vi";s:3:"221";s:3:"a i";s:3:"222";s:3:"a o";s:3:"223";s:3:"aab";s:3:"224";s:3:"aap";s:3:"225";s:3:"ala";s:3:"226";s:3:"alt";s:3:"227";s:3:"ama";s:3:"228";s:3:"anu";s:3:"229";s:3:"e p";s:3:"230";s:3:"e t";s:3:"231";s:3:"eal";s:3:"232";s:3:"eli";s:3:"233";s:3:"haa";s:3:"234";s:3:"hin";s:3:"235";s:3:"iva";s:3:"236";s:3:"kon";s:3:"237";s:3:"ku ";s:3:"238";s:3:"lik";s:3:"239";s:3:"lm ";s:3:"240";s:3:"min";s:3:"241";s:3:"n t";s:3:"242";s:3:"odu";s:3:"243";s:3:"oon";s:3:"244";s:3:"psa";s:3:"245";s:3:"ri ";s:3:"246";s:3:"si ";s:3:"247";s:3:"stu";s:3:"248";s:3:"t e";s:3:"249";s:3:"t s";s:3:"250";s:3:"ti ";s:3:"251";s:3:"ule";s:3:"252";s:3:"uur";s:3:"253";s:3:"vas";s:3:"254";s:3:"vee";s:3:"255";s:3:" ki";s:3:"256";s:3:" ni";s:3:"257";s:4:" nä";s:3:"258";s:3:" ra";s:3:"259";s:3:"aig";s:3:"260";s:3:"aka";s:3:"261";s:3:"all";s:3:"262";s:3:"atu";s:3:"263";s:3:"e e";s:3:"264";s:3:"eis";s:3:"265";s:3:"ers";s:3:"266";s:3:"i e";s:3:"267";s:3:"ii ";s:3:"268";s:3:"iis";s:3:"269";s:3:"il ";s:3:"270";s:3:"ima";s:3:"271";s:3:"its";s:3:"272";s:3:"kka";s:3:"273";s:3:"kuh";s:3:"274";s:3:"l k";s:3:"275";s:3:"lat";s:3:"276";s:3:"maj";s:3:"277";s:3:"ndu";s:3:"278";s:3:"ni ";s:3:"279";s:3:"nii";s:3:"280";s:3:"oma";s:3:"281";s:3:"ool";s:3:"282";s:3:"rso";s:3:"283";s:3:"ru ";s:3:"284";s:3:"rva";s:3:"285";s:3:"s t";s:3:"286";s:3:"sek";s:3:"287";s:3:"son";s:3:"288";s:3:"ste";s:3:"289";s:3:"t m";s:3:"290";s:3:"taj";s:3:"291";s:3:"tam";s:3:"292";s:3:"ude";s:3:"293";s:3:"uho";s:3:"294";s:3:"vai";s:3:"295";s:3:" ag";s:3:"296";s:3:" os";s:3:"297";s:3:" pa";s:3:"298";s:3:" re";s:3:"299";}s:5:"farsi";a:300:{s:5:"ان ";s:1:"0";s:5:"ای ";s:1:"1";s:5:"ه ا";s:1:"2";s:5:" اي";s:1:"3";s:5:" در";s:1:"4";s:5:"به ";s:1:"5";s:5:" بر";s:1:"6";s:5:"در ";s:1:"7";s:6:"ران";s:1:"8";s:5:" به";s:1:"9";s:5:"ی ا";s:2:"10";s:5:"از ";s:2:"11";s:5:"ين ";s:2:"12";s:5:"می ";s:2:"13";s:5:" از";s:2:"14";s:5:"ده ";s:2:"15";s:5:"ست ";s:2:"16";s:6:"است";s:2:"17";s:5:" اس";s:2:"18";s:5:" که";s:2:"19";s:5:"که ";s:2:"20";s:6:"اير";s:2:"21";s:5:"ند ";s:2:"22";s:6:"اين";s:2:"23";s:5:" ها";s:2:"24";s:6:"يرا";s:2:"25";s:5:"ود ";s:2:"26";s:5:" را";s:2:"27";s:6:"های";s:2:"28";s:5:" خو";s:2:"29";s:5:"ته ";s:2:"30";s:5:"را ";s:2:"31";s:6:"رای";s:2:"32";s:5:"رد ";s:2:"33";s:5:"ن ب";s:2:"34";s:6:"کرد";s:2:"35";s:4:" و ";s:2:"36";s:5:" کر";s:2:"37";s:5:"ات ";s:2:"38";s:6:"برا";s:2:"39";s:5:"د ک";s:2:"40";s:6:"مان";s:2:"41";s:5:"ی د";s:2:"42";s:5:" ان";s:2:"43";s:6:"خوا";s:2:"44";s:6:"شور";s:2:"45";s:5:" با";s:2:"46";s:5:"ن ا";s:2:"47";s:5:" سا";s:2:"48";s:6:"تمی";s:2:"49";s:5:"ری ";s:2:"50";s:6:"اتم";s:2:"51";s:5:"ا ا";s:2:"52";s:6:"واه";s:2:"53";s:5:" ات";s:2:"54";s:5:" عر";s:2:"55";s:5:"اق ";s:2:"56";s:5:"ر م";s:2:"57";s:6:"راق";s:2:"58";s:6:"عرا";s:2:"59";s:5:"ی ب";s:2:"60";s:5:" تا";s:2:"61";s:5:" تو";s:2:"62";s:5:"ار ";s:2:"63";s:5:"ر ا";s:2:"64";s:5:"ن م";s:2:"65";s:5:"ه ب";s:2:"66";s:5:"ور ";s:2:"67";s:5:"يد ";s:2:"68";s:5:"ی ک";s:2:"69";s:5:" ام";s:2:"70";s:5:" دا";s:2:"71";s:5:" کن";s:2:"72";s:6:"اهد";s:2:"73";s:5:"هد ";s:2:"74";s:5:" آن";s:2:"75";s:5:" می";s:2:"76";s:5:" ني";s:2:"77";s:5:" گف";s:2:"78";s:5:"د ا";s:2:"79";s:6:"گفت";s:2:"80";s:5:" کش";s:2:"81";s:5:"ا ب";s:2:"82";s:5:"نی ";s:2:"83";s:5:"ها ";s:2:"84";s:6:"کشو";s:2:"85";s:5:" رو";s:2:"86";s:5:"ت ک";s:2:"87";s:6:"نيو";s:2:"88";s:5:"ه م";s:2:"89";s:5:"وی ";s:2:"90";s:5:"ی ت";s:2:"91";s:5:" شو";s:2:"92";s:5:"ال ";s:2:"93";s:6:"دار";s:2:"94";s:5:"مه ";s:2:"95";s:5:"ن ک";s:2:"96";s:5:"ه د";s:2:"97";s:5:"يه ";s:2:"98";s:5:" ما";s:2:"99";s:6:"امه";s:3:"100";s:5:"د ب";s:3:"101";s:6:"زار";s:3:"102";s:6:"ورا";s:3:"103";s:6:"گزا";s:3:"104";s:5:" پي";s:3:"105";s:5:"آن ";s:3:"106";s:6:"انت";s:3:"107";s:5:"ت ا";s:3:"108";s:5:"فت ";s:3:"109";s:5:"ه ن";s:3:"110";s:5:"ی خ";s:3:"111";s:6:"اما";s:3:"112";s:6:"بات";s:3:"113";s:5:"ما ";s:3:"114";s:6:"ملل";s:3:"115";s:6:"نام";s:3:"116";s:5:"ير ";s:3:"117";s:5:"ی م";s:3:"118";s:5:"ی ه";s:3:"119";s:5:" آم";s:3:"120";s:5:" ای";s:3:"121";s:5:" من";s:3:"122";s:6:"انس";s:3:"123";s:6:"اني";s:3:"124";s:5:"ت د";s:3:"125";s:6:"رده";s:3:"126";s:6:"ساز";s:3:"127";s:5:"ن د";s:3:"128";s:5:"نه ";s:3:"129";s:6:"ورد";s:3:"130";s:5:" او";s:3:"131";s:5:" بي";s:3:"132";s:5:" سو";s:3:"133";s:5:" شد";s:3:"134";s:6:"اده";s:3:"135";s:6:"اند";s:3:"136";s:5:"با ";s:3:"137";s:5:"ت ب";s:3:"138";s:5:"ر ب";s:3:"139";s:5:"ز ا";s:3:"140";s:6:"زما";s:3:"141";s:6:"سته";s:3:"142";s:5:"ن ر";s:3:"143";s:5:"ه س";s:3:"144";s:6:"وان";s:3:"145";s:5:"وز ";s:3:"146";s:5:"ی ر";s:3:"147";s:5:"ی س";s:3:"148";s:5:" هس";s:3:"149";s:6:"ابا";s:3:"150";s:5:"ام ";s:3:"151";s:6:"اور";s:3:"152";s:6:"تخا";s:3:"153";s:6:"خاب";s:3:"154";s:6:"خود";s:3:"155";s:5:"د د";s:3:"156";s:5:"دن ";s:3:"157";s:6:"رها";s:3:"158";s:6:"روز";s:3:"159";s:6:"رگز";s:3:"160";s:6:"نتخ";s:3:"161";s:5:"ه ش";s:3:"162";s:5:"ه ه";s:3:"163";s:6:"هست";s:3:"164";s:5:"يت ";s:3:"165";s:5:"يم ";s:3:"166";s:5:" دو";s:3:"167";s:5:" دي";s:3:"168";s:5:" مو";s:3:"169";s:5:" نو";s:3:"170";s:5:" هم";s:3:"171";s:5:" کا";s:3:"172";s:5:"اد ";s:3:"173";s:6:"اری";s:3:"174";s:6:"انی";s:3:"175";s:5:"بر ";s:3:"176";s:6:"بود";s:3:"177";s:5:"ت ه";s:3:"178";s:5:"ح ه";s:3:"179";s:6:"حال";s:3:"180";s:5:"رش ";s:3:"181";s:5:"عه ";s:3:"182";s:5:"لی ";s:3:"183";s:5:"وم ";s:3:"184";s:6:"ژان";s:3:"185";s:5:" سل";s:3:"186";s:6:"آمر";s:3:"187";s:5:"اح ";s:3:"188";s:6:"توس";s:3:"189";s:6:"داد";s:3:"190";s:6:"دام";s:3:"191";s:5:"ر د";s:3:"192";s:5:"ره ";s:3:"193";s:6:"ريک";s:3:"194";s:5:"زی ";s:3:"195";s:6:"سلا";s:3:"196";s:6:"شود";s:3:"197";s:6:"لاح";s:3:"198";s:6:"مري";s:3:"199";s:6:"نند";s:3:"200";s:5:"ه ع";s:3:"201";s:6:"يما";s:3:"202";s:6:"يکا";s:3:"203";s:6:"پيم";s:3:"204";s:5:"گر ";s:3:"205";s:5:" آژ";s:3:"206";s:5:" ال";s:3:"207";s:5:" بو";s:3:"208";s:5:" مق";s:3:"209";s:5:" مل";s:3:"210";s:5:" وی";s:3:"211";s:6:"آژا";s:3:"212";s:6:"ازم";s:3:"213";s:6:"ازی";s:3:"214";s:6:"بار";s:3:"215";s:6:"برن";s:3:"216";s:5:"ر آ";s:3:"217";s:5:"ز س";s:3:"218";s:6:"سعه";s:3:"219";s:6:"شته";s:3:"220";s:6:"مات";s:3:"221";s:5:"ن آ";s:3:"222";s:5:"ن پ";s:3:"223";s:5:"نس ";s:3:"224";s:5:"ه گ";s:3:"225";s:6:"وسع";s:3:"226";s:6:"يان";s:3:"227";s:6:"يوم";s:3:"228";s:5:"کا ";s:3:"229";s:6:"کام";s:3:"230";s:6:"کند";s:3:"231";s:5:" خا";s:3:"232";s:5:" سر";s:3:"233";s:6:"آور";s:3:"234";s:6:"ارد";s:3:"235";s:6:"اقد";s:3:"236";s:6:"ايم";s:3:"237";s:6:"ايی";s:3:"238";s:6:"برگ";s:3:"239";s:5:"ت ع";s:3:"240";s:5:"تن ";s:3:"241";s:5:"خت ";s:3:"242";s:5:"د و";s:3:"243";s:5:"ر خ";s:3:"244";s:5:"رک ";s:3:"245";s:6:"زير";s:3:"246";s:6:"فته";s:3:"247";s:6:"قدا";s:3:"248";s:5:"ل ت";s:3:"249";s:6:"مين";s:3:"250";s:5:"ن گ";s:3:"251";s:5:"ه آ";s:3:"252";s:5:"ه خ";s:3:"253";s:5:"ه ک";s:3:"254";s:6:"ورک";s:3:"255";s:6:"ويو";s:3:"256";s:6:"يور";s:3:"257";s:6:"يوي";s:3:"258";s:5:"يی ";s:3:"259";s:5:"ک ت";s:3:"260";s:5:"ی ش";s:3:"261";s:5:" اق";s:3:"262";s:5:" حا";s:3:"263";s:5:" حق";s:3:"264";s:5:" دس";s:3:"265";s:5:" شک";s:3:"266";s:5:" عم";s:3:"267";s:5:" يک";s:3:"268";s:5:"ا ت";s:3:"269";s:5:"ا د";s:3:"270";s:6:"ارج";s:3:"271";s:6:"بين";s:3:"272";s:5:"ت م";s:3:"273";s:5:"ت و";s:3:"274";s:6:"تاي";s:3:"275";s:6:"دست";s:3:"276";s:5:"ر ح";s:3:"277";s:5:"ر س";s:3:"278";s:6:"رنا";s:3:"279";s:5:"ز ب";s:3:"280";s:6:"شکا";s:3:"281";s:5:"لل ";s:3:"282";s:5:"م ک";s:3:"283";s:5:"مز ";s:3:"284";s:6:"ندا";s:3:"285";s:6:"نوا";s:3:"286";s:5:"و ا";s:3:"287";s:6:"وره";s:3:"288";s:5:"ون ";s:3:"289";s:6:"وند";s:3:"290";s:6:"يمز";s:3:"291";s:5:" آو";s:3:"292";s:5:" اع";s:3:"293";s:5:" فر";s:3:"294";s:5:" مت";s:3:"295";s:5:" نه";s:3:"296";s:5:" هر";s:3:"297";s:5:" وز";s:3:"298";s:5:" گز";s:3:"299";}s:7:"finnish";a:300:{s:3:"en ";s:1:"0";s:3:"in ";s:1:"1";s:3:"an ";s:1:"2";s:3:"on ";s:1:"3";s:3:"ist";s:1:"4";s:3:"ta ";s:1:"5";s:3:"ja ";s:1:"6";s:3:"n t";s:1:"7";s:3:"sa ";s:1:"8";s:3:"sta";s:1:"9";s:3:"aan";s:2:"10";s:3:"n p";s:2:"11";s:3:" on";s:2:"12";s:3:"ssa";s:2:"13";s:3:"tta";s:2:"14";s:4:"tä ";s:2:"15";s:3:" ka";s:2:"16";s:3:" pa";s:2:"17";s:3:"si ";s:2:"18";s:3:" ja";s:2:"19";s:3:"n k";s:2:"20";s:3:"lla";s:2:"21";s:4:"än ";s:2:"22";s:3:"een";s:2:"23";s:3:"n v";s:2:"24";s:3:"ksi";s:2:"25";s:3:"ett";s:2:"26";s:3:"nen";s:2:"27";s:3:"taa";s:2:"28";s:4:"ttä";s:2:"29";s:3:" va";s:2:"30";s:3:"ill";s:2:"31";s:3:"itt";s:2:"32";s:3:" jo";s:2:"33";s:3:" ko";s:2:"34";s:3:"n s";s:2:"35";s:3:" tu";s:2:"36";s:3:"ia ";s:2:"37";s:3:" su";s:2:"38";s:3:"a p";s:2:"39";s:3:"aa ";s:2:"40";s:3:"la ";s:2:"41";s:3:"lle";s:2:"42";s:3:"n m";s:2:"43";s:3:"le ";s:2:"44";s:3:"tte";s:2:"45";s:3:"na ";s:2:"46";s:3:" ta";s:2:"47";s:3:" ve";s:2:"48";s:3:"at ";s:2:"49";s:3:" vi";s:2:"50";s:3:"utt";s:2:"51";s:3:" sa";s:2:"52";s:3:"ise";s:2:"53";s:3:"sen";s:2:"54";s:3:" ku";s:2:"55";s:4:" nä";s:2:"56";s:4:" pä";s:2:"57";s:3:"ste";s:2:"58";s:3:" ol";s:2:"59";s:3:"a t";s:2:"60";s:3:"ais";s:2:"61";s:3:"maa";s:2:"62";s:3:"ti ";s:2:"63";s:3:"a o";s:2:"64";s:3:"oit";s:2:"65";s:5:"pää";s:2:"66";s:3:" pi";s:2:"67";s:3:"a v";s:2:"68";s:3:"ala";s:2:"69";s:3:"ine";s:2:"70";s:3:"isi";s:2:"71";s:3:"tel";s:2:"72";s:3:"tti";s:2:"73";s:3:" si";s:2:"74";s:3:"a k";s:2:"75";s:3:"all";s:2:"76";s:3:"iin";s:2:"77";s:3:"kin";s:2:"78";s:4:"stä";s:2:"79";s:3:"uom";s:2:"80";s:3:"vii";s:2:"81";s:3:" ma";s:2:"82";s:3:" se";s:2:"83";s:4:"enä";s:2:"84";s:3:" mu";s:2:"85";s:3:"a s";s:2:"86";s:3:"est";s:2:"87";s:3:"iss";s:2:"88";s:4:"llä";s:2:"89";s:3:"lok";s:2:"90";s:4:"lä ";s:2:"91";s:3:"n j";s:2:"92";s:3:"n o";s:2:"93";s:3:"toi";s:2:"94";s:3:"ven";s:2:"95";s:3:"ytt";s:2:"96";s:3:" li";s:2:"97";s:3:"ain";s:2:"98";s:3:"et ";s:2:"99";s:3:"ina";s:3:"100";s:3:"n a";s:3:"101";s:3:"n n";s:3:"102";s:3:"oll";s:3:"103";s:3:"plo";s:3:"104";s:3:"ten";s:3:"105";s:3:"ust";s:3:"106";s:4:"äll";s:3:"107";s:5:"ään";s:3:"108";s:3:" to";s:3:"109";s:3:"den";s:3:"110";s:3:"men";s:3:"111";s:3:"oki";s:3:"112";s:3:"suo";s:3:"113";s:4:"sä ";s:3:"114";s:5:"tää";s:3:"115";s:3:"uks";s:3:"116";s:3:"vat";s:3:"117";s:3:" al";s:3:"118";s:3:" ke";s:3:"119";s:3:" te";s:3:"120";s:3:"a e";s:3:"121";s:3:"lii";s:3:"122";s:3:"tai";s:3:"123";s:3:"tei";s:3:"124";s:4:"äis";s:3:"125";s:5:"ää ";s:3:"126";s:3:" pl";s:3:"127";s:3:"ell";s:3:"128";s:3:"i t";s:3:"129";s:3:"ide";s:3:"130";s:3:"ikk";s:3:"131";s:3:"ki ";s:3:"132";s:3:"nta";s:3:"133";s:3:"ova";s:3:"134";s:3:"yst";s:3:"135";s:3:"yt ";s:3:"136";s:4:"ä p";s:3:"137";s:4:"äyt";s:3:"138";s:3:" ha";s:3:"139";s:3:" pe";s:3:"140";s:4:" tä";s:3:"141";s:3:"a n";s:3:"142";s:3:"aik";s:3:"143";s:3:"i p";s:3:"144";s:3:"i v";s:3:"145";s:3:"nyt";s:3:"146";s:4:"näy";s:3:"147";s:3:"pal";s:3:"148";s:3:"tee";s:3:"149";s:3:"un ";s:3:"150";s:3:" me";s:3:"151";s:3:"a m";s:3:"152";s:3:"ess";s:3:"153";s:3:"kau";s:3:"154";s:3:"pai";s:3:"155";s:3:"stu";s:3:"156";s:3:"ut ";s:3:"157";s:3:"voi";s:3:"158";s:3:" et";s:3:"159";s:3:"a h";s:3:"160";s:3:"eis";s:3:"161";s:3:"hte";s:3:"162";s:3:"i o";s:3:"163";s:3:"iik";s:3:"164";s:3:"ita";s:3:"165";s:3:"jou";s:3:"166";s:3:"mis";s:3:"167";s:3:"nin";s:3:"168";s:3:"nut";s:3:"169";s:3:"sia";s:3:"170";s:4:"ssä";s:3:"171";s:3:"van";s:3:"172";s:3:" ty";s:3:"173";s:3:" yh";s:3:"174";s:3:"aks";s:3:"175";s:3:"ime";s:3:"176";s:3:"loi";s:3:"177";s:3:"me ";s:3:"178";s:3:"n e";s:3:"179";s:3:"n h";s:3:"180";s:3:"n l";s:3:"181";s:3:"oin";s:3:"182";s:3:"ome";s:3:"183";s:3:"ott";s:3:"184";s:3:"ouk";s:3:"185";s:3:"sit";s:3:"186";s:3:"sti";s:3:"187";s:3:"tet";s:3:"188";s:3:"tie";s:3:"189";s:3:"ukk";s:3:"190";s:4:"ä k";s:3:"191";s:3:" ra";s:3:"192";s:3:" ti";s:3:"193";s:3:"aja";s:3:"194";s:3:"asi";s:3:"195";s:3:"ent";s:3:"196";s:3:"iga";s:3:"197";s:3:"iig";s:3:"198";s:3:"ite";s:3:"199";s:3:"jan";s:3:"200";s:3:"kaa";s:3:"201";s:3:"kse";s:3:"202";s:3:"laa";s:3:"203";s:3:"lan";s:3:"204";s:3:"li ";s:3:"205";s:4:"näj";s:3:"206";s:3:"ole";s:3:"207";s:3:"tii";s:3:"208";s:3:"usi";s:3:"209";s:5:"äjä";s:3:"210";s:3:" ov";s:3:"211";s:3:"a a";s:3:"212";s:3:"ant";s:3:"213";s:3:"ava";s:3:"214";s:3:"ei ";s:3:"215";s:3:"eri";s:3:"216";s:3:"kan";s:3:"217";s:3:"kku";s:3:"218";s:3:"lai";s:3:"219";s:3:"lis";s:3:"220";s:4:"läi";s:3:"221";s:3:"mat";s:3:"222";s:3:"ois";s:3:"223";s:3:"pel";s:3:"224";s:3:"sil";s:3:"225";s:3:"sty";s:3:"226";s:3:"taj";s:3:"227";s:3:"tav";s:3:"228";s:3:"ttu";s:3:"229";s:4:"työ";s:3:"230";s:4:"yös";s:3:"231";s:4:"ä o";s:3:"232";s:3:" ai";s:3:"233";s:3:" pu";s:3:"234";s:3:"a j";s:3:"235";s:3:"a l";s:3:"236";s:3:"aal";s:3:"237";s:3:"arv";s:3:"238";s:3:"ass";s:3:"239";s:3:"ien";s:3:"240";s:3:"imi";s:3:"241";s:3:"imm";s:3:"242";s:4:"itä";s:3:"243";s:3:"ka ";s:3:"244";s:3:"kes";s:3:"245";s:3:"kue";s:3:"246";s:3:"lee";s:3:"247";s:3:"lin";s:3:"248";s:3:"llo";s:3:"249";s:3:"one";s:3:"250";s:3:"ri ";s:3:"251";s:3:"t o";s:3:"252";s:3:"t p";s:3:"253";s:3:"tu ";s:3:"254";s:3:"val";s:3:"255";s:3:"vuo";s:3:"256";s:3:" ei";s:3:"257";s:3:" he";s:3:"258";s:3:" hy";s:3:"259";s:3:" my";s:3:"260";s:3:" vo";s:3:"261";s:3:"ali";s:3:"262";s:3:"alo";s:3:"263";s:3:"ano";s:3:"264";s:3:"ast";s:3:"265";s:3:"att";s:3:"266";s:3:"auk";s:3:"267";s:3:"eli";s:3:"268";s:3:"ely";s:3:"269";s:3:"hti";s:3:"270";s:3:"ika";s:3:"271";s:3:"ken";s:3:"272";s:3:"kki";s:3:"273";s:3:"lys";s:3:"274";s:3:"min";s:3:"275";s:4:"myö";s:3:"276";s:3:"oht";s:3:"277";s:3:"oma";s:3:"278";s:3:"tus";s:3:"279";s:3:"umi";s:3:"280";s:3:"yks";s:3:"281";s:4:"ät ";s:3:"282";s:5:"ääl";s:3:"283";s:4:"ös ";s:3:"284";s:3:" ar";s:3:"285";s:3:" eu";s:3:"286";s:3:" hu";s:3:"287";s:3:" na";s:3:"288";s:3:"aat";s:3:"289";s:3:"alk";s:3:"290";s:3:"alu";s:3:"291";s:3:"ans";s:3:"292";s:3:"arj";s:3:"293";s:3:"enn";s:3:"294";s:3:"han";s:3:"295";s:3:"kuu";s:3:"296";s:3:"n y";s:3:"297";s:3:"set";s:3:"298";s:3:"sim";s:3:"299";}s:6:"french";a:300:{s:3:"es ";s:1:"0";s:3:" de";s:1:"1";s:3:"de ";s:1:"2";s:3:" le";s:1:"3";s:3:"ent";s:1:"4";s:3:"le ";s:1:"5";s:3:"nt ";s:1:"6";s:3:"la ";s:1:"7";s:3:"s d";s:1:"8";s:3:" la";s:1:"9";s:3:"ion";s:2:"10";s:3:"on ";s:2:"11";s:3:"re ";s:2:"12";s:3:" pa";s:2:"13";s:3:"e l";s:2:"14";s:3:"e d";s:2:"15";s:3:" l'";s:2:"16";s:3:"e p";s:2:"17";s:3:" co";s:2:"18";s:3:" pr";s:2:"19";s:3:"tio";s:2:"20";s:3:"ns ";s:2:"21";s:3:" en";s:2:"22";s:3:"ne ";s:2:"23";s:3:"que";s:2:"24";s:3:"r l";s:2:"25";s:3:"les";s:2:"26";s:3:"ur ";s:2:"27";s:3:"en ";s:2:"28";s:3:"ati";s:2:"29";s:3:"ue ";s:2:"30";s:3:" po";s:2:"31";s:3:" d'";s:2:"32";s:3:"par";s:2:"33";s:3:" a ";s:2:"34";s:3:"et ";s:2:"35";s:3:"it ";s:2:"36";s:3:" qu";s:2:"37";s:3:"men";s:2:"38";s:3:"ons";s:2:"39";s:3:"te ";s:2:"40";s:3:" et";s:2:"41";s:3:"t d";s:2:"42";s:3:" re";s:2:"43";s:3:"des";s:2:"44";s:3:" un";s:2:"45";s:3:"ie ";s:2:"46";s:3:"s l";s:2:"47";s:3:" su";s:2:"48";s:3:"pou";s:2:"49";s:3:" au";s:2:"50";s:4:" à ";s:2:"51";s:3:"con";s:2:"52";s:3:"er ";s:2:"53";s:3:" no";s:2:"54";s:3:"ait";s:2:"55";s:3:"e c";s:2:"56";s:3:"se ";s:2:"57";s:4:"té ";s:2:"58";s:3:"du ";s:2:"59";s:3:" du";s:2:"60";s:4:" dé";s:2:"61";s:3:"ce ";s:2:"62";s:3:"e e";s:2:"63";s:3:"is ";s:2:"64";s:3:"n d";s:2:"65";s:3:"s a";s:2:"66";s:3:" so";s:2:"67";s:3:"e r";s:2:"68";s:3:"e s";s:2:"69";s:3:"our";s:2:"70";s:3:"res";s:2:"71";s:3:"ssi";s:2:"72";s:3:"eur";s:2:"73";s:3:" se";s:2:"74";s:3:"eme";s:2:"75";s:3:"est";s:2:"76";s:3:"us ";s:2:"77";s:3:"sur";s:2:"78";s:3:"ant";s:2:"79";s:3:"iqu";s:2:"80";s:3:"s p";s:2:"81";s:3:"une";s:2:"82";s:3:"uss";s:2:"83";s:3:"l'a";s:2:"84";s:3:"pro";s:2:"85";s:3:"ter";s:2:"86";s:3:"tre";s:2:"87";s:3:"end";s:2:"88";s:3:"rs ";s:2:"89";s:3:" ce";s:2:"90";s:3:"e a";s:2:"91";s:3:"t p";s:2:"92";s:3:"un ";s:2:"93";s:3:" ma";s:2:"94";s:3:" ru";s:2:"95";s:4:" ré";s:2:"96";s:3:"ous";s:2:"97";s:3:"ris";s:2:"98";s:3:"rus";s:2:"99";s:3:"sse";s:3:"100";s:3:"ans";s:3:"101";s:3:"ar ";s:3:"102";s:3:"com";s:3:"103";s:3:"e m";s:3:"104";s:3:"ire";s:3:"105";s:3:"nce";s:3:"106";s:3:"nte";s:3:"107";s:3:"t l";s:3:"108";s:3:" av";s:3:"109";s:3:" mo";s:3:"110";s:3:" te";s:3:"111";s:3:"il ";s:3:"112";s:3:"me ";s:3:"113";s:3:"ont";s:3:"114";s:3:"ten";s:3:"115";s:3:"a p";s:3:"116";s:3:"dan";s:3:"117";s:3:"pas";s:3:"118";s:3:"qui";s:3:"119";s:3:"s e";s:3:"120";s:3:"s s";s:3:"121";s:3:" in";s:3:"122";s:3:"ist";s:3:"123";s:3:"lle";s:3:"124";s:3:"nou";s:3:"125";s:4:"pré";s:3:"126";s:3:"'un";s:3:"127";s:3:"air";s:3:"128";s:3:"d'a";s:3:"129";s:3:"ir ";s:3:"130";s:3:"n e";s:3:"131";s:3:"rop";s:3:"132";s:3:"ts ";s:3:"133";s:3:" da";s:3:"134";s:3:"a s";s:3:"135";s:3:"as ";s:3:"136";s:3:"au ";s:3:"137";s:3:"den";s:3:"138";s:3:"mai";s:3:"139";s:3:"mis";s:3:"140";s:3:"ori";s:3:"141";s:3:"out";s:3:"142";s:3:"rme";s:3:"143";s:3:"sio";s:3:"144";s:3:"tte";s:3:"145";s:3:"ux ";s:3:"146";s:3:"a d";s:3:"147";s:3:"ien";s:3:"148";s:3:"n a";s:3:"149";s:3:"ntr";s:3:"150";s:3:"omm";s:3:"151";s:3:"ort";s:3:"152";s:3:"ouv";s:3:"153";s:3:"s c";s:3:"154";s:3:"son";s:3:"155";s:3:"tes";s:3:"156";s:3:"ver";s:3:"157";s:4:"ère";s:3:"158";s:3:" il";s:3:"159";s:3:" m ";s:3:"160";s:3:" sa";s:3:"161";s:3:" ve";s:3:"162";s:3:"a r";s:3:"163";s:3:"ais";s:3:"164";s:3:"ava";s:3:"165";s:3:"di ";s:3:"166";s:3:"n p";s:3:"167";s:3:"sti";s:3:"168";s:3:"ven";s:3:"169";s:3:" mi";s:3:"170";s:3:"ain";s:3:"171";s:3:"enc";s:3:"172";s:3:"for";s:3:"173";s:4:"ité";s:3:"174";s:3:"lar";s:3:"175";s:3:"oir";s:3:"176";s:3:"rem";s:3:"177";s:3:"ren";s:3:"178";s:3:"rro";s:3:"179";s:4:"rés";s:3:"180";s:3:"sie";s:3:"181";s:3:"t a";s:3:"182";s:3:"tur";s:3:"183";s:3:" pe";s:3:"184";s:3:" to";s:3:"185";s:3:"d'u";s:3:"186";s:3:"ell";s:3:"187";s:3:"err";s:3:"188";s:3:"ers";s:3:"189";s:3:"ide";s:3:"190";s:3:"ine";s:3:"191";s:3:"iss";s:3:"192";s:3:"mes";s:3:"193";s:3:"por";s:3:"194";s:3:"ran";s:3:"195";s:3:"sit";s:3:"196";s:3:"st ";s:3:"197";s:3:"t r";s:3:"198";s:3:"uti";s:3:"199";s:3:"vai";s:3:"200";s:4:"é l";s:3:"201";s:4:"ési";s:3:"202";s:3:" di";s:3:"203";s:3:" n'";s:3:"204";s:4:" ét";s:3:"205";s:3:"a c";s:3:"206";s:3:"ass";s:3:"207";s:3:"e t";s:3:"208";s:3:"in ";s:3:"209";s:3:"nde";s:3:"210";s:3:"pre";s:3:"211";s:3:"rat";s:3:"212";s:3:"s m";s:3:"213";s:3:"ste";s:3:"214";s:3:"tai";s:3:"215";s:3:"tch";s:3:"216";s:3:"ui ";s:3:"217";s:3:"uro";s:3:"218";s:4:"ès ";s:3:"219";s:3:" es";s:3:"220";s:3:" fo";s:3:"221";s:3:" tr";s:3:"222";s:3:"'ad";s:3:"223";s:3:"app";s:3:"224";s:3:"aux";s:3:"225";s:4:"e à";s:3:"226";s:3:"ett";s:3:"227";s:3:"iti";s:3:"228";s:3:"lit";s:3:"229";s:3:"nal";s:3:"230";s:4:"opé";s:3:"231";s:3:"r d";s:3:"232";s:3:"ra ";s:3:"233";s:3:"rai";s:3:"234";s:3:"ror";s:3:"235";s:3:"s r";s:3:"236";s:3:"tat";s:3:"237";s:4:"uté";s:3:"238";s:4:"à l";s:3:"239";s:3:" af";s:3:"240";s:3:"anc";s:3:"241";s:3:"ara";s:3:"242";s:3:"art";s:3:"243";s:3:"bre";s:3:"244";s:4:"ché";s:3:"245";s:3:"dre";s:3:"246";s:3:"e f";s:3:"247";s:3:"ens";s:3:"248";s:3:"lem";s:3:"249";s:3:"n r";s:3:"250";s:3:"n t";s:3:"251";s:3:"ndr";s:3:"252";s:3:"nne";s:3:"253";s:3:"onn";s:3:"254";s:3:"pos";s:3:"255";s:3:"s t";s:3:"256";s:3:"tiq";s:3:"257";s:3:"ure";s:3:"258";s:3:" tu";s:3:"259";s:3:"ale";s:3:"260";s:3:"and";s:3:"261";s:3:"ave";s:3:"262";s:3:"cla";s:3:"263";s:3:"cou";s:3:"264";s:3:"e n";s:3:"265";s:3:"emb";s:3:"266";s:3:"ins";s:3:"267";s:3:"jou";s:3:"268";s:3:"mme";s:3:"269";s:3:"rie";s:3:"270";s:4:"rès";s:3:"271";s:3:"sem";s:3:"272";s:3:"str";s:3:"273";s:3:"t i";s:3:"274";s:3:"ues";s:3:"275";s:3:"uni";s:3:"276";s:3:"uve";s:3:"277";s:4:"é d";s:3:"278";s:4:"ée ";s:3:"279";s:3:" ch";s:3:"280";s:3:" do";s:3:"281";s:3:" eu";s:3:"282";s:3:" fa";s:3:"283";s:3:" lo";s:3:"284";s:3:" ne";s:3:"285";s:3:" ra";s:3:"286";s:3:"arl";s:3:"287";s:3:"att";s:3:"288";s:3:"ec ";s:3:"289";s:3:"ica";s:3:"290";s:3:"l a";s:3:"291";s:3:"l'o";s:3:"292";s:4:"l'é";s:3:"293";s:3:"mmi";s:3:"294";s:3:"nta";s:3:"295";s:3:"orm";s:3:"296";s:3:"ou ";s:3:"297";s:3:"r u";s:3:"298";s:3:"rle";s:3:"299";}s:6:"german";a:300:{s:3:"en ";s:1:"0";s:3:"er ";s:1:"1";s:3:" de";s:1:"2";s:3:"der";s:1:"3";s:3:"ie ";s:1:"4";s:3:" di";s:1:"5";s:3:"die";s:1:"6";s:3:"sch";s:1:"7";s:3:"ein";s:1:"8";s:3:"che";s:1:"9";s:3:"ich";s:2:"10";s:3:"den";s:2:"11";s:3:"in ";s:2:"12";s:3:"te ";s:2:"13";s:3:"ch ";s:2:"14";s:3:" ei";s:2:"15";s:3:"ung";s:2:"16";s:3:"n d";s:2:"17";s:3:"nd ";s:2:"18";s:3:" be";s:2:"19";s:3:"ver";s:2:"20";s:3:"es ";s:2:"21";s:3:" zu";s:2:"22";s:3:"eit";s:2:"23";s:3:"gen";s:2:"24";s:3:"und";s:2:"25";s:3:" un";s:2:"26";s:3:" au";s:2:"27";s:3:" in";s:2:"28";s:3:"cht";s:2:"29";s:3:"it ";s:2:"30";s:3:"ten";s:2:"31";s:3:" da";s:2:"32";s:3:"ent";s:2:"33";s:3:" ve";s:2:"34";s:3:"and";s:2:"35";s:3:" ge";s:2:"36";s:3:"ine";s:2:"37";s:3:" mi";s:2:"38";s:3:"r d";s:2:"39";s:3:"hen";s:2:"40";s:3:"ng ";s:2:"41";s:3:"nde";s:2:"42";s:3:" vo";s:2:"43";s:3:"e d";s:2:"44";s:3:"ber";s:2:"45";s:3:"men";s:2:"46";s:3:"ei ";s:2:"47";s:3:"mit";s:2:"48";s:3:" st";s:2:"49";s:3:"ter";s:2:"50";s:3:"ren";s:2:"51";s:3:"t d";s:2:"52";s:3:" er";s:2:"53";s:3:"ere";s:2:"54";s:3:"n s";s:2:"55";s:3:"ste";s:2:"56";s:3:" se";s:2:"57";s:3:"e s";s:2:"58";s:3:"ht ";s:2:"59";s:3:"des";s:2:"60";s:3:"ist";s:2:"61";s:3:"ne ";s:2:"62";s:3:"auf";s:2:"63";s:3:"e a";s:2:"64";s:3:"isc";s:2:"65";s:3:"on ";s:2:"66";s:3:"rte";s:2:"67";s:3:" re";s:2:"68";s:3:" we";s:2:"69";s:3:"ges";s:2:"70";s:3:"uch";s:2:"71";s:4:" fü";s:2:"72";s:3:" so";s:2:"73";s:3:"bei";s:2:"74";s:3:"e e";s:2:"75";s:3:"nen";s:2:"76";s:3:"r s";s:2:"77";s:3:"ach";s:2:"78";s:4:"für";s:2:"79";s:3:"ier";s:2:"80";s:3:"par";s:2:"81";s:4:"ür ";s:2:"82";s:3:" ha";s:2:"83";s:3:"as ";s:2:"84";s:3:"ert";s:2:"85";s:3:" an";s:2:"86";s:3:" pa";s:2:"87";s:3:" sa";s:2:"88";s:3:" sp";s:2:"89";s:3:" wi";s:2:"90";s:3:"for";s:2:"91";s:3:"tag";s:2:"92";s:3:"zu ";s:2:"93";s:3:"das";s:2:"94";s:3:"rei";s:2:"95";s:3:"he ";s:2:"96";s:3:"hre";s:2:"97";s:3:"nte";s:2:"98";s:3:"sen";s:2:"99";s:3:"vor";s:3:"100";s:3:" sc";s:3:"101";s:3:"ech";s:3:"102";s:3:"etz";s:3:"103";s:3:"hei";s:3:"104";s:3:"lan";s:3:"105";s:3:"n a";s:3:"106";s:3:"pd ";s:3:"107";s:3:"st ";s:3:"108";s:3:"sta";s:3:"109";s:3:"ese";s:3:"110";s:3:"lic";s:3:"111";s:3:" ab";s:3:"112";s:3:" si";s:3:"113";s:3:"gte";s:3:"114";s:3:" wa";s:3:"115";s:3:"iti";s:3:"116";s:3:"kei";s:3:"117";s:3:"n e";s:3:"118";s:3:"nge";s:3:"119";s:3:"sei";s:3:"120";s:3:"tra";s:3:"121";s:3:"zen";s:3:"122";s:3:" im";s:3:"123";s:3:" la";s:3:"124";s:3:"art";s:3:"125";s:3:"im ";s:3:"126";s:3:"lle";s:3:"127";s:3:"n w";s:3:"128";s:3:"rde";s:3:"129";s:3:"rec";s:3:"130";s:3:"set";s:3:"131";s:3:"str";s:3:"132";s:3:"tei";s:3:"133";s:3:"tte";s:3:"134";s:3:" ni";s:3:"135";s:3:"e p";s:3:"136";s:3:"ehe";s:3:"137";s:3:"ers";s:3:"138";s:3:"g d";s:3:"139";s:3:"nic";s:3:"140";s:3:"von";s:3:"141";s:3:" al";s:3:"142";s:3:" pr";s:3:"143";s:3:"an ";s:3:"144";s:3:"aus";s:3:"145";s:3:"erf";s:3:"146";s:3:"r e";s:3:"147";s:3:"tze";s:3:"148";s:4:"tür";s:3:"149";s:3:"uf ";s:3:"150";s:3:"ag ";s:3:"151";s:3:"als";s:3:"152";s:3:"ar ";s:3:"153";s:3:"chs";s:3:"154";s:3:"end";s:3:"155";s:3:"ge ";s:3:"156";s:3:"ige";s:3:"157";s:3:"ion";s:3:"158";s:3:"ls ";s:3:"159";s:3:"n m";s:3:"160";s:3:"ngs";s:3:"161";s:3:"nis";s:3:"162";s:3:"nt ";s:3:"163";s:3:"ord";s:3:"164";s:3:"s s";s:3:"165";s:3:"sse";s:3:"166";s:4:" tü";s:3:"167";s:3:"ahl";s:3:"168";s:3:"e b";s:3:"169";s:3:"ede";s:3:"170";s:3:"em ";s:3:"171";s:3:"len";s:3:"172";s:3:"n i";s:3:"173";s:3:"orm";s:3:"174";s:3:"pro";s:3:"175";s:3:"rke";s:3:"176";s:3:"run";s:3:"177";s:3:"s d";s:3:"178";s:3:"wah";s:3:"179";s:3:"wer";s:3:"180";s:4:"ürk";s:3:"181";s:3:" me";s:3:"182";s:3:"age";s:3:"183";s:3:"att";s:3:"184";s:3:"ell";s:3:"185";s:3:"est";s:3:"186";s:3:"hat";s:3:"187";s:3:"n b";s:3:"188";s:3:"oll";s:3:"189";s:3:"raf";s:3:"190";s:3:"s a";s:3:"191";s:3:"tsc";s:3:"192";s:3:" es";s:3:"193";s:3:" fo";s:3:"194";s:3:" gr";s:3:"195";s:3:" ja";s:3:"196";s:3:"abe";s:3:"197";s:3:"auc";s:3:"198";s:3:"ben";s:3:"199";s:3:"e n";s:3:"200";s:3:"ege";s:3:"201";s:3:"lie";s:3:"202";s:3:"n u";s:3:"203";s:3:"r v";s:3:"204";s:3:"re ";s:3:"205";s:3:"rit";s:3:"206";s:3:"sag";s:3:"207";s:3:" am";s:3:"208";s:3:"agt";s:3:"209";s:3:"ahr";s:3:"210";s:3:"bra";s:3:"211";s:3:"de ";s:3:"212";s:3:"erd";s:3:"213";s:3:"her";s:3:"214";s:3:"ite";s:3:"215";s:3:"le ";s:3:"216";s:3:"n p";s:3:"217";s:3:"n v";s:3:"218";s:3:"or ";s:3:"219";s:3:"rbe";s:3:"220";s:3:"rt ";s:3:"221";s:3:"sic";s:3:"222";s:3:"wie";s:3:"223";s:4:"übe";s:3:"224";s:3:" is";s:3:"225";s:4:" üb";s:3:"226";s:3:"cha";s:3:"227";s:3:"chi";s:3:"228";s:3:"e f";s:3:"229";s:3:"e m";s:3:"230";s:3:"eri";s:3:"231";s:3:"ied";s:3:"232";s:3:"mme";s:3:"233";s:3:"ner";s:3:"234";s:3:"r a";s:3:"235";s:3:"sti";s:3:"236";s:3:"t a";s:3:"237";s:3:"t s";s:3:"238";s:3:"tis";s:3:"239";s:3:" ko";s:3:"240";s:3:"arb";s:3:"241";s:3:"ds ";s:3:"242";s:3:"gan";s:3:"243";s:3:"n z";s:3:"244";s:3:"r f";s:3:"245";s:3:"r w";s:3:"246";s:3:"ran";s:3:"247";s:3:"se ";s:3:"248";s:3:"t i";s:3:"249";s:3:"wei";s:3:"250";s:3:"wir";s:3:"251";s:3:" br";s:3:"252";s:3:" np";s:3:"253";s:3:"am ";s:3:"254";s:3:"bes";s:3:"255";s:3:"d d";s:3:"256";s:3:"deu";s:3:"257";s:3:"e g";s:3:"258";s:3:"e k";s:3:"259";s:3:"efo";s:3:"260";s:3:"et ";s:3:"261";s:3:"eut";s:3:"262";s:3:"fen";s:3:"263";s:3:"hse";s:3:"264";s:3:"lte";s:3:"265";s:3:"n r";s:3:"266";s:3:"npd";s:3:"267";s:3:"r b";s:3:"268";s:3:"rhe";s:3:"269";s:3:"t w";s:3:"270";s:3:"tz ";s:3:"271";s:3:" fr";s:3:"272";s:3:" ih";s:3:"273";s:3:" ke";s:3:"274";s:3:" ma";s:3:"275";s:3:"ame";s:3:"276";s:3:"ang";s:3:"277";s:3:"d s";s:3:"278";s:3:"eil";s:3:"279";s:3:"el ";s:3:"280";s:3:"era";s:3:"281";s:3:"erh";s:3:"282";s:3:"h d";s:3:"283";s:3:"i d";s:3:"284";s:3:"kan";s:3:"285";s:3:"n f";s:3:"286";s:3:"n l";s:3:"287";s:3:"nts";s:3:"288";s:3:"och";s:3:"289";s:3:"rag";s:3:"290";s:3:"rd ";s:3:"291";s:3:"spd";s:3:"292";s:3:"spr";s:3:"293";s:3:"tio";s:3:"294";s:3:" ar";s:3:"295";s:3:" en";s:3:"296";s:3:" ka";s:3:"297";s:3:"ark";s:3:"298";s:3:"ass";s:3:"299";}s:5:"hausa";a:300:{s:3:" da";s:1:"0";s:3:"da ";s:1:"1";s:3:"in ";s:1:"2";s:3:"an ";s:1:"3";s:3:"ya ";s:1:"4";s:3:" wa";s:1:"5";s:3:" ya";s:1:"6";s:3:"na ";s:1:"7";s:3:"ar ";s:1:"8";s:3:"a d";s:1:"9";s:3:" ma";s:2:"10";s:3:"wa ";s:2:"11";s:3:"a a";s:2:"12";s:3:"a k";s:2:"13";s:3:"a s";s:2:"14";s:3:" ta";s:2:"15";s:3:"wan";s:2:"16";s:3:" a ";s:2:"17";s:3:" ba";s:2:"18";s:3:" ka";s:2:"19";s:3:"ta ";s:2:"20";s:3:"a y";s:2:"21";s:3:"n d";s:2:"22";s:3:" ha";s:2:"23";s:3:" na";s:2:"24";s:3:" su";s:2:"25";s:3:" sa";s:2:"26";s:3:"kin";s:2:"27";s:3:"sa ";s:2:"28";s:3:"ata";s:2:"29";s:3:" ko";s:2:"30";s:3:"a t";s:2:"31";s:3:"su ";s:2:"32";s:3:" ga";s:2:"33";s:3:"ai ";s:2:"34";s:3:" sh";s:2:"35";s:3:"a m";s:2:"36";s:3:"uwa";s:2:"37";s:3:"iya";s:2:"38";s:3:"ma ";s:2:"39";s:3:"a w";s:2:"40";s:3:"asa";s:2:"41";s:3:"yan";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ani";s:2:"44";s:3:"shi";s:2:"45";s:3:"a b";s:2:"46";s:3:"a h";s:2:"47";s:3:"a c";s:2:"48";s:3:"ama";s:2:"49";s:3:"ba ";s:2:"50";s:3:"nan";s:2:"51";s:3:"n a";s:2:"52";s:3:" mu";s:2:"53";s:3:"ana";s:2:"54";s:3:" yi";s:2:"55";s:3:"a g";s:2:"56";s:3:" za";s:2:"57";s:3:"i d";s:2:"58";s:3:" ku";s:2:"59";s:3:"aka";s:2:"60";s:3:"yi ";s:2:"61";s:3:"n k";s:2:"62";s:3:"ann";s:2:"63";s:3:"ke ";s:2:"64";s:3:"tar";s:2:"65";s:3:" ci";s:2:"66";s:3:"iki";s:2:"67";s:3:"n s";s:2:"68";s:3:"ko ";s:2:"69";s:3:" ra";s:2:"70";s:3:"ki ";s:2:"71";s:3:"ne ";s:2:"72";s:3:"a z";s:2:"73";s:3:"mat";s:2:"74";s:3:"hak";s:2:"75";s:3:"nin";s:2:"76";s:3:"e d";s:2:"77";s:3:"nna";s:2:"78";s:3:"uma";s:2:"79";s:3:"nda";s:2:"80";s:3:"a n";s:2:"81";s:3:"ada";s:2:"82";s:3:"cik";s:2:"83";s:3:"ni ";s:2:"84";s:3:"rin";s:2:"85";s:3:"una";s:2:"86";s:3:"ara";s:2:"87";s:3:"kum";s:2:"88";s:3:"akk";s:2:"89";s:3:" ce";s:2:"90";s:3:" du";s:2:"91";s:3:"man";s:2:"92";s:3:"n y";s:2:"93";s:3:"nci";s:2:"94";s:3:"sar";s:2:"95";s:3:"aki";s:2:"96";s:3:"awa";s:2:"97";s:3:"ci ";s:2:"98";s:3:"kan";s:2:"99";s:3:"kar";s:3:"100";s:3:"ari";s:3:"101";s:3:"n m";s:3:"102";s:3:"and";s:3:"103";s:3:"hi ";s:3:"104";s:3:"n t";s:3:"105";s:3:"ga ";s:3:"106";s:3:"owa";s:3:"107";s:3:"ash";s:3:"108";s:3:"kam";s:3:"109";s:3:"dan";s:3:"110";s:3:"ewa";s:3:"111";s:3:"nsa";s:3:"112";s:3:"ali";s:3:"113";s:3:"ami";s:3:"114";s:3:" ab";s:3:"115";s:3:" do";s:3:"116";s:3:"anc";s:3:"117";s:3:"n r";s:3:"118";s:3:"aya";s:3:"119";s:3:"i n";s:3:"120";s:3:"sun";s:3:"121";s:3:"uka";s:3:"122";s:3:" al";s:3:"123";s:3:" ne";s:3:"124";s:3:"a'a";s:3:"125";s:3:"cew";s:3:"126";s:3:"cin";s:3:"127";s:3:"mas";s:3:"128";s:3:"tak";s:3:"129";s:3:"un ";s:3:"130";s:3:"aba";s:3:"131";s:3:"kow";s:3:"132";s:3:"a r";s:3:"133";s:3:"ra ";s:3:"134";s:3:" ja";s:3:"135";s:4:" ƙa";s:3:"136";s:3:"en ";s:3:"137";s:3:"r d";s:3:"138";s:3:"sam";s:3:"139";s:3:"tsa";s:3:"140";s:3:" ru";s:3:"141";s:3:"ce ";s:3:"142";s:3:"i a";s:3:"143";s:3:"abi";s:3:"144";s:3:"ida";s:3:"145";s:3:"mut";s:3:"146";s:3:"n g";s:3:"147";s:3:"n j";s:3:"148";s:3:"san";s:3:"149";s:4:"a ƙ";s:3:"150";s:3:"har";s:3:"151";s:3:"on ";s:3:"152";s:3:"i m";s:3:"153";s:3:"suk";s:3:"154";s:3:" ak";s:3:"155";s:3:" ji";s:3:"156";s:3:"yar";s:3:"157";s:3:"'ya";s:3:"158";s:3:"kwa";s:3:"159";s:3:"min";s:3:"160";s:3:" 'y";s:3:"161";s:3:"ane";s:3:"162";s:3:"ban";s:3:"163";s:3:"ins";s:3:"164";s:3:"ruw";s:3:"165";s:3:"i k";s:3:"166";s:3:"n h";s:3:"167";s:3:" ad";s:3:"168";s:3:"ake";s:3:"169";s:3:"n w";s:3:"170";s:3:"sha";s:3:"171";s:3:"utu";s:3:"172";s:4:" ƴa";s:3:"173";s:3:"bay";s:3:"174";s:3:"tan";s:3:"175";s:4:"ƴan";s:3:"176";s:3:"bin";s:3:"177";s:3:"duk";s:3:"178";s:3:"e m";s:3:"179";s:3:"n n";s:3:"180";s:3:"oka";s:3:"181";s:3:"yin";s:3:"182";s:4:"ɗan";s:3:"183";s:3:" fa";s:3:"184";s:3:"a i";s:3:"185";s:3:"kki";s:3:"186";s:3:"re ";s:3:"187";s:3:"za ";s:3:"188";s:3:"ala";s:3:"189";s:3:"asu";s:3:"190";s:3:"han";s:3:"191";s:3:"i y";s:3:"192";s:3:"mar";s:3:"193";s:3:"ran";s:3:"194";s:4:"ƙas";s:3:"195";s:3:"add";s:3:"196";s:3:"ars";s:3:"197";s:3:"gab";s:3:"198";s:3:"ira";s:3:"199";s:3:"mma";s:3:"200";s:3:"u d";s:3:"201";s:3:" ts";s:3:"202";s:3:"abb";s:3:"203";s:3:"abu";s:3:"204";s:3:"aga";s:3:"205";s:3:"gar";s:3:"206";s:3:"n b";s:3:"207";s:4:" ɗa";s:3:"208";s:3:"aci";s:3:"209";s:3:"aik";s:3:"210";s:3:"am ";s:3:"211";s:3:"dun";s:3:"212";s:3:"e s";s:3:"213";s:3:"i b";s:3:"214";s:3:"i w";s:3:"215";s:3:"kas";s:3:"216";s:3:"kok";s:3:"217";s:3:"wam";s:3:"218";s:3:" am";s:3:"219";s:3:"amf";s:3:"220";s:3:"bba";s:3:"221";s:3:"din";s:3:"222";s:3:"fan";s:3:"223";s:3:"gwa";s:3:"224";s:3:"i s";s:3:"225";s:3:"wat";s:3:"226";s:3:"ano";s:3:"227";s:3:"are";s:3:"228";s:3:"dai";s:3:"229";s:3:"iri";s:3:"230";s:3:"ma'";s:3:"231";s:3:" la";s:3:"232";s:3:"all";s:3:"233";s:3:"dam";s:3:"234";s:3:"ika";s:3:"235";s:3:"mi ";s:3:"236";s:3:"she";s:3:"237";s:3:"tum";s:3:"238";s:3:"uni";s:3:"239";s:3:" an";s:3:"240";s:3:" ai";s:3:"241";s:3:" ke";s:3:"242";s:3:" ki";s:3:"243";s:3:"dag";s:3:"244";s:3:"mai";s:3:"245";s:3:"mfa";s:3:"246";s:3:"no ";s:3:"247";s:3:"nsu";s:3:"248";s:3:"o d";s:3:"249";s:3:"sak";s:3:"250";s:3:"um ";s:3:"251";s:3:" bi";s:3:"252";s:3:" gw";s:3:"253";s:3:" kw";s:3:"254";s:3:"jam";s:3:"255";s:3:"yya";s:3:"256";s:3:"a j";s:3:"257";s:3:"fa ";s:3:"258";s:3:"uta";s:3:"259";s:3:" hu";s:3:"260";s:3:"'a ";s:3:"261";s:3:"ans";s:3:"262";s:4:"aɗa";s:3:"263";s:3:"dda";s:3:"264";s:3:"hin";s:3:"265";s:3:"niy";s:3:"266";s:3:"r s";s:3:"267";s:3:"bat";s:3:"268";s:3:"dar";s:3:"269";s:3:"gan";s:3:"270";s:3:"i t";s:3:"271";s:3:"nta";s:3:"272";s:3:"oki";s:3:"273";s:3:"omi";s:3:"274";s:3:"sal";s:3:"275";s:3:"a l";s:3:"276";s:3:"kac";s:3:"277";s:3:"lla";s:3:"278";s:3:"wad";s:3:"279";s:3:"war";s:3:"280";s:3:"amm";s:3:"281";s:3:"dom";s:3:"282";s:3:"r m";s:3:"283";s:3:"ras";s:3:"284";s:3:"sai";s:3:"285";s:3:" lo";s:3:"286";s:3:"ats";s:3:"287";s:3:"hal";s:3:"288";s:3:"kat";s:3:"289";s:3:"li ";s:3:"290";s:3:"lok";s:3:"291";s:3:"n c";s:3:"292";s:3:"nar";s:3:"293";s:3:"tin";s:3:"294";s:3:"afa";s:3:"295";s:3:"bub";s:3:"296";s:3:"i g";s:3:"297";s:3:"isa";s:3:"298";s:3:"mak";s:3:"299";}s:8:"hawaiian";a:300:{s:3:" ka";s:1:"0";s:3:"na ";s:1:"1";s:3:" o ";s:1:"2";s:3:"ka ";s:1:"3";s:3:" ma";s:1:"4";s:3:" a ";s:1:"5";s:3:" la";s:1:"6";s:3:"a i";s:1:"7";s:3:"a m";s:1:"8";s:3:" i ";s:1:"9";s:3:"la ";s:2:"10";s:3:"ana";s:2:"11";s:3:"ai ";s:2:"12";s:3:"ia ";s:2:"13";s:3:"a o";s:2:"14";s:3:"a k";s:2:"15";s:3:"a h";s:2:"16";s:3:"o k";s:2:"17";s:3:" ke";s:2:"18";s:3:"a a";s:2:"19";s:3:"i k";s:2:"20";s:3:" ho";s:2:"21";s:3:" ia";s:2:"22";s:3:"ua ";s:2:"23";s:3:" na";s:2:"24";s:3:" me";s:2:"25";s:3:"e k";s:2:"26";s:3:"e a";s:2:"27";s:3:"au ";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ma ";s:2:"30";s:3:"mai";s:2:"31";s:3:"aku";s:2:"32";s:3:" ak";s:2:"33";s:3:"ahi";s:2:"34";s:3:" ha";s:2:"35";s:3:" ko";s:2:"36";s:3:" e ";s:2:"37";s:3:"a l";s:2:"38";s:3:" no";s:2:"39";s:3:"me ";s:2:"40";s:3:"ku ";s:2:"41";s:3:"aka";s:2:"42";s:3:"kan";s:2:"43";s:3:"no ";s:2:"44";s:3:"i a";s:2:"45";s:3:"ho ";s:2:"46";s:3:"ou ";s:2:"47";s:3:" ai";s:2:"48";s:3:"i o";s:2:"49";s:3:"a p";s:2:"50";s:3:"o l";s:2:"51";s:3:"o a";s:2:"52";s:3:"ama";s:2:"53";s:3:"a n";s:2:"54";s:3:" an";s:2:"55";s:3:"i m";s:2:"56";s:3:"han";s:2:"57";s:3:"i i";s:2:"58";s:3:"iho";s:2:"59";s:3:"kou";s:2:"60";s:3:"ne ";s:2:"61";s:3:" ih";s:2:"62";s:3:"o i";s:2:"63";s:3:"iki";s:2:"64";s:3:"ona";s:2:"65";s:3:"hoo";s:2:"66";s:3:"le ";s:2:"67";s:3:"e h";s:2:"68";s:3:" he";s:2:"69";s:3:"ina";s:2:"70";s:3:" wa";s:2:"71";s:3:"ea ";s:2:"72";s:3:"ako";s:2:"73";s:3:"u i";s:2:"74";s:3:"kah";s:2:"75";s:3:"oe ";s:2:"76";s:3:"i l";s:2:"77";s:3:"u a";s:2:"78";s:3:" pa";s:2:"79";s:3:"hoi";s:2:"80";s:3:"e i";s:2:"81";s:3:"era";s:2:"82";s:3:"ko ";s:2:"83";s:3:"u m";s:2:"84";s:3:"kua";s:2:"85";s:3:"mak";s:2:"86";s:3:"oi ";s:2:"87";s:3:"kai";s:2:"88";s:3:"i n";s:2:"89";s:3:"a e";s:2:"90";s:3:"hin";s:2:"91";s:3:"ane";s:2:"92";s:3:" ol";s:2:"93";s:3:"i h";s:2:"94";s:3:"mea";s:2:"95";s:3:"wah";s:2:"96";s:3:"lak";s:2:"97";s:3:"e m";s:2:"98";s:3:"o n";s:2:"99";s:3:"u l";s:3:"100";s:3:"ika";s:3:"101";s:3:"ki ";s:3:"102";s:3:"a w";s:3:"103";s:3:"mal";s:3:"104";s:3:"hi ";s:3:"105";s:3:"e n";s:3:"106";s:3:"u o";s:3:"107";s:3:"hik";s:3:"108";s:3:" ku";s:3:"109";s:3:"e l";s:3:"110";s:3:"ele";s:3:"111";s:3:"ra ";s:3:"112";s:3:"ber";s:3:"113";s:3:"ine";s:3:"114";s:3:"abe";s:3:"115";s:3:"ain";s:3:"116";s:3:"ala";s:3:"117";s:3:"lo ";s:3:"118";s:3:" po";s:3:"119";s:3:"kon";s:3:"120";s:3:" ab";s:3:"121";s:3:"ole";s:3:"122";s:3:"he ";s:3:"123";s:3:"pau";s:3:"124";s:3:"mah";s:3:"125";s:3:"va ";s:3:"126";s:3:"ela";s:3:"127";s:3:"kau";s:3:"128";s:3:"nak";s:3:"129";s:3:" oe";s:3:"130";s:3:"kei";s:3:"131";s:3:"oia";s:3:"132";s:3:" ie";s:3:"133";s:3:"ram";s:3:"134";s:3:" oi";s:3:"135";s:3:"oa ";s:3:"136";s:3:"eho";s:3:"137";s:3:"hov";s:3:"138";s:3:"ieh";s:3:"139";s:3:"ova";s:3:"140";s:3:" ua";s:3:"141";s:3:"una";s:3:"142";s:3:"ara";s:3:"143";s:3:"o s";s:3:"144";s:3:"awa";s:3:"145";s:3:"o o";s:3:"146";s:3:"nau";s:3:"147";s:3:"u n";s:3:"148";s:3:"wa ";s:3:"149";s:3:"wai";s:3:"150";s:3:"hel";s:3:"151";s:3:" ae";s:3:"152";s:3:" al";s:3:"153";s:3:"ae ";s:3:"154";s:3:"ta ";s:3:"155";s:3:"aik";s:3:"156";s:3:" hi";s:3:"157";s:3:"ale";s:3:"158";s:3:"ila";s:3:"159";s:3:"lel";s:3:"160";s:3:"ali";s:3:"161";s:3:"eik";s:3:"162";s:3:"olo";s:3:"163";s:3:"onu";s:3:"164";s:3:" lo";s:3:"165";s:3:"aua";s:3:"166";s:3:"e o";s:3:"167";s:3:"ola";s:3:"168";s:3:"hon";s:3:"169";s:3:"mam";s:3:"170";s:3:"nan";s:3:"171";s:3:" au";s:3:"172";s:3:"aha";s:3:"173";s:3:"lau";s:3:"174";s:3:"nua";s:3:"175";s:3:"oho";s:3:"176";s:3:"oma";s:3:"177";s:3:" ao";s:3:"178";s:3:"ii ";s:3:"179";s:3:"alu";s:3:"180";s:3:"ima";s:3:"181";s:3:"mau";s:3:"182";s:3:"ike";s:3:"183";s:3:"apa";s:3:"184";s:3:"elo";s:3:"185";s:3:"lii";s:3:"186";s:3:"poe";s:3:"187";s:3:"aia";s:3:"188";s:3:"noa";s:3:"189";s:3:" in";s:3:"190";s:3:"o m";s:3:"191";s:3:"oka";s:3:"192";s:3:"'u ";s:3:"193";s:3:"aho";s:3:"194";s:3:"ei ";s:3:"195";s:3:"eka";s:3:"196";s:3:"ha ";s:3:"197";s:3:"lu ";s:3:"198";s:3:"nei";s:3:"199";s:3:"hol";s:3:"200";s:3:"ino";s:3:"201";s:3:"o e";s:3:"202";s:3:"ema";s:3:"203";s:3:"iwa";s:3:"204";s:3:"olu";s:3:"205";s:3:"ada";s:3:"206";s:3:"naa";s:3:"207";s:3:"pa ";s:3:"208";s:3:"u k";s:3:"209";s:3:"ewa";s:3:"210";s:3:"hua";s:3:"211";s:3:"lam";s:3:"212";s:3:"lua";s:3:"213";s:3:"o h";s:3:"214";s:3:"ook";s:3:"215";s:3:"u h";s:3:"216";s:3:" li";s:3:"217";s:3:"ahu";s:3:"218";s:3:"amu";s:3:"219";s:3:"ui ";s:3:"220";s:3:" il";s:3:"221";s:3:" mo";s:3:"222";s:3:" se";s:3:"223";s:3:"eia";s:3:"224";s:3:"law";s:3:"225";s:3:" hu";s:3:"226";s:3:" ik";s:3:"227";s:3:"ail";s:3:"228";s:3:"e p";s:3:"229";s:3:"li ";s:3:"230";s:3:"lun";s:3:"231";s:3:"uli";s:3:"232";s:3:"io ";s:3:"233";s:3:"kik";s:3:"234";s:3:"noh";s:3:"235";s:3:"u e";s:3:"236";s:3:" sa";s:3:"237";s:3:"aaw";s:3:"238";s:3:"awe";s:3:"239";s:3:"ena";s:3:"240";s:3:"hal";s:3:"241";s:3:"kol";s:3:"242";s:3:"lan";s:3:"243";s:3:" le";s:3:"244";s:3:" ne";s:3:"245";s:3:"a'u";s:3:"246";s:3:"ilo";s:3:"247";s:3:"kap";s:3:"248";s:3:"oko";s:3:"249";s:3:"sa ";s:3:"250";s:3:" pe";s:3:"251";s:3:"hop";s:3:"252";s:3:"loa";s:3:"253";s:3:"ope";s:3:"254";s:3:"pe ";s:3:"255";s:3:" ad";s:3:"256";s:3:" pu";s:3:"257";s:3:"ahe";s:3:"258";s:3:"aol";s:3:"259";s:3:"ia'";s:3:"260";s:3:"lai";s:3:"261";s:3:"loh";s:3:"262";s:3:"na'";s:3:"263";s:3:"oom";s:3:"264";s:3:"aau";s:3:"265";s:3:"eri";s:3:"266";s:3:"kul";s:3:"267";s:3:"we ";s:3:"268";s:3:"ake";s:3:"269";s:3:"kek";s:3:"270";s:3:"laa";s:3:"271";s:3:"ri ";s:3:"272";s:3:"iku";s:3:"273";s:3:"kak";s:3:"274";s:3:"lim";s:3:"275";s:3:"nah";s:3:"276";s:3:"ner";s:3:"277";s:3:"nui";s:3:"278";s:3:"ono";s:3:"279";s:3:"a u";s:3:"280";s:3:"dam";s:3:"281";s:3:"kum";s:3:"282";s:3:"lok";s:3:"283";s:3:"mua";s:3:"284";s:3:"uma";s:3:"285";s:3:"wal";s:3:"286";s:3:"wi ";s:3:"287";s:3:"'i ";s:3:"288";s:3:"a'i";s:3:"289";s:3:"aan";s:3:"290";s:3:"alo";s:3:"291";s:3:"eta";s:3:"292";s:3:"mu ";s:3:"293";s:3:"ohe";s:3:"294";s:3:"u p";s:3:"295";s:3:"ula";s:3:"296";s:3:"uwa";s:3:"297";s:3:" nu";s:3:"298";s:3:"amo";s:3:"299";}s:5:"hindi";a:300:{s:7:"ें ";s:1:"0";s:7:" है";s:1:"1";s:9:"में";s:1:"2";s:7:" मे";s:1:"3";s:7:"ने ";s:1:"4";s:7:"की ";s:1:"5";s:7:"के ";s:1:"6";s:7:"है ";s:1:"7";s:7:" के";s:1:"8";s:7:" की";s:1:"9";s:7:" को";s:2:"10";s:7:"ों ";s:2:"11";s:7:"को ";s:2:"12";s:7:"ा ह";s:2:"13";s:7:" का";s:2:"14";s:7:"से ";s:2:"15";s:7:"ा क";s:2:"16";s:7:"े क";s:2:"17";s:7:"ं क";s:2:"18";s:7:"या ";s:2:"19";s:7:" कि";s:2:"20";s:7:" से";s:2:"21";s:7:"का ";s:2:"22";s:7:"ी क";s:2:"23";s:7:" ने";s:2:"24";s:7:" और";s:2:"25";s:7:"और ";s:2:"26";s:7:"ना ";s:2:"27";s:7:"कि ";s:2:"28";s:7:"भी ";s:2:"29";s:7:"ी स";s:2:"30";s:7:" जा";s:2:"31";s:7:" पर";s:2:"32";s:7:"ार ";s:2:"33";s:7:" कर";s:2:"34";s:7:"ी ह";s:2:"35";s:7:" हो";s:2:"36";s:7:"ही ";s:2:"37";s:9:"िया";s:2:"38";s:7:" इस";s:2:"39";s:7:" रह";s:2:"40";s:7:"र क";s:2:"41";s:9:"ुना";s:2:"42";s:7:"ता ";s:2:"43";s:7:"ान ";s:2:"44";s:7:"े स";s:2:"45";s:7:" भी";s:2:"46";s:7:" रा";s:2:"47";s:7:"े ह";s:2:"48";s:7:" चु";s:2:"49";s:7:" पा";s:2:"50";s:7:"पर ";s:2:"51";s:9:"चुन";s:2:"52";s:9:"नाव";s:2:"53";s:7:" कह";s:2:"54";s:9:"प्र";s:2:"55";s:7:" भा";s:2:"56";s:9:"राज";s:2:"57";s:9:"हैं";s:2:"58";s:7:"ा स";s:2:"59";s:7:"ै क";s:2:"60";s:7:"ैं ";s:2:"61";s:7:"नी ";s:2:"62";s:7:"ल क";s:2:"63";s:7:"ीं ";s:2:"64";s:7:"़ी ";s:2:"65";s:7:"था ";s:2:"66";s:7:"री ";s:2:"67";s:7:"ाव ";s:2:"68";s:7:"े ब";s:2:"69";s:7:" प्";s:2:"70";s:9:"क्ष";s:2:"71";s:7:"पा ";s:2:"72";s:7:"ले ";s:2:"73";s:7:" दे";s:2:"74";s:7:"ला ";s:2:"75";s:7:"हा ";s:2:"76";s:9:"ाजप";s:2:"77";s:7:" था";s:2:"78";s:7:" नह";s:2:"79";s:7:"इस ";s:2:"80";s:7:"कर ";s:2:"81";s:9:"जपा";s:2:"82";s:9:"नही";s:2:"83";s:9:"भाज";s:2:"84";s:9:"यों";s:2:"85";s:7:"र स";s:2:"86";s:9:"हीं";s:2:"87";s:7:" अम";s:2:"88";s:7:" बा";s:2:"89";s:7:" मा";s:2:"90";s:7:" वि";s:2:"91";s:9:"रीक";s:2:"92";s:7:"िए ";s:2:"93";s:7:"े प";s:2:"94";s:9:"्या";s:2:"95";s:7:" ही";s:2:"96";s:7:"ं म";s:2:"97";s:9:"कार";s:2:"98";s:7:"ा ज";s:2:"99";s:7:"े ल";s:3:"100";s:7:" ता";s:3:"101";s:7:" दि";s:3:"102";s:7:" सा";s:3:"103";s:7:" हम";s:3:"104";s:7:"ा न";s:3:"105";s:7:"ा म";s:3:"106";s:9:"ाक़";s:3:"107";s:9:"्ता";s:3:"108";s:7:" एक";s:3:"109";s:7:" सं";s:3:"110";s:7:" स्";s:3:"111";s:9:"अमर";s:3:"112";s:9:"क़ी";s:3:"113";s:9:"ताज";s:3:"114";s:9:"मरी";s:3:"115";s:9:"स्थ";s:3:"116";s:7:"ा थ";s:3:"117";s:9:"ार्";s:3:"118";s:7:" हु";s:3:"119";s:9:"इरा";s:3:"120";s:7:"एक ";s:3:"121";s:7:"न क";s:3:"122";s:7:"र म";s:3:"123";s:9:"राक";s:3:"124";s:7:"ी ज";s:3:"125";s:7:"ी न";s:3:"126";s:7:" इर";s:3:"127";s:7:" उन";s:3:"128";s:7:" पह";s:3:"129";s:9:"कहा";s:3:"130";s:7:"ते ";s:3:"131";s:7:"े अ";s:3:"132";s:7:" तो";s:3:"133";s:7:" सु";s:3:"134";s:7:"ति ";s:3:"135";s:7:"ती ";s:3:"136";s:7:"तो ";s:3:"137";s:9:"मिल";s:3:"138";s:7:"िक ";s:3:"139";s:9:"ियो";s:3:"140";s:9:"्रे";s:3:"141";s:7:" अप";s:3:"142";s:7:" फ़";s:3:"143";s:7:" लि";s:3:"144";s:7:" लो";s:3:"145";s:7:" सम";s:3:"146";s:7:"म क";s:3:"147";s:9:"र्ट";s:3:"148";s:7:"हो ";s:3:"149";s:7:"ा च";s:3:"150";s:7:"ाई ";s:3:"151";s:9:"ाने";s:3:"152";s:7:"िन ";s:3:"153";s:7:"्य ";s:3:"154";s:7:" उस";s:3:"155";s:7:" क़";s:3:"156";s:7:" सक";s:3:"157";s:7:" सै";s:3:"158";s:7:"ं प";s:3:"159";s:7:"ं ह";s:3:"160";s:7:"गी ";s:3:"161";s:7:"त क";s:3:"162";s:9:"मान";s:3:"163";s:7:"र न";s:3:"164";s:9:"ष्ट";s:3:"165";s:7:"स क";s:3:"166";s:9:"स्त";s:3:"167";s:7:"ाँ ";s:3:"168";s:7:"ी ब";s:3:"169";s:7:"ी म";s:3:"170";s:9:"्री";s:3:"171";s:7:" दो";s:3:"172";s:7:" मि";s:3:"173";s:7:" मु";s:3:"174";s:7:" ले";s:3:"175";s:7:" शा";s:3:"176";s:7:"ं स";s:3:"177";s:9:"ज़ा";s:3:"178";s:9:"त्र";s:3:"179";s:7:"थी ";s:3:"180";s:9:"लिए";s:3:"181";s:7:"सी ";s:3:"182";s:7:"़ा ";s:3:"183";s:9:"़ार";s:3:"184";s:9:"ांग";s:3:"185";s:7:"े द";s:3:"186";s:7:"े म";s:3:"187";s:7:"्व ";s:3:"188";s:7:" ना";s:3:"189";s:7:" बन";s:3:"190";s:9:"ंग्";s:3:"191";s:9:"कां";s:3:"192";s:7:"गा ";s:3:"193";s:9:"ग्र";s:3:"194";s:7:"जा ";s:3:"195";s:9:"ज्य";s:3:"196";s:7:"दी ";s:3:"197";s:7:"न म";s:3:"198";s:9:"पार";s:3:"199";s:7:"भा ";s:3:"200";s:9:"रही";s:3:"201";s:7:"रे ";s:3:"202";s:9:"रेस";s:3:"203";s:7:"ली ";s:3:"204";s:9:"सभा";s:3:"205";s:7:"ा र";s:3:"206";s:7:"ाल ";s:3:"207";s:7:"ी अ";s:3:"208";s:9:"ीकी";s:3:"209";s:7:"े त";s:3:"210";s:7:"ेश ";s:3:"211";s:7:" अं";s:3:"212";s:7:" तक";s:3:"213";s:7:" या";s:3:"214";s:7:"ई ह";s:3:"215";s:9:"करन";s:3:"216";s:7:"तक ";s:3:"217";s:9:"देश";s:3:"218";s:9:"वर्";s:3:"219";s:9:"ाया";s:3:"220";s:7:"ी भ";s:3:"221";s:7:"ेस ";s:3:"222";s:7:"्ष ";s:3:"223";s:7:" गय";s:3:"224";s:7:" जि";s:3:"225";s:7:" थी";s:3:"226";s:7:" बड";s:3:"227";s:7:" यह";s:3:"228";s:7:" वा";s:3:"229";s:9:"ंतर";s:3:"230";s:9:"अंत";s:3:"231";s:7:"क़ ";s:3:"232";s:9:"गया";s:3:"233";s:7:"टी ";s:3:"234";s:9:"निक";s:3:"235";s:9:"न्ह";s:3:"236";s:9:"पहल";s:3:"237";s:9:"बड़";s:3:"238";s:9:"मार";s:3:"239";s:7:"र प";s:3:"240";s:9:"रने";s:3:"241";s:9:"ाज़";s:3:"242";s:7:"ि इ";s:3:"243";s:7:"ी र";s:3:"244";s:7:"े ज";s:3:"245";s:7:"े व";s:3:"246";s:7:"्ट ";s:3:"247";s:9:"्टी";s:3:"248";s:7:" अब";s:3:"249";s:7:" लग";s:3:"250";s:7:" वर";s:3:"251";s:7:" सी";s:3:"252";s:7:"ं भ";s:3:"253";s:9:"उन्";s:3:"254";s:7:"क क";s:3:"255";s:9:"किय";s:3:"256";s:9:"देख";s:3:"257";s:9:"पूर";s:3:"258";s:9:"फ़्";s:3:"259";s:7:"यह ";s:3:"260";s:9:"यान";s:3:"261";s:9:"रिक";s:3:"262";s:9:"रिय";s:3:"263";s:9:"र्ड";s:3:"264";s:9:"लेक";s:3:"265";s:9:"सकत";s:3:"266";s:9:"हों";s:3:"267";s:9:"होग";s:3:"268";s:7:"ा अ";s:3:"269";s:7:"ा द";s:3:"270";s:7:"ा प";s:3:"271";s:7:"ाद ";s:3:"272";s:9:"ारा";s:3:"273";s:7:"ित ";s:3:"274";s:7:"ी त";s:3:"275";s:7:"ी प";s:3:"276";s:7:"ो क";s:3:"277";s:7:"ो द";s:3:"278";s:7:" ते";s:3:"279";s:7:" नि";s:3:"280";s:7:" सर";s:3:"281";s:7:" हा";s:3:"282";s:7:"ं द";s:3:"283";s:9:"अपन";s:3:"284";s:9:"जान";s:3:"285";s:7:"त म";s:3:"286";s:9:"थित";s:3:"287";s:9:"पनी";s:3:"288";s:9:"महल";s:3:"289";s:7:"र ह";s:3:"290";s:9:"लोग";s:3:"291";s:7:"व क";s:3:"292";s:9:"हना";s:3:"293";s:7:"हल ";s:3:"294";s:9:"हाँ";s:3:"295";s:9:"ाज्";s:3:"296";s:9:"ाना";s:3:"297";s:9:"िक्";s:3:"298";s:9:"िस्";s:3:"299";}s:9:"hungarian";a:300:{s:3:" a ";s:1:"0";s:3:" az";s:1:"1";s:3:" sz";s:1:"2";s:3:"az ";s:1:"3";s:3:" me";s:1:"4";s:3:"en ";s:1:"5";s:3:" el";s:1:"6";s:3:" ho";s:1:"7";s:3:"ek ";s:1:"8";s:3:"gy ";s:1:"9";s:3:"tt ";s:2:"10";s:3:"ett";s:2:"11";s:3:"sze";s:2:"12";s:3:" fe";s:2:"13";s:4:"és ";s:2:"14";s:3:" ki";s:2:"15";s:3:"tet";s:2:"16";s:3:" be";s:2:"17";s:3:"et ";s:2:"18";s:3:"ter";s:2:"19";s:4:" kö";s:2:"20";s:4:" és";s:2:"21";s:3:"hog";s:2:"22";s:3:"meg";s:2:"23";s:3:"ogy";s:2:"24";s:3:"szt";s:2:"25";s:3:"te ";s:2:"26";s:3:"t a";s:2:"27";s:3:"zet";s:2:"28";s:3:"a m";s:2:"29";s:3:"nek";s:2:"30";s:3:"nt ";s:2:"31";s:4:"ség";s:2:"32";s:4:"szá";s:2:"33";s:3:"ak ";s:2:"34";s:3:" va";s:2:"35";s:3:"an ";s:2:"36";s:3:"eze";s:2:"37";s:3:"ra ";s:2:"38";s:3:"ta ";s:2:"39";s:3:" mi";s:2:"40";s:3:"int";s:2:"41";s:4:"köz";s:2:"42";s:3:" is";s:2:"43";s:3:"esz";s:2:"44";s:3:"fel";s:2:"45";s:3:"min";s:2:"46";s:3:"nak";s:2:"47";s:3:"ors";s:2:"48";s:3:"zer";s:2:"49";s:3:" te";s:2:"50";s:3:"a a";s:2:"51";s:3:"a k";s:2:"52";s:3:"is ";s:2:"53";s:3:" cs";s:2:"54";s:3:"ele";s:2:"55";s:3:"er ";s:2:"56";s:3:"men";s:2:"57";s:3:"si ";s:2:"58";s:3:"tek";s:2:"59";s:3:"ti ";s:2:"60";s:3:" ne";s:2:"61";s:3:"csa";s:2:"62";s:3:"ent";s:2:"63";s:3:"z e";s:2:"64";s:3:"a t";s:2:"65";s:3:"ala";s:2:"66";s:3:"ere";s:2:"67";s:3:"es ";s:2:"68";s:3:"lom";s:2:"69";s:3:"lte";s:2:"70";s:3:"mon";s:2:"71";s:3:"ond";s:2:"72";s:3:"rsz";s:2:"73";s:3:"sza";s:2:"74";s:3:"tte";s:2:"75";s:4:"zág";s:2:"76";s:4:"ány";s:2:"77";s:3:" fo";s:2:"78";s:3:" ma";s:2:"79";s:3:"ai ";s:2:"80";s:3:"ben";s:2:"81";s:3:"el ";s:2:"82";s:3:"ene";s:2:"83";s:3:"ik ";s:2:"84";s:3:"jel";s:2:"85";s:4:"tás";s:2:"86";s:4:"áll";s:2:"87";s:3:" ha";s:2:"88";s:3:" le";s:2:"89";s:4:" ál";s:2:"90";s:3:"agy";s:2:"91";s:4:"alá";s:2:"92";s:3:"isz";s:2:"93";s:3:"y a";s:2:"94";s:3:"zte";s:2:"95";s:4:"ás ";s:2:"96";s:3:" al";s:2:"97";s:3:"e a";s:2:"98";s:3:"egy";s:2:"99";s:3:"ely";s:3:"100";s:3:"for";s:3:"101";s:3:"lat";s:3:"102";s:3:"lt ";s:3:"103";s:3:"n a";s:3:"104";s:3:"oga";s:3:"105";s:3:"on ";s:3:"106";s:3:"re ";s:3:"107";s:3:"st ";s:3:"108";s:4:"ság";s:3:"109";s:3:"t m";s:3:"110";s:4:"án ";s:3:"111";s:4:"ét ";s:3:"112";s:4:"ült";s:3:"113";s:3:" je";s:3:"114";s:3:"gi ";s:3:"115";s:3:"k a";s:3:"116";s:4:"kül";s:3:"117";s:3:"lam";s:3:"118";s:3:"len";s:3:"119";s:4:"lás";s:3:"120";s:4:"más";s:3:"121";s:3:"s k";s:3:"122";s:3:"vez";s:3:"123";s:4:"áso";s:3:"124";s:5:"özö";s:3:"125";s:3:" ta";s:3:"126";s:3:"a s";s:3:"127";s:3:"a v";s:3:"128";s:3:"asz";s:3:"129";s:4:"atá";s:3:"130";s:4:"ető";s:3:"131";s:3:"kez";s:3:"132";s:3:"let";s:3:"133";s:3:"mag";s:3:"134";s:3:"nem";s:3:"135";s:4:"szé";s:3:"136";s:3:"z m";s:3:"137";s:4:"át ";s:3:"138";s:4:"éte";s:3:"139";s:4:"ölt";s:3:"140";s:3:" de";s:3:"141";s:3:" gy";s:3:"142";s:4:" ké";s:3:"143";s:3:" mo";s:3:"144";s:4:" vá";s:3:"145";s:4:" ér";s:3:"146";s:3:"a b";s:3:"147";s:3:"a f";s:3:"148";s:3:"ami";s:3:"149";s:3:"at ";s:3:"150";s:3:"ato";s:3:"151";s:3:"att";s:3:"152";s:3:"bef";s:3:"153";s:3:"dta";s:3:"154";s:3:"gya";s:3:"155";s:3:"hat";s:3:"156";s:3:"i s";s:3:"157";s:3:"las";s:3:"158";s:3:"ndt";s:3:"159";s:3:"rt ";s:3:"160";s:3:"szo";s:3:"161";s:3:"t k";s:3:"162";s:4:"tár";s:3:"163";s:4:"tés";s:3:"164";s:3:"van";s:3:"165";s:5:"ásá";s:3:"166";s:4:"ól ";s:3:"167";s:4:" bé";s:3:"168";s:3:" eg";s:3:"169";s:3:" or";s:3:"170";s:4:" pá";s:3:"171";s:4:" pé";s:3:"172";s:3:" ve";s:3:"173";s:3:"ban";s:3:"174";s:3:"eke";s:3:"175";s:4:"ekü";s:3:"176";s:4:"elő";s:3:"177";s:3:"erv";s:3:"178";s:3:"ete";s:3:"179";s:3:"fog";s:3:"180";s:3:"i a";s:3:"181";s:3:"kis";s:3:"182";s:4:"lád";s:3:"183";s:3:"nte";s:3:"184";s:3:"nye";s:3:"185";s:3:"nyi";s:3:"186";s:3:"ok ";s:3:"187";s:4:"omá";s:3:"188";s:3:"os ";s:3:"189";s:4:"rán";s:3:"190";s:4:"rás";s:3:"191";s:3:"sal";s:3:"192";s:3:"t e";s:3:"193";s:4:"vál";s:3:"194";s:3:"yar";s:3:"195";s:4:"ágo";s:3:"196";s:4:"ála";s:3:"197";s:4:"ége";s:3:"198";s:4:"ény";s:3:"199";s:4:"ött";s:3:"200";s:4:" tá";s:3:"201";s:4:"adó";s:3:"202";s:3:"elh";s:3:"203";s:3:"fej";s:3:"204";s:3:"het";s:3:"205";s:3:"hoz";s:3:"206";s:3:"ill";s:3:"207";s:4:"jár";s:3:"208";s:4:"kés";s:3:"209";s:3:"llo";s:3:"210";s:3:"mi ";s:3:"211";s:3:"ny ";s:3:"212";s:3:"ont";s:3:"213";s:3:"ren";s:3:"214";s:3:"res";s:3:"215";s:3:"rin";s:3:"216";s:3:"s a";s:3:"217";s:3:"s e";s:3:"218";s:3:"ssz";s:3:"219";s:3:"zt ";s:3:"220";s:3:" ez";s:3:"221";s:3:" ka";s:3:"222";s:3:" ke";s:3:"223";s:3:" ko";s:3:"224";s:3:" re";s:3:"225";s:3:"a h";s:3:"226";s:3:"a n";s:3:"227";s:3:"den";s:3:"228";s:4:"dó ";s:3:"229";s:3:"efo";s:3:"230";s:3:"gad";s:3:"231";s:3:"gat";s:3:"232";s:3:"gye";s:3:"233";s:3:"hel";s:3:"234";s:3:"k e";s:3:"235";s:3:"ket";s:3:"236";s:3:"les";s:3:"237";s:4:"mán";s:3:"238";s:3:"nde";s:3:"239";s:3:"nis";s:3:"240";s:3:"ozz";s:3:"241";s:3:"t b";s:3:"242";s:3:"t i";s:3:"243";s:4:"t é";s:3:"244";s:3:"tat";s:3:"245";s:3:"tos";s:3:"246";s:3:"val";s:3:"247";s:3:"z o";s:3:"248";s:3:"zak";s:3:"249";s:4:"ád ";s:3:"250";s:4:"ály";s:3:"251";s:4:"ára";s:3:"252";s:4:"ési";s:3:"253";s:4:"ész";s:3:"254";s:3:" ak";s:3:"255";s:3:" am";s:3:"256";s:3:" es";s:3:"257";s:4:" há";s:3:"258";s:3:" ny";s:3:"259";s:4:" tö";s:3:"260";s:3:"aka";s:3:"261";s:3:"art";s:3:"262";s:4:"ató";s:3:"263";s:3:"azt";s:3:"264";s:3:"bbe";s:3:"265";s:3:"ber";s:3:"266";s:4:"ció";s:3:"267";s:3:"cso";s:3:"268";s:3:"em ";s:3:"269";s:3:"eti";s:3:"270";s:4:"eté";s:3:"271";s:3:"gal";s:3:"272";s:3:"i t";s:3:"273";s:3:"ini";s:3:"274";s:3:"ist";s:3:"275";s:3:"ja ";s:3:"276";s:3:"ker";s:3:"277";s:3:"ki ";s:3:"278";s:3:"kor";s:3:"279";s:3:"koz";s:3:"280";s:4:"l é";s:3:"281";s:4:"ljá";s:3:"282";s:3:"lye";s:3:"283";s:3:"n v";s:3:"284";s:3:"ni ";s:3:"285";s:4:"pál";s:3:"286";s:3:"ror";s:3:"287";s:4:"ról";s:3:"288";s:4:"rül";s:3:"289";s:3:"s c";s:3:"290";s:3:"s p";s:3:"291";s:3:"s s";s:3:"292";s:3:"s v";s:3:"293";s:3:"sok";s:3:"294";s:3:"t j";s:3:"295";s:3:"t t";s:3:"296";s:3:"tar";s:3:"297";s:3:"tel";s:3:"298";s:3:"vat";s:3:"299";}s:9:"icelandic";a:300:{s:4:"að ";s:1:"0";s:3:"um ";s:1:"1";s:4:" að";s:1:"2";s:3:"ir ";s:1:"3";s:4:"ið ";s:1:"4";s:3:"ur ";s:1:"5";s:3:" ve";s:1:"6";s:4:" í ";s:1:"7";s:3:"na ";s:1:"8";s:4:" á ";s:1:"9";s:3:" se";s:2:"10";s:3:" er";s:2:"11";s:3:" og";s:2:"12";s:3:"ar ";s:2:"13";s:3:"og ";s:2:"14";s:3:"ver";s:2:"15";s:3:" mi";s:2:"16";s:3:"inn";s:2:"17";s:3:"nn ";s:2:"18";s:3:" fy";s:2:"19";s:3:"er ";s:2:"20";s:3:"fyr";s:2:"21";s:3:" ek";s:2:"22";s:3:" en";s:2:"23";s:3:" ha";s:2:"24";s:3:" he";s:2:"25";s:3:"ekk";s:2:"26";s:3:" st";s:2:"27";s:3:"ki ";s:2:"28";s:3:"st ";s:2:"29";s:4:"ði ";s:2:"30";s:3:" ba";s:2:"31";s:3:" me";s:2:"32";s:3:" vi";s:2:"33";s:3:"ig ";s:2:"34";s:3:"rir";s:2:"35";s:3:"yri";s:2:"36";s:3:" um";s:2:"37";s:3:"g f";s:2:"38";s:3:"leg";s:2:"39";s:3:"lei";s:2:"40";s:3:"ns ";s:2:"41";s:4:"ð s";s:2:"42";s:3:" ei";s:2:"43";s:4:" þa";s:2:"44";s:3:"in ";s:2:"45";s:3:"kki";s:2:"46";s:3:"r h";s:2:"47";s:3:"r s";s:2:"48";s:3:"egi";s:2:"49";s:3:"ein";s:2:"50";s:3:"ga ";s:2:"51";s:3:"ing";s:2:"52";s:3:"ra ";s:2:"53";s:3:"sta";s:2:"54";s:3:" va";s:2:"55";s:4:" þe";s:2:"56";s:3:"ann";s:2:"57";s:3:"en ";s:2:"58";s:3:"mil";s:2:"59";s:3:"sem";s:2:"60";s:4:"tjó";s:2:"61";s:4:"arð";s:2:"62";s:3:"di ";s:2:"63";s:3:"eit";s:2:"64";s:3:"haf";s:2:"65";s:3:"ill";s:2:"66";s:3:"ins";s:2:"67";s:3:"ist";s:2:"68";s:3:"llj";s:2:"69";s:3:"ndi";s:2:"70";s:3:"r a";s:2:"71";s:3:"r e";s:2:"72";s:3:"seg";s:2:"73";s:3:"un ";s:2:"74";s:3:"var";s:2:"75";s:3:" bi";s:2:"76";s:3:" el";s:2:"77";s:3:" fo";s:2:"78";s:3:" ge";s:2:"79";s:3:" yf";s:2:"80";s:3:"and";s:2:"81";s:3:"aug";s:2:"82";s:3:"bau";s:2:"83";s:3:"big";s:2:"84";s:3:"ega";s:2:"85";s:3:"eld";s:2:"86";s:4:"erð";s:2:"87";s:3:"fir";s:2:"88";s:3:"foo";s:2:"89";s:3:"gin";s:2:"90";s:3:"itt";s:2:"91";s:3:"n s";s:2:"92";s:3:"ngi";s:2:"93";s:3:"num";s:2:"94";s:3:"od ";s:2:"95";s:3:"ood";s:2:"96";s:3:"sin";s:2:"97";s:3:"ta ";s:2:"98";s:3:"tt ";s:2:"99";s:4:"við";s:3:"100";s:3:"yfi";s:3:"101";s:4:"ð e";s:3:"102";s:4:"ð f";s:3:"103";s:3:" hr";s:3:"104";s:4:" sé";s:3:"105";s:4:" þv";s:3:"106";s:3:"a e";s:3:"107";s:4:"a á";s:3:"108";s:3:"em ";s:3:"109";s:3:"gi ";s:3:"110";s:3:"i f";s:3:"111";s:3:"jar";s:3:"112";s:4:"jór";s:3:"113";s:3:"lja";s:3:"114";s:3:"m e";s:3:"115";s:4:"r á";s:3:"116";s:3:"rei";s:3:"117";s:3:"rst";s:3:"118";s:4:"rða";s:3:"119";s:4:"rði";s:3:"120";s:4:"rðu";s:3:"121";s:3:"stj";s:3:"122";s:3:"und";s:3:"123";s:3:"veg";s:3:"124";s:4:"ví ";s:3:"125";s:4:"ð v";s:3:"126";s:5:"það";s:3:"127";s:5:"því";s:3:"128";s:3:" fj";s:3:"129";s:3:" ko";s:3:"130";s:3:" sl";s:3:"131";s:3:"eik";s:3:"132";s:3:"end";s:3:"133";s:3:"ert";s:3:"134";s:3:"ess";s:3:"135";s:4:"fjá";s:3:"136";s:3:"fur";s:3:"137";s:3:"gir";s:3:"138";s:4:"hús";s:3:"139";s:4:"jár";s:3:"140";s:3:"n e";s:3:"141";s:3:"ri ";s:3:"142";s:3:"tar";s:3:"143";s:5:"ð þ";s:3:"144";s:4:"ðar";s:3:"145";s:4:"ður";s:3:"146";s:4:"þes";s:3:"147";s:3:" br";s:3:"148";s:4:" hú";s:3:"149";s:3:" kr";s:3:"150";s:3:" le";s:3:"151";s:3:" up";s:3:"152";s:3:"a s";s:3:"153";s:3:"egg";s:3:"154";s:3:"i s";s:3:"155";s:3:"irt";s:3:"156";s:3:"ja ";s:3:"157";s:4:"kið";s:3:"158";s:3:"len";s:3:"159";s:4:"með";s:3:"160";s:3:"mik";s:3:"161";s:3:"n b";s:3:"162";s:3:"nar";s:3:"163";s:3:"nir";s:3:"164";s:3:"nun";s:3:"165";s:3:"r f";s:3:"166";s:3:"r v";s:3:"167";s:4:"rið";s:3:"168";s:3:"rt ";s:3:"169";s:3:"sti";s:3:"170";s:3:"t v";s:3:"171";s:3:"ti ";s:3:"172";s:3:"una";s:3:"173";s:3:"upp";s:3:"174";s:4:"ða ";s:3:"175";s:4:"óna";s:3:"176";s:3:" al";s:3:"177";s:3:" fr";s:3:"178";s:3:" gr";s:3:"179";s:3:"a v";s:3:"180";s:3:"all";s:3:"181";s:3:"an ";s:3:"182";s:3:"da ";s:3:"183";s:4:"eið";s:3:"184";s:4:"eð ";s:3:"185";s:3:"fa ";s:3:"186";s:3:"fra";s:3:"187";s:3:"g e";s:3:"188";s:3:"ger";s:3:"189";s:4:"gið";s:3:"190";s:3:"gt ";s:3:"191";s:3:"han";s:3:"192";s:3:"hef";s:3:"193";s:3:"hel";s:3:"194";s:3:"her";s:3:"195";s:3:"hra";s:3:"196";s:3:"i a";s:3:"197";s:3:"i e";s:3:"198";s:3:"i v";s:3:"199";s:4:"i þ";s:3:"200";s:3:"iki";s:3:"201";s:4:"jón";s:3:"202";s:4:"jör";s:3:"203";s:3:"ka ";s:3:"204";s:4:"kró";s:3:"205";s:4:"lík";s:3:"206";s:3:"m h";s:3:"207";s:3:"n a";s:3:"208";s:3:"nga";s:3:"209";s:3:"r l";s:3:"210";s:3:"ram";s:3:"211";s:3:"ru ";s:3:"212";s:5:"ráð";s:3:"213";s:4:"rón";s:3:"214";s:3:"svo";s:3:"215";s:3:"vin";s:3:"216";s:4:"í b";s:3:"217";s:4:"í h";s:3:"218";s:4:"ð h";s:3:"219";s:4:"ð k";s:3:"220";s:4:"ð m";s:3:"221";s:5:"örð";s:3:"222";s:3:" af";s:3:"223";s:3:" fa";s:3:"224";s:4:" lí";s:3:"225";s:4:" rá";s:3:"226";s:3:" sk";s:3:"227";s:3:" sv";s:3:"228";s:3:" te";s:3:"229";s:3:"a b";s:3:"230";s:3:"a f";s:3:"231";s:3:"a h";s:3:"232";s:3:"a k";s:3:"233";s:3:"a u";s:3:"234";s:3:"afi";s:3:"235";s:3:"agn";s:3:"236";s:3:"arn";s:3:"237";s:3:"ast";s:3:"238";s:3:"ber";s:3:"239";s:3:"efu";s:3:"240";s:3:"enn";s:3:"241";s:3:"erb";s:3:"242";s:3:"erg";s:3:"243";s:3:"fi ";s:3:"244";s:3:"g a";s:3:"245";s:3:"gar";s:3:"246";s:4:"iðs";s:3:"247";s:3:"ker";s:3:"248";s:3:"kke";s:3:"249";s:3:"lan";s:3:"250";s:4:"ljó";s:3:"251";s:3:"llt";s:3:"252";s:3:"ma ";s:3:"253";s:4:"mið";s:3:"254";s:3:"n v";s:3:"255";s:4:"n í";s:3:"256";s:3:"nan";s:3:"257";s:3:"nda";s:3:"258";s:3:"ndu";s:3:"259";s:4:"nið";s:3:"260";s:3:"nna";s:3:"261";s:3:"nnu";s:3:"262";s:3:"nu ";s:3:"263";s:3:"r o";s:3:"264";s:3:"rbe";s:3:"265";s:3:"rgi";s:3:"266";s:4:"slö";s:3:"267";s:4:"sé ";s:3:"268";s:3:"t a";s:3:"269";s:3:"t h";s:3:"270";s:3:"til";s:3:"271";s:3:"tin";s:3:"272";s:3:"ugu";s:3:"273";s:3:"vil";s:3:"274";s:3:"ygg";s:3:"275";s:4:"á s";s:3:"276";s:4:"ð a";s:3:"277";s:4:"ð b";s:3:"278";s:4:"órn";s:3:"279";s:4:"ögn";s:3:"280";s:4:"öku";s:3:"281";s:3:" at";s:3:"282";s:3:" fi";s:3:"283";s:4:" fé";s:3:"284";s:3:" ka";s:3:"285";s:3:" ma";s:3:"286";s:3:" no";s:3:"287";s:3:" sa";s:3:"288";s:3:" si";s:3:"289";s:3:" ti";s:3:"290";s:4:" ák";s:3:"291";s:3:"a m";s:3:"292";s:3:"a t";s:3:"293";s:4:"a í";s:3:"294";s:4:"a þ";s:3:"295";s:3:"afa";s:3:"296";s:3:"afs";s:3:"297";s:3:"ald";s:3:"298";s:3:"arf";s:3:"299";}s:10:"indonesian";a:300:{s:3:"an ";s:1:"0";s:3:" me";s:1:"1";s:3:"kan";s:1:"2";s:3:"ang";s:1:"3";s:3:"ng ";s:1:"4";s:3:" pe";s:1:"5";s:3:"men";s:1:"6";s:3:" di";s:1:"7";s:3:" ke";s:1:"8";s:3:" da";s:1:"9";s:3:" se";s:2:"10";s:3:"eng";s:2:"11";s:3:" be";s:2:"12";s:3:"nga";s:2:"13";s:3:"nya";s:2:"14";s:3:" te";s:2:"15";s:3:"ah ";s:2:"16";s:3:"ber";s:2:"17";s:3:"aka";s:2:"18";s:3:" ya";s:2:"19";s:3:"dan";s:2:"20";s:3:"di ";s:2:"21";s:3:"yan";s:2:"22";s:3:"n p";s:2:"23";s:3:"per";s:2:"24";s:3:"a m";s:2:"25";s:3:"ita";s:2:"26";s:3:" pa";s:2:"27";s:3:"da ";s:2:"28";s:3:"ata";s:2:"29";s:3:"ada";s:2:"30";s:3:"ya ";s:2:"31";s:3:"ta ";s:2:"32";s:3:" in";s:2:"33";s:3:"ala";s:2:"34";s:3:"eri";s:2:"35";s:3:"ia ";s:2:"36";s:3:"a d";s:2:"37";s:3:"n k";s:2:"38";s:3:"am ";s:2:"39";s:3:"ga ";s:2:"40";s:3:"at ";s:2:"41";s:3:"era";s:2:"42";s:3:"n d";s:2:"43";s:3:"ter";s:2:"44";s:3:" ka";s:2:"45";s:3:"a p";s:2:"46";s:3:"ari";s:2:"47";s:3:"emb";s:2:"48";s:3:"n m";s:2:"49";s:3:"ri ";s:2:"50";s:3:" ba";s:2:"51";s:3:"aan";s:2:"52";s:3:"ak ";s:2:"53";s:3:"ra ";s:2:"54";s:3:" it";s:2:"55";s:3:"ara";s:2:"56";s:3:"ela";s:2:"57";s:3:"ni ";s:2:"58";s:3:"ali";s:2:"59";s:3:"ran";s:2:"60";s:3:"ar ";s:2:"61";s:3:"eru";s:2:"62";s:3:"lah";s:2:"63";s:3:"a b";s:2:"64";s:3:"asi";s:2:"65";s:3:"awa";s:2:"66";s:3:"eba";s:2:"67";s:3:"gan";s:2:"68";s:3:"n b";s:2:"69";s:3:" ha";s:2:"70";s:3:"ini";s:2:"71";s:3:"mer";s:2:"72";s:3:" la";s:2:"73";s:3:" mi";s:2:"74";s:3:"and";s:2:"75";s:3:"ena";s:2:"76";s:3:"wan";s:2:"77";s:3:" sa";s:2:"78";s:3:"aha";s:2:"79";s:3:"lam";s:2:"80";s:3:"n i";s:2:"81";s:3:"nda";s:2:"82";s:3:" wa";s:2:"83";s:3:"a i";s:2:"84";s:3:"dua";s:2:"85";s:3:"g m";s:2:"86";s:3:"mi ";s:2:"87";s:3:"n a";s:2:"88";s:3:"rus";s:2:"89";s:3:"tel";s:2:"90";s:3:"yak";s:2:"91";s:3:" an";s:2:"92";s:3:"dal";s:2:"93";s:3:"h d";s:2:"94";s:3:"i s";s:2:"95";s:3:"ing";s:2:"96";s:3:"min";s:2:"97";s:3:"ngg";s:2:"98";s:3:"tak";s:2:"99";s:3:"ami";s:3:"100";s:3:"beb";s:3:"101";s:3:"den";s:3:"102";s:3:"gat";s:3:"103";s:3:"ian";s:3:"104";s:3:"ih ";s:3:"105";s:3:"pad";s:3:"106";s:3:"rga";s:3:"107";s:3:"san";s:3:"108";s:3:"ua ";s:3:"109";s:3:" de";s:3:"110";s:3:"a t";s:3:"111";s:3:"arg";s:3:"112";s:3:"dar";s:3:"113";s:3:"elu";s:3:"114";s:3:"har";s:3:"115";s:3:"i k";s:3:"116";s:3:"i m";s:3:"117";s:3:"i p";s:3:"118";s:3:"ika";s:3:"119";s:3:"in ";s:3:"120";s:3:"iny";s:3:"121";s:3:"itu";s:3:"122";s:3:"mba";s:3:"123";s:3:"n t";s:3:"124";s:3:"ntu";s:3:"125";s:3:"pan";s:3:"126";s:3:"pen";s:3:"127";s:3:"sah";s:3:"128";s:3:"tan";s:3:"129";s:3:"tu ";s:3:"130";s:3:"a k";s:3:"131";s:3:"ban";s:3:"132";s:3:"edu";s:3:"133";s:3:"eka";s:3:"134";s:3:"g d";s:3:"135";s:3:"ka ";s:3:"136";s:3:"ker";s:3:"137";s:3:"nde";s:3:"138";s:3:"nta";s:3:"139";s:3:"ora";s:3:"140";s:3:"usa";s:3:"141";s:3:" du";s:3:"142";s:3:" ma";s:3:"143";s:3:"a s";s:3:"144";s:3:"ai ";s:3:"145";s:3:"ant";s:3:"146";s:3:"bas";s:3:"147";s:3:"end";s:3:"148";s:3:"i d";s:3:"149";s:3:"ira";s:3:"150";s:3:"kam";s:3:"151";s:3:"lan";s:3:"152";s:3:"n s";s:3:"153";s:3:"uli";s:3:"154";s:3:"al ";s:3:"155";s:3:"apa";s:3:"156";s:3:"ere";s:3:"157";s:3:"ert";s:3:"158";s:3:"lia";s:3:"159";s:3:"mem";s:3:"160";s:3:"rka";s:3:"161";s:3:"si ";s:3:"162";s:3:"tal";s:3:"163";s:3:"ung";s:3:"164";s:3:" ak";s:3:"165";s:3:"a a";s:3:"166";s:3:"a w";s:3:"167";s:3:"ani";s:3:"168";s:3:"ask";s:3:"169";s:3:"ent";s:3:"170";s:3:"gar";s:3:"171";s:3:"haa";s:3:"172";s:3:"i i";s:3:"173";s:3:"isa";s:3:"174";s:3:"ked";s:3:"175";s:3:"mbe";s:3:"176";s:3:"ska";s:3:"177";s:3:"tor";s:3:"178";s:3:"uan";s:3:"179";s:3:"uk ";s:3:"180";s:3:"uka";s:3:"181";s:3:" ad";s:3:"182";s:3:" to";s:3:"183";s:3:"asa";s:3:"184";s:3:"aya";s:3:"185";s:3:"bag";s:3:"186";s:3:"dia";s:3:"187";s:3:"dun";s:3:"188";s:3:"erj";s:3:"189";s:3:"mas";s:3:"190";s:3:"na ";s:3:"191";s:3:"rek";s:3:"192";s:3:"rit";s:3:"193";s:3:"sih";s:3:"194";s:3:"us ";s:3:"195";s:3:" bi";s:3:"196";s:3:"a h";s:3:"197";s:3:"ama";s:3:"198";s:3:"dib";s:3:"199";s:3:"ers";s:3:"200";s:3:"g s";s:3:"201";s:3:"han";s:3:"202";s:3:"ik ";s:3:"203";s:3:"kem";s:3:"204";s:3:"ma ";s:3:"205";s:3:"n l";s:3:"206";s:3:"nit";s:3:"207";s:3:"r b";s:3:"208";s:3:"rja";s:3:"209";s:3:"sa ";s:3:"210";s:3:" ju";s:3:"211";s:3:" or";s:3:"212";s:3:" si";s:3:"213";s:3:" ti";s:3:"214";s:3:"a y";s:3:"215";s:3:"aga";s:3:"216";s:3:"any";s:3:"217";s:3:"as ";s:3:"218";s:3:"cul";s:3:"219";s:3:"eme";s:3:"220";s:3:"emu";s:3:"221";s:3:"eny";s:3:"222";s:3:"epa";s:3:"223";s:3:"erb";s:3:"224";s:3:"erl";s:3:"225";s:3:"gi ";s:3:"226";s:3:"h m";s:3:"227";s:3:"i a";s:3:"228";s:3:"kel";s:3:"229";s:3:"li ";s:3:"230";s:3:"mel";s:3:"231";s:3:"nia";s:3:"232";s:3:"opa";s:3:"233";s:3:"rta";s:3:"234";s:3:"sia";s:3:"235";s:3:"tah";s:3:"236";s:3:"ula";s:3:"237";s:3:"un ";s:3:"238";s:3:"unt";s:3:"239";s:3:" at";s:3:"240";s:3:" bu";s:3:"241";s:3:" pu";s:3:"242";s:3:" ta";s:3:"243";s:3:"agi";s:3:"244";s:3:"alu";s:3:"245";s:3:"amb";s:3:"246";s:3:"bah";s:3:"247";s:3:"bis";s:3:"248";s:3:"er ";s:3:"249";s:3:"i t";s:3:"250";s:3:"ibe";s:3:"251";s:3:"ir ";s:3:"252";s:3:"ja ";s:3:"253";s:3:"k m";s:3:"254";s:3:"kar";s:3:"255";s:3:"lai";s:3:"256";s:3:"lal";s:3:"257";s:3:"lu ";s:3:"258";s:3:"mpa";s:3:"259";s:3:"ngk";s:3:"260";s:3:"nja";s:3:"261";s:3:"or ";s:3:"262";s:3:"pa ";s:3:"263";s:3:"pas";s:3:"264";s:3:"pem";s:3:"265";s:3:"rak";s:3:"266";s:3:"rik";s:3:"267";s:3:"seb";s:3:"268";s:3:"tam";s:3:"269";s:3:"tem";s:3:"270";s:3:"top";s:3:"271";s:3:"tuk";s:3:"272";s:3:"uni";s:3:"273";s:3:"war";s:3:"274";s:3:" al";s:3:"275";s:3:" ga";s:3:"276";s:3:" ge";s:3:"277";s:3:" ir";s:3:"278";s:3:" ja";s:3:"279";s:3:" mu";s:3:"280";s:3:" na";s:3:"281";s:3:" pr";s:3:"282";s:3:" su";s:3:"283";s:3:" un";s:3:"284";s:3:"ad ";s:3:"285";s:3:"adi";s:3:"286";s:3:"akt";s:3:"287";s:3:"ann";s:3:"288";s:3:"apo";s:3:"289";s:3:"bel";s:3:"290";s:3:"bul";s:3:"291";s:3:"der";s:3:"292";s:3:"ega";s:3:"293";s:3:"eke";s:3:"294";s:3:"ema";s:3:"295";s:3:"emp";s:3:"296";s:3:"ene";s:3:"297";s:3:"enj";s:3:"298";s:3:"esa";s:3:"299";}s:7:"italian";a:300:{s:3:" di";s:1:"0";s:3:"to ";s:1:"1";s:3:"la ";s:1:"2";s:3:" de";s:1:"3";s:3:"di ";s:1:"4";s:3:"no ";s:1:"5";s:3:" co";s:1:"6";s:3:"re ";s:1:"7";s:3:"ion";s:1:"8";s:3:"e d";s:1:"9";s:3:" e ";s:2:"10";s:3:"le ";s:2:"11";s:3:"del";s:2:"12";s:3:"ne ";s:2:"13";s:3:"ti ";s:2:"14";s:3:"ell";s:2:"15";s:3:" la";s:2:"16";s:3:" un";s:2:"17";s:3:"ni ";s:2:"18";s:3:"i d";s:2:"19";s:3:"per";s:2:"20";s:3:" pe";s:2:"21";s:3:"ent";s:2:"22";s:3:" in";s:2:"23";s:3:"one";s:2:"24";s:3:"he ";s:2:"25";s:3:"ta ";s:2:"26";s:3:"zio";s:2:"27";s:3:"che";s:2:"28";s:3:"o d";s:2:"29";s:3:"a d";s:2:"30";s:3:"na ";s:2:"31";s:3:"ato";s:2:"32";s:3:"e s";s:2:"33";s:3:" so";s:2:"34";s:3:"i s";s:2:"35";s:3:"lla";s:2:"36";s:3:"a p";s:2:"37";s:3:"li ";s:2:"38";s:3:"te ";s:2:"39";s:3:" al";s:2:"40";s:3:" ch";s:2:"41";s:3:"er ";s:2:"42";s:3:" pa";s:2:"43";s:3:" si";s:2:"44";s:3:"con";s:2:"45";s:3:"sta";s:2:"46";s:3:" pr";s:2:"47";s:3:"a c";s:2:"48";s:3:" se";s:2:"49";s:3:"el ";s:2:"50";s:3:"ia ";s:2:"51";s:3:"si ";s:2:"52";s:3:"e p";s:2:"53";s:3:" da";s:2:"54";s:3:"e i";s:2:"55";s:3:"i p";s:2:"56";s:3:"ont";s:2:"57";s:3:"ano";s:2:"58";s:3:"i c";s:2:"59";s:3:"all";s:2:"60";s:3:"azi";s:2:"61";s:3:"nte";s:2:"62";s:3:"on ";s:2:"63";s:3:"nti";s:2:"64";s:3:"o s";s:2:"65";s:3:" ri";s:2:"66";s:3:"i a";s:2:"67";s:3:"o a";s:2:"68";s:3:"un ";s:2:"69";s:3:" an";s:2:"70";s:3:"are";s:2:"71";s:3:"ari";s:2:"72";s:3:"e a";s:2:"73";s:3:"i e";s:2:"74";s:3:"ita";s:2:"75";s:3:"men";s:2:"76";s:3:"ri ";s:2:"77";s:3:" ca";s:2:"78";s:3:" il";s:2:"79";s:3:" no";s:2:"80";s:3:" po";s:2:"81";s:3:"a s";s:2:"82";s:3:"ant";s:2:"83";s:3:"il ";s:2:"84";s:3:"in ";s:2:"85";s:3:"a l";s:2:"86";s:3:"ati";s:2:"87";s:3:"cia";s:2:"88";s:3:"e c";s:2:"89";s:3:"ro ";s:2:"90";s:3:"ann";s:2:"91";s:3:"est";s:2:"92";s:3:"gli";s:2:"93";s:4:"tà ";s:2:"94";s:3:" qu";s:2:"95";s:3:"e l";s:2:"96";s:3:"nta";s:2:"97";s:3:" a ";s:2:"98";s:3:"com";s:2:"99";s:3:"o c";s:3:"100";s:3:"ra ";s:3:"101";s:3:" le";s:3:"102";s:3:" ne";s:3:"103";s:3:"ali";s:3:"104";s:3:"ere";s:3:"105";s:3:"ist";s:3:"106";s:3:" ma";s:3:"107";s:4:" è ";s:3:"108";s:3:"io ";s:3:"109";s:3:"lle";s:3:"110";s:3:"me ";s:3:"111";s:3:"era";s:3:"112";s:3:"ica";s:3:"113";s:3:"ost";s:3:"114";s:3:"pro";s:3:"115";s:3:"tar";s:3:"116";s:3:"una";s:3:"117";s:3:" pi";s:3:"118";s:3:"da ";s:3:"119";s:3:"tat";s:3:"120";s:3:" mi";s:3:"121";s:3:"att";s:3:"122";s:3:"ca ";s:3:"123";s:3:"mo ";s:3:"124";s:3:"non";s:3:"125";s:3:"par";s:3:"126";s:3:"sti";s:3:"127";s:3:" fa";s:3:"128";s:3:" i ";s:3:"129";s:3:" re";s:3:"130";s:3:" su";s:3:"131";s:3:"ess";s:3:"132";s:3:"ini";s:3:"133";s:3:"nto";s:3:"134";s:3:"o l";s:3:"135";s:3:"ssi";s:3:"136";s:3:"tto";s:3:"137";s:3:"a e";s:3:"138";s:3:"ame";s:3:"139";s:3:"col";s:3:"140";s:3:"ei ";s:3:"141";s:3:"ma ";s:3:"142";s:3:"o i";s:3:"143";s:3:"za ";s:3:"144";s:3:" st";s:3:"145";s:3:"a a";s:3:"146";s:3:"ale";s:3:"147";s:3:"anc";s:3:"148";s:3:"ani";s:3:"149";s:3:"i m";s:3:"150";s:3:"ian";s:3:"151";s:3:"o p";s:3:"152";s:3:"oni";s:3:"153";s:3:"sio";s:3:"154";s:3:"tan";s:3:"155";s:3:"tti";s:3:"156";s:3:" lo";s:3:"157";s:3:"i r";s:3:"158";s:3:"oci";s:3:"159";s:3:"oli";s:3:"160";s:3:"ona";s:3:"161";s:3:"ono";s:3:"162";s:3:"tra";s:3:"163";s:3:" l ";s:3:"164";s:3:"a r";s:3:"165";s:3:"eri";s:3:"166";s:3:"ett";s:3:"167";s:3:"lo ";s:3:"168";s:3:"nza";s:3:"169";s:3:"que";s:3:"170";s:3:"str";s:3:"171";s:3:"ter";s:3:"172";s:3:"tta";s:3:"173";s:3:" ba";s:3:"174";s:3:" li";s:3:"175";s:3:" te";s:3:"176";s:3:"ass";s:3:"177";s:3:"e f";s:3:"178";s:3:"enz";s:3:"179";s:3:"for";s:3:"180";s:3:"nno";s:3:"181";s:3:"olo";s:3:"182";s:3:"ori";s:3:"183";s:3:"res";s:3:"184";s:3:"tor";s:3:"185";s:3:" ci";s:3:"186";s:3:" vo";s:3:"187";s:3:"a i";s:3:"188";s:3:"al ";s:3:"189";s:3:"chi";s:3:"190";s:3:"e n";s:3:"191";s:3:"lia";s:3:"192";s:3:"pre";s:3:"193";s:3:"ria";s:3:"194";s:3:"uni";s:3:"195";s:3:"ver";s:3:"196";s:3:" sp";s:3:"197";s:3:"imo";s:3:"198";s:3:"l a";s:3:"199";s:3:"l c";s:3:"200";s:3:"ran";s:3:"201";s:3:"sen";s:3:"202";s:3:"soc";s:3:"203";s:3:"tic";s:3:"204";s:3:" fi";s:3:"205";s:3:" mo";s:3:"206";s:3:"a n";s:3:"207";s:3:"ce ";s:3:"208";s:3:"dei";s:3:"209";s:3:"ggi";s:3:"210";s:3:"gio";s:3:"211";s:3:"iti";s:3:"212";s:3:"l s";s:3:"213";s:3:"lit";s:3:"214";s:3:"ll ";s:3:"215";s:3:"mon";s:3:"216";s:3:"ola";s:3:"217";s:3:"pac";s:3:"218";s:3:"sim";s:3:"219";s:3:"tit";s:3:"220";s:3:"utt";s:3:"221";s:3:"vol";s:3:"222";s:3:" ar";s:3:"223";s:3:" fo";s:3:"224";s:3:" ha";s:3:"225";s:3:" sa";s:3:"226";s:3:"acc";s:3:"227";s:3:"e r";s:3:"228";s:3:"ire";s:3:"229";s:3:"man";s:3:"230";s:3:"ntr";s:3:"231";s:3:"rat";s:3:"232";s:3:"sco";s:3:"233";s:3:"tro";s:3:"234";s:3:"tut";s:3:"235";s:3:"va ";s:3:"236";s:3:" do";s:3:"237";s:3:" gi";s:3:"238";s:3:" me";s:3:"239";s:3:" sc";s:3:"240";s:3:" tu";s:3:"241";s:3:" ve";s:3:"242";s:3:" vi";s:3:"243";s:3:"a m";s:3:"244";s:3:"ber";s:3:"245";s:3:"can";s:3:"246";s:3:"cit";s:3:"247";s:3:"i l";s:3:"248";s:3:"ier";s:3:"249";s:4:"ità";s:3:"250";s:3:"lli";s:3:"251";s:3:"min";s:3:"252";s:3:"n p";s:3:"253";s:3:"nat";s:3:"254";s:3:"nda";s:3:"255";s:3:"o e";s:3:"256";s:3:"o f";s:3:"257";s:3:"o u";s:3:"258";s:3:"ore";s:3:"259";s:3:"oro";s:3:"260";s:3:"ort";s:3:"261";s:3:"sto";s:3:"262";s:3:"ten";s:3:"263";s:3:"tiv";s:3:"264";s:3:"van";s:3:"265";s:3:"art";s:3:"266";s:3:"cco";s:3:"267";s:3:"ci ";s:3:"268";s:3:"cos";s:3:"269";s:3:"dal";s:3:"270";s:3:"e v";s:3:"271";s:3:"i i";s:3:"272";s:3:"ila";s:3:"273";s:3:"ino";s:3:"274";s:3:"l p";s:3:"275";s:3:"n c";s:3:"276";s:3:"nit";s:3:"277";s:3:"ole";s:3:"278";s:3:"ome";s:3:"279";s:3:"po ";s:3:"280";s:3:"rio";s:3:"281";s:3:"sa ";s:3:"282";s:3:" ce";s:3:"283";s:3:" es";s:3:"284";s:3:" tr";s:3:"285";s:3:"a b";s:3:"286";s:3:"and";s:3:"287";s:3:"ata";s:3:"288";s:3:"der";s:3:"289";s:3:"ens";s:3:"290";s:3:"ers";s:3:"291";s:3:"gi ";s:3:"292";s:3:"ial";s:3:"293";s:3:"ina";s:3:"294";s:3:"itt";s:3:"295";s:3:"izi";s:3:"296";s:3:"lan";s:3:"297";s:3:"lor";s:3:"298";s:3:"mil";s:3:"299";}s:6:"kazakh";a:300:{s:5:"ан ";s:1:"0";s:5:"ен ";s:1:"1";s:5:"ың ";s:1:"2";s:5:" қа";s:1:"3";s:5:" ба";s:1:"4";s:5:"ай ";s:1:"5";s:6:"нда";s:1:"6";s:5:"ын ";s:1:"7";s:5:" са";s:1:"8";s:5:" ал";s:1:"9";s:5:"ді ";s:2:"10";s:6:"ары";s:2:"11";s:5:"ды ";s:2:"12";s:5:"ып ";s:2:"13";s:5:" мұ";s:2:"14";s:5:" бі";s:2:"15";s:6:"асы";s:2:"16";s:5:"да ";s:2:"17";s:6:"най";s:2:"18";s:5:" жа";s:2:"19";s:6:"мұн";s:2:"20";s:6:"ста";s:2:"21";s:6:"ған";s:2:"22";s:5:"н б";s:2:"23";s:6:"ұна";s:2:"24";s:5:" бо";s:2:"25";s:6:"ның";s:2:"26";s:5:"ін ";s:2:"27";s:6:"лар";s:2:"28";s:6:"сын";s:2:"29";s:5:" де";s:2:"30";s:6:"аға";s:2:"31";s:6:"тан";s:2:"32";s:5:" кө";s:2:"33";s:6:"бір";s:2:"34";s:5:"ер ";s:2:"35";s:6:"мен";s:2:"36";s:6:"аза";s:2:"37";s:6:"ынд";s:2:"38";s:6:"ыны";s:2:"39";s:5:" ме";s:2:"40";s:6:"анд";s:2:"41";s:6:"ері";s:2:"42";s:6:"бол";s:2:"43";s:6:"дың";s:2:"44";s:6:"қаз";s:2:"45";s:6:"аты";s:2:"46";s:5:"сы ";s:2:"47";s:6:"тын";s:2:"48";s:5:"ғы ";s:2:"49";s:5:" ке";s:2:"50";s:5:"ар ";s:2:"51";s:6:"зақ";s:2:"52";s:5:"ық ";s:2:"53";s:6:"ала";s:2:"54";s:6:"алы";s:2:"55";s:6:"аны";s:2:"56";s:6:"ара";s:2:"57";s:6:"ағы";s:2:"58";s:6:"ген";s:2:"59";s:6:"тар";s:2:"60";s:6:"тер";s:2:"61";s:6:"тыр";s:2:"62";s:6:"айд";s:2:"63";s:6:"ард";s:2:"64";s:5:"де ";s:2:"65";s:5:"ға ";s:2:"66";s:5:" қо";s:2:"67";s:6:"бар";s:2:"68";s:5:"ің ";s:2:"69";s:6:"қан";s:2:"70";s:5:" бе";s:2:"71";s:5:" қы";s:2:"72";s:6:"ақс";s:2:"73";s:6:"гер";s:2:"74";s:6:"дан";s:2:"75";s:6:"дар";s:2:"76";s:6:"лық";s:2:"77";s:6:"лға";s:2:"78";s:6:"ына";s:2:"79";s:5:"ір ";s:2:"80";s:6:"ірі";s:2:"81";s:6:"ғас";s:2:"82";s:5:" та";s:2:"83";s:5:"а б";s:2:"84";s:5:"гі ";s:2:"85";s:6:"еді";s:2:"86";s:6:"еле";s:2:"87";s:6:"йды";s:2:"88";s:5:"н к";s:2:"89";s:5:"н т";s:2:"90";s:6:"ола";s:2:"91";s:6:"рын";s:2:"92";s:5:"іп ";s:2:"93";s:6:"қст";s:2:"94";s:6:"қта";s:2:"95";s:5:"ң б";s:2:"96";s:5:" ай";s:2:"97";s:5:" ол";s:2:"98";s:5:" со";s:2:"99";s:6:"айт";s:3:"100";s:6:"дағ";s:3:"101";s:6:"иге";s:3:"102";s:6:"лер";s:3:"103";s:6:"лып";s:3:"104";s:5:"н а";s:3:"105";s:5:"ік ";s:3:"106";s:6:"ақт";s:3:"107";s:6:"бағ";s:3:"108";s:6:"кен";s:3:"109";s:5:"н қ";s:3:"110";s:5:"ны ";s:3:"111";s:6:"рге";s:3:"112";s:6:"рға";s:3:"113";s:5:"ыр ";s:3:"114";s:5:" ар";s:3:"115";s:6:"алғ";s:3:"116";s:6:"аса";s:3:"117";s:6:"бас";s:3:"118";s:6:"бер";s:3:"119";s:5:"ге ";s:3:"120";s:6:"еті";s:3:"121";s:5:"на ";s:3:"122";s:6:"нде";s:3:"123";s:5:"не ";s:3:"124";s:6:"ниг";s:3:"125";s:6:"рды";s:3:"126";s:5:"ры ";s:3:"127";s:6:"сай";s:3:"128";s:5:" ау";s:3:"129";s:5:" кү";s:3:"130";s:5:" ни";s:3:"131";s:5:" от";s:3:"132";s:5:" өз";s:3:"133";s:6:"ауд";s:3:"134";s:5:"еп ";s:3:"135";s:6:"иял";s:3:"136";s:6:"лты";s:3:"137";s:5:"н ж";s:3:"138";s:5:"н о";s:3:"139";s:6:"осы";s:3:"140";s:6:"оты";s:3:"141";s:6:"рып";s:3:"142";s:5:"рі ";s:3:"143";s:6:"тке";s:3:"144";s:5:"ты ";s:3:"145";s:5:"ы б";s:3:"146";s:5:"ы ж";s:3:"147";s:6:"ылы";s:3:"148";s:6:"ысы";s:3:"149";s:5:"і с";s:3:"150";s:6:"қар";s:3:"151";s:5:" бұ";s:3:"152";s:5:" да";s:3:"153";s:5:" же";s:3:"154";s:5:" тұ";s:3:"155";s:5:" құ";s:3:"156";s:6:"ады";s:3:"157";s:6:"айл";s:3:"158";s:5:"ап ";s:3:"159";s:6:"ата";s:3:"160";s:6:"ені";s:3:"161";s:6:"йла";s:3:"162";s:5:"н м";s:3:"163";s:5:"н с";s:3:"164";s:6:"нды";s:3:"165";s:6:"нді";s:3:"166";s:5:"р м";s:3:"167";s:6:"тай";s:3:"168";s:6:"тін";s:3:"169";s:5:"ы т";s:3:"170";s:5:"ыс ";s:3:"171";s:6:"інд";s:3:"172";s:5:" би";s:3:"173";s:5:"а ж";s:3:"174";s:6:"ауы";s:3:"175";s:6:"деп";s:3:"176";s:6:"дің";s:3:"177";s:6:"еке";s:3:"178";s:6:"ери";s:3:"179";s:6:"йын";s:3:"180";s:6:"кел";s:3:"181";s:6:"лды";s:3:"182";s:5:"ма ";s:3:"183";s:6:"нан";s:3:"184";s:6:"оны";s:3:"185";s:5:"п ж";s:3:"186";s:5:"п о";s:3:"187";s:5:"р б";s:3:"188";s:6:"рия";s:3:"189";s:6:"рла";s:3:"190";s:6:"уда";s:3:"191";s:6:"шыл";s:3:"192";s:5:"ы а";s:3:"193";s:6:"ықт";s:3:"194";s:5:"і а";s:3:"195";s:5:"і б";s:3:"196";s:5:"із ";s:3:"197";s:6:"ілі";s:3:"198";s:5:"ң қ";s:3:"199";s:5:" ас";s:3:"200";s:5:" ек";s:3:"201";s:5:" жо";s:3:"202";s:5:" мә";s:3:"203";s:5:" ос";s:3:"204";s:5:" ре";s:3:"205";s:5:" се";s:3:"206";s:6:"алд";s:3:"207";s:6:"дал";s:3:"208";s:6:"дег";s:3:"209";s:6:"дей";s:3:"210";s:5:"е б";s:3:"211";s:5:"ет ";s:3:"212";s:6:"жас";s:3:"213";s:5:"й б";s:3:"214";s:6:"лау";s:3:"215";s:6:"лда";s:3:"216";s:6:"мет";s:3:"217";s:6:"нын";s:3:"218";s:6:"сар";s:3:"219";s:5:"сі ";s:3:"220";s:5:"ті ";s:3:"221";s:6:"ыры";s:3:"222";s:6:"ыта";s:3:"223";s:6:"ісі";s:3:"224";s:5:"ң а";s:3:"225";s:6:"өте";s:3:"226";s:5:" ат";s:3:"227";s:5:" ел";s:3:"228";s:5:" жү";s:3:"229";s:5:" ма";s:3:"230";s:5:" то";s:3:"231";s:5:" шы";s:3:"232";s:5:"а а";s:3:"233";s:6:"алт";s:3:"234";s:6:"ама";s:3:"235";s:6:"арл";s:3:"236";s:6:"аст";s:3:"237";s:6:"бұл";s:3:"238";s:6:"дай";s:3:"239";s:6:"дық";s:3:"240";s:5:"ек ";s:3:"241";s:6:"ель";s:3:"242";s:6:"есі";s:3:"243";s:6:"зді";s:3:"244";s:6:"көт";s:3:"245";s:6:"лем";s:3:"246";s:5:"ль ";s:3:"247";s:5:"н е";s:3:"248";s:5:"п а";s:3:"249";s:5:"р а";s:3:"250";s:6:"рес";s:3:"251";s:5:"са ";s:3:"252";s:5:"та ";s:3:"253";s:6:"тте";s:3:"254";s:6:"тұр";s:3:"255";s:5:"шы ";s:3:"256";s:5:"ы д";s:3:"257";s:5:"ы қ";s:3:"258";s:5:"ыз ";s:3:"259";s:6:"қыт";s:3:"260";s:5:" ко";s:3:"261";s:5:" не";s:3:"262";s:5:" ой";s:3:"263";s:5:" ор";s:3:"264";s:5:" сұ";s:3:"265";s:5:" тү";s:3:"266";s:6:"аль";s:3:"267";s:6:"аре";s:3:"268";s:6:"атт";s:3:"269";s:6:"дір";s:3:"270";s:5:"ев ";s:3:"271";s:6:"егі";s:3:"272";s:6:"еда";s:3:"273";s:6:"екі";s:3:"274";s:6:"елд";s:3:"275";s:6:"ерг";s:3:"276";s:6:"ерд";s:3:"277";s:6:"ияд";s:3:"278";s:6:"кер";s:3:"279";s:6:"кет";s:3:"280";s:6:"лыс";s:3:"281";s:6:"ліс";s:3:"282";s:6:"мед";s:3:"283";s:6:"мпи";s:3:"284";s:5:"н д";s:3:"285";s:5:"ні ";s:3:"286";s:6:"нін";s:3:"287";s:5:"п т";s:3:"288";s:6:"пек";s:3:"289";s:6:"рел";s:3:"290";s:6:"рта";s:3:"291";s:6:"ріл";s:3:"292";s:6:"рін";s:3:"293";s:6:"сен";s:3:"294";s:6:"тал";s:3:"295";s:6:"шіл";s:3:"296";s:5:"ы к";s:3:"297";s:5:"ы м";s:3:"298";s:6:"ыст";s:3:"299";}s:6:"kyrgyz";a:300:{s:5:"ын ";s:1:"0";s:5:"ан ";s:1:"1";s:5:" жа";s:1:"2";s:5:"ен ";s:1:"3";s:5:"да ";s:1:"4";s:5:" та";s:1:"5";s:5:"ар ";s:1:"6";s:5:"ин ";s:1:"7";s:5:" ка";s:1:"8";s:6:"ары";s:1:"9";s:5:" ал";s:2:"10";s:5:" ба";s:2:"11";s:5:" би";s:2:"12";s:6:"лар";s:2:"13";s:5:" бо";s:2:"14";s:5:" кы";s:2:"15";s:6:"ала";s:2:"16";s:5:"н к";s:2:"17";s:5:" са";s:2:"18";s:6:"нда";s:2:"19";s:6:"ган";s:2:"20";s:6:"тар";s:2:"21";s:5:" де";s:2:"22";s:6:"анд";s:2:"23";s:5:"н б";s:2:"24";s:5:" ке";s:2:"25";s:6:"ард";s:2:"26";s:6:"мен";s:2:"27";s:5:"н т";s:2:"28";s:6:"ара";s:2:"29";s:6:"нын";s:2:"30";s:5:" да";s:2:"31";s:5:" ме";s:2:"32";s:6:"кыр";s:2:"33";s:5:" че";s:2:"34";s:5:"н а";s:2:"35";s:5:"ры ";s:2:"36";s:5:" ко";s:2:"37";s:6:"ген";s:2:"38";s:6:"дар";s:2:"39";s:6:"кен";s:2:"40";s:6:"кта";s:2:"41";s:5:"уу ";s:2:"42";s:6:"ене";s:2:"43";s:6:"ери";s:2:"44";s:5:" ша";s:2:"45";s:6:"алы";s:2:"46";s:5:"ат ";s:2:"47";s:5:"на ";s:2:"48";s:5:" кө";s:2:"49";s:5:" эм";s:2:"50";s:6:"аты";s:2:"51";s:6:"дан";s:2:"52";s:6:"деп";s:2:"53";s:6:"дын";s:2:"54";s:5:"еп ";s:2:"55";s:6:"нен";s:2:"56";s:6:"рын";s:2:"57";s:5:" бе";s:2:"58";s:6:"кан";s:2:"59";s:6:"луу";s:2:"60";s:6:"ргы";s:2:"61";s:6:"тан";s:2:"62";s:6:"шай";s:2:"63";s:6:"ырг";s:2:"64";s:5:"үн ";s:2:"65";s:5:" ар";s:2:"66";s:5:" ма";s:2:"67";s:6:"агы";s:2:"68";s:6:"акт";s:2:"69";s:6:"аны";s:2:"70";s:5:"гы ";s:2:"71";s:6:"гыз";s:2:"72";s:5:"ды ";s:2:"73";s:6:"рда";s:2:"74";s:5:"ай ";s:2:"75";s:6:"бир";s:2:"76";s:6:"бол";s:2:"77";s:5:"ер ";s:2:"78";s:5:"н с";s:2:"79";s:6:"нды";s:2:"80";s:5:"ун ";s:2:"81";s:5:"ча ";s:2:"82";s:6:"ынд";s:2:"83";s:5:"а к";s:2:"84";s:6:"ага";s:2:"85";s:6:"айл";s:2:"86";s:6:"ана";s:2:"87";s:5:"ап ";s:2:"88";s:5:"га ";s:2:"89";s:6:"лге";s:2:"90";s:6:"нча";s:2:"91";s:5:"п к";s:2:"92";s:6:"рды";s:2:"93";s:6:"туу";s:2:"94";s:6:"ыны";s:2:"95";s:5:" ан";s:2:"96";s:5:" өз";s:2:"97";s:6:"ама";s:2:"98";s:6:"ата";s:2:"99";s:6:"дин";s:3:"100";s:5:"йт ";s:3:"101";s:6:"лга";s:3:"102";s:6:"лоо";s:3:"103";s:5:"оо ";s:3:"104";s:5:"ри ";s:3:"105";s:6:"тин";s:3:"106";s:5:"ыз ";s:3:"107";s:5:"ып ";s:3:"108";s:6:"өрү";s:3:"109";s:5:" па";s:3:"110";s:5:" эк";s:3:"111";s:5:"а б";s:3:"112";s:6:"алг";s:3:"113";s:6:"асы";s:3:"114";s:6:"ашт";s:3:"115";s:6:"биз";s:3:"116";s:6:"кел";s:3:"117";s:6:"кте";s:3:"118";s:6:"тал";s:3:"119";s:5:" не";s:3:"120";s:5:" су";s:3:"121";s:6:"акы";s:3:"122";s:6:"ент";s:3:"123";s:6:"инд";s:3:"124";s:5:"ир ";s:3:"125";s:6:"кал";s:3:"126";s:5:"н д";s:3:"127";s:6:"нде";s:3:"128";s:6:"ого";s:3:"129";s:6:"онд";s:3:"130";s:6:"оюн";s:3:"131";s:5:"р б";s:3:"132";s:5:"р м";s:3:"133";s:6:"ран";s:3:"134";s:6:"сал";s:3:"135";s:6:"ста";s:3:"136";s:5:"сы ";s:3:"137";s:6:"ура";s:3:"138";s:6:"ыгы";s:3:"139";s:5:" аш";s:3:"140";s:5:" ми";s:3:"141";s:5:" сы";s:3:"142";s:5:" ту";s:3:"143";s:5:"ал ";s:3:"144";s:6:"арт";s:3:"145";s:6:"бор";s:3:"146";s:6:"елг";s:3:"147";s:6:"ени";s:3:"148";s:5:"ет ";s:3:"149";s:6:"жат";s:3:"150";s:6:"йло";s:3:"151";s:6:"кар";s:3:"152";s:5:"н м";s:3:"153";s:6:"огу";s:3:"154";s:5:"п а";s:3:"155";s:5:"п ж";s:3:"156";s:5:"р э";s:3:"157";s:6:"сын";s:3:"158";s:5:"ык ";s:3:"159";s:6:"юнч";s:3:"160";s:5:" бу";s:3:"161";s:5:" ур";s:3:"162";s:5:"а а";s:3:"163";s:5:"ак ";s:3:"164";s:6:"алд";s:3:"165";s:6:"алу";s:3:"166";s:6:"бар";s:3:"167";s:6:"бер";s:3:"168";s:6:"бою";s:3:"169";s:5:"ге ";s:3:"170";s:6:"дон";s:3:"171";s:6:"еги";s:3:"172";s:6:"ект";s:3:"173";s:6:"ефт";s:3:"174";s:5:"из ";s:3:"175";s:6:"кат";s:3:"176";s:6:"лды";s:3:"177";s:5:"н ч";s:3:"178";s:5:"н э";s:3:"179";s:5:"н ө";s:3:"180";s:6:"ндо";s:3:"181";s:6:"неф";s:3:"182";s:5:"он ";s:3:"183";s:6:"сат";s:3:"184";s:6:"тор";s:3:"185";s:5:"ты ";s:3:"186";s:6:"уда";s:3:"187";s:5:"ул ";s:3:"188";s:6:"ула";s:3:"189";s:6:"ууд";s:3:"190";s:5:"ы б";s:3:"191";s:5:"ы ж";s:3:"192";s:5:"ы к";s:3:"193";s:5:"ыл ";s:3:"194";s:6:"ына";s:3:"195";s:6:"эке";s:3:"196";s:6:"ясы";s:3:"197";s:5:" ат";s:3:"198";s:5:" до";s:3:"199";s:5:" жы";s:3:"200";s:5:" со";s:3:"201";s:5:" чы";s:3:"202";s:6:"аас";s:3:"203";s:6:"айт";s:3:"204";s:6:"аст";s:3:"205";s:6:"баа";s:3:"206";s:6:"баш";s:3:"207";s:6:"гар";s:3:"208";s:6:"гын";s:3:"209";s:5:"дө ";s:3:"210";s:5:"е б";s:3:"211";s:5:"ек ";s:3:"212";s:6:"жыл";s:3:"213";s:5:"и б";s:3:"214";s:5:"ик ";s:3:"215";s:6:"ияс";s:3:"216";s:6:"кыз";s:3:"217";s:6:"лда";s:3:"218";s:6:"лык";s:3:"219";s:6:"мда";s:3:"220";s:5:"н ж";s:3:"221";s:6:"нди";s:3:"222";s:5:"ни ";s:3:"223";s:6:"нин";s:3:"224";s:6:"орд";s:3:"225";s:6:"рдо";s:3:"226";s:6:"сто";s:3:"227";s:5:"та ";s:3:"228";s:6:"тер";s:3:"229";s:6:"тти";s:3:"230";s:6:"тур";s:3:"231";s:6:"тын";s:3:"232";s:5:"уп ";s:3:"233";s:6:"ушу";s:3:"234";s:6:"фти";s:3:"235";s:6:"ыкт";s:3:"236";s:5:"үп ";s:3:"237";s:5:"өн ";s:3:"238";s:5:" ай";s:3:"239";s:5:" бү";s:3:"240";s:5:" ич";s:3:"241";s:5:" иш";s:3:"242";s:5:" мо";s:3:"243";s:5:" пр";s:3:"244";s:5:" ре";s:3:"245";s:5:" өк";s:3:"246";s:5:" өт";s:3:"247";s:5:"а д";s:3:"248";s:5:"а у";s:3:"249";s:5:"а э";s:3:"250";s:6:"айм";s:3:"251";s:6:"амд";s:3:"252";s:6:"атт";s:3:"253";s:6:"бек";s:3:"254";s:6:"бул";s:3:"255";s:6:"гол";s:3:"256";s:6:"дег";s:3:"257";s:6:"еге";s:3:"258";s:6:"ейт";s:3:"259";s:6:"еле";s:3:"260";s:6:"енд";s:3:"261";s:6:"жак";s:3:"262";s:5:"и к";s:3:"263";s:6:"ини";s:3:"264";s:6:"ири";s:3:"265";s:6:"йма";s:3:"266";s:6:"кто";s:3:"267";s:6:"лик";s:3:"268";s:6:"мак";s:3:"269";s:6:"мес";s:3:"270";s:5:"н у";s:3:"271";s:5:"н ш";s:3:"272";s:6:"нтт";s:3:"273";s:5:"ол ";s:3:"274";s:6:"оло";s:3:"275";s:6:"пар";s:3:"276";s:6:"рак";s:3:"277";s:6:"рүү";s:3:"278";s:6:"сыр";s:3:"279";s:5:"ти ";s:3:"280";s:6:"тик";s:3:"281";s:6:"тта";s:3:"282";s:6:"төр";s:3:"283";s:5:"у ж";s:3:"284";s:5:"у с";s:3:"285";s:6:"шка";s:3:"286";s:5:"ы м";s:3:"287";s:6:"ызы";s:3:"288";s:6:"ылд";s:3:"289";s:6:"эме";s:3:"290";s:6:"үрү";s:3:"291";s:6:"өлү";s:3:"292";s:6:"өтө";s:3:"293";s:5:" же";s:3:"294";s:5:" тү";s:3:"295";s:5:" эл";s:3:"296";s:5:" өн";s:3:"297";s:5:"а ж";s:3:"298";s:6:"ады";s:3:"299";}s:5:"latin";a:300:{s:3:"um ";s:1:"0";s:3:"us ";s:1:"1";s:3:"ut ";s:1:"2";s:3:"et ";s:1:"3";s:3:"is ";s:1:"4";s:3:" et";s:1:"5";s:3:" in";s:1:"6";s:3:" qu";s:1:"7";s:3:"tur";s:1:"8";s:3:" pr";s:1:"9";s:3:"est";s:2:"10";s:3:"tio";s:2:"11";s:3:" au";s:2:"12";s:3:"am ";s:2:"13";s:3:"em ";s:2:"14";s:3:"aut";s:2:"15";s:3:" di";s:2:"16";s:3:"ent";s:2:"17";s:3:"in ";s:2:"18";s:3:"dic";s:2:"19";s:3:"t e";s:2:"20";s:3:" es";s:2:"21";s:3:"ur ";s:2:"22";s:3:"ati";s:2:"23";s:3:"ion";s:2:"24";s:3:"st ";s:2:"25";s:3:" ut";s:2:"26";s:3:"ae ";s:2:"27";s:3:"qua";s:2:"28";s:3:" de";s:2:"29";s:3:"nt ";s:2:"30";s:3:" su";s:2:"31";s:3:" si";s:2:"32";s:3:"itu";s:2:"33";s:3:"unt";s:2:"34";s:3:"rum";s:2:"35";s:3:"ia ";s:2:"36";s:3:"es ";s:2:"37";s:3:"ter";s:2:"38";s:3:" re";s:2:"39";s:3:"nti";s:2:"40";s:3:"rae";s:2:"41";s:3:"s e";s:2:"42";s:3:"qui";s:2:"43";s:3:"io ";s:2:"44";s:3:"pro";s:2:"45";s:3:"it ";s:2:"46";s:3:"per";s:2:"47";s:3:"ita";s:2:"48";s:3:"one";s:2:"49";s:3:"ici";s:2:"50";s:3:"ius";s:2:"51";s:3:" co";s:2:"52";s:3:"t d";s:2:"53";s:3:"bus";s:2:"54";s:3:"pra";s:2:"55";s:3:"m e";s:2:"56";s:3:" no";s:2:"57";s:3:"edi";s:2:"58";s:3:"tia";s:2:"59";s:3:"ue ";s:2:"60";s:3:"ibu";s:2:"61";s:3:" se";s:2:"62";s:3:" ad";s:2:"63";s:3:"er ";s:2:"64";s:3:" fi";s:2:"65";s:3:"ili";s:2:"66";s:3:"que";s:2:"67";s:3:"t i";s:2:"68";s:3:"de ";s:2:"69";s:3:"oru";s:2:"70";s:3:" te";s:2:"71";s:3:"ali";s:2:"72";s:3:" pe";s:2:"73";s:3:"aed";s:2:"74";s:3:"cit";s:2:"75";s:3:"m d";s:2:"76";s:3:"t s";s:2:"77";s:3:"tat";s:2:"78";s:3:"tem";s:2:"79";s:3:"tis";s:2:"80";s:3:"t p";s:2:"81";s:3:"sti";s:2:"82";s:3:"te ";s:2:"83";s:3:"cum";s:2:"84";s:3:"ere";s:2:"85";s:3:"ium";s:2:"86";s:3:" ex";s:2:"87";s:3:"rat";s:2:"88";s:3:"ta ";s:2:"89";s:3:"con";s:2:"90";s:3:"cti";s:2:"91";s:3:"oni";s:2:"92";s:3:"ra ";s:2:"93";s:3:"s i";s:2:"94";s:3:" cu";s:2:"95";s:3:" sa";s:2:"96";s:3:"eni";s:2:"97";s:3:"nis";s:2:"98";s:3:"nte";s:2:"99";s:3:"eri";s:3:"100";s:3:"omi";s:3:"101";s:3:"re ";s:3:"102";s:3:"s a";s:3:"103";s:3:"min";s:3:"104";s:3:"os ";s:3:"105";s:3:"ti ";s:3:"106";s:3:"uer";s:3:"107";s:3:" ma";s:3:"108";s:3:" ue";s:3:"109";s:3:"m s";s:3:"110";s:3:"nem";s:3:"111";s:3:"t m";s:3:"112";s:3:" mo";s:3:"113";s:3:" po";s:3:"114";s:3:" ui";s:3:"115";s:3:"gen";s:3:"116";s:3:"ict";s:3:"117";s:3:"m i";s:3:"118";s:3:"ris";s:3:"119";s:3:"s s";s:3:"120";s:3:"t a";s:3:"121";s:3:"uae";s:3:"122";s:3:" do";s:3:"123";s:3:"m a";s:3:"124";s:3:"t c";s:3:"125";s:3:" ge";s:3:"126";s:3:"as ";s:3:"127";s:3:"e i";s:3:"128";s:3:"e p";s:3:"129";s:3:"ne ";s:3:"130";s:3:" ca";s:3:"131";s:3:"ine";s:3:"132";s:3:"quo";s:3:"133";s:3:"s p";s:3:"134";s:3:" al";s:3:"135";s:3:"e e";s:3:"136";s:3:"ntu";s:3:"137";s:3:"ro ";s:3:"138";s:3:"tri";s:3:"139";s:3:"tus";s:3:"140";s:3:"uit";s:3:"141";s:3:"atu";s:3:"142";s:3:"ini";s:3:"143";s:3:"iqu";s:3:"144";s:3:"m p";s:3:"145";s:3:"ost";s:3:"146";s:3:"res";s:3:"147";s:3:"ura";s:3:"148";s:3:" ac";s:3:"149";s:3:" fu";s:3:"150";s:3:"a e";s:3:"151";s:3:"ant";s:3:"152";s:3:"nes";s:3:"153";s:3:"nim";s:3:"154";s:3:"sun";s:3:"155";s:3:"tra";s:3:"156";s:3:"e a";s:3:"157";s:3:"s d";s:3:"158";s:3:" pa";s:3:"159";s:3:" uo";s:3:"160";s:3:"ecu";s:3:"161";s:3:" om";s:3:"162";s:3:" tu";s:3:"163";s:3:"ad ";s:3:"164";s:3:"cut";s:3:"165";s:3:"omn";s:3:"166";s:3:"s q";s:3:"167";s:3:" ei";s:3:"168";s:3:"ex ";s:3:"169";s:3:"icu";s:3:"170";s:3:"tor";s:3:"171";s:3:"uid";s:3:"172";s:3:" ip";s:3:"173";s:3:" me";s:3:"174";s:3:"e s";s:3:"175";s:3:"era";s:3:"176";s:3:"eru";s:3:"177";s:3:"iam";s:3:"178";s:3:"ide";s:3:"179";s:3:"ips";s:3:"180";s:3:" iu";s:3:"181";s:3:"a s";s:3:"182";s:3:"do ";s:3:"183";s:3:"e d";s:3:"184";s:3:"eiu";s:3:"185";s:3:"ica";s:3:"186";s:3:"im ";s:3:"187";s:3:"m c";s:3:"188";s:3:"m u";s:3:"189";s:3:"tiu";s:3:"190";s:3:" ho";s:3:"191";s:3:"cat";s:3:"192";s:3:"ist";s:3:"193";s:3:"nat";s:3:"194";s:3:"on ";s:3:"195";s:3:"pti";s:3:"196";s:3:"reg";s:3:"197";s:3:"rit";s:3:"198";s:3:"s t";s:3:"199";s:3:"sic";s:3:"200";s:3:"spe";s:3:"201";s:3:" en";s:3:"202";s:3:" sp";s:3:"203";s:3:"dis";s:3:"204";s:3:"eli";s:3:"205";s:3:"liq";s:3:"206";s:3:"lis";s:3:"207";s:3:"men";s:3:"208";s:3:"mus";s:3:"209";s:3:"num";s:3:"210";s:3:"pos";s:3:"211";s:3:"sio";s:3:"212";s:3:" an";s:3:"213";s:3:" gr";s:3:"214";s:3:"abi";s:3:"215";s:3:"acc";s:3:"216";s:3:"ect";s:3:"217";s:3:"ri ";s:3:"218";s:3:"uan";s:3:"219";s:3:" le";s:3:"220";s:3:"ecc";s:3:"221";s:3:"ete";s:3:"222";s:3:"gra";s:3:"223";s:3:"non";s:3:"224";s:3:"se ";s:3:"225";s:3:"uen";s:3:"226";s:3:"uis";s:3:"227";s:3:" fa";s:3:"228";s:3:" tr";s:3:"229";s:3:"ate";s:3:"230";s:3:"e c";s:3:"231";s:3:"fil";s:3:"232";s:3:"na ";s:3:"233";s:3:"ni ";s:3:"234";s:3:"pul";s:3:"235";s:3:"s f";s:3:"236";s:3:"ui ";s:3:"237";s:3:"at ";s:3:"238";s:3:"cce";s:3:"239";s:3:"dam";s:3:"240";s:3:"i e";s:3:"241";s:3:"ina";s:3:"242";s:3:"leg";s:3:"243";s:3:"nos";s:3:"244";s:3:"ori";s:3:"245";s:3:"pec";s:3:"246";s:3:"rop";s:3:"247";s:3:"sta";s:3:"248";s:3:"uia";s:3:"249";s:3:"ene";s:3:"250";s:3:"iue";s:3:"251";s:3:"iui";s:3:"252";s:3:"siu";s:3:"253";s:3:"t t";s:3:"254";s:3:"t u";s:3:"255";s:3:"tib";s:3:"256";s:3:"tit";s:3:"257";s:3:" da";s:3:"258";s:3:" ne";s:3:"259";s:3:"a d";s:3:"260";s:3:"and";s:3:"261";s:3:"ege";s:3:"262";s:3:"equ";s:3:"263";s:3:"hom";s:3:"264";s:3:"imu";s:3:"265";s:3:"lor";s:3:"266";s:3:"m m";s:3:"267";s:3:"mni";s:3:"268";s:3:"ndo";s:3:"269";s:3:"ner";s:3:"270";s:3:"o e";s:3:"271";s:3:"r e";s:3:"272";s:3:"sit";s:3:"273";s:3:"tum";s:3:"274";s:3:"utu";s:3:"275";s:3:"a p";s:3:"276";s:3:"bis";s:3:"277";s:3:"bit";s:3:"278";s:3:"cer";s:3:"279";s:3:"cta";s:3:"280";s:3:"dom";s:3:"281";s:3:"fut";s:3:"282";s:3:"i s";s:3:"283";s:3:"ign";s:3:"284";s:3:"int";s:3:"285";s:3:"mod";s:3:"286";s:3:"ndu";s:3:"287";s:3:"nit";s:3:"288";s:3:"rib";s:3:"289";s:3:"rti";s:3:"290";s:3:"tas";s:3:"291";s:3:"und";s:3:"292";s:3:" ab";s:3:"293";s:3:"err";s:3:"294";s:3:"ers";s:3:"295";s:3:"ite";s:3:"296";s:3:"iti";s:3:"297";s:3:"m t";s:3:"298";s:3:"o p";s:3:"299";}s:7:"latvian";a:300:{s:3:"as ";s:1:"0";s:3:" la";s:1:"1";s:3:" pa";s:1:"2";s:3:" ne";s:1:"3";s:3:"es ";s:1:"4";s:3:" un";s:1:"5";s:3:"un ";s:1:"6";s:3:" ka";s:1:"7";s:3:" va";s:1:"8";s:3:"ar ";s:1:"9";s:3:"s p";s:2:"10";s:3:" ar";s:2:"11";s:3:" vi";s:2:"12";s:3:"is ";s:2:"13";s:3:"ai ";s:2:"14";s:3:" no";s:2:"15";s:3:"ja ";s:2:"16";s:3:"ija";s:2:"17";s:3:"iem";s:2:"18";s:3:"em ";s:2:"19";s:3:"tu ";s:2:"20";s:3:"tie";s:2:"21";s:3:"vie";s:2:"22";s:3:"lat";s:2:"23";s:3:"aks";s:2:"24";s:3:"ien";s:2:"25";s:3:"kst";s:2:"26";s:3:"ies";s:2:"27";s:3:"s a";s:2:"28";s:3:"rak";s:2:"29";s:3:"atv";s:2:"30";s:3:"tvi";s:2:"31";s:3:" ja";s:2:"32";s:3:" pi";s:2:"33";s:3:"ka ";s:2:"34";s:3:" ir";s:2:"35";s:3:"ir ";s:2:"36";s:3:"ta ";s:2:"37";s:3:" sa";s:2:"38";s:3:"ts ";s:2:"39";s:4:" kā";s:2:"40";s:4:"ās ";s:2:"41";s:3:" ti";s:2:"42";s:3:"ot ";s:2:"43";s:3:"s n";s:2:"44";s:3:" ie";s:2:"45";s:3:" ta";s:2:"46";s:4:"arī";s:2:"47";s:3:"par";s:2:"48";s:3:"pie";s:2:"49";s:3:" pr";s:2:"50";s:4:"kā ";s:2:"51";s:3:" at";s:2:"52";s:3:" ra";s:2:"53";s:3:"am ";s:2:"54";s:4:"inā";s:2:"55";s:4:"tā ";s:2:"56";s:3:" iz";s:2:"57";s:3:"jas";s:2:"58";s:3:"lai";s:2:"59";s:3:" na";s:2:"60";s:3:"aut";s:2:"61";s:4:"ieš";s:2:"62";s:3:"s s";s:2:"63";s:3:" ap";s:2:"64";s:3:" ko";s:2:"65";s:3:" st";s:2:"66";s:3:"iek";s:2:"67";s:3:"iet";s:2:"68";s:3:"jau";s:2:"69";s:3:"us ";s:2:"70";s:4:"rī ";s:2:"71";s:3:"tik";s:2:"72";s:4:"ība";s:2:"73";s:3:"na ";s:2:"74";s:3:" ga";s:2:"75";s:3:"cij";s:2:"76";s:3:"s i";s:2:"77";s:3:" uz";s:2:"78";s:3:"jum";s:2:"79";s:3:"s v";s:2:"80";s:3:"ms ";s:2:"81";s:3:"var";s:2:"82";s:3:" ku";s:2:"83";s:3:" ma";s:2:"84";s:4:"jā ";s:2:"85";s:3:"sta";s:2:"86";s:3:"s u";s:2:"87";s:4:" tā";s:2:"88";s:3:"die";s:2:"89";s:3:"kai";s:2:"90";s:3:"kas";s:2:"91";s:3:"ska";s:2:"92";s:3:" ci";s:2:"93";s:3:" da";s:2:"94";s:3:"kur";s:2:"95";s:3:"lie";s:2:"96";s:3:"tas";s:2:"97";s:3:"a p";s:2:"98";s:3:"est";s:2:"99";s:4:"stā";s:3:"100";s:4:"šan";s:3:"101";s:3:"nes";s:3:"102";s:3:"nie";s:3:"103";s:3:"s d";s:3:"104";s:3:"s m";s:3:"105";s:3:"val";s:3:"106";s:3:" di";s:3:"107";s:3:" es";s:3:"108";s:3:" re";s:3:"109";s:3:"no ";s:3:"110";s:3:"to ";s:3:"111";s:3:"umu";s:3:"112";s:3:"vai";s:3:"113";s:4:"ši ";s:3:"114";s:4:" vē";s:3:"115";s:3:"kum";s:3:"116";s:3:"nu ";s:3:"117";s:3:"rie";s:3:"118";s:3:"s t";s:3:"119";s:4:"ām ";s:3:"120";s:3:"ad ";s:3:"121";s:3:"et ";s:3:"122";s:3:"mu ";s:3:"123";s:3:"s l";s:3:"124";s:3:" be";s:3:"125";s:3:"aud";s:3:"126";s:3:"tur";s:3:"127";s:3:"vij";s:3:"128";s:4:"viņ";s:3:"129";s:4:"āju";s:3:"130";s:3:"bas";s:3:"131";s:3:"gad";s:3:"132";s:3:"i n";s:3:"133";s:3:"ika";s:3:"134";s:3:"os ";s:3:"135";s:3:"a v";s:3:"136";s:3:"not";s:3:"137";s:3:"oti";s:3:"138";s:3:"sts";s:3:"139";s:3:"aik";s:3:"140";s:3:"u a";s:3:"141";s:4:"ā a";s:3:"142";s:4:"āk ";s:3:"143";s:3:" to";s:3:"144";s:3:"ied";s:3:"145";s:3:"stu";s:3:"146";s:3:"ti ";s:3:"147";s:3:"u p";s:3:"148";s:4:"vēl";s:3:"149";s:4:"āci";s:3:"150";s:4:" šo";s:3:"151";s:3:"gi ";s:3:"152";s:3:"ko ";s:3:"153";s:3:"pro";s:3:"154";s:3:"s r";s:3:"155";s:4:"tāj";s:3:"156";s:3:"u s";s:3:"157";s:3:"u v";s:3:"158";s:3:"vis";s:3:"159";s:3:"aun";s:3:"160";s:3:"ks ";s:3:"161";s:3:"str";s:3:"162";s:3:"zin";s:3:"163";s:3:"a a";s:3:"164";s:4:"adī";s:3:"165";s:3:"da ";s:3:"166";s:3:"dar";s:3:"167";s:3:"ena";s:3:"168";s:3:"ici";s:3:"169";s:3:"kra";s:3:"170";s:3:"nas";s:3:"171";s:4:"stī";s:3:"172";s:4:"šu ";s:3:"173";s:4:" mē";s:3:"174";s:3:"a n";s:3:"175";s:3:"eci";s:3:"176";s:3:"i s";s:3:"177";s:3:"ie ";s:3:"178";s:4:"iņa";s:3:"179";s:3:"ju ";s:3:"180";s:3:"las";s:3:"181";s:3:"r t";s:3:"182";s:3:"ums";s:3:"183";s:4:"šie";s:3:"184";s:3:"bu ";s:3:"185";s:3:"cit";s:3:"186";s:3:"i a";s:3:"187";s:3:"ina";s:3:"188";s:3:"ma ";s:3:"189";s:3:"pus";s:3:"190";s:3:"ra ";s:3:"191";s:3:" au";s:3:"192";s:3:" se";s:3:"193";s:3:" sl";s:3:"194";s:3:"a s";s:3:"195";s:3:"ais";s:3:"196";s:4:"eši";s:3:"197";s:3:"iec";s:3:"198";s:3:"iku";s:3:"199";s:4:"pār";s:3:"200";s:3:"s b";s:3:"201";s:3:"s k";s:3:"202";s:3:"sot";s:3:"203";s:5:"ādā";s:3:"204";s:3:" in";s:3:"205";s:3:" li";s:3:"206";s:3:" tr";s:3:"207";s:3:"ana";s:3:"208";s:3:"eso";s:3:"209";s:3:"ikr";s:3:"210";s:3:"man";s:3:"211";s:3:"ne ";s:3:"212";s:3:"u k";s:3:"213";s:3:" tu";s:3:"214";s:3:"an ";s:3:"215";s:3:"av ";s:3:"216";s:3:"bet";s:3:"217";s:4:"būt";s:3:"218";s:3:"im ";s:3:"219";s:3:"isk";s:3:"220";s:4:"līd";s:3:"221";s:3:"nav";s:3:"222";s:3:"ras";s:3:"223";s:3:"ri ";s:3:"224";s:3:"s g";s:3:"225";s:3:"sti";s:3:"226";s:4:"īdz";s:3:"227";s:3:" ai";s:3:"228";s:3:"arb";s:3:"229";s:3:"cin";s:3:"230";s:3:"das";s:3:"231";s:3:"ent";s:3:"232";s:3:"gal";s:3:"233";s:3:"i p";s:3:"234";s:3:"lik";s:3:"235";s:4:"mā ";s:3:"236";s:3:"nek";s:3:"237";s:3:"pat";s:3:"238";s:4:"rēt";s:3:"239";s:3:"si ";s:3:"240";s:3:"tra";s:3:"241";s:4:"uši";s:3:"242";s:3:"vei";s:3:"243";s:3:" br";s:3:"244";s:3:" pu";s:3:"245";s:3:" sk";s:3:"246";s:3:"als";s:3:"247";s:3:"ama";s:3:"248";s:3:"edz";s:3:"249";s:3:"eka";s:3:"250";s:4:"ešu";s:3:"251";s:3:"ieg";s:3:"252";s:3:"jis";s:3:"253";s:3:"kam";s:3:"254";s:3:"lst";s:3:"255";s:4:"nāk";s:3:"256";s:3:"oli";s:3:"257";s:3:"pre";s:3:"258";s:4:"pēc";s:3:"259";s:3:"rot";s:3:"260";s:4:"tās";s:3:"261";s:3:"usi";s:3:"262";s:4:"ēl ";s:3:"263";s:4:"ēs ";s:3:"264";s:3:" bi";s:3:"265";s:3:" de";s:3:"266";s:3:" me";s:3:"267";s:4:" pā";s:3:"268";s:3:"a i";s:3:"269";s:3:"aid";s:3:"270";s:4:"ajā";s:3:"271";s:3:"ikt";s:3:"272";s:3:"kat";s:3:"273";s:3:"lic";s:3:"274";s:3:"lod";s:3:"275";s:3:"mi ";s:3:"276";s:3:"ni ";s:3:"277";s:3:"pri";s:3:"278";s:4:"rād";s:3:"279";s:4:"rīg";s:3:"280";s:3:"sim";s:3:"281";s:4:"trā";s:3:"282";s:3:"u l";s:3:"283";s:3:"uto";s:3:"284";s:3:"uz ";s:3:"285";s:4:"ēc ";s:3:"286";s:5:"ītā";s:3:"287";s:3:" ce";s:3:"288";s:4:" jā";s:3:"289";s:3:" sv";s:3:"290";s:3:"a t";s:3:"291";s:3:"aga";s:3:"292";s:3:"aiz";s:3:"293";s:3:"atu";s:3:"294";s:3:"ba ";s:3:"295";s:3:"cie";s:3:"296";s:3:"du ";s:3:"297";s:3:"dzi";s:3:"298";s:4:"dzī";s:3:"299";}s:10:"lithuanian";a:300:{s:3:"as ";s:1:"0";s:3:" pa";s:1:"1";s:3:" ka";s:1:"2";s:3:"ai ";s:1:"3";s:3:"us ";s:1:"4";s:3:"os ";s:1:"5";s:3:"is ";s:1:"6";s:3:" ne";s:1:"7";s:3:" ir";s:1:"8";s:3:"ir ";s:1:"9";s:3:"ti ";s:2:"10";s:3:" pr";s:2:"11";s:3:"aus";s:2:"12";s:3:"ini";s:2:"13";s:3:"s p";s:2:"14";s:3:"pas";s:2:"15";s:4:"ių ";s:2:"16";s:3:" ta";s:2:"17";s:3:" vi";s:2:"18";s:3:"iau";s:2:"19";s:3:" ko";s:2:"20";s:3:" su";s:2:"21";s:3:"kai";s:2:"22";s:3:"o p";s:2:"23";s:3:"usi";s:2:"24";s:3:" sa";s:2:"25";s:3:"vo ";s:2:"26";s:3:"tai";s:2:"27";s:3:"ali";s:2:"28";s:4:"tų ";s:2:"29";s:3:"io ";s:2:"30";s:3:"jo ";s:2:"31";s:3:"s k";s:2:"32";s:3:"sta";s:2:"33";s:3:"iai";s:2:"34";s:3:" bu";s:2:"35";s:3:" nu";s:2:"36";s:3:"ius";s:2:"37";s:3:"mo ";s:2:"38";s:3:" po";s:2:"39";s:3:"ien";s:2:"40";s:3:"s s";s:2:"41";s:3:"tas";s:2:"42";s:3:" me";s:2:"43";s:3:"uvo";s:2:"44";s:3:"kad";s:2:"45";s:4:" iš";s:2:"46";s:3:" la";s:2:"47";s:3:"to ";s:2:"48";s:3:"ais";s:2:"49";s:3:"ie ";s:2:"50";s:3:"kur";s:2:"51";s:3:"uri";s:2:"52";s:3:" ku";s:2:"53";s:3:"ijo";s:2:"54";s:4:"čia";s:2:"55";s:3:"au ";s:2:"56";s:3:"met";s:2:"57";s:3:"je ";s:2:"58";s:3:" va";s:2:"59";s:3:"ad ";s:2:"60";s:3:" ap";s:2:"61";s:3:"and";s:2:"62";s:3:" gr";s:2:"63";s:3:" ti";s:2:"64";s:3:"kal";s:2:"65";s:3:"asi";s:2:"66";s:3:"i p";s:2:"67";s:4:"iči";s:2:"68";s:3:"s i";s:2:"69";s:3:"s v";s:2:"70";s:3:"ink";s:2:"71";s:3:"o n";s:2:"72";s:4:"ės ";s:2:"73";s:3:"buv";s:2:"74";s:3:"s a";s:2:"75";s:3:" ga";s:2:"76";s:3:"aip";s:2:"77";s:3:"avi";s:2:"78";s:3:"mas";s:2:"79";s:3:"pri";s:2:"80";s:3:"tik";s:2:"81";s:3:" re";s:2:"82";s:3:"etu";s:2:"83";s:3:"jos";s:2:"84";s:3:" da";s:2:"85";s:3:"ent";s:2:"86";s:3:"oli";s:2:"87";s:3:"par";s:2:"88";s:3:"ant";s:2:"89";s:3:"ara";s:2:"90";s:3:"tar";s:2:"91";s:3:"ama";s:2:"92";s:3:"gal";s:2:"93";s:3:"imo";s:2:"94";s:4:"išk";s:2:"95";s:3:"o s";s:2:"96";s:3:" at";s:2:"97";s:3:" be";s:2:"98";s:4:" į ";s:2:"99";s:3:"min";s:3:"100";s:3:"tin";s:3:"101";s:3:" tu";s:3:"102";s:3:"s n";s:3:"103";s:3:" jo";s:3:"104";s:3:"dar";s:3:"105";s:3:"ip ";s:3:"106";s:3:"rei";s:3:"107";s:3:" te";s:3:"108";s:4:"dži";s:3:"109";s:3:"kas";s:3:"110";s:3:"nin";s:3:"111";s:3:"tei";s:3:"112";s:3:"vie";s:3:"113";s:3:" li";s:3:"114";s:3:" se";s:3:"115";s:3:"cij";s:3:"116";s:3:"gar";s:3:"117";s:3:"lai";s:3:"118";s:3:"art";s:3:"119";s:3:"lau";s:3:"120";s:3:"ras";s:3:"121";s:3:"no ";s:3:"122";s:3:"o k";s:3:"123";s:4:"tą ";s:3:"124";s:3:" ar";s:3:"125";s:4:"ėjo";s:3:"126";s:4:"vič";s:3:"127";s:3:"iga";s:3:"128";s:3:"pra";s:3:"129";s:3:"vis";s:3:"130";s:3:" na";s:3:"131";s:3:"men";s:3:"132";s:3:"oki";s:3:"133";s:4:"raš";s:3:"134";s:3:"s t";s:3:"135";s:3:"iet";s:3:"136";s:3:"ika";s:3:"137";s:3:"int";s:3:"138";s:3:"kom";s:3:"139";s:3:"tam";s:3:"140";s:3:"aug";s:3:"141";s:3:"avo";s:3:"142";s:3:"rie";s:3:"143";s:3:"s b";s:3:"144";s:3:" st";s:3:"145";s:3:"eim";s:3:"146";s:3:"ko ";s:3:"147";s:3:"nus";s:3:"148";s:3:"pol";s:3:"149";s:3:"ria";s:3:"150";s:3:"sau";s:3:"151";s:3:"api";s:3:"152";s:3:"me ";s:3:"153";s:3:"ne ";s:3:"154";s:3:"sik";s:3:"155";s:4:" ši";s:3:"156";s:3:"i n";s:3:"157";s:3:"ia ";s:3:"158";s:3:"ici";s:3:"159";s:3:"oja";s:3:"160";s:3:"sak";s:3:"161";s:3:"sti";s:3:"162";s:3:"ui ";s:3:"163";s:3:"ame";s:3:"164";s:3:"lie";s:3:"165";s:3:"o t";s:3:"166";s:3:"pie";s:3:"167";s:4:"čiu";s:3:"168";s:3:" di";s:3:"169";s:3:" pe";s:3:"170";s:3:"gri";s:3:"171";s:3:"ios";s:3:"172";s:3:"lia";s:3:"173";s:3:"lin";s:3:"174";s:3:"s d";s:3:"175";s:3:"s g";s:3:"176";s:3:"ta ";s:3:"177";s:3:"uot";s:3:"178";s:3:" ja";s:3:"179";s:4:" už";s:3:"180";s:3:"aut";s:3:"181";s:3:"i s";s:3:"182";s:3:"ino";s:3:"183";s:4:"mą ";s:3:"184";s:3:"oje";s:3:"185";s:3:"rav";s:3:"186";s:4:"dėl";s:3:"187";s:3:"nti";s:3:"188";s:3:"o a";s:3:"189";s:3:"toj";s:3:"190";s:4:"ėl ";s:3:"191";s:3:" to";s:3:"192";s:3:" vy";s:3:"193";s:3:"ar ";s:3:"194";s:3:"ina";s:3:"195";s:3:"lic";s:3:"196";s:3:"o v";s:3:"197";s:3:"sei";s:3:"198";s:3:"su ";s:3:"199";s:3:" mi";s:3:"200";s:3:" pi";s:3:"201";s:3:"din";s:3:"202";s:4:"iš ";s:3:"203";s:3:"lan";s:3:"204";s:3:"si ";s:3:"205";s:3:"tus";s:3:"206";s:3:" ba";s:3:"207";s:3:"asa";s:3:"208";s:3:"ata";s:3:"209";s:3:"kla";s:3:"210";s:3:"omi";s:3:"211";s:3:"tat";s:3:"212";s:3:" an";s:3:"213";s:3:" ji";s:3:"214";s:3:"als";s:3:"215";s:3:"ena";s:3:"216";s:4:"jų ";s:3:"217";s:3:"nuo";s:3:"218";s:3:"per";s:3:"219";s:3:"rig";s:3:"220";s:3:"s m";s:3:"221";s:3:"val";s:3:"222";s:3:"yta";s:3:"223";s:4:"čio";s:3:"224";s:3:" ra";s:3:"225";s:3:"i k";s:3:"226";s:3:"lik";s:3:"227";s:3:"net";s:3:"228";s:4:"nė ";s:3:"229";s:3:"tis";s:3:"230";s:3:"tuo";s:3:"231";s:3:"yti";s:3:"232";s:4:"ęs ";s:3:"233";s:4:"ų s";s:3:"234";s:3:"ada";s:3:"235";s:3:"ari";s:3:"236";s:3:"do ";s:3:"237";s:3:"eik";s:3:"238";s:3:"eis";s:3:"239";s:3:"ist";s:3:"240";s:3:"lst";s:3:"241";s:3:"ma ";s:3:"242";s:3:"nes";s:3:"243";s:3:"sav";s:3:"244";s:3:"sio";s:3:"245";s:3:"tau";s:3:"246";s:3:" ki";s:3:"247";s:3:"aik";s:3:"248";s:3:"aud";s:3:"249";s:3:"ies";s:3:"250";s:3:"ori";s:3:"251";s:3:"s r";s:3:"252";s:3:"ska";s:3:"253";s:3:" ge";s:3:"254";s:3:"ast";s:3:"255";s:3:"eig";s:3:"256";s:3:"et ";s:3:"257";s:3:"iam";s:3:"258";s:3:"isa";s:3:"259";s:3:"mis";s:3:"260";s:3:"nam";s:3:"261";s:3:"ome";s:3:"262";s:4:"žia";s:3:"263";s:3:"aba";s:3:"264";s:3:"aul";s:3:"265";s:3:"ikr";s:3:"266";s:4:"ką ";s:3:"267";s:3:"nta";s:3:"268";s:3:"ra ";s:3:"269";s:3:"tur";s:3:"270";s:3:" ma";s:3:"271";s:3:"die";s:3:"272";s:3:"ei ";s:3:"273";s:3:"i t";s:3:"274";s:3:"nas";s:3:"275";s:3:"rin";s:3:"276";s:3:"sto";s:3:"277";s:3:"tie";s:3:"278";s:3:"tuv";s:3:"279";s:3:"vos";s:3:"280";s:4:"ų p";s:3:"281";s:4:" dė";s:3:"282";s:3:"are";s:3:"283";s:3:"ats";s:3:"284";s:4:"enė";s:3:"285";s:3:"ili";s:3:"286";s:3:"ima";s:3:"287";s:3:"kar";s:3:"288";s:3:"ms ";s:3:"289";s:3:"nia";s:3:"290";s:3:"r p";s:3:"291";s:3:"rod";s:3:"292";s:3:"s l";s:3:"293";s:3:" o ";s:3:"294";s:3:"e p";s:3:"295";s:3:"es ";s:3:"296";s:3:"ide";s:3:"297";s:3:"ik ";s:3:"298";s:3:"ja ";s:3:"299";}s:10:"macedonian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"та ";s:1:"2";s:6:"ата";s:1:"3";s:6:"ија";s:1:"4";s:5:" пр";s:1:"5";s:5:"то ";s:1:"6";s:5:"ја ";s:1:"7";s:5:" за";s:1:"8";s:5:"а н";s:1:"9";s:4:" и ";s:2:"10";s:5:"а с";s:2:"11";s:5:"те ";s:2:"12";s:6:"ите";s:2:"13";s:5:" ко";s:2:"14";s:5:"от ";s:2:"15";s:5:" де";s:2:"16";s:5:" по";s:2:"17";s:5:"а д";s:2:"18";s:5:"во ";s:2:"19";s:5:"за ";s:2:"20";s:5:" во";s:2:"21";s:5:" од";s:2:"22";s:5:" се";s:2:"23";s:5:" не";s:2:"24";s:5:"се ";s:2:"25";s:5:" до";s:2:"26";s:5:"а в";s:2:"27";s:5:"ка ";s:2:"28";s:6:"ање";s:2:"29";s:5:"а п";s:2:"30";s:5:"о п";s:2:"31";s:6:"ува";s:2:"32";s:6:"циј";s:2:"33";s:5:"а о";s:2:"34";s:6:"ици";s:2:"35";s:6:"ето";s:2:"36";s:5:"о н";s:2:"37";s:6:"ани";s:2:"38";s:5:"ни ";s:2:"39";s:5:" вл";s:2:"40";s:6:"дек";s:2:"41";s:6:"ека";s:2:"42";s:6:"њет";s:2:"43";s:5:"ќе ";s:2:"44";s:4:" е ";s:2:"45";s:5:"а з";s:2:"46";s:5:"а и";s:2:"47";s:5:"ат ";s:2:"48";s:6:"вла";s:2:"49";s:5:"го ";s:2:"50";s:5:"е н";s:2:"51";s:5:"од ";s:2:"52";s:6:"пре";s:2:"53";s:5:" го";s:2:"54";s:5:" да";s:2:"55";s:5:" ма";s:2:"56";s:5:" ре";s:2:"57";s:5:" ќе";s:2:"58";s:6:"али";s:2:"59";s:5:"и д";s:2:"60";s:5:"и н";s:2:"61";s:6:"иот";s:2:"62";s:6:"нат";s:2:"63";s:6:"ово";s:2:"64";s:5:" па";s:2:"65";s:5:" ра";s:2:"66";s:5:" со";s:2:"67";s:6:"ове";s:2:"68";s:6:"пра";s:2:"69";s:6:"што";s:2:"70";s:5:"ње ";s:2:"71";s:5:"а е";s:2:"72";s:5:"да ";s:2:"73";s:6:"дат";s:2:"74";s:6:"дон";s:2:"75";s:5:"е в";s:2:"76";s:5:"е д";s:2:"77";s:5:"е з";s:2:"78";s:5:"е с";s:2:"79";s:6:"кон";s:2:"80";s:6:"нит";s:2:"81";s:5:"но ";s:2:"82";s:6:"они";s:2:"83";s:6:"ото";s:2:"84";s:6:"пар";s:2:"85";s:6:"при";s:2:"86";s:6:"ста";s:2:"87";s:5:"т н";s:2:"88";s:5:" шт";s:2:"89";s:5:"а к";s:2:"90";s:6:"аци";s:2:"91";s:5:"ва ";s:2:"92";s:6:"вањ";s:2:"93";s:5:"е п";s:2:"94";s:6:"ени";s:2:"95";s:5:"ла ";s:2:"96";s:6:"лад";s:2:"97";s:6:"мак";s:2:"98";s:6:"нес";s:2:"99";s:6:"нос";s:3:"100";s:6:"про";s:3:"101";s:6:"рен";s:3:"102";s:6:"јат";s:3:"103";s:5:" ин";s:3:"104";s:5:" ме";s:3:"105";s:5:" то";s:3:"106";s:5:"а г";s:3:"107";s:5:"а м";s:3:"108";s:5:"а р";s:3:"109";s:6:"аке";s:3:"110";s:6:"ако";s:3:"111";s:6:"вор";s:3:"112";s:6:"гов";s:3:"113";s:6:"едо";s:3:"114";s:6:"ена";s:3:"115";s:5:"и и";s:3:"116";s:6:"ира";s:3:"117";s:6:"кед";s:3:"118";s:5:"не ";s:3:"119";s:6:"ниц";s:3:"120";s:6:"ниј";s:3:"121";s:6:"ост";s:3:"122";s:5:"ра ";s:3:"123";s:6:"рат";s:3:"124";s:6:"ред";s:3:"125";s:6:"ска";s:3:"126";s:6:"тен";s:3:"127";s:5:" ка";s:3:"128";s:5:" сп";s:3:"129";s:5:" ја";s:3:"130";s:5:"а т";s:3:"131";s:6:"аде";s:3:"132";s:6:"арт";s:3:"133";s:5:"е г";s:3:"134";s:5:"е и";s:3:"135";s:6:"кат";s:3:"136";s:6:"лас";s:3:"137";s:6:"нио";s:3:"138";s:5:"о с";s:3:"139";s:5:"ри ";s:3:"140";s:5:" ба";s:3:"141";s:5:" би";s:3:"142";s:6:"ава";s:3:"143";s:6:"ате";s:3:"144";s:6:"вни";s:3:"145";s:5:"д н";s:3:"146";s:6:"ден";s:3:"147";s:6:"дов";s:3:"148";s:6:"држ";s:3:"149";s:6:"дув";s:3:"150";s:5:"е о";s:3:"151";s:5:"ен ";s:3:"152";s:6:"ере";s:3:"153";s:6:"ери";s:3:"154";s:5:"и п";s:3:"155";s:5:"и с";s:3:"156";s:6:"ина";s:3:"157";s:6:"кој";s:3:"158";s:6:"нци";s:3:"159";s:5:"о м";s:3:"160";s:5:"о о";s:3:"161";s:6:"одн";s:3:"162";s:6:"пор";s:3:"163";s:6:"ски";s:3:"164";s:6:"спо";s:3:"165";s:6:"ств";s:3:"166";s:6:"сти";s:3:"167";s:6:"тво";s:3:"168";s:5:"ти ";s:3:"169";s:5:" об";s:3:"170";s:5:" ов";s:3:"171";s:5:"а б";s:3:"172";s:6:"алн";s:3:"173";s:6:"ара";s:3:"174";s:6:"бар";s:3:"175";s:5:"е к";s:3:"176";s:5:"ед ";s:3:"177";s:6:"ент";s:3:"178";s:6:"еѓу";s:3:"179";s:5:"и о";s:3:"180";s:5:"ии ";s:3:"181";s:6:"меѓ";s:3:"182";s:5:"о д";s:3:"183";s:6:"оја";s:3:"184";s:6:"пот";s:3:"185";s:6:"раз";s:3:"186";s:6:"раш";s:3:"187";s:6:"спр";s:3:"188";s:6:"сто";s:3:"189";s:5:"т д";s:3:"190";s:5:"ци ";s:3:"191";s:5:" бе";s:3:"192";s:5:" гр";s:3:"193";s:5:" др";s:3:"194";s:5:" из";s:3:"195";s:5:" ст";s:3:"196";s:5:"аа ";s:3:"197";s:6:"бид";s:3:"198";s:6:"вед";s:3:"199";s:6:"гла";s:3:"200";s:6:"еко";s:3:"201";s:6:"енд";s:3:"202";s:6:"есе";s:3:"203";s:6:"етс";s:3:"204";s:6:"зац";s:3:"205";s:5:"и т";s:3:"206";s:6:"иза";s:3:"207";s:6:"инс";s:3:"208";s:6:"ист";s:3:"209";s:5:"ки ";s:3:"210";s:6:"ков";s:3:"211";s:6:"кол";s:3:"212";s:5:"ку ";s:3:"213";s:6:"лиц";s:3:"214";s:5:"о з";s:3:"215";s:5:"о и";s:3:"216";s:6:"ова";s:3:"217";s:6:"олк";s:3:"218";s:6:"оре";s:3:"219";s:6:"ори";s:3:"220";s:6:"под";s:3:"221";s:6:"рањ";s:3:"222";s:6:"реф";s:3:"223";s:6:"ржа";s:3:"224";s:6:"ров";s:3:"225";s:6:"рти";s:3:"226";s:5:"со ";s:3:"227";s:6:"тор";s:3:"228";s:6:"фер";s:3:"229";s:6:"цен";s:3:"230";s:6:"цит";s:3:"231";s:4:" а ";s:3:"232";s:5:" вр";s:3:"233";s:5:" гл";s:3:"234";s:5:" дп";s:3:"235";s:5:" мо";s:3:"236";s:5:" ни";s:3:"237";s:5:" но";s:3:"238";s:5:" оп";s:3:"239";s:5:" от";s:3:"240";s:5:"а ќ";s:3:"241";s:6:"або";s:3:"242";s:6:"ада";s:3:"243";s:6:"аса";s:3:"244";s:6:"аша";s:3:"245";s:5:"ба ";s:3:"246";s:6:"бот";s:3:"247";s:6:"ваа";s:3:"248";s:6:"ват";s:3:"249";s:6:"вот";s:3:"250";s:5:"ги ";s:3:"251";s:6:"гра";s:3:"252";s:5:"де ";s:3:"253";s:6:"дин";s:3:"254";s:6:"дум";s:3:"255";s:6:"евр";s:3:"256";s:6:"еду";s:3:"257";s:6:"ено";s:3:"258";s:6:"ера";s:3:"259";s:5:"ес ";s:3:"260";s:6:"ење";s:3:"261";s:5:"же ";s:3:"262";s:6:"зак";s:3:"263";s:5:"и в";s:3:"264";s:6:"ила";s:3:"265";s:6:"иту";s:3:"266";s:6:"коа";s:3:"267";s:6:"кои";s:3:"268";s:6:"лан";s:3:"269";s:6:"лку";s:3:"270";s:6:"лож";s:3:"271";s:6:"мот";s:3:"272";s:6:"нду";s:3:"273";s:6:"нст";s:3:"274";s:5:"о в";s:3:"275";s:5:"оа ";s:3:"276";s:6:"оал";s:3:"277";s:6:"обр";s:3:"278";s:5:"ов ";s:3:"279";s:6:"ови";s:3:"280";s:6:"овн";s:3:"281";s:5:"ои ";s:3:"282";s:5:"ор ";s:3:"283";s:6:"орм";s:3:"284";s:5:"ој ";s:3:"285";s:6:"рет";s:3:"286";s:6:"сед";s:3:"287";s:5:"ст ";s:3:"288";s:6:"тер";s:3:"289";s:6:"тиј";s:3:"290";s:6:"тоа";s:3:"291";s:6:"фор";s:3:"292";s:6:"ции";s:3:"293";s:5:"ѓу ";s:3:"294";s:5:" ал";s:3:"295";s:5:" ве";s:3:"296";s:5:" вм";s:3:"297";s:5:" ги";s:3:"298";s:5:" ду";s:3:"299";}s:9:"mongolian";a:300:{s:5:"ын ";s:1:"0";s:5:" ба";s:1:"1";s:5:"йн ";s:1:"2";s:6:"бай";s:1:"3";s:6:"ийн";s:1:"4";s:6:"уул";s:1:"5";s:5:" ул";s:1:"6";s:6:"улс";s:1:"7";s:5:"ан ";s:1:"8";s:5:" ха";s:1:"9";s:6:"ний";s:2:"10";s:5:"н х";s:2:"11";s:6:"гаа";s:2:"12";s:6:"сын";s:2:"13";s:5:"ий ";s:2:"14";s:6:"лсы";s:2:"15";s:5:" бо";s:2:"16";s:5:"й б";s:2:"17";s:5:"эн ";s:2:"18";s:5:"ах ";s:2:"19";s:6:"бол";s:2:"20";s:5:"ол ";s:2:"21";s:5:"н б";s:2:"22";s:6:"оло";s:2:"23";s:5:" хэ";s:2:"24";s:6:"онг";s:2:"25";s:6:"гол";s:2:"26";s:6:"гуу";s:2:"27";s:6:"нго";s:2:"28";s:5:"ыг ";s:2:"29";s:6:"жил";s:2:"30";s:5:" мо";s:2:"31";s:6:"лаг";s:2:"32";s:6:"лла";s:2:"33";s:6:"мон";s:2:"34";s:5:" тє";s:2:"35";s:5:" ху";s:2:"36";s:6:"айд";s:2:"37";s:5:"ны ";s:2:"38";s:5:"он ";s:2:"39";s:6:"сан";s:2:"40";s:6:"хий";s:2:"41";s:5:" аж";s:2:"42";s:5:" ор";s:2:"43";s:5:"л у";s:2:"44";s:5:"н т";s:2:"45";s:6:"улг";s:2:"46";s:6:"айг";s:2:"47";s:6:"длы";s:2:"48";s:5:"йг ";s:2:"49";s:5:" за";s:2:"50";s:6:"дэс";s:2:"51";s:5:"н а";s:2:"52";s:6:"ндэ";s:2:"53";s:6:"ула";s:2:"54";s:5:"ээ ";s:2:"55";s:6:"ага";s:2:"56";s:6:"ийг";s:2:"57";s:4:"vй ";s:2:"58";s:5:"аа ";s:2:"59";s:5:"й а";s:2:"60";s:6:"лын";s:2:"61";s:5:"н з";s:2:"62";s:5:" аю";s:2:"63";s:5:" зє";s:2:"64";s:6:"аар";s:2:"65";s:5:"ад ";s:2:"66";s:5:"ар ";s:2:"67";s:5:"гvй";s:2:"68";s:6:"зєв";s:2:"69";s:6:"ажи";s:2:"70";s:5:"ал ";s:2:"71";s:6:"аюу";s:2:"72";s:5:"г х";s:2:"73";s:5:"лгv";s:2:"74";s:5:"лж ";s:2:"75";s:6:"сни";s:2:"76";s:6:"эсн";s:2:"77";s:6:"юул";s:2:"78";s:6:"йдл";s:2:"79";s:6:"лыг";s:2:"80";s:6:"нхи";s:2:"81";s:6:"ууд";s:2:"82";s:6:"хам";s:2:"83";s:5:" нэ";s:2:"84";s:5:" са";s:2:"85";s:6:"гий";s:2:"86";s:6:"лах";s:2:"87";s:6:"лєл";s:2:"88";s:6:"рєн";s:2:"89";s:6:"єгч";s:2:"90";s:5:" та";s:2:"91";s:6:"илл";s:2:"92";s:6:"лий";s:2:"93";s:6:"лэх";s:2:"94";s:6:"рий";s:2:"95";s:5:"эх ";s:2:"96";s:5:" ер";s:2:"97";s:5:" эр";s:2:"98";s:6:"влє";s:2:"99";s:6:"ерє";s:3:"100";s:6:"ийл";s:3:"101";s:6:"лон";s:3:"102";s:6:"лєг";s:3:"103";s:6:"євл";s:3:"104";s:6:"єнх";s:3:"105";s:5:" хо";s:3:"106";s:6:"ари";s:3:"107";s:5:"их ";s:3:"108";s:6:"хан";s:3:"109";s:5:"эр ";s:3:"110";s:5:"єн ";s:3:"111";s:4:"vvл";s:3:"112";s:5:"ж б";s:3:"113";s:6:"тэй";s:3:"114";s:5:"х х";s:3:"115";s:6:"эрх";s:3:"116";s:4:" vн";s:3:"117";s:5:" нь";s:3:"118";s:5:"vнд";s:3:"119";s:6:"алт";s:3:"120";s:6:"йлє";s:3:"121";s:5:"нь ";s:3:"122";s:6:"тєр";s:3:"123";s:5:" га";s:3:"124";s:5:" су";s:3:"125";s:6:"аан";s:3:"126";s:6:"даа";s:3:"127";s:6:"илц";s:3:"128";s:6:"йгу";s:3:"129";s:5:"л а";s:3:"130";s:6:"лаа";s:3:"131";s:5:"н н";s:3:"132";s:6:"руу";s:3:"133";s:5:"эй ";s:3:"134";s:5:" то";s:3:"135";s:5:"н с";s:3:"136";s:6:"рил";s:3:"137";s:6:"єри";s:3:"138";s:6:"ааг";s:3:"139";s:5:"гч ";s:3:"140";s:6:"лээ";s:3:"141";s:5:"н о";s:3:"142";s:6:"рэг";s:3:"143";s:6:"суу";s:3:"144";s:6:"эрэ";s:3:"145";s:6:"їїл";s:3:"146";s:4:" yн";s:3:"147";s:5:" бу";s:3:"148";s:5:" дэ";s:3:"149";s:5:" ол";s:3:"150";s:5:" ту";s:3:"151";s:5:" ши";s:3:"152";s:5:"yнд";s:3:"153";s:6:"аши";s:3:"154";s:5:"г т";s:3:"155";s:5:"иг ";s:3:"156";s:5:"йл ";s:3:"157";s:6:"хар";s:3:"158";s:6:"шин";s:3:"159";s:5:"эг ";s:3:"160";s:5:"єр ";s:3:"161";s:5:" их";s:3:"162";s:5:" хє";s:3:"163";s:5:" хї";s:3:"164";s:5:"ам ";s:3:"165";s:6:"анг";s:3:"166";s:5:"ин ";s:3:"167";s:6:"йга";s:3:"168";s:6:"лса";s:3:"169";s:4:"н v";s:3:"170";s:5:"н е";s:3:"171";s:6:"нал";s:3:"172";s:5:"нд ";s:3:"173";s:6:"хуу";s:3:"174";s:6:"цаа";s:3:"175";s:5:"эд ";s:3:"176";s:6:"ээр";s:3:"177";s:5:"єл ";s:3:"178";s:5:"vйл";s:3:"179";s:6:"ада";s:3:"180";s:6:"айн";s:3:"181";s:6:"ала";s:3:"182";s:6:"амт";s:3:"183";s:6:"гах";s:3:"184";s:5:"д х";s:3:"185";s:6:"дал";s:3:"186";s:6:"зар";s:3:"187";s:5:"л б";s:3:"188";s:6:"лан";s:3:"189";s:5:"н д";s:3:"190";s:6:"сэн";s:3:"191";s:6:"улл";s:3:"192";s:5:"х б";s:3:"193";s:6:"хэр";s:3:"194";s:4:" бv";s:3:"195";s:5:" да";s:3:"196";s:5:" зо";s:3:"197";s:5:"vрэ";s:3:"198";s:6:"аад";s:3:"199";s:6:"гээ";s:3:"200";s:6:"лэн";s:3:"201";s:5:"н и";s:3:"202";s:5:"н э";s:3:"203";s:6:"нга";s:3:"204";s:5:"нэ ";s:3:"205";s:6:"тал";s:3:"206";s:6:"тын";s:3:"207";s:6:"хур";s:3:"208";s:5:"эл ";s:3:"209";s:5:" на";s:3:"210";s:5:" ни";s:3:"211";s:5:" он";s:3:"212";s:5:"vлэ";s:3:"213";s:5:"аг ";s:3:"214";s:5:"аж ";s:3:"215";s:5:"ай ";s:3:"216";s:6:"ата";s:3:"217";s:6:"бар";s:3:"218";s:5:"г б";s:3:"219";s:6:"гад";s:3:"220";s:6:"гїй";s:3:"221";s:5:"й х";s:3:"222";s:5:"лт ";s:3:"223";s:5:"н м";s:3:"224";s:5:"на ";s:3:"225";s:6:"оро";s:3:"226";s:6:"уль";s:3:"227";s:6:"чин";s:3:"228";s:5:"эж ";s:3:"229";s:6:"энэ";s:3:"230";s:6:"ээд";s:3:"231";s:5:"їй ";s:3:"232";s:6:"їлэ";s:3:"233";s:5:" би";s:3:"234";s:5:" тэ";s:3:"235";s:5:" эн";s:3:"236";s:6:"аны";s:3:"237";s:6:"дий";s:3:"238";s:6:"дээ";s:3:"239";s:6:"лал";s:3:"240";s:6:"лга";s:3:"241";s:5:"лд ";s:3:"242";s:6:"лог";s:3:"243";s:5:"ль ";s:3:"244";s:5:"н у";s:3:"245";s:5:"н ї";s:3:"246";s:5:"р б";s:3:"247";s:6:"рал";s:3:"248";s:6:"сон";s:3:"249";s:6:"тай";s:3:"250";s:6:"удл";s:3:"251";s:6:"элт";s:3:"252";s:6:"эрг";s:3:"253";s:6:"єлє";s:3:"254";s:4:" vй";s:3:"255";s:4:" в ";s:3:"256";s:5:" гэ";s:3:"257";s:4:" хv";s:3:"258";s:6:"ара";s:3:"259";s:5:"бvр";s:3:"260";s:5:"д н";s:3:"261";s:5:"д о";s:3:"262";s:5:"л х";s:3:"263";s:5:"лс ";s:3:"264";s:6:"лты";s:3:"265";s:5:"н г";s:3:"266";s:6:"нэг";s:3:"267";s:6:"огт";s:3:"268";s:6:"олы";s:3:"269";s:6:"оёр";s:3:"270";s:5:"р т";s:3:"271";s:6:"рээ";s:3:"272";s:6:"тав";s:3:"273";s:6:"тог";s:3:"274";s:6:"уур";s:3:"275";s:6:"хоё";s:3:"276";s:6:"хэл";s:3:"277";s:6:"хээ";s:3:"278";s:6:"элэ";s:3:"279";s:5:"ёр ";s:3:"280";s:5:" ав";s:3:"281";s:5:" ас";s:3:"282";s:5:" аш";s:3:"283";s:5:" ду";s:3:"284";s:5:" со";s:3:"285";s:5:" чи";s:3:"286";s:5:" эв";s:3:"287";s:5:" єр";s:3:"288";s:6:"аал";s:3:"289";s:6:"алд";s:3:"290";s:6:"амж";s:3:"291";s:6:"анд";s:3:"292";s:6:"асу";s:3:"293";s:6:"вэр";s:3:"294";s:5:"г у";s:3:"295";s:6:"двэ";s:3:"296";s:4:"жvv";s:3:"297";s:6:"лца";s:3:"298";s:6:"лэл";s:3:"299";}s:6:"nepali";a:300:{s:7:"को ";s:1:"0";s:7:"का ";s:1:"1";s:7:"मा ";s:1:"2";s:9:"हरु";s:1:"3";s:7:" ने";s:1:"4";s:9:"नेप";s:1:"5";s:9:"पाल";s:1:"6";s:9:"ेपा";s:1:"7";s:7:" सम";s:1:"8";s:7:"ले ";s:1:"9";s:7:" प्";s:2:"10";s:9:"प्र";s:2:"11";s:9:"कार";s:2:"12";s:7:"ा स";s:2:"13";s:9:"एको";s:2:"14";s:7:" भए";s:2:"15";s:5:" छ ";s:2:"16";s:7:" भा";s:2:"17";s:9:"्रम";s:2:"18";s:7:" गर";s:2:"19";s:9:"रुक";s:2:"20";s:5:" र ";s:2:"21";s:9:"भार";s:2:"22";s:9:"ारत";s:2:"23";s:7:" का";s:2:"24";s:7:" वि";s:2:"25";s:9:"भएक";s:2:"26";s:9:"ाली";s:2:"27";s:7:"ली ";s:2:"28";s:7:"ा प";s:2:"29";s:9:"ीहर";s:2:"30";s:9:"ार्";s:2:"31";s:7:"ो छ";s:2:"32";s:7:"ना ";s:2:"33";s:7:"रु ";s:2:"34";s:9:"ालक";s:2:"35";s:9:"्या";s:2:"36";s:7:" बा";s:2:"37";s:9:"एका";s:2:"38";s:7:"ने ";s:2:"39";s:9:"न्त";s:2:"40";s:7:"ा ब";s:2:"41";s:9:"ाको";s:2:"42";s:7:"ार ";s:2:"43";s:7:"ा भ";s:2:"44";s:9:"ाहर";s:2:"45";s:9:"्रो";s:2:"46";s:9:"क्ष";s:2:"47";s:7:"न् ";s:2:"48";s:9:"ारी";s:2:"49";s:7:" नि";s:2:"50";s:7:"ा न";s:2:"51";s:7:"ी स";s:2:"52";s:7:" डु";s:2:"53";s:9:"क्र";s:2:"54";s:9:"जना";s:2:"55";s:7:"यो ";s:2:"56";s:7:"ा छ";s:2:"57";s:9:"ेवा";s:2:"58";s:9:"्ता";s:2:"59";s:7:" रा";s:2:"60";s:9:"त्य";s:2:"61";s:9:"न्द";s:2:"62";s:9:"हुन";s:2:"63";s:7:"ा क";s:2:"64";s:9:"ामा";s:2:"65";s:7:"ी न";s:2:"66";s:9:"्दा";s:2:"67";s:7:" से";s:2:"68";s:9:"छन्";s:2:"69";s:9:"म्ब";s:2:"70";s:9:"रोत";s:2:"71";s:9:"सेव";s:2:"72";s:9:"स्त";s:2:"73";s:9:"स्र";s:2:"74";s:9:"ेका";s:2:"75";s:7:"्त ";s:2:"76";s:7:" बी";s:2:"77";s:7:" हु";s:2:"78";s:9:"क्त";s:2:"79";s:9:"त्र";s:2:"80";s:7:"रत ";s:2:"81";s:9:"र्न";s:2:"82";s:9:"र्य";s:2:"83";s:7:"ा र";s:2:"84";s:9:"ाका";s:2:"85";s:9:"ुको";s:2:"86";s:7:" एक";s:2:"87";s:7:" सं";s:2:"88";s:7:" सु";s:2:"89";s:9:"बीब";s:2:"90";s:9:"बीस";s:2:"91";s:9:"लको";s:2:"92";s:9:"स्य";s:2:"93";s:9:"ीबी";s:2:"94";s:9:"ीसी";s:2:"95";s:9:"ेको";s:2:"96";s:7:"ो स";s:2:"97";s:9:"्यक";s:2:"98";s:7:" छन";s:2:"99";s:7:" जन";s:3:"100";s:7:" बि";s:3:"101";s:7:" मु";s:3:"102";s:7:" स्";s:3:"103";s:9:"गर्";s:3:"104";s:9:"ताह";s:3:"105";s:9:"न्ध";s:3:"106";s:9:"बार";s:3:"107";s:9:"मन्";s:3:"108";s:9:"मस्";s:3:"109";s:9:"रुल";s:3:"110";s:9:"लाई";s:3:"111";s:7:"ा व";s:3:"112";s:7:"ाई ";s:3:"113";s:7:"ाल ";s:3:"114";s:9:"िका";s:3:"115";s:7:" त्";s:3:"116";s:7:" मा";s:3:"117";s:7:" यस";s:3:"118";s:7:" रु";s:3:"119";s:9:"ताक";s:3:"120";s:9:"बन्";s:3:"121";s:7:"र ब";s:3:"122";s:7:"रण ";s:3:"123";s:9:"रुप";s:3:"124";s:9:"रेक";s:3:"125";s:9:"ष्ट";s:3:"126";s:9:"सम्";s:3:"127";s:7:"सी ";s:3:"128";s:9:"ाएक";s:3:"129";s:9:"ुका";s:3:"130";s:9:"ुक्";s:3:"131";s:7:" अध";s:3:"132";s:7:" अन";s:3:"133";s:7:" तथ";s:3:"134";s:7:" थि";s:3:"135";s:7:" दे";s:3:"136";s:7:" पर";s:3:"137";s:7:" बै";s:3:"138";s:9:"तथा";s:3:"139";s:7:"ता ";s:3:"140";s:7:"दा ";s:3:"141";s:9:"द्द";s:3:"142";s:7:"नी ";s:3:"143";s:9:"बाट";s:3:"144";s:9:"यक्";s:3:"145";s:7:"री ";s:3:"146";s:9:"रीह";s:3:"147";s:9:"र्म";s:3:"148";s:9:"लका";s:3:"149";s:9:"समस";s:3:"150";s:7:"ा अ";s:3:"151";s:7:"ा ए";s:3:"152";s:7:"ाट ";s:3:"153";s:7:"िय ";s:3:"154";s:7:"ो प";s:3:"155";s:7:"ो म";s:3:"156";s:7:"्न ";s:3:"157";s:9:"्ने";s:3:"158";s:9:"्षा";s:3:"159";s:7:" पा";s:3:"160";s:7:" यो";s:3:"161";s:7:" हा";s:3:"162";s:9:"अधि";s:3:"163";s:9:"डुव";s:3:"164";s:7:"त भ";s:3:"165";s:7:"त स";s:3:"166";s:7:"था ";s:3:"167";s:9:"धिक";s:3:"168";s:9:"पमा";s:3:"169";s:9:"बैठ";s:3:"170";s:9:"मुद";s:3:"171";s:7:"या ";s:3:"172";s:9:"युक";s:3:"173";s:7:"र न";s:3:"174";s:9:"रति";s:3:"175";s:9:"वान";s:3:"176";s:9:"सार";s:3:"177";s:7:"ा आ";s:3:"178";s:7:"ा ज";s:3:"179";s:7:"ा ह";s:3:"180";s:9:"ुद्";s:3:"181";s:9:"ुपम";s:3:"182";s:9:"ुले";s:3:"183";s:9:"ुवा";s:3:"184";s:9:"ैठक";s:3:"185";s:7:"ो ब";s:3:"186";s:9:"्तर";s:3:"187";s:7:"्य ";s:3:"188";s:9:"्यस";s:3:"189";s:7:" क्";s:3:"190";s:7:" मन";s:3:"191";s:7:" रह";s:3:"192";s:9:"चार";s:3:"193";s:9:"तिय";s:3:"194";s:7:"दै ";s:3:"195";s:9:"निर";s:3:"196";s:7:"नु ";s:3:"197";s:9:"पर्";s:3:"198";s:9:"रक्";s:3:"199";s:9:"र्द";s:3:"200";s:9:"समा";s:3:"201";s:9:"सुर";s:3:"202";s:9:"ाउन";s:3:"203";s:7:"ान ";s:3:"204";s:9:"ानम";s:3:"205";s:9:"ारण";s:3:"206";s:9:"ाले";s:3:"207";s:7:"ि ब";s:3:"208";s:9:"ियो";s:3:"209";s:9:"ुन्";s:3:"210";s:9:"ुरक";s:3:"211";s:9:"्त्";s:3:"212";s:9:"्बन";s:3:"213";s:9:"्रा";s:3:"214";s:7:"्ष ";s:3:"215";s:7:" आर";s:3:"216";s:7:" जल";s:3:"217";s:7:" बे";s:3:"218";s:7:" या";s:3:"219";s:7:" सा";s:3:"220";s:9:"आएक";s:3:"221";s:7:"एक ";s:3:"222";s:9:"कर्";s:3:"223";s:9:"जलस";s:3:"224";s:9:"णका";s:3:"225";s:7:"त र";s:3:"226";s:9:"द्र";s:3:"227";s:9:"धान";s:3:"228";s:7:"धि ";s:3:"229";s:9:"नका";s:3:"230";s:9:"नमा";s:3:"231";s:7:"नि ";s:3:"232";s:9:"ममा";s:3:"233";s:7:"रम ";s:3:"234";s:9:"रहे";s:3:"235";s:9:"राज";s:3:"236";s:9:"लस्";s:3:"237";s:7:"ला ";s:3:"238";s:9:"वार";s:3:"239";s:9:"सका";s:3:"240";s:9:"हिल";s:3:"241";s:9:"हेक";s:3:"242";s:7:"ा त";s:3:"243";s:9:"ारे";s:3:"244";s:9:"िन्";s:3:"245";s:9:"िस्";s:3:"246";s:7:"े स";s:3:"247";s:7:"ो न";s:3:"248";s:7:"ो र";s:3:"249";s:7:"ोत ";s:3:"250";s:9:"्धि";s:3:"251";s:9:"्मी";s:3:"252";s:9:"्रस";s:3:"253";s:7:" दु";s:3:"254";s:7:" पन";s:3:"255";s:7:" बत";s:3:"256";s:7:" बन";s:3:"257";s:7:" भन";s:3:"258";s:9:"ंयु";s:3:"259";s:9:"आरम";s:3:"260";s:7:"खि ";s:3:"261";s:9:"ण्ड";s:3:"262";s:9:"तका";s:3:"263";s:9:"ताल";s:3:"264";s:7:"दी ";s:3:"265";s:9:"देख";s:3:"266";s:9:"निय";s:3:"267";s:9:"पनि";s:3:"268";s:9:"प्त";s:3:"269";s:9:"बता";s:3:"270";s:7:"मी ";s:3:"271";s:9:"म्भ";s:3:"272";s:7:"र स";s:3:"273";s:9:"रम्";s:3:"274";s:9:"लमा";s:3:"275";s:9:"विश";s:3:"276";s:9:"षाक";s:3:"277";s:9:"संय";s:3:"278";s:7:"ा ड";s:3:"279";s:7:"ा म";s:3:"280";s:9:"ानक";s:3:"281";s:9:"ालम";s:3:"282";s:7:"ि भ";s:3:"283";s:7:"ित ";s:3:"284";s:7:"ी प";s:3:"285";s:7:"ी र";s:3:"286";s:7:"ु भ";s:3:"287";s:9:"ुने";s:3:"288";s:7:"े ग";s:3:"289";s:9:"ेखि";s:3:"290";s:7:"ेर ";s:3:"291";s:7:"ो भ";s:3:"292";s:7:"ो व";s:3:"293";s:7:"ो ह";s:3:"294";s:7:"्भ ";s:3:"295";s:7:"्र ";s:3:"296";s:7:" ता";s:3:"297";s:7:" नम";s:3:"298";s:7:" ना";s:3:"299";}s:9:"norwegian";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:"et ";s:1:"2";s:3:" de";s:1:"3";s:3:"det";s:1:"4";s:3:" i ";s:1:"5";s:3:"for";s:1:"6";s:3:"il ";s:1:"7";s:3:" fo";s:1:"8";s:3:" me";s:1:"9";s:3:"ing";s:2:"10";s:3:"om ";s:2:"11";s:3:" ha";s:2:"12";s:3:" og";s:2:"13";s:3:"ter";s:2:"14";s:3:" er";s:2:"15";s:3:" ti";s:2:"16";s:3:" st";s:2:"17";s:3:"og ";s:2:"18";s:3:"til";s:2:"19";s:3:"ne ";s:2:"20";s:3:" vi";s:2:"21";s:3:"re ";s:2:"22";s:3:" en";s:2:"23";s:3:" se";s:2:"24";s:3:"te ";s:2:"25";s:3:"or ";s:2:"26";s:3:"de ";s:2:"27";s:3:"kke";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ar ";s:2:"30";s:3:"ng ";s:2:"31";s:3:"r s";s:2:"32";s:3:"ene";s:2:"33";s:3:" so";s:2:"34";s:3:"e s";s:2:"35";s:3:"der";s:2:"36";s:3:"an ";s:2:"37";s:3:"som";s:2:"38";s:3:"ste";s:2:"39";s:3:"at ";s:2:"40";s:3:"ed ";s:2:"41";s:3:"r i";s:2:"42";s:3:" av";s:2:"43";s:3:" in";s:2:"44";s:3:"men";s:2:"45";s:3:" at";s:2:"46";s:3:" ko";s:2:"47";s:4:" på";s:2:"48";s:3:"har";s:2:"49";s:3:" si";s:2:"50";s:3:"ere";s:2:"51";s:4:"på ";s:2:"52";s:3:"nde";s:2:"53";s:3:"and";s:2:"54";s:3:"els";s:2:"55";s:3:"ett";s:2:"56";s:3:"tte";s:2:"57";s:3:"lig";s:2:"58";s:3:"t s";s:2:"59";s:3:"den";s:2:"60";s:3:"t i";s:2:"61";s:3:"ikk";s:2:"62";s:3:"med";s:2:"63";s:3:"n s";s:2:"64";s:3:"rt ";s:2:"65";s:3:"ser";s:2:"66";s:3:"ska";s:2:"67";s:3:"t e";s:2:"68";s:3:"ker";s:2:"69";s:3:"sen";s:2:"70";s:3:"av ";s:2:"71";s:3:"ler";s:2:"72";s:3:"r a";s:2:"73";s:3:"ten";s:2:"74";s:3:"e f";s:2:"75";s:3:"r e";s:2:"76";s:3:"r t";s:2:"77";s:3:"ede";s:2:"78";s:3:"ig ";s:2:"79";s:3:" re";s:2:"80";s:3:"han";s:2:"81";s:3:"lle";s:2:"82";s:3:"ner";s:2:"83";s:3:" bl";s:2:"84";s:3:" fr";s:2:"85";s:3:"le ";s:2:"86";s:3:" ve";s:2:"87";s:3:"e t";s:2:"88";s:3:"lan";s:2:"89";s:3:"mme";s:2:"90";s:3:"nge";s:2:"91";s:3:" be";s:2:"92";s:3:" ik";s:2:"93";s:3:" om";s:2:"94";s:4:" å ";s:2:"95";s:3:"ell";s:2:"96";s:3:"sel";s:2:"97";s:3:"sta";s:2:"98";s:3:"ver";s:2:"99";s:3:" et";s:3:"100";s:3:" sk";s:3:"101";s:3:"nte";s:3:"102";s:3:"one";s:3:"103";s:3:"ore";s:3:"104";s:3:"r d";s:3:"105";s:3:"ske";s:3:"106";s:3:" an";s:3:"107";s:3:" la";s:3:"108";s:3:"del";s:3:"109";s:3:"gen";s:3:"110";s:3:"nin";s:3:"111";s:3:"r f";s:3:"112";s:3:"r v";s:3:"113";s:3:"se ";s:3:"114";s:3:" po";s:3:"115";s:3:"ir ";s:3:"116";s:3:"jon";s:3:"117";s:3:"mer";s:3:"118";s:3:"nen";s:3:"119";s:3:"omm";s:3:"120";s:3:"sjo";s:3:"121";s:3:" fl";s:3:"122";s:3:" sa";s:3:"123";s:3:"ern";s:3:"124";s:3:"kom";s:3:"125";s:3:"r m";s:3:"126";s:3:"r o";s:3:"127";s:3:"ren";s:3:"128";s:3:"vil";s:3:"129";s:3:"ale";s:3:"130";s:3:"es ";s:3:"131";s:3:"n a";s:3:"132";s:3:"t f";s:3:"133";s:3:" le";s:3:"134";s:3:"bli";s:3:"135";s:3:"e e";s:3:"136";s:3:"e i";s:3:"137";s:3:"e v";s:3:"138";s:3:"het";s:3:"139";s:3:"ye ";s:3:"140";s:3:" ir";s:3:"141";s:3:"al ";s:3:"142";s:3:"e o";s:3:"143";s:3:"ide";s:3:"144";s:3:"iti";s:3:"145";s:3:"lit";s:3:"146";s:3:"nne";s:3:"147";s:3:"ran";s:3:"148";s:3:"t o";s:3:"149";s:3:"tal";s:3:"150";s:3:"tat";s:3:"151";s:3:"tt ";s:3:"152";s:3:" ka";s:3:"153";s:3:"ans";s:3:"154";s:3:"asj";s:3:"155";s:3:"ge ";s:3:"156";s:3:"inn";s:3:"157";s:3:"kon";s:3:"158";s:3:"lse";s:3:"159";s:3:"pet";s:3:"160";s:3:"t d";s:3:"161";s:3:"vi ";s:3:"162";s:3:" ut";s:3:"163";s:3:"ent";s:3:"164";s:3:"eri";s:3:"165";s:3:"oli";s:3:"166";s:3:"r p";s:3:"167";s:3:"ret";s:3:"168";s:3:"ris";s:3:"169";s:3:"sto";s:3:"170";s:3:"str";s:3:"171";s:3:"t a";s:3:"172";s:3:" ga";s:3:"173";s:3:"all";s:3:"174";s:3:"ape";s:3:"175";s:3:"g s";s:3:"176";s:3:"ill";s:3:"177";s:3:"ira";s:3:"178";s:3:"kap";s:3:"179";s:3:"nn ";s:3:"180";s:3:"opp";s:3:"181";s:3:"r h";s:3:"182";s:3:"rin";s:3:"183";s:3:" br";s:3:"184";s:3:" op";s:3:"185";s:3:"e m";s:3:"186";s:3:"ert";s:3:"187";s:3:"ger";s:3:"188";s:3:"ion";s:3:"189";s:3:"kal";s:3:"190";s:3:"lsk";s:3:"191";s:3:"nes";s:3:"192";s:3:" gj";s:3:"193";s:3:" mi";s:3:"194";s:3:" pr";s:3:"195";s:3:"ang";s:3:"196";s:3:"e h";s:3:"197";s:3:"e r";s:3:"198";s:3:"elt";s:3:"199";s:3:"enn";s:3:"200";s:3:"i s";s:3:"201";s:3:"ist";s:3:"202";s:3:"jen";s:3:"203";s:3:"kan";s:3:"204";s:3:"lt ";s:3:"205";s:3:"nal";s:3:"206";s:3:"res";s:3:"207";s:3:"tor";s:3:"208";s:3:"ass";s:3:"209";s:3:"dre";s:3:"210";s:3:"e b";s:3:"211";s:3:"e p";s:3:"212";s:3:"mel";s:3:"213";s:3:"n t";s:3:"214";s:3:"nse";s:3:"215";s:3:"ort";s:3:"216";s:3:"per";s:3:"217";s:3:"reg";s:3:"218";s:3:"sje";s:3:"219";s:3:"t p";s:3:"220";s:3:"t v";s:3:"221";s:3:" hv";s:3:"222";s:4:" nå";s:3:"223";s:3:" va";s:3:"224";s:3:"ann";s:3:"225";s:3:"ato";s:3:"226";s:3:"e a";s:3:"227";s:3:"est";s:3:"228";s:3:"ise";s:3:"229";s:3:"isk";s:3:"230";s:3:"oil";s:3:"231";s:3:"ord";s:3:"232";s:3:"pol";s:3:"233";s:3:"ra ";s:3:"234";s:3:"rak";s:3:"235";s:3:"sse";s:3:"236";s:3:"toi";s:3:"237";s:3:" gr";s:3:"238";s:3:"ak ";s:3:"239";s:3:"eg ";s:3:"240";s:3:"ele";s:3:"241";s:3:"g a";s:3:"242";s:3:"ige";s:3:"243";s:3:"igh";s:3:"244";s:3:"m e";s:3:"245";s:3:"n f";s:3:"246";s:3:"n v";s:3:"247";s:3:"ndr";s:3:"248";s:3:"nsk";s:3:"249";s:3:"rer";s:3:"250";s:3:"t m";s:3:"251";s:3:"und";s:3:"252";s:3:"var";s:3:"253";s:4:"år ";s:3:"254";s:3:" he";s:3:"255";s:3:" no";s:3:"256";s:3:" ny";s:3:"257";s:3:"end";s:3:"258";s:3:"ete";s:3:"259";s:3:"fly";s:3:"260";s:3:"g i";s:3:"261";s:3:"ghe";s:3:"262";s:3:"ier";s:3:"263";s:3:"ind";s:3:"264";s:3:"int";s:3:"265";s:3:"lin";s:3:"266";s:3:"n d";s:3:"267";s:3:"n p";s:3:"268";s:3:"rne";s:3:"269";s:3:"sak";s:3:"270";s:3:"sie";s:3:"271";s:3:"t b";s:3:"272";s:3:"tid";s:3:"273";s:3:" al";s:3:"274";s:3:" pa";s:3:"275";s:3:" tr";s:3:"276";s:3:"ag ";s:3:"277";s:3:"dig";s:3:"278";s:3:"e d";s:3:"279";s:3:"e k";s:3:"280";s:3:"ess";s:3:"281";s:3:"hol";s:3:"282";s:3:"i d";s:3:"283";s:3:"lag";s:3:"284";s:3:"led";s:3:"285";s:3:"n e";s:3:"286";s:3:"n i";s:3:"287";s:3:"n o";s:3:"288";s:3:"pri";s:3:"289";s:3:"r b";s:3:"290";s:3:"st ";s:3:"291";s:3:" fe";s:3:"292";s:3:" li";s:3:"293";s:3:" ry";s:3:"294";s:3:"air";s:3:"295";s:3:"ake";s:3:"296";s:3:"d s";s:3:"297";s:3:"eas";s:3:"298";s:3:"egi";s:3:"299";}s:6:"pashto";a:300:{s:4:" د ";s:1:"0";s:5:"اؤ ";s:1:"1";s:5:" اؤ";s:1:"2";s:5:"نو ";s:1:"3";s:5:"ې د";s:1:"4";s:5:"ره ";s:1:"5";s:5:" په";s:1:"6";s:5:"نه ";s:1:"7";s:5:"چې ";s:1:"8";s:5:" چې";s:1:"9";s:5:"په ";s:2:"10";s:5:"ه د";s:2:"11";s:5:"ته ";s:2:"12";s:5:"و ا";s:2:"13";s:6:"ونو";s:2:"14";s:5:"و د";s:2:"15";s:5:" او";s:2:"16";s:6:"انو";s:2:"17";s:6:"ونه";s:2:"18";s:5:"ه ک";s:2:"19";s:5:" دا";s:2:"20";s:5:"ه ا";s:2:"21";s:5:"دې ";s:2:"22";s:5:"ښې ";s:2:"23";s:5:" کې";s:2:"24";s:5:"ان ";s:2:"25";s:5:"لو ";s:2:"26";s:5:"هم ";s:2:"27";s:5:"و م";s:2:"28";s:6:"کښې";s:2:"29";s:5:"ه م";s:2:"30";s:5:"ى ا";s:2:"31";s:5:" نو";s:2:"32";s:5:" ته";s:2:"33";s:5:" کښ";s:2:"34";s:6:"رون";s:2:"35";s:5:"کې ";s:2:"36";s:5:"ده ";s:2:"37";s:5:"له ";s:2:"38";s:5:"به ";s:2:"39";s:5:"رو ";s:2:"40";s:5:" هم";s:2:"41";s:5:"ه و";s:2:"42";s:5:"وى ";s:2:"43";s:5:"او ";s:2:"44";s:6:"تون";s:2:"45";s:5:"دا ";s:2:"46";s:5:" کو";s:2:"47";s:5:" کړ";s:2:"48";s:6:"قام";s:2:"49";s:5:" تر";s:2:"50";s:6:"ران";s:2:"51";s:5:"ه پ";s:2:"52";s:5:"ې و";s:2:"53";s:5:"ې پ";s:2:"54";s:5:" به";s:2:"55";s:5:" خو";s:2:"56";s:5:"تو ";s:2:"57";s:5:"د د";s:2:"58";s:5:"د ا";s:2:"59";s:5:"ه ت";s:2:"60";s:5:"و پ";s:2:"61";s:5:"يا ";s:2:"62";s:5:" خپ";s:2:"63";s:5:" دو";s:2:"64";s:5:" را";s:2:"65";s:5:" مش";s:2:"66";s:5:" پر";s:2:"67";s:6:"ارو";s:2:"68";s:5:"رې ";s:2:"69";s:5:"م د";s:2:"70";s:6:"مشر";s:2:"71";s:5:" شو";s:2:"72";s:5:" ور";s:2:"73";s:5:"ار ";s:2:"74";s:5:"دى ";s:2:"75";s:5:" اد";s:2:"76";s:5:" دى";s:2:"77";s:5:" مو";s:2:"78";s:5:"د پ";s:2:"79";s:5:"لي ";s:2:"80";s:5:"و ک";s:2:"81";s:5:" مق";s:2:"82";s:5:" يو";s:2:"83";s:5:"ؤ د";s:2:"84";s:6:"خپل";s:2:"85";s:6:"سره";s:2:"86";s:5:"ه چ";s:2:"87";s:5:"ور ";s:2:"88";s:5:" تا";s:2:"89";s:5:" دې";s:2:"90";s:5:" رو";s:2:"91";s:5:" سر";s:2:"92";s:5:" مل";s:2:"93";s:5:" کا";s:2:"94";s:5:"ؤ ا";s:2:"95";s:6:"اره";s:2:"96";s:6:"برو";s:2:"97";s:5:"مه ";s:2:"98";s:5:"ه ب";s:2:"99";s:5:"و ت";s:3:"100";s:6:"پښت";s:3:"101";s:5:" با";s:3:"102";s:5:" دغ";s:3:"103";s:5:" قب";s:3:"104";s:5:" له";s:3:"105";s:5:" وا";s:3:"106";s:5:" پا";s:3:"107";s:5:" پښ";s:3:"108";s:5:"د م";s:3:"109";s:5:"د ه";s:3:"110";s:5:"لې ";s:3:"111";s:6:"مات";s:3:"112";s:5:"مو ";s:3:"113";s:5:"ه ه";s:3:"114";s:5:"وي ";s:3:"115";s:5:"ې ب";s:3:"116";s:5:"ې ک";s:3:"117";s:5:" ده";s:3:"118";s:5:" قا";s:3:"119";s:5:"ال ";s:3:"120";s:6:"اما";s:3:"121";s:5:"د ن";s:3:"122";s:6:"قبر";s:3:"123";s:5:"ه ن";s:3:"124";s:6:"پار";s:3:"125";s:5:" اث";s:3:"126";s:5:" بي";s:3:"127";s:5:" لا";s:3:"128";s:5:" لر";s:3:"129";s:6:"اثا";s:3:"130";s:5:"د خ";s:3:"131";s:6:"دار";s:3:"132";s:6:"ريخ";s:3:"133";s:6:"شرا";s:3:"134";s:6:"مقا";s:3:"135";s:5:"نۍ ";s:3:"136";s:5:"ه ر";s:3:"137";s:5:"ه ل";s:3:"138";s:6:"ولو";s:3:"139";s:5:"يو ";s:3:"140";s:6:"کوم";s:3:"141";s:5:" دد";s:3:"142";s:5:" لو";s:3:"143";s:5:" مح";s:3:"144";s:5:" مر";s:3:"145";s:5:" وو";s:3:"146";s:6:"اتو";s:3:"147";s:6:"اري";s:3:"148";s:6:"الو";s:3:"149";s:6:"اند";s:3:"150";s:6:"خان";s:3:"151";s:5:"د ت";s:3:"152";s:5:"سې ";s:3:"153";s:5:"لى ";s:3:"154";s:6:"نور";s:3:"155";s:5:"و ل";s:3:"156";s:5:"ي چ";s:3:"157";s:5:"ړي ";s:3:"158";s:6:"ښتو";s:3:"159";s:5:"ې ل";s:3:"160";s:5:" جو";s:3:"161";s:5:" سي";s:3:"162";s:5:"ام ";s:3:"163";s:6:"بان";s:3:"164";s:6:"تار";s:3:"165";s:5:"تر ";s:3:"166";s:6:"ثار";s:3:"167";s:5:"خو ";s:3:"168";s:5:"دو ";s:3:"169";s:5:"ر ک";s:3:"170";s:5:"ل د";s:3:"171";s:6:"مون";s:3:"172";s:6:"ندې";s:3:"173";s:5:"و ن";s:3:"174";s:5:"ول ";s:3:"175";s:5:"وه ";s:3:"176";s:5:"ى و";s:3:"177";s:5:"ي د";s:3:"178";s:5:"ې ا";s:3:"179";s:5:"ې ت";s:3:"180";s:5:"ې ي";s:3:"181";s:5:" حک";s:3:"182";s:5:" خب";s:3:"183";s:5:" نه";s:3:"184";s:5:" پو";s:3:"185";s:5:"ا د";s:3:"186";s:5:"تې ";s:3:"187";s:6:"جوړ";s:3:"188";s:6:"حکم";s:3:"189";s:6:"حکو";s:3:"190";s:6:"خبر";s:3:"191";s:6:"دان";s:3:"192";s:5:"ر د";s:3:"193";s:5:"غه ";s:3:"194";s:6:"قاف";s:3:"195";s:6:"محک";s:3:"196";s:6:"وال";s:3:"197";s:6:"ومت";s:3:"198";s:6:"ويل";s:3:"199";s:5:"ى د";s:3:"200";s:5:"ى م";s:3:"201";s:6:"يره";s:3:"202";s:5:"پر ";s:3:"203";s:6:"کول";s:3:"204";s:5:"ې ه";s:3:"205";s:5:" تي";s:3:"206";s:5:" خا";s:3:"207";s:5:" وک";s:3:"208";s:5:" يا";s:3:"209";s:5:" ځا";s:3:"210";s:5:"ؤ ق";s:3:"211";s:6:"انۍ";s:3:"212";s:5:"بى ";s:3:"213";s:5:"غو ";s:3:"214";s:5:"ه خ";s:3:"215";s:5:"و ب";s:3:"216";s:6:"ودا";s:3:"217";s:6:"يدو";s:3:"218";s:5:"ړې ";s:3:"219";s:6:"کال";s:3:"220";s:5:" بر";s:3:"221";s:5:" قد";s:3:"222";s:5:" مي";s:3:"223";s:5:" وي";s:3:"224";s:5:" کر";s:3:"225";s:5:"ؤ م";s:3:"226";s:5:"ات ";s:3:"227";s:6:"ايي";s:3:"228";s:5:"تى ";s:3:"229";s:6:"تيا";s:3:"230";s:6:"تير";s:3:"231";s:6:"خوا";s:3:"232";s:6:"دغو";s:3:"233";s:5:"دم ";s:3:"234";s:6:"ديم";s:3:"235";s:5:"ر و";s:3:"236";s:6:"قدي";s:3:"237";s:5:"م خ";s:3:"238";s:6:"مان";s:3:"239";s:5:"مې ";s:3:"240";s:6:"نيو";s:3:"241";s:5:"نږ ";s:3:"242";s:5:"ه ي";s:3:"243";s:5:"و س";s:3:"244";s:5:"و چ";s:3:"245";s:6:"وان";s:3:"246";s:6:"ورو";s:3:"247";s:6:"ونږ";s:3:"248";s:6:"پور";s:3:"249";s:5:"ړه ";s:3:"250";s:5:"ړو ";s:3:"251";s:5:"ۍ د";s:3:"252";s:5:"ې ن";s:3:"253";s:5:" اه";s:3:"254";s:5:" زي";s:3:"255";s:5:" سو";s:3:"256";s:5:" شي";s:3:"257";s:5:" هر";s:3:"258";s:5:" هغ";s:3:"259";s:5:" ښا";s:3:"260";s:6:"اتل";s:3:"261";s:5:"اق ";s:3:"262";s:6:"اني";s:3:"263";s:6:"بري";s:3:"264";s:5:"بې ";s:3:"265";s:5:"ت ا";s:3:"266";s:5:"د ب";s:3:"267";s:5:"د س";s:3:"268";s:5:"ر م";s:3:"269";s:5:"رى ";s:3:"270";s:6:"عرا";s:3:"271";s:6:"لان";s:3:"272";s:5:"مى ";s:3:"273";s:5:"نى ";s:3:"274";s:5:"و خ";s:3:"275";s:5:"وئ ";s:3:"276";s:6:"ورک";s:3:"277";s:6:"ورې";s:3:"278";s:5:"ون ";s:3:"279";s:6:"وکړ";s:3:"280";s:5:"ى چ";s:3:"281";s:6:"يمه";s:3:"282";s:5:"يې ";s:3:"283";s:6:"ښتن";s:3:"284";s:5:"که ";s:3:"285";s:6:"کړي";s:3:"286";s:5:"ې خ";s:3:"287";s:5:"ے ش";s:3:"288";s:5:" تح";s:3:"289";s:5:" تو";s:3:"290";s:5:" در";s:3:"291";s:5:" دپ";s:3:"292";s:5:" صو";s:3:"293";s:5:" عر";s:3:"294";s:5:" ول";s:3:"295";s:5:" يؤ";s:3:"296";s:5:" پۀ";s:3:"297";s:5:" څو";s:3:"298";s:5:"ا ا";s:3:"299";}s:6:"pidgin";a:300:{s:3:" de";s:1:"0";s:3:" we";s:1:"1";s:3:" di";s:1:"2";s:3:"di ";s:1:"3";s:3:"dem";s:1:"4";s:3:"em ";s:1:"5";s:3:"ay ";s:1:"6";s:3:" sa";s:1:"7";s:3:"or ";s:1:"8";s:3:"say";s:1:"9";s:3:"ke ";s:2:"10";s:3:"ey ";s:2:"11";s:3:" an";s:2:"12";s:3:" go";s:2:"13";s:3:" e ";s:2:"14";s:3:" to";s:2:"15";s:3:" ma";s:2:"16";s:3:"e d";s:2:"17";s:3:"wey";s:2:"18";s:3:"for";s:2:"19";s:3:"nd ";s:2:"20";s:3:"to ";s:2:"21";s:3:" be";s:2:"22";s:3:" fo";s:2:"23";s:3:"ake";s:2:"24";s:3:"im ";s:2:"25";s:3:" pe";s:2:"26";s:3:"le ";s:2:"27";s:3:"go ";s:2:"28";s:3:"ll ";s:2:"29";s:3:"de ";s:2:"30";s:3:"e s";s:2:"31";s:3:"on ";s:2:"32";s:3:"get";s:2:"33";s:3:"ght";s:2:"34";s:3:"igh";s:2:"35";s:3:" ri";s:2:"36";s:3:"et ";s:2:"37";s:3:"rig";s:2:"38";s:3:" ge";s:2:"39";s:3:"y d";s:2:"40";s:3:" na";s:2:"41";s:3:"mak";s:2:"42";s:3:"t t";s:2:"43";s:3:" no";s:2:"44";s:3:"and";s:2:"45";s:3:"tin";s:2:"46";s:3:"ing";s:2:"47";s:3:"eve";s:2:"48";s:3:"ri ";s:2:"49";s:3:" im";s:2:"50";s:3:" am";s:2:"51";s:3:" or";s:2:"52";s:3:"am ";s:2:"53";s:3:"be ";s:2:"54";s:3:" ev";s:2:"55";s:3:" ta";s:2:"56";s:3:"ht ";s:2:"57";s:3:"e w";s:2:"58";s:3:" li";s:2:"59";s:3:"eri";s:2:"60";s:3:"ng ";s:2:"61";s:3:"ver";s:2:"62";s:3:"all";s:2:"63";s:3:"e f";s:2:"64";s:3:"ers";s:2:"65";s:3:"ntr";s:2:"66";s:3:"ont";s:2:"67";s:3:" do";s:2:"68";s:3:"r d";s:2:"69";s:3:" ko";s:2:"70";s:3:" ti";s:2:"71";s:3:"an ";s:2:"72";s:3:"kon";s:2:"73";s:3:"per";s:2:"74";s:3:"tri";s:2:"75";s:3:"y e";s:2:"76";s:3:"rso";s:2:"77";s:3:"son";s:2:"78";s:3:"no ";s:2:"79";s:3:"ome";s:2:"80";s:3:"is ";s:2:"81";s:3:"do ";s:2:"82";s:3:"ne ";s:2:"83";s:3:"one";s:2:"84";s:3:"ion";s:2:"85";s:3:"m g";s:2:"86";s:3:"i k";s:2:"87";s:3:" al";s:2:"88";s:3:"bod";s:2:"89";s:3:"i w";s:2:"90";s:3:"odi";s:2:"91";s:3:" so";s:2:"92";s:3:" wo";s:2:"93";s:3:"o d";s:2:"94";s:3:"st ";s:2:"95";s:3:"t r";s:2:"96";s:3:" of";s:2:"97";s:3:"aim";s:2:"98";s:3:"e g";s:2:"99";s:3:"nai";s:3:"100";s:3:" co";s:3:"101";s:3:"dis";s:3:"102";s:3:"me ";s:3:"103";s:3:"of ";s:3:"104";s:3:" wa";s:3:"105";s:3:"e t";s:3:"106";s:3:" ar";s:3:"107";s:3:"e l";s:3:"108";s:3:"ike";s:3:"109";s:3:"lik";s:3:"110";s:3:"t a";s:3:"111";s:3:"wor";s:3:"112";s:3:"alk";s:3:"113";s:3:"ell";s:3:"114";s:3:"eop";s:3:"115";s:3:"lk ";s:3:"116";s:3:"opl";s:3:"117";s:3:"peo";s:3:"118";s:3:"ple";s:3:"119";s:3:"re ";s:3:"120";s:3:"tal";s:3:"121";s:3:"any";s:3:"122";s:3:"e a";s:3:"123";s:3:"o g";s:3:"124";s:3:"art";s:3:"125";s:3:"cle";s:3:"126";s:3:"i p";s:3:"127";s:3:"icl";s:3:"128";s:3:"rti";s:3:"129";s:3:"the";s:3:"130";s:3:"tic";s:3:"131";s:3:"we ";s:3:"132";s:3:"f d";s:3:"133";s:3:"in ";s:3:"134";s:3:" mu";s:3:"135";s:3:"e n";s:3:"136";s:3:"e o";s:3:"137";s:3:"mus";s:3:"138";s:3:"n d";s:3:"139";s:3:"na ";s:3:"140";s:3:"o m";s:3:"141";s:3:"ust";s:3:"142";s:3:"wel";s:3:"143";s:3:"e e";s:3:"144";s:3:"her";s:3:"145";s:3:"m d";s:3:"146";s:3:"nt ";s:3:"147";s:3:" fi";s:3:"148";s:3:"at ";s:3:"149";s:3:"e b";s:3:"150";s:3:"it ";s:3:"151";s:3:"m w";s:3:"152";s:3:"o t";s:3:"153";s:3:"wan";s:3:"154";s:3:"com";s:3:"155";s:3:"da ";s:3:"156";s:3:"fit";s:3:"157";s:3:"m b";s:3:"158";s:3:"so ";s:3:"159";s:3:" fr";s:3:"160";s:3:"ce ";s:3:"161";s:3:"er ";s:3:"162";s:3:"o a";s:3:"163";s:3:" if";s:3:"164";s:3:" on";s:3:"165";s:3:"ent";s:3:"166";s:3:"if ";s:3:"167";s:3:"ind";s:3:"168";s:3:"kin";s:3:"169";s:3:"l d";s:3:"170";s:3:"man";s:3:"171";s:3:"o s";s:3:"172";s:3:" se";s:3:"173";s:3:"y a";s:3:"174";s:3:"y m";s:3:"175";s:3:" re";s:3:"176";s:3:"ee ";s:3:"177";s:3:"k a";s:3:"178";s:3:"t s";s:3:"179";s:3:"ve ";s:3:"180";s:3:"y w";s:3:"181";s:3:" ki";s:3:"182";s:3:"eti";s:3:"183";s:3:"men";s:3:"184";s:3:"ta ";s:3:"185";s:3:"y n";s:3:"186";s:3:"d t";s:3:"187";s:3:"dey";s:3:"188";s:3:"e c";s:3:"189";s:3:"i o";s:3:"190";s:3:"ibo";s:3:"191";s:3:"ld ";s:3:"192";s:3:"m t";s:3:"193";s:3:"n b";s:3:"194";s:3:"o b";s:3:"195";s:3:"ow ";s:3:"196";s:3:"ree";s:3:"197";s:3:"rio";s:3:"198";s:3:"t d";s:3:"199";s:3:" hu";s:3:"200";s:3:" su";s:3:"201";s:3:"en ";s:3:"202";s:3:"hts";s:3:"203";s:3:"ive";s:3:"204";s:3:"m n";s:3:"205";s:3:"n g";s:3:"206";s:3:"ny ";s:3:"207";s:3:"oth";s:3:"208";s:3:"ts ";s:3:"209";s:3:" as";s:3:"210";s:3:" wh";s:3:"211";s:3:"as ";s:3:"212";s:3:"gom";s:3:"213";s:3:"hum";s:3:"214";s:3:"k s";s:3:"215";s:3:"oda";s:3:"216";s:3:"ork";s:3:"217";s:3:"se ";s:3:"218";s:3:"uma";s:3:"219";s:3:"ut ";s:3:"220";s:3:" ba";s:3:"221";s:3:" ot";s:3:"222";s:3:"ano";s:3:"223";s:3:"m a";s:3:"224";s:3:"m s";s:3:"225";s:3:"nod";s:3:"226";s:3:"om ";s:3:"227";s:3:"r a";s:3:"228";s:3:"r i";s:3:"229";s:3:"rk ";s:3:"230";s:3:" fa";s:3:"231";s:3:" si";s:3:"232";s:3:" th";s:3:"233";s:3:"ad ";s:3:"234";s:3:"e m";s:3:"235";s:3:"eac";s:3:"236";s:3:"m m";s:3:"237";s:3:"n w";s:3:"238";s:3:"nob";s:3:"239";s:3:"orl";s:3:"240";s:3:"out";s:3:"241";s:3:"own";s:3:"242";s:3:"r s";s:3:"243";s:3:"r w";s:3:"244";s:3:"rib";s:3:"245";s:3:"rld";s:3:"246";s:3:"s w";s:3:"247";s:3:"ure";s:3:"248";s:3:"wn ";s:3:"249";s:3:" ow";s:3:"250";s:3:"a d";s:3:"251";s:3:"bad";s:3:"252";s:3:"ch ";s:3:"253";s:3:"fre";s:3:"254";s:3:"gs ";s:3:"255";s:3:"m k";s:3:"256";s:3:"nce";s:3:"257";s:3:"ngs";s:3:"258";s:3:"o f";s:3:"259";s:3:"obo";s:3:"260";s:3:"rea";s:3:"261";s:3:"sur";s:3:"262";s:3:"y o";s:3:"263";s:3:" ab";s:3:"264";s:3:" un";s:3:"265";s:3:"abo";s:3:"266";s:3:"ach";s:3:"267";s:3:"bou";s:3:"268";s:3:"d m";s:3:"269";s:3:"dat";s:3:"270";s:3:"e p";s:3:"271";s:3:"g w";s:3:"272";s:3:"hol";s:3:"273";s:3:"i m";s:3:"274";s:3:"i r";s:3:"275";s:3:"m f";s:3:"276";s:3:"m o";s:3:"277";s:3:"n o";s:3:"278";s:3:"now";s:3:"279";s:3:"ry ";s:3:"280";s:3:"s a";s:3:"281";s:3:"t o";s:3:"282";s:3:"tay";s:3:"283";s:3:"wet";s:3:"284";s:3:" ag";s:3:"285";s:3:" bo";s:3:"286";s:3:" da";s:3:"287";s:3:" pr";s:3:"288";s:3:"arr";s:3:"289";s:3:"ati";s:3:"290";s:3:"d d";s:3:"291";s:3:"d p";s:3:"292";s:3:"i g";s:3:"293";s:3:"i t";s:3:"294";s:3:"liv";s:3:"295";s:3:"ly ";s:3:"296";s:3:"n a";s:3:"297";s:3:"od ";s:3:"298";s:3:"ok ";s:3:"299";}s:6:"polish";a:300:{s:3:"ie ";s:1:"0";s:3:"nie";s:1:"1";s:3:"em ";s:1:"2";s:3:" ni";s:1:"3";s:3:" po";s:1:"4";s:3:" pr";s:1:"5";s:3:"dzi";s:1:"6";s:3:" na";s:1:"7";s:4:"że ";s:1:"8";s:3:"rze";s:1:"9";s:3:"na ";s:2:"10";s:4:"łem";s:2:"11";s:3:"wie";s:2:"12";s:3:" w ";s:2:"13";s:4:" że";s:2:"14";s:3:"go ";s:2:"15";s:3:" by";s:2:"16";s:3:"prz";s:2:"17";s:3:"owa";s:2:"18";s:4:"ię ";s:2:"19";s:3:" do";s:2:"20";s:3:" si";s:2:"21";s:3:"owi";s:2:"22";s:3:" pa";s:2:"23";s:3:" za";s:2:"24";s:3:"ch ";s:2:"25";s:3:"ego";s:2:"26";s:4:"ał ";s:2:"27";s:4:"się";s:2:"28";s:3:"ej ";s:2:"29";s:4:"wał";s:2:"30";s:3:"ym ";s:2:"31";s:3:"ani";s:2:"32";s:4:"ałe";s:2:"33";s:3:"to ";s:2:"34";s:3:" i ";s:2:"35";s:3:" to";s:2:"36";s:3:" te";s:2:"37";s:3:"e p";s:2:"38";s:3:" je";s:2:"39";s:3:" z ";s:2:"40";s:3:"czy";s:2:"41";s:4:"był";s:2:"42";s:3:"pan";s:2:"43";s:3:"sta";s:2:"44";s:3:"kie";s:2:"45";s:3:" ja";s:2:"46";s:3:"do ";s:2:"47";s:3:" ch";s:2:"48";s:3:" cz";s:2:"49";s:3:" wi";s:2:"50";s:4:"iał";s:2:"51";s:3:"a p";s:2:"52";s:3:"pow";s:2:"53";s:3:" mi";s:2:"54";s:3:"li ";s:2:"55";s:3:"eni";s:2:"56";s:3:"zie";s:2:"57";s:3:" ta";s:2:"58";s:3:" wa";s:2:"59";s:4:"ło ";s:2:"60";s:4:"ać ";s:2:"61";s:3:"dy ";s:2:"62";s:3:"ak ";s:2:"63";s:3:"e w";s:2:"64";s:3:" a ";s:2:"65";s:3:" od";s:2:"66";s:3:" st";s:2:"67";s:3:"nia";s:2:"68";s:3:"rzy";s:2:"69";s:3:"ied";s:2:"70";s:3:" kt";s:2:"71";s:3:"odz";s:2:"72";s:3:"cie";s:2:"73";s:3:"cze";s:2:"74";s:3:"ia ";s:2:"75";s:3:"iel";s:2:"76";s:4:"któ";s:2:"77";s:3:"o p";s:2:"78";s:4:"tór";s:2:"79";s:4:"ści";s:2:"80";s:3:" sp";s:2:"81";s:3:" wy";s:2:"82";s:3:"jak";s:2:"83";s:3:"tak";s:2:"84";s:3:"zy ";s:2:"85";s:3:" mo";s:2:"86";s:5:"ałę";s:2:"87";s:3:"pro";s:2:"88";s:3:"ski";s:2:"89";s:3:"tem";s:2:"90";s:5:"łęs";s:2:"91";s:3:" tr";s:2:"92";s:3:"e m";s:2:"93";s:3:"jes";s:2:"94";s:3:"my ";s:2:"95";s:3:" ro";s:2:"96";s:3:"edz";s:2:"97";s:3:"eli";s:2:"98";s:3:"iej";s:2:"99";s:3:" rz";s:3:"100";s:3:"a n";s:3:"101";s:3:"ale";s:3:"102";s:3:"an ";s:3:"103";s:3:"e s";s:3:"104";s:3:"est";s:3:"105";s:3:"le ";s:3:"106";s:3:"o s";s:3:"107";s:3:"i p";s:3:"108";s:3:"ki ";s:3:"109";s:3:" co";s:3:"110";s:3:"ada";s:3:"111";s:3:"czn";s:3:"112";s:3:"e t";s:3:"113";s:3:"e z";s:3:"114";s:3:"ent";s:3:"115";s:3:"ny ";s:3:"116";s:3:"pre";s:3:"117";s:4:"rzą";s:3:"118";s:3:"y s";s:3:"119";s:3:" ko";s:3:"120";s:3:" o ";s:3:"121";s:3:"ach";s:3:"122";s:3:"am ";s:3:"123";s:3:"e n";s:3:"124";s:3:"o t";s:3:"125";s:3:"oli";s:3:"126";s:3:"pod";s:3:"127";s:3:"zia";s:3:"128";s:3:" go";s:3:"129";s:3:" ka";s:3:"130";s:3:"by ";s:3:"131";s:3:"ieg";s:3:"132";s:3:"ier";s:3:"133";s:4:"noś";s:3:"134";s:3:"roz";s:3:"135";s:3:"spo";s:3:"136";s:3:"ych";s:3:"137";s:4:"ząd";s:3:"138";s:3:" mn";s:3:"139";s:3:"acz";s:3:"140";s:3:"adz";s:3:"141";s:3:"bie";s:3:"142";s:3:"cho";s:3:"143";s:3:"mni";s:3:"144";s:3:"o n";s:3:"145";s:3:"ost";s:3:"146";s:3:"pra";s:3:"147";s:3:"ze ";s:3:"148";s:4:"ła ";s:3:"149";s:3:" so";s:3:"150";s:3:"a m";s:3:"151";s:3:"cza";s:3:"152";s:3:"iem";s:3:"153";s:4:"ić ";s:3:"154";s:3:"obi";s:3:"155";s:4:"ył ";s:3:"156";s:4:"yło";s:3:"157";s:3:" mu";s:3:"158";s:4:" mó";s:3:"159";s:3:"a t";s:3:"160";s:3:"acj";s:3:"161";s:3:"ci ";s:3:"162";s:3:"e b";s:3:"163";s:3:"ich";s:3:"164";s:3:"kan";s:3:"165";s:3:"mi ";s:3:"166";s:3:"mie";s:3:"167";s:4:"ośc";s:3:"168";s:3:"row";s:3:"169";s:3:"zen";s:3:"170";s:3:"zyd";s:3:"171";s:3:" al";s:3:"172";s:3:" re";s:3:"173";s:3:"a w";s:3:"174";s:3:"den";s:3:"175";s:3:"edy";s:3:"176";s:4:"ił ";s:3:"177";s:3:"ko ";s:3:"178";s:3:"o w";s:3:"179";s:3:"rac";s:3:"180";s:4:"śmy";s:3:"181";s:3:" ma";s:3:"182";s:3:" ra";s:3:"183";s:3:" sz";s:3:"184";s:3:" ty";s:3:"185";s:3:"e j";s:3:"186";s:3:"isk";s:3:"187";s:3:"ji ";s:3:"188";s:3:"ka ";s:3:"189";s:3:"m s";s:3:"190";s:3:"no ";s:3:"191";s:3:"o z";s:3:"192";s:3:"rez";s:3:"193";s:3:"wa ";s:3:"194";s:4:"ów ";s:3:"195";s:4:"łow";s:3:"196";s:5:"ść ";s:3:"197";s:3:" ob";s:3:"198";s:3:"ech";s:3:"199";s:3:"ecz";s:3:"200";s:3:"ezy";s:3:"201";s:3:"i w";s:3:"202";s:3:"ja ";s:3:"203";s:3:"kon";s:3:"204";s:4:"mów";s:3:"205";s:3:"ne ";s:3:"206";s:3:"ni ";s:3:"207";s:3:"now";s:3:"208";s:3:"nym";s:3:"209";s:3:"pol";s:3:"210";s:3:"pot";s:3:"211";s:3:"yde";s:3:"212";s:3:" dl";s:3:"213";s:3:" sy";s:3:"214";s:3:"a s";s:3:"215";s:3:"aki";s:3:"216";s:3:"ali";s:3:"217";s:3:"dla";s:3:"218";s:3:"icz";s:3:"219";s:3:"ku ";s:3:"220";s:3:"ocz";s:3:"221";s:3:"st ";s:3:"222";s:3:"str";s:3:"223";s:3:"szy";s:3:"224";s:3:"trz";s:3:"225";s:3:"wia";s:3:"226";s:3:"y p";s:3:"227";s:3:"za ";s:3:"228";s:3:" wt";s:3:"229";s:3:"chc";s:3:"230";s:3:"esz";s:3:"231";s:3:"iec";s:3:"232";s:3:"im ";s:3:"233";s:3:"la ";s:3:"234";s:3:"o m";s:3:"235";s:3:"sa ";s:3:"236";s:4:"wać";s:3:"237";s:3:"y n";s:3:"238";s:3:"zac";s:3:"239";s:3:"zec";s:3:"240";s:3:" gd";s:3:"241";s:3:"a z";s:3:"242";s:3:"ard";s:3:"243";s:3:"co ";s:3:"244";s:3:"dar";s:3:"245";s:3:"e r";s:3:"246";s:3:"ien";s:3:"247";s:3:"m n";s:3:"248";s:3:"m w";s:3:"249";s:3:"mia";s:3:"250";s:4:"moż";s:3:"251";s:3:"raw";s:3:"252";s:3:"rdz";s:3:"253";s:3:"tan";s:3:"254";s:3:"ted";s:3:"255";s:3:"teg";s:3:"256";s:4:"wił";s:3:"257";s:3:"wte";s:3:"258";s:3:"y z";s:3:"259";s:3:"zna";s:3:"260";s:4:"zło";s:3:"261";s:3:"a r";s:3:"262";s:3:"awi";s:3:"263";s:3:"bar";s:3:"264";s:3:"cji";s:3:"265";s:4:"czą";s:3:"266";s:3:"dow";s:3:"267";s:4:"eż ";s:3:"268";s:3:"gdy";s:3:"269";s:3:"iek";s:3:"270";s:3:"je ";s:3:"271";s:3:"o d";s:3:"272";s:4:"tał";s:3:"273";s:3:"wal";s:3:"274";s:3:"wsz";s:3:"275";s:3:"zed";s:3:"276";s:4:"ówi";s:3:"277";s:4:"ęsa";s:3:"278";s:3:" ba";s:3:"279";s:3:" lu";s:3:"280";s:3:" wo";s:3:"281";s:3:"aln";s:3:"282";s:3:"arn";s:3:"283";s:3:"ba ";s:3:"284";s:3:"dzo";s:3:"285";s:3:"e c";s:3:"286";s:3:"hod";s:3:"287";s:3:"igi";s:3:"288";s:3:"lig";s:3:"289";s:3:"m p";s:3:"290";s:4:"myś";s:3:"291";s:3:"o c";s:3:"292";s:3:"oni";s:3:"293";s:3:"rel";s:3:"294";s:3:"sku";s:3:"295";s:3:"ste";s:3:"296";s:3:"y w";s:3:"297";s:3:"yst";s:3:"298";s:3:"z w";s:3:"299";}s:10:"portuguese";a:300:{s:3:"de ";s:1:"0";s:3:" de";s:1:"1";s:3:"os ";s:1:"2";s:3:"as ";s:1:"3";s:3:"que";s:1:"4";s:3:" co";s:1:"5";s:4:"ão ";s:1:"6";s:3:"o d";s:1:"7";s:3:" qu";s:1:"8";s:3:"ue ";s:1:"9";s:3:" a ";s:2:"10";s:3:"do ";s:2:"11";s:3:"ent";s:2:"12";s:3:" se";s:2:"13";s:3:"a d";s:2:"14";s:3:"s d";s:2:"15";s:3:"e a";s:2:"16";s:3:"es ";s:2:"17";s:3:" pr";s:2:"18";s:3:"ra ";s:2:"19";s:3:"da ";s:2:"20";s:3:" es";s:2:"21";s:3:" pa";s:2:"22";s:3:"to ";s:2:"23";s:3:" o ";s:2:"24";s:3:"em ";s:2:"25";s:3:"con";s:2:"26";s:3:"o p";s:2:"27";s:3:" do";s:2:"28";s:3:"est";s:2:"29";s:3:"nte";s:2:"30";s:5:"ção";s:2:"31";s:3:" da";s:2:"32";s:3:" re";s:2:"33";s:3:"ma ";s:2:"34";s:3:"par";s:2:"35";s:3:" te";s:2:"36";s:3:"ara";s:2:"37";s:3:"ida";s:2:"38";s:3:" e ";s:2:"39";s:3:"ade";s:2:"40";s:3:"is ";s:2:"41";s:3:" um";s:2:"42";s:3:" po";s:2:"43";s:3:"a a";s:2:"44";s:3:"a p";s:2:"45";s:3:"dad";s:2:"46";s:3:"no ";s:2:"47";s:3:"te ";s:2:"48";s:3:" no";s:2:"49";s:5:"açã";s:2:"50";s:3:"pro";s:2:"51";s:3:"al ";s:2:"52";s:3:"com";s:2:"53";s:3:"e d";s:2:"54";s:3:"s a";s:2:"55";s:3:" as";s:2:"56";s:3:"a c";s:2:"57";s:3:"er ";s:2:"58";s:3:"men";s:2:"59";s:3:"s e";s:2:"60";s:3:"ais";s:2:"61";s:3:"nto";s:2:"62";s:3:"res";s:2:"63";s:3:"a s";s:2:"64";s:3:"ado";s:2:"65";s:3:"ist";s:2:"66";s:3:"s p";s:2:"67";s:3:"tem";s:2:"68";s:3:"e c";s:2:"69";s:3:"e s";s:2:"70";s:3:"ia ";s:2:"71";s:3:"o s";s:2:"72";s:3:"o a";s:2:"73";s:3:"o c";s:2:"74";s:3:"e p";s:2:"75";s:3:"sta";s:2:"76";s:3:"ta ";s:2:"77";s:3:"tra";s:2:"78";s:3:"ura";s:2:"79";s:3:" di";s:2:"80";s:3:" pe";s:2:"81";s:3:"ar ";s:2:"82";s:3:"e e";s:2:"83";s:3:"ser";s:2:"84";s:3:"uma";s:2:"85";s:3:"mos";s:2:"86";s:3:"se ";s:2:"87";s:3:" ca";s:2:"88";s:3:"o e";s:2:"89";s:3:" na";s:2:"90";s:3:"a e";s:2:"91";s:3:"des";s:2:"92";s:3:"ont";s:2:"93";s:3:"por";s:2:"94";s:3:" in";s:2:"95";s:3:" ma";s:2:"96";s:3:"ect";s:2:"97";s:3:"o q";s:2:"98";s:3:"ria";s:2:"99";s:3:"s c";s:3:"100";s:3:"ste";s:3:"101";s:3:"ver";s:3:"102";s:3:"cia";s:3:"103";s:3:"dos";s:3:"104";s:3:"ica";s:3:"105";s:3:"str";s:3:"106";s:3:" ao";s:3:"107";s:3:" em";s:3:"108";s:3:"das";s:3:"109";s:3:"e t";s:3:"110";s:3:"ito";s:3:"111";s:3:"iza";s:3:"112";s:3:"pre";s:3:"113";s:3:"tos";s:3:"114";s:4:" nã";s:3:"115";s:3:"ada";s:3:"116";s:4:"não";s:3:"117";s:3:"ess";s:3:"118";s:3:"eve";s:3:"119";s:3:"or ";s:3:"120";s:3:"ran";s:3:"121";s:3:"s n";s:3:"122";s:3:"s t";s:3:"123";s:3:"tur";s:3:"124";s:3:" ac";s:3:"125";s:3:" fa";s:3:"126";s:3:"a r";s:3:"127";s:3:"ens";s:3:"128";s:3:"eri";s:3:"129";s:3:"na ";s:3:"130";s:3:"sso";s:3:"131";s:3:" si";s:3:"132";s:4:" é ";s:3:"133";s:3:"bra";s:3:"134";s:3:"esp";s:3:"135";s:3:"mo ";s:3:"136";s:3:"nos";s:3:"137";s:3:"ro ";s:3:"138";s:3:"um ";s:3:"139";s:3:"a n";s:3:"140";s:3:"ao ";s:3:"141";s:3:"ico";s:3:"142";s:3:"liz";s:3:"143";s:3:"min";s:3:"144";s:3:"o n";s:3:"145";s:3:"ons";s:3:"146";s:3:"pri";s:3:"147";s:3:"ten";s:3:"148";s:3:"tic";s:3:"149";s:4:"ões";s:3:"150";s:3:" tr";s:3:"151";s:3:"a m";s:3:"152";s:3:"aga";s:3:"153";s:3:"e n";s:3:"154";s:3:"ili";s:3:"155";s:3:"ime";s:3:"156";s:3:"m a";s:3:"157";s:3:"nci";s:3:"158";s:3:"nha";s:3:"159";s:3:"nta";s:3:"160";s:3:"spe";s:3:"161";s:3:"tiv";s:3:"162";s:3:"am ";s:3:"163";s:3:"ano";s:3:"164";s:3:"arc";s:3:"165";s:3:"ass";s:3:"166";s:3:"cer";s:3:"167";s:3:"e o";s:3:"168";s:3:"ece";s:3:"169";s:3:"emo";s:3:"170";s:3:"ga ";s:3:"171";s:3:"o m";s:3:"172";s:3:"rag";s:3:"173";s:3:"so ";s:3:"174";s:4:"são";s:3:"175";s:3:" au";s:3:"176";s:3:" os";s:3:"177";s:3:" sa";s:3:"178";s:3:"ali";s:3:"179";s:3:"ca ";s:3:"180";s:3:"ema";s:3:"181";s:3:"emp";s:3:"182";s:3:"ici";s:3:"183";s:3:"ido";s:3:"184";s:3:"inh";s:3:"185";s:3:"iss";s:3:"186";s:3:"l d";s:3:"187";s:3:"la ";s:3:"188";s:3:"lic";s:3:"189";s:3:"m c";s:3:"190";s:3:"mai";s:3:"191";s:3:"onc";s:3:"192";s:3:"pec";s:3:"193";s:3:"ram";s:3:"194";s:3:"s q";s:3:"195";s:3:" ci";s:3:"196";s:3:" en";s:3:"197";s:3:" fo";s:3:"198";s:3:"a o";s:3:"199";s:3:"ame";s:3:"200";s:3:"car";s:3:"201";s:3:"co ";s:3:"202";s:3:"der";s:3:"203";s:3:"eir";s:3:"204";s:3:"ho ";s:3:"205";s:3:"io ";s:3:"206";s:3:"om ";s:3:"207";s:3:"ora";s:3:"208";s:3:"r a";s:3:"209";s:3:"sen";s:3:"210";s:3:"ter";s:3:"211";s:3:" br";s:3:"212";s:3:" ex";s:3:"213";s:3:"a u";s:3:"214";s:3:"cul";s:3:"215";s:3:"dev";s:3:"216";s:3:"e u";s:3:"217";s:3:"ha ";s:3:"218";s:3:"mpr";s:3:"219";s:3:"nce";s:3:"220";s:3:"oca";s:3:"221";s:3:"ove";s:3:"222";s:3:"rio";s:3:"223";s:3:"s o";s:3:"224";s:3:"sa ";s:3:"225";s:3:"sem";s:3:"226";s:3:"tes";s:3:"227";s:3:"uni";s:3:"228";s:3:"ven";s:3:"229";s:4:"zaç";s:3:"230";s:5:"çõe";s:3:"231";s:3:" ad";s:3:"232";s:3:" al";s:3:"233";s:3:" an";s:3:"234";s:3:" mi";s:3:"235";s:3:" mo";s:3:"236";s:3:" ve";s:3:"237";s:4:" à ";s:3:"238";s:3:"a i";s:3:"239";s:3:"a q";s:3:"240";s:3:"ala";s:3:"241";s:3:"amo";s:3:"242";s:3:"bli";s:3:"243";s:3:"cen";s:3:"244";s:3:"col";s:3:"245";s:3:"cos";s:3:"246";s:3:"cto";s:3:"247";s:3:"e m";s:3:"248";s:3:"e v";s:3:"249";s:3:"ede";s:3:"250";s:4:"gás";s:3:"251";s:3:"ias";s:3:"252";s:3:"ita";s:3:"253";s:3:"iva";s:3:"254";s:3:"ndo";s:3:"255";s:3:"o t";s:3:"256";s:3:"ore";s:3:"257";s:3:"r d";s:3:"258";s:3:"ral";s:3:"259";s:3:"rea";s:3:"260";s:3:"s f";s:3:"261";s:3:"sid";s:3:"262";s:3:"tro";s:3:"263";s:3:"vel";s:3:"264";s:3:"vid";s:3:"265";s:4:"ás ";s:3:"266";s:3:" ap";s:3:"267";s:3:" ar";s:3:"268";s:3:" ce";s:3:"269";s:3:" ou";s:3:"270";s:4:" pú";s:3:"271";s:3:" so";s:3:"272";s:3:" vi";s:3:"273";s:3:"a f";s:3:"274";s:3:"act";s:3:"275";s:3:"arr";s:3:"276";s:3:"bil";s:3:"277";s:3:"cam";s:3:"278";s:3:"e f";s:3:"279";s:3:"e i";s:3:"280";s:3:"el ";s:3:"281";s:3:"for";s:3:"282";s:3:"lem";s:3:"283";s:3:"lid";s:3:"284";s:3:"lo ";s:3:"285";s:3:"m d";s:3:"286";s:3:"mar";s:3:"287";s:3:"nde";s:3:"288";s:3:"o o";s:3:"289";s:3:"omo";s:3:"290";s:3:"ort";s:3:"291";s:3:"per";s:3:"292";s:4:"púb";s:3:"293";s:3:"r u";s:3:"294";s:3:"rei";s:3:"295";s:3:"rem";s:3:"296";s:3:"ros";s:3:"297";s:3:"rre";s:3:"298";s:3:"ssi";s:3:"299";}s:8:"romanian";a:300:{s:3:" de";s:1:"0";s:4:" în";s:1:"1";s:3:"de ";s:1:"2";s:3:" a ";s:1:"3";s:3:"ul ";s:1:"4";s:3:" co";s:1:"5";s:4:"în ";s:1:"6";s:3:"re ";s:1:"7";s:3:"e d";s:1:"8";s:3:"ea ";s:1:"9";s:3:" di";s:2:"10";s:3:" pr";s:2:"11";s:3:"le ";s:2:"12";s:4:"şi ";s:2:"13";s:3:"are";s:2:"14";s:3:"at ";s:2:"15";s:3:"con";s:2:"16";s:3:"ui ";s:2:"17";s:4:" şi";s:2:"18";s:3:"i d";s:2:"19";s:3:"ii ";s:2:"20";s:3:" cu";s:2:"21";s:3:"e a";s:2:"22";s:3:"lui";s:2:"23";s:3:"ern";s:2:"24";s:3:"te ";s:2:"25";s:3:"cu ";s:2:"26";s:3:" la";s:2:"27";s:3:"a c";s:2:"28";s:4:"că ";s:2:"29";s:3:"din";s:2:"30";s:3:"e c";s:2:"31";s:3:"or ";s:2:"32";s:3:"ulu";s:2:"33";s:3:"ne ";s:2:"34";s:3:"ter";s:2:"35";s:3:"la ";s:2:"36";s:4:"să ";s:2:"37";s:3:"tat";s:2:"38";s:3:"tre";s:2:"39";s:3:" ac";s:2:"40";s:4:" să";s:2:"41";s:3:"est";s:2:"42";s:3:"st ";s:2:"43";s:4:"tă ";s:2:"44";s:3:" ca";s:2:"45";s:3:" ma";s:2:"46";s:3:" pe";s:2:"47";s:3:"cur";s:2:"48";s:3:"ist";s:2:"49";s:4:"mân";s:2:"50";s:3:"a d";s:2:"51";s:3:"i c";s:2:"52";s:3:"nat";s:2:"53";s:3:" ce";s:2:"54";s:3:"i a";s:2:"55";s:3:"ia ";s:2:"56";s:3:"in ";s:2:"57";s:3:"scu";s:2:"58";s:3:" mi";s:2:"59";s:3:"ato";s:2:"60";s:4:"aţi";s:2:"61";s:3:"ie ";s:2:"62";s:3:" re";s:2:"63";s:3:" se";s:2:"64";s:3:"a a";s:2:"65";s:3:"int";s:2:"66";s:3:"ntr";s:2:"67";s:3:"tru";s:2:"68";s:3:"uri";s:2:"69";s:4:"ă a";s:2:"70";s:3:" fo";s:2:"71";s:3:" pa";s:2:"72";s:3:"ate";s:2:"73";s:3:"ini";s:2:"74";s:3:"tul";s:2:"75";s:3:"ent";s:2:"76";s:3:"min";s:2:"77";s:3:"pre";s:2:"78";s:3:"pro";s:2:"79";s:3:"a p";s:2:"80";s:3:"e p";s:2:"81";s:3:"e s";s:2:"82";s:3:"ei ";s:2:"83";s:4:"nă ";s:2:"84";s:3:"par";s:2:"85";s:3:"rna";s:2:"86";s:3:"rul";s:2:"87";s:3:"tor";s:2:"88";s:3:" in";s:2:"89";s:3:" ro";s:2:"90";s:3:" tr";s:2:"91";s:3:" un";s:2:"92";s:3:"al ";s:2:"93";s:3:"ale";s:2:"94";s:3:"art";s:2:"95";s:3:"ce ";s:2:"96";s:3:"e e";s:2:"97";s:4:"e î";s:2:"98";s:3:"fos";s:2:"99";s:3:"ita";s:3:"100";s:3:"nte";s:3:"101";s:4:"omâ";s:3:"102";s:3:"ost";s:3:"103";s:3:"rom";s:3:"104";s:3:"ru ";s:3:"105";s:3:"str";s:3:"106";s:3:"ver";s:3:"107";s:3:" ex";s:3:"108";s:3:" na";s:3:"109";s:3:"a f";s:3:"110";s:3:"lor";s:3:"111";s:3:"nis";s:3:"112";s:3:"rea";s:3:"113";s:3:"rit";s:3:"114";s:3:" al";s:3:"115";s:3:" eu";s:3:"116";s:3:" no";s:3:"117";s:3:"ace";s:3:"118";s:3:"cer";s:3:"119";s:3:"ile";s:3:"120";s:3:"nal";s:3:"121";s:3:"pri";s:3:"122";s:3:"ri ";s:3:"123";s:3:"sta";s:3:"124";s:3:"ste";s:3:"125";s:4:"ţie";s:3:"126";s:3:" au";s:3:"127";s:3:" da";s:3:"128";s:3:" ju";s:3:"129";s:3:" po";s:3:"130";s:3:"ar ";s:3:"131";s:3:"au ";s:3:"132";s:3:"ele";s:3:"133";s:3:"ere";s:3:"134";s:3:"eri";s:3:"135";s:3:"ina";s:3:"136";s:3:"n a";s:3:"137";s:3:"n c";s:3:"138";s:3:"res";s:3:"139";s:3:"se ";s:3:"140";s:3:"t a";s:3:"141";s:3:"tea";s:3:"142";s:4:" că";s:3:"143";s:3:" do";s:3:"144";s:3:" fi";s:3:"145";s:3:"a s";s:3:"146";s:4:"ată";s:3:"147";s:3:"com";s:3:"148";s:4:"e ş";s:3:"149";s:3:"eur";s:3:"150";s:3:"guv";s:3:"151";s:3:"i s";s:3:"152";s:3:"ice";s:3:"153";s:3:"ili";s:3:"154";s:3:"na ";s:3:"155";s:3:"rec";s:3:"156";s:3:"rep";s:3:"157";s:3:"ril";s:3:"158";s:3:"rne";s:3:"159";s:3:"rti";s:3:"160";s:3:"uro";s:3:"161";s:3:"uve";s:3:"162";s:4:"ă p";s:3:"163";s:3:" ar";s:3:"164";s:3:" o ";s:3:"165";s:3:" su";s:3:"166";s:3:" vi";s:3:"167";s:3:"dec";s:3:"168";s:3:"dre";s:3:"169";s:3:"oar";s:3:"170";s:3:"ons";s:3:"171";s:3:"pe ";s:3:"172";s:3:"rii";s:3:"173";s:3:" ad";s:3:"174";s:3:" ge";s:3:"175";s:3:"a m";s:3:"176";s:3:"a r";s:3:"177";s:3:"ain";s:3:"178";s:3:"ali";s:3:"179";s:3:"car";s:3:"180";s:3:"cat";s:3:"181";s:3:"ecu";s:3:"182";s:3:"ene";s:3:"183";s:3:"ept";s:3:"184";s:3:"ext";s:3:"185";s:3:"ilo";s:3:"186";s:3:"iu ";s:3:"187";s:3:"n p";s:3:"188";s:3:"ori";s:3:"189";s:3:"sec";s:3:"190";s:3:"u p";s:3:"191";s:3:"une";s:3:"192";s:4:"ă c";s:3:"193";s:4:"şti";s:3:"194";s:4:"ţia";s:3:"195";s:3:" ch";s:3:"196";s:3:" gu";s:3:"197";s:3:"ai ";s:3:"198";s:3:"ani";s:3:"199";s:3:"cea";s:3:"200";s:3:"e f";s:3:"201";s:3:"isc";s:3:"202";s:3:"l a";s:3:"203";s:3:"lic";s:3:"204";s:3:"liu";s:3:"205";s:3:"mar";s:3:"206";s:3:"nic";s:3:"207";s:3:"nt ";s:3:"208";s:3:"nul";s:3:"209";s:3:"ris";s:3:"210";s:3:"t c";s:3:"211";s:3:"t p";s:3:"212";s:3:"tic";s:3:"213";s:3:"tid";s:3:"214";s:3:"u a";s:3:"215";s:3:"ucr";s:3:"216";s:3:" as";s:3:"217";s:3:" dr";s:3:"218";s:3:" fa";s:3:"219";s:3:" nu";s:3:"220";s:3:" pu";s:3:"221";s:3:" to";s:3:"222";s:3:"cra";s:3:"223";s:3:"dis";s:3:"224";s:4:"enţ";s:3:"225";s:3:"esc";s:3:"226";s:3:"gen";s:3:"227";s:3:"it ";s:3:"228";s:3:"ivi";s:3:"229";s:3:"l d";s:3:"230";s:3:"n d";s:3:"231";s:3:"nd ";s:3:"232";s:3:"nu ";s:3:"233";s:3:"ond";s:3:"234";s:3:"pen";s:3:"235";s:3:"ral";s:3:"236";s:3:"riv";s:3:"237";s:3:"rte";s:3:"238";s:3:"sti";s:3:"239";s:3:"t d";s:3:"240";s:3:"ta ";s:3:"241";s:3:"to ";s:3:"242";s:3:"uni";s:3:"243";s:3:"xte";s:3:"244";s:4:"ând";s:3:"245";s:4:"îns";s:3:"246";s:4:"ă s";s:3:"247";s:3:" bl";s:3:"248";s:3:" st";s:3:"249";s:3:" uc";s:3:"250";s:3:"a b";s:3:"251";s:3:"a i";s:3:"252";s:3:"a l";s:3:"253";s:3:"air";s:3:"254";s:3:"ast";s:3:"255";s:3:"bla";s:3:"256";s:3:"bri";s:3:"257";s:3:"che";s:3:"258";s:3:"duc";s:3:"259";s:3:"dul";s:3:"260";s:3:"e m";s:3:"261";s:3:"eas";s:3:"262";s:3:"edi";s:3:"263";s:3:"esp";s:3:"264";s:3:"i l";s:3:"265";s:3:"i p";s:3:"266";s:3:"ica";s:3:"267";s:4:"ică";s:3:"268";s:3:"ir ";s:3:"269";s:3:"iun";s:3:"270";s:3:"jud";s:3:"271";s:3:"lai";s:3:"272";s:3:"lul";s:3:"273";s:3:"mai";s:3:"274";s:3:"men";s:3:"275";s:3:"ni ";s:3:"276";s:3:"pus";s:3:"277";s:3:"put";s:3:"278";s:3:"ra ";s:3:"279";s:3:"rai";s:3:"280";s:3:"rop";s:3:"281";s:3:"sil";s:3:"282";s:3:"ti ";s:3:"283";s:3:"tra";s:3:"284";s:3:"u s";s:3:"285";s:3:"ua ";s:3:"286";s:3:"ude";s:3:"287";s:3:"urs";s:3:"288";s:4:"ân ";s:3:"289";s:4:"înt";s:3:"290";s:5:"ţă ";s:3:"291";s:3:" lu";s:3:"292";s:3:" mo";s:3:"293";s:3:" s ";s:3:"294";s:3:" sa";s:3:"295";s:3:" sc";s:3:"296";s:3:"a u";s:3:"297";s:3:"an ";s:3:"298";s:3:"atu";s:3:"299";}s:7:"russian";a:300:{s:5:" на";s:1:"0";s:5:" пр";s:1:"1";s:5:"то ";s:1:"2";s:5:" не";s:1:"3";s:5:"ли ";s:1:"4";s:5:" по";s:1:"5";s:5:"но ";s:1:"6";s:4:" в ";s:1:"7";s:5:"на ";s:1:"8";s:5:"ть ";s:1:"9";s:5:"не ";s:2:"10";s:4:" и ";s:2:"11";s:5:" ко";s:2:"12";s:5:"ом ";s:2:"13";s:6:"про";s:2:"14";s:5:" то";s:2:"15";s:5:"их ";s:2:"16";s:5:" ка";s:2:"17";s:6:"ать";s:2:"18";s:6:"ото";s:2:"19";s:5:" за";s:2:"20";s:5:"ие ";s:2:"21";s:6:"ова";s:2:"22";s:6:"тел";s:2:"23";s:6:"тор";s:2:"24";s:5:" де";s:2:"25";s:5:"ой ";s:2:"26";s:6:"сти";s:2:"27";s:5:" от";s:2:"28";s:5:"ах ";s:2:"29";s:5:"ми ";s:2:"30";s:6:"стр";s:2:"31";s:5:" бе";s:2:"32";s:5:" во";s:2:"33";s:5:" ра";s:2:"34";s:5:"ая ";s:2:"35";s:6:"ват";s:2:"36";s:5:"ей ";s:2:"37";s:5:"ет ";s:2:"38";s:5:"же ";s:2:"39";s:6:"иче";s:2:"40";s:5:"ия ";s:2:"41";s:5:"ов ";s:2:"42";s:6:"сто";s:2:"43";s:5:" об";s:2:"44";s:6:"вер";s:2:"45";s:5:"го ";s:2:"46";s:5:"и в";s:2:"47";s:5:"и п";s:2:"48";s:5:"и с";s:2:"49";s:5:"ии ";s:2:"50";s:6:"ист";s:2:"51";s:5:"о в";s:2:"52";s:6:"ост";s:2:"53";s:6:"тра";s:2:"54";s:5:" те";s:2:"55";s:6:"ели";s:2:"56";s:6:"ере";s:2:"57";s:6:"кот";s:2:"58";s:6:"льн";s:2:"59";s:6:"ник";s:2:"60";s:6:"нти";s:2:"61";s:5:"о с";s:2:"62";s:6:"рор";s:2:"63";s:6:"ств";s:2:"64";s:6:"чес";s:2:"65";s:5:" бо";s:2:"66";s:5:" ве";s:2:"67";s:5:" да";s:2:"68";s:5:" ин";s:2:"69";s:5:" но";s:2:"70";s:4:" с ";s:2:"71";s:5:" со";s:2:"72";s:5:" сп";s:2:"73";s:5:" ст";s:2:"74";s:5:" чт";s:2:"75";s:6:"али";s:2:"76";s:6:"ами";s:2:"77";s:6:"вид";s:2:"78";s:6:"дет";s:2:"79";s:5:"е н";s:2:"80";s:6:"ель";s:2:"81";s:6:"еск";s:2:"82";s:6:"ест";s:2:"83";s:6:"зал";s:2:"84";s:5:"и н";s:2:"85";s:6:"ива";s:2:"86";s:6:"кон";s:2:"87";s:6:"ого";s:2:"88";s:6:"одн";s:2:"89";s:6:"ожн";s:2:"90";s:6:"оль";s:2:"91";s:6:"ори";s:2:"92";s:6:"ров";s:2:"93";s:6:"ско";s:2:"94";s:5:"ся ";s:2:"95";s:6:"тер";s:2:"96";s:6:"что";s:2:"97";s:5:" мо";s:2:"98";s:5:" са";s:2:"99";s:5:" эт";s:3:"100";s:6:"ант";s:3:"101";s:6:"все";s:3:"102";s:6:"ерр";s:3:"103";s:6:"есл";s:3:"104";s:6:"иде";s:3:"105";s:6:"ина";s:3:"106";s:6:"ино";s:3:"107";s:6:"иро";s:3:"108";s:6:"ите";s:3:"109";s:5:"ка ";s:3:"110";s:5:"ко ";s:3:"111";s:6:"кол";s:3:"112";s:6:"ком";s:3:"113";s:5:"ла ";s:3:"114";s:6:"ния";s:3:"115";s:5:"о т";s:3:"116";s:6:"оло";s:3:"117";s:6:"ран";s:3:"118";s:6:"ред";s:3:"119";s:5:"сь ";s:3:"120";s:6:"тив";s:3:"121";s:6:"тич";s:3:"122";s:5:"ых ";s:3:"123";s:5:" ви";s:3:"124";s:5:" вс";s:3:"125";s:5:" го";s:3:"126";s:5:" ма";s:3:"127";s:5:" сл";s:3:"128";s:6:"ако";s:3:"129";s:6:"ани";s:3:"130";s:6:"аст";s:3:"131";s:6:"без";s:3:"132";s:6:"дел";s:3:"133";s:5:"е д";s:3:"134";s:5:"е п";s:3:"135";s:5:"ем ";s:3:"136";s:6:"жно";s:3:"137";s:5:"и д";s:3:"138";s:6:"ика";s:3:"139";s:6:"каз";s:3:"140";s:6:"как";s:3:"141";s:5:"ки ";s:3:"142";s:6:"нос";s:3:"143";s:5:"о н";s:3:"144";s:6:"опа";s:3:"145";s:6:"при";s:3:"146";s:6:"рро";s:3:"147";s:6:"ски";s:3:"148";s:5:"ти ";s:3:"149";s:6:"тов";s:3:"150";s:5:"ые ";s:3:"151";s:5:" вы";s:3:"152";s:5:" до";s:3:"153";s:5:" ме";s:3:"154";s:5:" ни";s:3:"155";s:5:" од";s:3:"156";s:5:" ро";s:3:"157";s:5:" св";s:3:"158";s:5:" чи";s:3:"159";s:5:"а н";s:3:"160";s:6:"ает";s:3:"161";s:6:"аза";s:3:"162";s:6:"ате";s:3:"163";s:6:"бес";s:3:"164";s:5:"в п";s:3:"165";s:5:"ва ";s:3:"166";s:5:"е в";s:3:"167";s:5:"е м";s:3:"168";s:5:"е с";s:3:"169";s:5:"ез ";s:3:"170";s:6:"ени";s:3:"171";s:5:"за ";s:3:"172";s:6:"зна";s:3:"173";s:6:"ини";s:3:"174";s:6:"кам";s:3:"175";s:6:"ках";s:3:"176";s:6:"кто";s:3:"177";s:6:"лов";s:3:"178";s:6:"мер";s:3:"179";s:6:"мож";s:3:"180";s:6:"нал";s:3:"181";s:6:"ниц";s:3:"182";s:5:"ны ";s:3:"183";s:6:"ным";s:3:"184";s:6:"ора";s:3:"185";s:6:"оро";s:3:"186";s:5:"от ";s:3:"187";s:6:"пор";s:3:"188";s:6:"рав";s:3:"189";s:6:"рес";s:3:"190";s:6:"рис";s:3:"191";s:6:"рос";s:3:"192";s:6:"ска";s:3:"193";s:5:"т н";s:3:"194";s:6:"том";s:3:"195";s:6:"чит";s:3:"196";s:6:"шко";s:3:"197";s:5:" бы";s:3:"198";s:4:" о ";s:3:"199";s:5:" тр";s:3:"200";s:5:" уж";s:3:"201";s:5:" чу";s:3:"202";s:5:" шк";s:3:"203";s:5:"а б";s:3:"204";s:5:"а в";s:3:"205";s:5:"а р";s:3:"206";s:6:"аби";s:3:"207";s:6:"ала";s:3:"208";s:6:"ало";s:3:"209";s:6:"аль";s:3:"210";s:6:"анн";s:3:"211";s:6:"ати";s:3:"212";s:6:"бин";s:3:"213";s:6:"вес";s:3:"214";s:6:"вно";s:3:"215";s:5:"во ";s:3:"216";s:6:"вши";s:3:"217";s:6:"дал";s:3:"218";s:6:"дат";s:3:"219";s:6:"дно";s:3:"220";s:5:"е з";s:3:"221";s:6:"его";s:3:"222";s:6:"еле";s:3:"223";s:6:"енн";s:3:"224";s:6:"ент";s:3:"225";s:6:"ете";s:3:"226";s:5:"и о";s:3:"227";s:6:"или";s:3:"228";s:6:"ись";s:3:"229";s:5:"ит ";s:3:"230";s:6:"ици";s:3:"231";s:6:"ков";s:3:"232";s:6:"лен";s:3:"233";s:6:"льк";s:3:"234";s:6:"мен";s:3:"235";s:5:"мы ";s:3:"236";s:6:"нет";s:3:"237";s:5:"ни ";s:3:"238";s:6:"нны";s:3:"239";s:6:"ног";s:3:"240";s:6:"ной";s:3:"241";s:6:"ном";s:3:"242";s:5:"о п";s:3:"243";s:6:"обн";s:3:"244";s:6:"ове";s:3:"245";s:6:"овн";s:3:"246";s:6:"оры";s:3:"247";s:6:"пер";s:3:"248";s:5:"по ";s:3:"249";s:6:"пра";s:3:"250";s:6:"пре";s:3:"251";s:6:"раз";s:3:"252";s:6:"роп";s:3:"253";s:5:"ры ";s:3:"254";s:5:"се ";s:3:"255";s:6:"сли";s:3:"256";s:6:"сов";s:3:"257";s:6:"тре";s:3:"258";s:6:"тся";s:3:"259";s:6:"уро";s:3:"260";s:6:"цел";s:3:"261";s:6:"чно";s:3:"262";s:5:"ь в";s:3:"263";s:6:"ько";s:3:"264";s:6:"ьно";s:3:"265";s:6:"это";s:3:"266";s:5:"ют ";s:3:"267";s:5:"я н";s:3:"268";s:5:" ан";s:3:"269";s:5:" ес";s:3:"270";s:5:" же";s:3:"271";s:5:" из";s:3:"272";s:5:" кт";s:3:"273";s:5:" ми";s:3:"274";s:5:" мы";s:3:"275";s:5:" пе";s:3:"276";s:5:" се";s:3:"277";s:5:" це";s:3:"278";s:5:"а м";s:3:"279";s:5:"а п";s:3:"280";s:5:"а т";s:3:"281";s:6:"авш";s:3:"282";s:6:"аже";s:3:"283";s:5:"ак ";s:3:"284";s:5:"ал ";s:3:"285";s:6:"але";s:3:"286";s:6:"ане";s:3:"287";s:6:"ачи";s:3:"288";s:6:"ают";s:3:"289";s:6:"бна";s:3:"290";s:6:"бол";s:3:"291";s:5:"бы ";s:3:"292";s:5:"в и";s:3:"293";s:5:"в с";s:3:"294";s:6:"ван";s:3:"295";s:6:"гра";s:3:"296";s:6:"даж";s:3:"297";s:6:"ден";s:3:"298";s:5:"е к";s:3:"299";}s:7:"serbian";a:300:{s:5:" на";s:1:"0";s:5:" је";s:1:"1";s:5:" по";s:1:"2";s:5:"је ";s:1:"3";s:4:" и ";s:1:"4";s:5:" не";s:1:"5";s:5:" пр";s:1:"6";s:5:"га ";s:1:"7";s:5:" св";s:1:"8";s:5:"ог ";s:1:"9";s:5:"а с";s:2:"10";s:5:"их ";s:2:"11";s:5:"на ";s:2:"12";s:6:"кој";s:2:"13";s:6:"ога";s:2:"14";s:4:" у ";s:2:"15";s:5:"а п";s:2:"16";s:5:"не ";s:2:"17";s:5:"ни ";s:2:"18";s:5:"ти ";s:2:"19";s:5:" да";s:2:"20";s:5:"ом ";s:2:"21";s:5:" ве";s:2:"22";s:5:" ср";s:2:"23";s:5:"и с";s:2:"24";s:6:"ско";s:2:"25";s:5:" об";s:2:"26";s:5:"а н";s:2:"27";s:5:"да ";s:2:"28";s:5:"е н";s:2:"29";s:5:"но ";s:2:"30";s:6:"ног";s:2:"31";s:5:"о ј";s:2:"32";s:5:"ој ";s:2:"33";s:5:" за";s:2:"34";s:5:"ва ";s:2:"35";s:5:"е с";s:2:"36";s:5:"и п";s:2:"37";s:5:"ма ";s:2:"38";s:6:"ник";s:2:"39";s:6:"обр";s:2:"40";s:6:"ова";s:2:"41";s:5:" ко";s:2:"42";s:5:"а и";s:2:"43";s:6:"диј";s:2:"44";s:5:"е п";s:2:"45";s:5:"ка ";s:2:"46";s:5:"ко ";s:2:"47";s:6:"ког";s:2:"48";s:6:"ост";s:2:"49";s:6:"све";s:2:"50";s:6:"ств";s:2:"51";s:6:"сти";s:2:"52";s:6:"тра";s:2:"53";s:6:"еди";s:2:"54";s:6:"има";s:2:"55";s:6:"пок";s:2:"56";s:6:"пра";s:2:"57";s:6:"раз";s:2:"58";s:5:"те ";s:2:"59";s:5:" бо";s:2:"60";s:5:" ви";s:2:"61";s:5:" са";s:2:"62";s:6:"аво";s:2:"63";s:6:"бра";s:2:"64";s:6:"гос";s:2:"65";s:5:"е и";s:2:"66";s:6:"ели";s:2:"67";s:6:"ени";s:2:"68";s:5:"за ";s:2:"69";s:6:"ики";s:2:"70";s:5:"ио ";s:2:"71";s:6:"пре";s:2:"72";s:6:"рав";s:2:"73";s:6:"рад";s:2:"74";s:5:"у с";s:2:"75";s:5:"ју ";s:2:"76";s:5:"ња ";s:2:"77";s:5:" би";s:2:"78";s:5:" до";s:2:"79";s:5:" ст";s:2:"80";s:6:"аст";s:2:"81";s:6:"бој";s:2:"82";s:6:"ебо";s:2:"83";s:5:"и н";s:2:"84";s:5:"им ";s:2:"85";s:5:"ку ";s:2:"86";s:6:"лан";s:2:"87";s:6:"неб";s:2:"88";s:6:"ово";s:2:"89";s:6:"ого";s:2:"90";s:6:"осл";s:2:"91";s:6:"ојш";s:2:"92";s:6:"пед";s:2:"93";s:6:"стр";s:2:"94";s:6:"час";s:2:"95";s:5:" го";s:2:"96";s:5:" кр";s:2:"97";s:5:" мо";s:2:"98";s:5:" чл";s:2:"99";s:5:"а м";s:3:"100";s:5:"а о";s:3:"101";s:6:"ако";s:3:"102";s:6:"ача";s:3:"103";s:6:"вел";s:3:"104";s:6:"вет";s:3:"105";s:6:"вог";s:3:"106";s:6:"еда";s:3:"107";s:6:"ист";s:3:"108";s:6:"ити";s:3:"109";s:6:"ије";s:3:"110";s:6:"око";s:3:"111";s:6:"сло";s:3:"112";s:6:"срб";s:3:"113";s:6:"чла";s:3:"114";s:5:" бе";s:3:"115";s:5:" ос";s:3:"116";s:5:" от";s:3:"117";s:5:" ре";s:3:"118";s:5:" се";s:3:"119";s:5:"а в";s:3:"120";s:5:"ан ";s:3:"121";s:6:"бог";s:3:"122";s:6:"бро";s:3:"123";s:6:"вен";s:3:"124";s:6:"гра";s:3:"125";s:5:"е о";s:3:"126";s:6:"ика";s:3:"127";s:6:"ија";s:3:"128";s:6:"ких";s:3:"129";s:6:"ком";s:3:"130";s:5:"ли ";s:3:"131";s:5:"ну ";s:3:"132";s:6:"ота";s:3:"133";s:6:"ојн";s:3:"134";s:6:"под";s:3:"135";s:6:"рбс";s:3:"136";s:6:"ред";s:3:"137";s:6:"рој";s:3:"138";s:5:"са ";s:3:"139";s:6:"сни";s:3:"140";s:6:"тач";s:3:"141";s:6:"тва";s:3:"142";s:5:"ја ";s:3:"143";s:5:"ји ";s:3:"144";s:5:" ка";s:3:"145";s:5:" ов";s:3:"146";s:5:" тр";s:3:"147";s:5:"а ј";s:3:"148";s:6:"ави";s:3:"149";s:5:"аз ";s:3:"150";s:6:"ано";s:3:"151";s:6:"био";s:3:"152";s:6:"вик";s:3:"153";s:5:"во ";s:3:"154";s:6:"гов";s:3:"155";s:6:"дни";s:3:"156";s:5:"е ч";s:3:"157";s:6:"его";s:3:"158";s:5:"и о";s:3:"159";s:6:"ива";s:3:"160";s:6:"иво";s:3:"161";s:5:"ик ";s:3:"162";s:6:"ине";s:3:"163";s:6:"ини";s:3:"164";s:6:"ипе";s:3:"165";s:6:"кип";s:3:"166";s:6:"лик";s:3:"167";s:5:"ло ";s:3:"168";s:6:"наш";s:3:"169";s:6:"нос";s:3:"170";s:5:"о т";s:3:"171";s:5:"од ";s:3:"172";s:6:"оди";s:3:"173";s:6:"она";s:3:"174";s:6:"оји";s:3:"175";s:6:"поч";s:3:"176";s:6:"про";s:3:"177";s:5:"ра ";s:3:"178";s:6:"рис";s:3:"179";s:6:"род";s:3:"180";s:6:"рст";s:3:"181";s:5:"се ";s:3:"182";s:6:"спо";s:3:"183";s:6:"ста";s:3:"184";s:6:"тић";s:3:"185";s:5:"у д";s:3:"186";s:5:"у н";s:3:"187";s:5:"у о";s:3:"188";s:6:"чин";s:3:"189";s:5:"ша ";s:3:"190";s:6:"јед";s:3:"191";s:6:"јни";s:3:"192";s:5:"ће ";s:3:"193";s:4:" м ";s:3:"194";s:5:" ме";s:3:"195";s:5:" ни";s:3:"196";s:5:" он";s:3:"197";s:5:" па";s:3:"198";s:5:" сл";s:3:"199";s:5:" те";s:3:"200";s:5:"а у";s:3:"201";s:6:"ава";s:3:"202";s:6:"аве";s:3:"203";s:6:"авн";s:3:"204";s:6:"ана";s:3:"205";s:5:"ао ";s:3:"206";s:6:"ати";s:3:"207";s:6:"аци";s:3:"208";s:6:"ају";s:3:"209";s:6:"ања";s:3:"210";s:6:"бск";s:3:"211";s:6:"вор";s:3:"212";s:6:"вос";s:3:"213";s:6:"вск";s:3:"214";s:6:"дин";s:3:"215";s:5:"е у";s:3:"216";s:6:"едн";s:3:"217";s:6:"ези";s:3:"218";s:6:"ека";s:3:"219";s:6:"ено";s:3:"220";s:6:"ето";s:3:"221";s:6:"ења";s:3:"222";s:6:"жив";s:3:"223";s:5:"и г";s:3:"224";s:5:"и и";s:3:"225";s:5:"и к";s:3:"226";s:5:"и т";s:3:"227";s:6:"ику";s:3:"228";s:6:"ичк";s:3:"229";s:5:"ки ";s:3:"230";s:6:"крс";s:3:"231";s:5:"ла ";s:3:"232";s:6:"лав";s:3:"233";s:6:"лит";s:3:"234";s:5:"ме ";s:3:"235";s:6:"мен";s:3:"236";s:6:"нац";s:3:"237";s:5:"о н";s:3:"238";s:5:"о п";s:3:"239";s:5:"о у";s:3:"240";s:6:"одн";s:3:"241";s:6:"оли";s:3:"242";s:6:"орн";s:3:"243";s:6:"осн";s:3:"244";s:6:"осп";s:3:"245";s:6:"оче";s:3:"246";s:6:"пск";s:3:"247";s:6:"реч";s:3:"248";s:6:"рпс";s:3:"249";s:6:"сво";s:3:"250";s:6:"ски";s:3:"251";s:6:"сла";s:3:"252";s:6:"срп";s:3:"253";s:5:"су ";s:3:"254";s:5:"та ";s:3:"255";s:6:"тав";s:3:"256";s:6:"тве";s:3:"257";s:5:"у б";s:3:"258";s:6:"јез";s:3:"259";s:5:"ћи ";s:3:"260";s:5:" ен";s:3:"261";s:5:" жи";s:3:"262";s:5:" им";s:3:"263";s:5:" му";s:3:"264";s:5:" од";s:3:"265";s:5:" су";s:3:"266";s:5:" та";s:3:"267";s:5:" хр";s:3:"268";s:5:" ча";s:3:"269";s:5:" шт";s:3:"270";s:5:" ње";s:3:"271";s:5:"а д";s:3:"272";s:5:"а з";s:3:"273";s:5:"а к";s:3:"274";s:5:"а т";s:3:"275";s:6:"аду";s:3:"276";s:6:"ало";s:3:"277";s:6:"ани";s:3:"278";s:6:"асо";s:3:"279";s:6:"ван";s:3:"280";s:6:"вач";s:3:"281";s:6:"вањ";s:3:"282";s:6:"вед";s:3:"283";s:5:"ви ";s:3:"284";s:6:"вно";s:3:"285";s:6:"вот";s:3:"286";s:6:"вој";s:3:"287";s:5:"ву ";s:3:"288";s:6:"доб";s:3:"289";s:6:"дру";s:3:"290";s:6:"дсе";s:3:"291";s:5:"ду ";s:3:"292";s:5:"е б";s:3:"293";s:5:"е д";s:3:"294";s:5:"е м";s:3:"295";s:5:"ем ";s:3:"296";s:6:"ема";s:3:"297";s:6:"ент";s:3:"298";s:6:"енц";s:3:"299";}s:6:"slovak";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:3:" ne";s:1:"2";s:3:" a ";s:1:"3";s:3:"ch ";s:1:"4";s:3:" na";s:1:"5";s:3:" je";s:1:"6";s:4:"ní ";s:1:"7";s:3:"je ";s:1:"8";s:3:" do";s:1:"9";s:3:"na ";s:2:"10";s:3:"ova";s:2:"11";s:3:" v ";s:2:"12";s:3:"to ";s:2:"13";s:3:"ho ";s:2:"14";s:3:"ou ";s:2:"15";s:3:" to";s:2:"16";s:3:"ick";s:2:"17";s:3:"ter";s:2:"18";s:4:"že ";s:2:"19";s:3:" st";s:2:"20";s:3:" za";s:2:"21";s:3:"ost";s:2:"22";s:4:"ých";s:2:"23";s:3:" se";s:2:"24";s:3:"pro";s:2:"25";s:3:" te";s:2:"26";s:3:"e s";s:2:"27";s:4:" že";s:2:"28";s:3:"a p";s:2:"29";s:3:" kt";s:2:"30";s:3:"pre";s:2:"31";s:3:" by";s:2:"32";s:3:" o ";s:2:"33";s:3:"se ";s:2:"34";s:3:"kon";s:2:"35";s:4:" př";s:2:"36";s:3:"a s";s:2:"37";s:4:"né ";s:2:"38";s:4:"ně ";s:2:"39";s:3:"sti";s:2:"40";s:3:"ako";s:2:"41";s:3:"ist";s:2:"42";s:3:"mu ";s:2:"43";s:3:"ame";s:2:"44";s:3:"ent";s:2:"45";s:3:"ky ";s:2:"46";s:3:"la ";s:2:"47";s:3:"pod";s:2:"48";s:3:" ve";s:2:"49";s:3:" ob";s:2:"50";s:3:"om ";s:2:"51";s:3:"vat";s:2:"52";s:3:" ko";s:2:"53";s:3:"sta";s:2:"54";s:3:"em ";s:2:"55";s:3:"le ";s:2:"56";s:3:"a v";s:2:"57";s:3:"by ";s:2:"58";s:3:"e p";s:2:"59";s:3:"ko ";s:2:"60";s:3:"eri";s:2:"61";s:3:"kte";s:2:"62";s:3:"sa ";s:2:"63";s:4:"ého";s:2:"64";s:3:"e v";s:2:"65";s:3:"mer";s:2:"66";s:3:"tel";s:2:"67";s:3:" ak";s:2:"68";s:3:" sv";s:2:"69";s:4:" zá";s:2:"70";s:3:"hla";s:2:"71";s:3:"las";s:2:"72";s:3:"lo ";s:2:"73";s:3:" ta";s:2:"74";s:3:"a n";s:2:"75";s:3:"ej ";s:2:"76";s:3:"li ";s:2:"77";s:3:"ne ";s:2:"78";s:3:" sa";s:2:"79";s:3:"ak ";s:2:"80";s:3:"ani";s:2:"81";s:3:"ate";s:2:"82";s:3:"ia ";s:2:"83";s:3:"sou";s:2:"84";s:3:" so";s:2:"85";s:4:"ení";s:2:"86";s:3:"ie ";s:2:"87";s:3:" re";s:2:"88";s:3:"ce ";s:2:"89";s:3:"e n";s:2:"90";s:3:"ori";s:2:"91";s:3:"tic";s:2:"92";s:3:" vy";s:2:"93";s:3:"a t";s:2:"94";s:4:"ké ";s:2:"95";s:3:"nos";s:2:"96";s:3:"o s";s:2:"97";s:3:"str";s:2:"98";s:3:"ti ";s:2:"99";s:3:"uje";s:3:"100";s:3:" sp";s:3:"101";s:3:"lov";s:3:"102";s:3:"o p";s:3:"103";s:3:"oli";s:3:"104";s:4:"ová";s:3:"105";s:4:" ná";s:3:"106";s:3:"ale";s:3:"107";s:3:"den";s:3:"108";s:3:"e o";s:3:"109";s:3:"ku ";s:3:"110";s:3:"val";s:3:"111";s:3:" am";s:3:"112";s:3:" ro";s:3:"113";s:3:" si";s:3:"114";s:3:"nie";s:3:"115";s:3:"pol";s:3:"116";s:3:"tra";s:3:"117";s:3:" al";s:3:"118";s:3:"ali";s:3:"119";s:3:"o v";s:3:"120";s:3:"tor";s:3:"121";s:3:" mo";s:3:"122";s:3:" ni";s:3:"123";s:3:"ci ";s:3:"124";s:3:"o n";s:3:"125";s:4:"ím ";s:3:"126";s:3:" le";s:3:"127";s:3:" pa";s:3:"128";s:3:" s ";s:3:"129";s:3:"al ";s:3:"130";s:3:"ati";s:3:"131";s:3:"ero";s:3:"132";s:3:"ove";s:3:"133";s:3:"rov";s:3:"134";s:4:"ván";s:3:"135";s:4:"ích";s:3:"136";s:3:" ja";s:3:"137";s:3:" z ";s:3:"138";s:4:"cké";s:3:"139";s:3:"e z";s:3:"140";s:3:" od";s:3:"141";s:3:"byl";s:3:"142";s:3:"de ";s:3:"143";s:3:"dob";s:3:"144";s:3:"nep";s:3:"145";s:3:"pra";s:3:"146";s:3:"ric";s:3:"147";s:3:"spo";s:3:"148";s:3:"tak";s:3:"149";s:4:" vš";s:3:"150";s:3:"a a";s:3:"151";s:3:"e t";s:3:"152";s:3:"lit";s:3:"153";s:3:"me ";s:3:"154";s:3:"nej";s:3:"155";s:3:"no ";s:3:"156";s:4:"nýc";s:3:"157";s:3:"o t";s:3:"158";s:3:"a j";s:3:"159";s:3:"e a";s:3:"160";s:3:"en ";s:3:"161";s:3:"est";s:3:"162";s:4:"jí ";s:3:"163";s:3:"mi ";s:3:"164";s:3:"slo";s:3:"165";s:4:"stá";s:3:"166";s:3:"u v";s:3:"167";s:3:"for";s:3:"168";s:3:"nou";s:3:"169";s:3:"pos";s:3:"170";s:4:"pře";s:3:"171";s:3:"si ";s:3:"172";s:3:"tom";s:3:"173";s:3:" vl";s:3:"174";s:3:"a z";s:3:"175";s:3:"ly ";s:3:"176";s:3:"orm";s:3:"177";s:3:"ris";s:3:"178";s:3:"za ";s:3:"179";s:4:"zák";s:3:"180";s:3:" k ";s:3:"181";s:3:"at ";s:3:"182";s:4:"cký";s:3:"183";s:3:"dno";s:3:"184";s:3:"dos";s:3:"185";s:3:"dy ";s:3:"186";s:3:"jak";s:3:"187";s:3:"kov";s:3:"188";s:3:"ny ";s:3:"189";s:3:"res";s:3:"190";s:3:"ror";s:3:"191";s:3:"sto";s:3:"192";s:3:"van";s:3:"193";s:3:" op";s:3:"194";s:3:"da ";s:3:"195";s:3:"do ";s:3:"196";s:3:"e j";s:3:"197";s:3:"hod";s:3:"198";s:3:"len";s:3:"199";s:4:"ný ";s:3:"200";s:3:"o z";s:3:"201";s:3:"poz";s:3:"202";s:3:"pri";s:3:"203";s:3:"ran";s:3:"204";s:3:"u s";s:3:"205";s:3:" ab";s:3:"206";s:3:"aj ";s:3:"207";s:3:"ast";s:3:"208";s:3:"it ";s:3:"209";s:3:"kto";s:3:"210";s:3:"o o";s:3:"211";s:3:"oby";s:3:"212";s:3:"odo";s:3:"213";s:3:"u p";s:3:"214";s:3:"va ";s:3:"215";s:5:"ání";s:3:"216";s:4:"í p";s:3:"217";s:4:"ým ";s:3:"218";s:3:" in";s:3:"219";s:3:" mi";s:3:"220";s:4:"ať ";s:3:"221";s:3:"dov";s:3:"222";s:3:"ka ";s:3:"223";s:3:"nsk";s:3:"224";s:4:"áln";s:3:"225";s:3:" an";s:3:"226";s:3:" bu";s:3:"227";s:3:" sl";s:3:"228";s:3:" tr";s:3:"229";s:3:"e m";s:3:"230";s:3:"ech";s:3:"231";s:3:"edn";s:3:"232";s:3:"i n";s:3:"233";s:4:"kýc";s:3:"234";s:4:"níc";s:3:"235";s:3:"ov ";s:3:"236";s:5:"pří";s:3:"237";s:4:"í a";s:3:"238";s:3:" aj";s:3:"239";s:3:" bo";s:3:"240";s:3:"a d";s:3:"241";s:3:"ide";s:3:"242";s:3:"o a";s:3:"243";s:3:"o d";s:3:"244";s:3:"och";s:3:"245";s:3:"pov";s:3:"246";s:3:"svo";s:3:"247";s:4:"é s";s:3:"248";s:3:" kd";s:3:"249";s:3:" vo";s:3:"250";s:4:" vý";s:3:"251";s:3:"bud";s:3:"252";s:3:"ich";s:3:"253";s:3:"il ";s:3:"254";s:3:"ili";s:3:"255";s:3:"ni ";s:3:"256";s:4:"ním";s:3:"257";s:3:"od ";s:3:"258";s:3:"osl";s:3:"259";s:3:"ouh";s:3:"260";s:3:"rav";s:3:"261";s:3:"roz";s:3:"262";s:3:"st ";s:3:"263";s:3:"stv";s:3:"264";s:3:"tu ";s:3:"265";s:3:"u a";s:3:"266";s:4:"vál";s:3:"267";s:3:"y s";s:3:"268";s:4:"í s";s:3:"269";s:4:"í v";s:3:"270";s:3:" hl";s:3:"271";s:3:" li";s:3:"272";s:3:" me";s:3:"273";s:3:"a m";s:3:"274";s:3:"e b";s:3:"275";s:3:"h s";s:3:"276";s:3:"i p";s:3:"277";s:3:"i s";s:3:"278";s:3:"iti";s:3:"279";s:4:"lád";s:3:"280";s:3:"nem";s:3:"281";s:3:"nov";s:3:"282";s:3:"opo";s:3:"283";s:3:"uhl";s:3:"284";s:3:"eno";s:3:"285";s:3:"ens";s:3:"286";s:3:"men";s:3:"287";s:3:"nes";s:3:"288";s:3:"obo";s:3:"289";s:3:"te ";s:3:"290";s:3:"ved";s:3:"291";s:4:"vlá";s:3:"292";s:3:"y n";s:3:"293";s:3:" ma";s:3:"294";s:3:" mu";s:3:"295";s:4:" vá";s:3:"296";s:3:"bez";s:3:"297";s:3:"byv";s:3:"298";s:3:"cho";s:3:"299";}s:7:"slovene";a:300:{s:3:"je ";s:1:"0";s:3:" pr";s:1:"1";s:3:" po";s:1:"2";s:3:" je";s:1:"3";s:3:" v ";s:1:"4";s:3:" za";s:1:"5";s:3:" na";s:1:"6";s:3:"pre";s:1:"7";s:3:"da ";s:1:"8";s:3:" da";s:1:"9";s:3:"ki ";s:2:"10";s:3:"ti ";s:2:"11";s:3:"ja ";s:2:"12";s:3:"ne ";s:2:"13";s:3:" in";s:2:"14";s:3:"in ";s:2:"15";s:3:"li ";s:2:"16";s:3:"no ";s:2:"17";s:3:"na ";s:2:"18";s:3:"ni ";s:2:"19";s:3:" bi";s:2:"20";s:3:"jo ";s:2:"21";s:3:" ne";s:2:"22";s:3:"nje";s:2:"23";s:3:"e p";s:2:"24";s:3:"i p";s:2:"25";s:3:"pri";s:2:"26";s:3:"o p";s:2:"27";s:3:"red";s:2:"28";s:3:" do";s:2:"29";s:3:"anj";s:2:"30";s:3:"em ";s:2:"31";s:3:"ih ";s:2:"32";s:3:" bo";s:2:"33";s:3:" ki";s:2:"34";s:3:" iz";s:2:"35";s:3:" se";s:2:"36";s:3:" so";s:2:"37";s:3:"al ";s:2:"38";s:3:" de";s:2:"39";s:3:"e v";s:2:"40";s:3:"i s";s:2:"41";s:3:"ko ";s:2:"42";s:3:"bil";s:2:"43";s:3:"ira";s:2:"44";s:3:"ove";s:2:"45";s:3:" br";s:2:"46";s:3:" ob";s:2:"47";s:3:"e b";s:2:"48";s:3:"i n";s:2:"49";s:3:"ova";s:2:"50";s:3:"se ";s:2:"51";s:3:"za ";s:2:"52";s:3:"la ";s:2:"53";s:3:" ja";s:2:"54";s:3:"ati";s:2:"55";s:3:"so ";s:2:"56";s:3:"ter";s:2:"57";s:3:" ta";s:2:"58";s:3:"a s";s:2:"59";s:3:"del";s:2:"60";s:3:"e d";s:2:"61";s:3:" dr";s:2:"62";s:3:" od";s:2:"63";s:3:"a n";s:2:"64";s:3:"ar ";s:2:"65";s:3:"jal";s:2:"66";s:3:"ji ";s:2:"67";s:3:"rit";s:2:"68";s:3:" ka";s:2:"69";s:3:" ko";s:2:"70";s:3:" pa";s:2:"71";s:3:"a b";s:2:"72";s:3:"ani";s:2:"73";s:3:"e s";s:2:"74";s:3:"er ";s:2:"75";s:3:"ili";s:2:"76";s:3:"lov";s:2:"77";s:3:"o v";s:2:"78";s:3:"tov";s:2:"79";s:3:" ir";s:2:"80";s:3:" ni";s:2:"81";s:3:" vo";s:2:"82";s:3:"a j";s:2:"83";s:3:"bi ";s:2:"84";s:3:"bri";s:2:"85";s:3:"iti";s:2:"86";s:3:"let";s:2:"87";s:3:"o n";s:2:"88";s:3:"tan";s:2:"89";s:4:"še ";s:2:"90";s:3:" le";s:2:"91";s:3:" te";s:2:"92";s:3:"eni";s:2:"93";s:3:"eri";s:2:"94";s:3:"ita";s:2:"95";s:3:"kat";s:2:"96";s:3:"por";s:2:"97";s:3:"pro";s:2:"98";s:3:"ali";s:2:"99";s:3:"ke ";s:3:"100";s:3:"oli";s:3:"101";s:3:"ov ";s:3:"102";s:3:"pra";s:3:"103";s:3:"ri ";s:3:"104";s:3:"uar";s:3:"105";s:3:"ve ";s:3:"106";s:3:" to";s:3:"107";s:3:"a i";s:3:"108";s:3:"a v";s:3:"109";s:3:"ako";s:3:"110";s:3:"arj";s:3:"111";s:3:"ate";s:3:"112";s:3:"di ";s:3:"113";s:3:"do ";s:3:"114";s:3:"ga ";s:3:"115";s:3:"le ";s:3:"116";s:3:"lo ";s:3:"117";s:3:"mer";s:3:"118";s:3:"o s";s:3:"119";s:3:"oda";s:3:"120";s:3:"oro";s:3:"121";s:3:"pod";s:3:"122";s:3:" ma";s:3:"123";s:3:" mo";s:3:"124";s:3:" si";s:3:"125";s:3:"a p";s:3:"126";s:3:"bod";s:3:"127";s:3:"e n";s:3:"128";s:3:"ega";s:3:"129";s:3:"ju ";s:3:"130";s:3:"ka ";s:3:"131";s:3:"lje";s:3:"132";s:3:"rav";s:3:"133";s:3:"ta ";s:3:"134";s:3:"a o";s:3:"135";s:3:"e t";s:3:"136";s:3:"e z";s:3:"137";s:3:"i d";s:3:"138";s:3:"i v";s:3:"139";s:3:"ila";s:3:"140";s:3:"lit";s:3:"141";s:3:"nih";s:3:"142";s:3:"odo";s:3:"143";s:3:"sti";s:3:"144";s:3:"to ";s:3:"145";s:3:"var";s:3:"146";s:3:"ved";s:3:"147";s:3:"vol";s:3:"148";s:3:" la";s:3:"149";s:3:" no";s:3:"150";s:3:" vs";s:3:"151";s:3:"a d";s:3:"152";s:3:"agu";s:3:"153";s:3:"aja";s:3:"154";s:3:"dej";s:3:"155";s:3:"dnj";s:3:"156";s:3:"eda";s:3:"157";s:3:"gov";s:3:"158";s:3:"gua";s:3:"159";s:3:"jag";s:3:"160";s:3:"jem";s:3:"161";s:3:"kon";s:3:"162";s:3:"ku ";s:3:"163";s:3:"nij";s:3:"164";s:3:"omo";s:3:"165";s:4:"oči";s:3:"166";s:3:"pov";s:3:"167";s:3:"rak";s:3:"168";s:3:"rja";s:3:"169";s:3:"sta";s:3:"170";s:3:"tev";s:3:"171";s:3:"a t";s:3:"172";s:3:"aj ";s:3:"173";s:3:"ed ";s:3:"174";s:3:"eja";s:3:"175";s:3:"ent";s:3:"176";s:3:"ev ";s:3:"177";s:3:"i i";s:3:"178";s:3:"i o";s:3:"179";s:3:"ijo";s:3:"180";s:3:"ist";s:3:"181";s:3:"ost";s:3:"182";s:3:"ske";s:3:"183";s:3:"str";s:3:"184";s:3:" ra";s:3:"185";s:3:" s ";s:3:"186";s:3:" tr";s:3:"187";s:4:" še";s:3:"188";s:3:"arn";s:3:"189";s:3:"bo ";s:3:"190";s:4:"drž";s:3:"191";s:3:"i j";s:3:"192";s:3:"ilo";s:3:"193";s:3:"izv";s:3:"194";s:3:"jen";s:3:"195";s:3:"lja";s:3:"196";s:3:"nsk";s:3:"197";s:3:"o d";s:3:"198";s:3:"o i";s:3:"199";s:3:"om ";s:3:"200";s:3:"ora";s:3:"201";s:3:"ovo";s:3:"202";s:3:"raz";s:3:"203";s:4:"rža";s:3:"204";s:3:"tak";s:3:"205";s:3:"va ";s:3:"206";s:3:"ven";s:3:"207";s:4:"žav";s:3:"208";s:3:" me";s:3:"209";s:4:" če";s:3:"210";s:3:"ame";s:3:"211";s:3:"avi";s:3:"212";s:3:"e i";s:3:"213";s:3:"e o";s:3:"214";s:3:"eka";s:3:"215";s:3:"gre";s:3:"216";s:3:"i t";s:3:"217";s:3:"ija";s:3:"218";s:3:"il ";s:3:"219";s:3:"ite";s:3:"220";s:3:"kra";s:3:"221";s:3:"lju";s:3:"222";s:3:"mor";s:3:"223";s:3:"nik";s:3:"224";s:3:"o t";s:3:"225";s:3:"obi";s:3:"226";s:3:"odn";s:3:"227";s:3:"ran";s:3:"228";s:3:"re ";s:3:"229";s:3:"sto";s:3:"230";s:3:"stv";s:3:"231";s:3:"udi";s:3:"232";s:3:"v i";s:3:"233";s:3:"van";s:3:"234";s:3:" am";s:3:"235";s:3:" sp";s:3:"236";s:3:" st";s:3:"237";s:3:" tu";s:3:"238";s:3:" ve";s:3:"239";s:4:" že";s:3:"240";s:3:"ajo";s:3:"241";s:3:"ale";s:3:"242";s:3:"apo";s:3:"243";s:3:"dal";s:3:"244";s:3:"dru";s:3:"245";s:3:"e j";s:3:"246";s:3:"edn";s:3:"247";s:3:"ejo";s:3:"248";s:3:"elo";s:3:"249";s:3:"est";s:3:"250";s:3:"etj";s:3:"251";s:3:"eva";s:3:"252";s:3:"iji";s:3:"253";s:3:"ik ";s:3:"254";s:3:"im ";s:3:"255";s:3:"itv";s:3:"256";s:3:"mob";s:3:"257";s:3:"nap";s:3:"258";s:3:"nek";s:3:"259";s:3:"pol";s:3:"260";s:3:"pos";s:3:"261";s:3:"rat";s:3:"262";s:3:"ski";s:3:"263";s:4:"tič";s:3:"264";s:3:"tom";s:3:"265";s:3:"ton";s:3:"266";s:3:"tra";s:3:"267";s:3:"tud";s:3:"268";s:3:"tve";s:3:"269";s:3:"v b";s:3:"270";s:3:"vil";s:3:"271";s:3:"vse";s:3:"272";s:4:"čit";s:3:"273";s:3:" av";s:3:"274";s:3:" gr";s:3:"275";s:3:"a z";s:3:"276";s:3:"ans";s:3:"277";s:3:"ast";s:3:"278";s:3:"avt";s:3:"279";s:3:"dan";s:3:"280";s:3:"e m";s:3:"281";s:3:"eds";s:3:"282";s:3:"for";s:3:"283";s:3:"i z";s:3:"284";s:3:"kot";s:3:"285";s:3:"mi ";s:3:"286";s:3:"nim";s:3:"287";s:3:"o b";s:3:"288";s:3:"o o";s:3:"289";s:3:"od ";s:3:"290";s:3:"odl";s:3:"291";s:3:"oiz";s:3:"292";s:3:"ot ";s:3:"293";s:3:"par";s:3:"294";s:3:"pot";s:3:"295";s:3:"rje";s:3:"296";s:3:"roi";s:3:"297";s:3:"tem";s:3:"298";s:3:"val";s:3:"299";}s:6:"somali";a:300:{s:3:"ka ";s:1:"0";s:3:"ay ";s:1:"1";s:3:"da ";s:1:"2";s:3:" ay";s:1:"3";s:3:"aal";s:1:"4";s:3:"oo ";s:1:"5";s:3:"aan";s:1:"6";s:3:" ka";s:1:"7";s:3:"an ";s:1:"8";s:3:"in ";s:1:"9";s:3:" in";s:2:"10";s:3:"ada";s:2:"11";s:3:"maa";s:2:"12";s:3:"aba";s:2:"13";s:3:" so";s:2:"14";s:3:"ali";s:2:"15";s:3:"bad";s:2:"16";s:3:"add";s:2:"17";s:3:"soo";s:2:"18";s:3:" na";s:2:"19";s:3:"aha";s:2:"20";s:3:"ku ";s:2:"21";s:3:"ta ";s:2:"22";s:3:" wa";s:2:"23";s:3:"yo ";s:2:"24";s:3:"a s";s:2:"25";s:3:"oma";s:2:"26";s:3:"yaa";s:2:"27";s:3:" ba";s:2:"28";s:3:" ku";s:2:"29";s:3:" la";s:2:"30";s:3:" oo";s:2:"31";s:3:"iya";s:2:"32";s:3:"sha";s:2:"33";s:3:"a a";s:2:"34";s:3:"dda";s:2:"35";s:3:"nab";s:2:"36";s:3:"nta";s:2:"37";s:3:" da";s:2:"38";s:3:" ma";s:2:"39";s:3:"nka";s:2:"40";s:3:"uu ";s:2:"41";s:3:"y i";s:2:"42";s:3:"aya";s:2:"43";s:3:"ha ";s:2:"44";s:3:"raa";s:2:"45";s:3:" dh";s:2:"46";s:3:" qa";s:2:"47";s:3:"a k";s:2:"48";s:3:"ala";s:2:"49";s:3:"baa";s:2:"50";s:3:"doo";s:2:"51";s:3:"had";s:2:"52";s:3:"liy";s:2:"53";s:3:"oom";s:2:"54";s:3:" ha";s:2:"55";s:3:" sh";s:2:"56";s:3:"a d";s:2:"57";s:3:"a i";s:2:"58";s:3:"a n";s:2:"59";s:3:"aar";s:2:"60";s:3:"ee ";s:2:"61";s:3:"ey ";s:2:"62";s:3:"y k";s:2:"63";s:3:"ya ";s:2:"64";s:3:" ee";s:2:"65";s:3:" iy";s:2:"66";s:3:"aa ";s:2:"67";s:3:"aaq";s:2:"68";s:3:"gaa";s:2:"69";s:3:"lam";s:2:"70";s:3:" bu";s:2:"71";s:3:"a b";s:2:"72";s:3:"a m";s:2:"73";s:3:"ad ";s:2:"74";s:3:"aga";s:2:"75";s:3:"ama";s:2:"76";s:3:"iyo";s:2:"77";s:3:"la ";s:2:"78";s:3:"a c";s:2:"79";s:3:"a l";s:2:"80";s:3:"een";s:2:"81";s:3:"int";s:2:"82";s:3:"she";s:2:"83";s:3:"wax";s:2:"84";s:3:"yee";s:2:"85";s:3:" si";s:2:"86";s:3:" uu";s:2:"87";s:3:"a h";s:2:"88";s:3:"aas";s:2:"89";s:3:"alk";s:2:"90";s:3:"dha";s:2:"91";s:3:"gu ";s:2:"92";s:3:"hee";s:2:"93";s:3:"ii ";s:2:"94";s:3:"ira";s:2:"95";s:3:"mad";s:2:"96";s:3:"o a";s:2:"97";s:3:"o k";s:2:"98";s:3:"qay";s:2:"99";s:3:" ah";s:3:"100";s:3:" ca";s:3:"101";s:3:" wu";s:3:"102";s:3:"ank";s:3:"103";s:3:"ash";s:3:"104";s:3:"axa";s:3:"105";s:3:"eed";s:3:"106";s:3:"en ";s:3:"107";s:3:"ga ";s:3:"108";s:3:"haa";s:3:"109";s:3:"n a";s:3:"110";s:3:"n s";s:3:"111";s:3:"naa";s:3:"112";s:3:"nay";s:3:"113";s:3:"o d";s:3:"114";s:3:"taa";s:3:"115";s:3:"u b";s:3:"116";s:3:"uxu";s:3:"117";s:3:"wux";s:3:"118";s:3:"xuu";s:3:"119";s:3:" ci";s:3:"120";s:3:" do";s:3:"121";s:3:" ho";s:3:"122";s:3:" ta";s:3:"123";s:3:"a g";s:3:"124";s:3:"a u";s:3:"125";s:3:"ana";s:3:"126";s:3:"ayo";s:3:"127";s:3:"dhi";s:3:"128";s:3:"iin";s:3:"129";s:3:"lag";s:3:"130";s:3:"lin";s:3:"131";s:3:"lka";s:3:"132";s:3:"o i";s:3:"133";s:3:"san";s:3:"134";s:3:"u s";s:3:"135";s:3:"una";s:3:"136";s:3:"uun";s:3:"137";s:3:" ga";s:3:"138";s:3:" xa";s:3:"139";s:3:" xu";s:3:"140";s:3:"aab";s:3:"141";s:3:"abt";s:3:"142";s:3:"aq ";s:3:"143";s:3:"aqa";s:3:"144";s:3:"ara";s:3:"145";s:3:"arl";s:3:"146";s:3:"caa";s:3:"147";s:3:"cir";s:3:"148";s:3:"eeg";s:3:"149";s:3:"eel";s:3:"150";s:3:"isa";s:3:"151";s:3:"kal";s:3:"152";s:3:"lah";s:3:"153";s:3:"ney";s:3:"154";s:3:"qaa";s:3:"155";s:3:"rla";s:3:"156";s:3:"sad";s:3:"157";s:3:"sii";s:3:"158";s:3:"u d";s:3:"159";s:3:"wad";s:3:"160";s:3:" ad";s:3:"161";s:3:" ar";s:3:"162";s:3:" di";s:3:"163";s:3:" jo";s:3:"164";s:3:" ra";s:3:"165";s:3:" sa";s:3:"166";s:3:" u ";s:3:"167";s:3:" yi";s:3:"168";s:3:"a j";s:3:"169";s:3:"a q";s:3:"170";s:3:"aad";s:3:"171";s:3:"aat";s:3:"172";s:3:"aay";s:3:"173";s:3:"ah ";s:3:"174";s:3:"ale";s:3:"175";s:3:"amk";s:3:"176";s:3:"ari";s:3:"177";s:3:"as ";s:3:"178";s:3:"aye";s:3:"179";s:3:"bus";s:3:"180";s:3:"dal";s:3:"181";s:3:"ddu";s:3:"182";s:3:"dii";s:3:"183";s:3:"du ";s:3:"184";s:3:"duu";s:3:"185";s:3:"ed ";s:3:"186";s:3:"ege";s:3:"187";s:3:"gey";s:3:"188";s:3:"hay";s:3:"189";s:3:"hii";s:3:"190";s:3:"ida";s:3:"191";s:3:"ine";s:3:"192";s:3:"joo";s:3:"193";s:3:"laa";s:3:"194";s:3:"lay";s:3:"195";s:3:"mar";s:3:"196";s:3:"mee";s:3:"197";s:3:"n b";s:3:"198";s:3:"n d";s:3:"199";s:3:"n m";s:3:"200";s:3:"no ";s:3:"201";s:3:"o b";s:3:"202";s:3:"o l";s:3:"203";s:3:"oog";s:3:"204";s:3:"oon";s:3:"205";s:3:"rga";s:3:"206";s:3:"sh ";s:3:"207";s:3:"sid";s:3:"208";s:3:"u q";s:3:"209";s:3:"unk";s:3:"210";s:3:"ush";s:3:"211";s:3:"xa ";s:3:"212";s:3:"y d";s:3:"213";s:3:" bi";s:3:"214";s:3:" gu";s:3:"215";s:3:" is";s:3:"216";s:3:" ke";s:3:"217";s:3:" lo";s:3:"218";s:3:" me";s:3:"219";s:3:" mu";s:3:"220";s:3:" qo";s:3:"221";s:3:" ug";s:3:"222";s:3:"a e";s:3:"223";s:3:"a o";s:3:"224";s:3:"a w";s:3:"225";s:3:"adi";s:3:"226";s:3:"ado";s:3:"227";s:3:"agu";s:3:"228";s:3:"al ";s:3:"229";s:3:"ant";s:3:"230";s:3:"ark";s:3:"231";s:3:"asa";s:3:"232";s:3:"awi";s:3:"233";s:3:"bta";s:3:"234";s:3:"bul";s:3:"235";s:3:"d a";s:3:"236";s:3:"dag";s:3:"237";s:3:"dan";s:3:"238";s:3:"do ";s:3:"239";s:3:"e s";s:3:"240";s:3:"gal";s:3:"241";s:3:"gay";s:3:"242";s:3:"guu";s:3:"243";s:3:"h e";s:3:"244";s:3:"hal";s:3:"245";s:3:"iga";s:3:"246";s:3:"ihi";s:3:"247";s:3:"iri";s:3:"248";s:3:"iye";s:3:"249";s:3:"ken";s:3:"250";s:3:"lad";s:3:"251";s:3:"lid";s:3:"252";s:3:"lsh";s:3:"253";s:3:"mag";s:3:"254";s:3:"mun";s:3:"255";s:3:"n h";s:3:"256";s:3:"n i";s:3:"257";s:3:"na ";s:3:"258";s:3:"o n";s:3:"259";s:3:"o w";s:3:"260";s:3:"ood";s:3:"261";s:3:"oor";s:3:"262";s:3:"ora";s:3:"263";s:3:"qab";s:3:"264";s:3:"qor";s:3:"265";s:3:"rab";s:3:"266";s:3:"rit";s:3:"267";s:3:"rta";s:3:"268";s:3:"s o";s:3:"269";s:3:"sab";s:3:"270";s:3:"ska";s:3:"271";s:3:"to ";s:3:"272";s:3:"u a";s:3:"273";s:3:"u h";s:3:"274";s:3:"u u";s:3:"275";s:3:"ud ";s:3:"276";s:3:"ugu";s:3:"277";s:3:"uls";s:3:"278";s:3:"uud";s:3:"279";s:3:"waa";s:3:"280";s:3:"xus";s:3:"281";s:3:"y b";s:3:"282";s:3:"y q";s:3:"283";s:3:"y s";s:3:"284";s:3:"yad";s:3:"285";s:3:"yay";s:3:"286";s:3:"yih";s:3:"287";s:3:" aa";s:3:"288";s:3:" bo";s:3:"289";s:3:" br";s:3:"290";s:3:" go";s:3:"291";s:3:" ji";s:3:"292";s:3:" mi";s:3:"293";s:3:" of";s:3:"294";s:3:" ti";s:3:"295";s:3:" um";s:3:"296";s:3:" wi";s:3:"297";s:3:" xo";s:3:"298";s:3:"a x";s:3:"299";}s:7:"spanish";a:300:{s:3:" de";s:1:"0";s:3:"de ";s:1:"1";s:3:" la";s:1:"2";s:3:"os ";s:1:"3";s:3:"la ";s:1:"4";s:3:"el ";s:1:"5";s:3:"es ";s:1:"6";s:3:" qu";s:1:"7";s:3:" co";s:1:"8";s:3:"e l";s:1:"9";s:3:"as ";s:2:"10";s:3:"que";s:2:"11";s:3:" el";s:2:"12";s:3:"ue ";s:2:"13";s:3:"en ";s:2:"14";s:3:"ent";s:2:"15";s:3:" en";s:2:"16";s:3:" se";s:2:"17";s:3:"nte";s:2:"18";s:3:"res";s:2:"19";s:3:"con";s:2:"20";s:3:"est";s:2:"21";s:3:" es";s:2:"22";s:3:"s d";s:2:"23";s:3:" lo";s:2:"24";s:3:" pr";s:2:"25";s:3:"los";s:2:"26";s:3:" y ";s:2:"27";s:3:"do ";s:2:"28";s:4:"ón ";s:2:"29";s:4:"ión";s:2:"30";s:3:" un";s:2:"31";s:4:"ció";s:2:"32";s:3:"del";s:2:"33";s:3:"o d";s:2:"34";s:3:" po";s:2:"35";s:3:"a d";s:2:"36";s:3:"aci";s:2:"37";s:3:"sta";s:2:"38";s:3:"te ";s:2:"39";s:3:"ado";s:2:"40";s:3:"pre";s:2:"41";s:3:"to ";s:2:"42";s:3:"par";s:2:"43";s:3:"a e";s:2:"44";s:3:"a l";s:2:"45";s:3:"ra ";s:2:"46";s:3:"al ";s:2:"47";s:3:"e e";s:2:"48";s:3:"se ";s:2:"49";s:3:"pro";s:2:"50";s:3:"ar ";s:2:"51";s:3:"ia ";s:2:"52";s:3:"o e";s:2:"53";s:3:" re";s:2:"54";s:3:"ida";s:2:"55";s:3:"dad";s:2:"56";s:3:"tra";s:2:"57";s:3:"por";s:2:"58";s:3:"s p";s:2:"59";s:3:" a ";s:2:"60";s:3:"a p";s:2:"61";s:3:"ara";s:2:"62";s:3:"cia";s:2:"63";s:3:" pa";s:2:"64";s:3:"com";s:2:"65";s:3:"no ";s:2:"66";s:3:" di";s:2:"67";s:3:" in";s:2:"68";s:3:"ien";s:2:"69";s:3:"n l";s:2:"70";s:3:"ad ";s:2:"71";s:3:"ant";s:2:"72";s:3:"e s";s:2:"73";s:3:"men";s:2:"74";s:3:"a c";s:2:"75";s:3:"on ";s:2:"76";s:3:"un ";s:2:"77";s:3:"las";s:2:"78";s:3:"nci";s:2:"79";s:3:" tr";s:2:"80";s:3:"cio";s:2:"81";s:3:"ier";s:2:"82";s:3:"nto";s:2:"83";s:3:"tiv";s:2:"84";s:3:"n d";s:2:"85";s:3:"n e";s:2:"86";s:3:"or ";s:2:"87";s:3:"s c";s:2:"88";s:3:"enc";s:2:"89";s:3:"ern";s:2:"90";s:3:"io ";s:2:"91";s:3:"a s";s:2:"92";s:3:"ici";s:2:"93";s:3:"s e";s:2:"94";s:3:" ma";s:2:"95";s:3:"dos";s:2:"96";s:3:"e a";s:2:"97";s:3:"e c";s:2:"98";s:3:"emp";s:2:"99";s:3:"ica";s:3:"100";s:3:"ivo";s:3:"101";s:3:"l p";s:3:"102";s:3:"n c";s:3:"103";s:3:"r e";s:3:"104";s:3:"ta ";s:3:"105";s:3:"ter";s:3:"106";s:3:"e d";s:3:"107";s:3:"esa";s:3:"108";s:3:"ez ";s:3:"109";s:3:"mpr";s:3:"110";s:3:"o a";s:3:"111";s:3:"s a";s:3:"112";s:3:" ca";s:3:"113";s:3:" su";s:3:"114";s:3:"ion";s:3:"115";s:3:" cu";s:3:"116";s:3:" ju";s:3:"117";s:3:"an ";s:3:"118";s:3:"da ";s:3:"119";s:3:"ene";s:3:"120";s:3:"ero";s:3:"121";s:3:"na ";s:3:"122";s:3:"rec";s:3:"123";s:3:"ro ";s:3:"124";s:3:"tar";s:3:"125";s:3:" al";s:3:"126";s:3:" an";s:3:"127";s:3:"bie";s:3:"128";s:3:"e p";s:3:"129";s:3:"er ";s:3:"130";s:3:"l c";s:3:"131";s:3:"n p";s:3:"132";s:3:"omp";s:3:"133";s:3:"ten";s:3:"134";s:3:" em";s:3:"135";s:3:"ist";s:3:"136";s:3:"nes";s:3:"137";s:3:"nta";s:3:"138";s:3:"o c";s:3:"139";s:3:"so ";s:3:"140";s:3:"tes";s:3:"141";s:3:"era";s:3:"142";s:3:"l d";s:3:"143";s:3:"l m";s:3:"144";s:3:"les";s:3:"145";s:3:"ntr";s:3:"146";s:3:"o s";s:3:"147";s:3:"ore";s:3:"148";s:4:"rá ";s:3:"149";s:3:"s q";s:3:"150";s:3:"s y";s:3:"151";s:3:"sto";s:3:"152";s:3:"a a";s:3:"153";s:3:"a r";s:3:"154";s:3:"ari";s:3:"155";s:3:"des";s:3:"156";s:3:"e q";s:3:"157";s:3:"ivi";s:3:"158";s:3:"lic";s:3:"159";s:3:"lo ";s:3:"160";s:3:"n a";s:3:"161";s:3:"one";s:3:"162";s:3:"ora";s:3:"163";s:3:"per";s:3:"164";s:3:"pue";s:3:"165";s:3:"r l";s:3:"166";s:3:"re ";s:3:"167";s:3:"ren";s:3:"168";s:3:"una";s:3:"169";s:4:"ía ";s:3:"170";s:3:"ada";s:3:"171";s:3:"cas";s:3:"172";s:3:"ere";s:3:"173";s:3:"ide";s:3:"174";s:3:"min";s:3:"175";s:3:"n s";s:3:"176";s:3:"ndo";s:3:"177";s:3:"ran";s:3:"178";s:3:"rno";s:3:"179";s:3:" ac";s:3:"180";s:3:" ex";s:3:"181";s:3:" go";s:3:"182";s:3:" no";s:3:"183";s:3:"a t";s:3:"184";s:3:"aba";s:3:"185";s:3:"ble";s:3:"186";s:3:"ece";s:3:"187";s:3:"ect";s:3:"188";s:3:"l a";s:3:"189";s:3:"l g";s:3:"190";s:3:"lid";s:3:"191";s:3:"nsi";s:3:"192";s:3:"ons";s:3:"193";s:3:"rac";s:3:"194";s:3:"rio";s:3:"195";s:3:"str";s:3:"196";s:3:"uer";s:3:"197";s:3:"ust";s:3:"198";s:3:" ha";s:3:"199";s:3:" le";s:3:"200";s:3:" mi";s:3:"201";s:3:" mu";s:3:"202";s:3:" ob";s:3:"203";s:3:" pe";s:3:"204";s:3:" pu";s:3:"205";s:3:" so";s:3:"206";s:3:"a i";s:3:"207";s:3:"ale";s:3:"208";s:3:"ca ";s:3:"209";s:3:"cto";s:3:"210";s:3:"e i";s:3:"211";s:3:"e u";s:3:"212";s:3:"eso";s:3:"213";s:3:"fer";s:3:"214";s:3:"fic";s:3:"215";s:3:"gob";s:3:"216";s:3:"jo ";s:3:"217";s:3:"ma ";s:3:"218";s:3:"mpl";s:3:"219";s:3:"o p";s:3:"220";s:3:"obi";s:3:"221";s:3:"s m";s:3:"222";s:3:"sa ";s:3:"223";s:3:"sep";s:3:"224";s:3:"ste";s:3:"225";s:3:"sti";s:3:"226";s:3:"tad";s:3:"227";s:3:"tod";s:3:"228";s:3:"y s";s:3:"229";s:3:" ci";s:3:"230";s:3:"and";s:3:"231";s:3:"ces";s:3:"232";s:4:"có ";s:3:"233";s:3:"dor";s:3:"234";s:3:"e m";s:3:"235";s:3:"eci";s:3:"236";s:3:"eco";s:3:"237";s:3:"esi";s:3:"238";s:3:"int";s:3:"239";s:3:"iza";s:3:"240";s:3:"l e";s:3:"241";s:3:"lar";s:3:"242";s:3:"mie";s:3:"243";s:3:"ner";s:3:"244";s:3:"orc";s:3:"245";s:3:"rci";s:3:"246";s:3:"ria";s:3:"247";s:3:"tic";s:3:"248";s:3:"tor";s:3:"249";s:3:" as";s:3:"250";s:3:" si";s:3:"251";s:3:"ce ";s:3:"252";s:3:"den";s:3:"253";s:3:"e r";s:3:"254";s:3:"e t";s:3:"255";s:3:"end";s:3:"256";s:3:"eri";s:3:"257";s:3:"esp";s:3:"258";s:3:"ial";s:3:"259";s:3:"ido";s:3:"260";s:3:"ina";s:3:"261";s:3:"inc";s:3:"262";s:3:"mit";s:3:"263";s:3:"o l";s:3:"264";s:3:"ome";s:3:"265";s:3:"pli";s:3:"266";s:3:"ras";s:3:"267";s:3:"s t";s:3:"268";s:3:"sid";s:3:"269";s:3:"sup";s:3:"270";s:3:"tab";s:3:"271";s:3:"uen";s:3:"272";s:3:"ues";s:3:"273";s:3:"ura";s:3:"274";s:3:"vo ";s:3:"275";s:3:"vor";s:3:"276";s:3:" sa";s:3:"277";s:3:" ti";s:3:"278";s:3:"abl";s:3:"279";s:3:"ali";s:3:"280";s:3:"aso";s:3:"281";s:3:"ast";s:3:"282";s:3:"cor";s:3:"283";s:3:"cti";s:3:"284";s:3:"cue";s:3:"285";s:3:"div";s:3:"286";s:3:"duc";s:3:"287";s:3:"ens";s:3:"288";s:3:"eti";s:3:"289";s:3:"imi";s:3:"290";s:3:"ini";s:3:"291";s:3:"lec";s:3:"292";s:3:"o q";s:3:"293";s:3:"oce";s:3:"294";s:3:"ort";s:3:"295";s:3:"ral";s:3:"296";s:3:"rma";s:3:"297";s:3:"roc";s:3:"298";s:3:"rod";s:3:"299";}s:7:"swahili";a:300:{s:3:" wa";s:1:"0";s:3:"wa ";s:1:"1";s:3:"a k";s:1:"2";s:3:"a m";s:1:"3";s:3:" ku";s:1:"4";s:3:" ya";s:1:"5";s:3:"a w";s:1:"6";s:3:"ya ";s:1:"7";s:3:"ni ";s:1:"8";s:3:" ma";s:1:"9";s:3:"ka ";s:2:"10";s:3:"a u";s:2:"11";s:3:"na ";s:2:"12";s:3:"za ";s:2:"13";s:3:"ia ";s:2:"14";s:3:" na";s:2:"15";s:3:"ika";s:2:"16";s:3:"ma ";s:2:"17";s:3:"ali";s:2:"18";s:3:"a n";s:2:"19";s:3:" am";s:2:"20";s:3:"ili";s:2:"21";s:3:"kwa";s:2:"22";s:3:" kw";s:2:"23";s:3:"ini";s:2:"24";s:3:" ha";s:2:"25";s:3:"ame";s:2:"26";s:3:"ana";s:2:"27";s:3:"i n";s:2:"28";s:3:" za";s:2:"29";s:3:"a h";s:2:"30";s:3:"ema";s:2:"31";s:3:"i m";s:2:"32";s:3:"i y";s:2:"33";s:3:"kuw";s:2:"34";s:3:"la ";s:2:"35";s:3:"o w";s:2:"36";s:3:"a y";s:2:"37";s:3:"ata";s:2:"38";s:3:"sem";s:2:"39";s:3:" la";s:2:"40";s:3:"ati";s:2:"41";s:3:"chi";s:2:"42";s:3:"i w";s:2:"43";s:3:"uwa";s:2:"44";s:3:"aki";s:2:"45";s:3:"li ";s:2:"46";s:3:"eka";s:2:"47";s:3:"ira";s:2:"48";s:3:" nc";s:2:"49";s:3:"a s";s:2:"50";s:3:"iki";s:2:"51";s:3:"kat";s:2:"52";s:3:"nch";s:2:"53";s:3:" ka";s:2:"54";s:3:" ki";s:2:"55";s:3:"a b";s:2:"56";s:3:"aji";s:2:"57";s:3:"amb";s:2:"58";s:3:"ra ";s:2:"59";s:3:"ri ";s:2:"60";s:3:"rik";s:2:"61";s:3:"ada";s:2:"62";s:3:"mat";s:2:"63";s:3:"mba";s:2:"64";s:3:"mes";s:2:"65";s:3:"yo ";s:2:"66";s:3:"zi ";s:2:"67";s:3:"da ";s:2:"68";s:3:"hi ";s:2:"69";s:3:"i k";s:2:"70";s:3:"ja ";s:2:"71";s:3:"kut";s:2:"72";s:3:"tek";s:2:"73";s:3:"wan";s:2:"74";s:3:" bi";s:2:"75";s:3:"a a";s:2:"76";s:3:"aka";s:2:"77";s:3:"ao ";s:2:"78";s:3:"asi";s:2:"79";s:3:"cha";s:2:"80";s:3:"ese";s:2:"81";s:3:"eza";s:2:"82";s:3:"ke ";s:2:"83";s:3:"moj";s:2:"84";s:3:"oja";s:2:"85";s:3:" hi";s:2:"86";s:3:"a z";s:2:"87";s:3:"end";s:2:"88";s:3:"ha ";s:2:"89";s:3:"ji ";s:2:"90";s:3:"mu ";s:2:"91";s:3:"shi";s:2:"92";s:3:"wat";s:2:"93";s:3:" bw";s:2:"94";s:3:"ake";s:2:"95";s:3:"ara";s:2:"96";s:3:"bw ";s:2:"97";s:3:"i h";s:2:"98";s:3:"imb";s:2:"99";s:3:"tik";s:3:"100";s:3:"wak";s:3:"101";s:3:"wal";s:3:"102";s:3:" hu";s:3:"103";s:3:" mi";s:3:"104";s:3:" mk";s:3:"105";s:3:" ni";s:3:"106";s:3:" ra";s:3:"107";s:3:" um";s:3:"108";s:3:"a l";s:3:"109";s:3:"ate";s:3:"110";s:3:"esh";s:3:"111";s:3:"ina";s:3:"112";s:3:"ish";s:3:"113";s:3:"kim";s:3:"114";s:3:"o k";s:3:"115";s:3:" ir";s:3:"116";s:3:"a i";s:3:"117";s:3:"ala";s:3:"118";s:3:"ani";s:3:"119";s:3:"aq ";s:3:"120";s:3:"azi";s:3:"121";s:3:"hin";s:3:"122";s:3:"i a";s:3:"123";s:3:"idi";s:3:"124";s:3:"ima";s:3:"125";s:3:"ita";s:3:"126";s:3:"rai";s:3:"127";s:3:"raq";s:3:"128";s:3:"sha";s:3:"129";s:3:" ms";s:3:"130";s:3:" se";s:3:"131";s:3:"afr";s:3:"132";s:3:"ama";s:3:"133";s:3:"ano";s:3:"134";s:3:"ea ";s:3:"135";s:3:"ele";s:3:"136";s:3:"fri";s:3:"137";s:3:"go ";s:3:"138";s:3:"i i";s:3:"139";s:3:"ifa";s:3:"140";s:3:"iwa";s:3:"141";s:3:"iyo";s:3:"142";s:3:"kus";s:3:"143";s:3:"lia";s:3:"144";s:3:"lio";s:3:"145";s:3:"maj";s:3:"146";s:3:"mku";s:3:"147";s:3:"no ";s:3:"148";s:3:"tan";s:3:"149";s:3:"uli";s:3:"150";s:3:"uta";s:3:"151";s:3:"wen";s:3:"152";s:3:" al";s:3:"153";s:3:"a j";s:3:"154";s:3:"aad";s:3:"155";s:3:"aid";s:3:"156";s:3:"ari";s:3:"157";s:3:"awa";s:3:"158";s:3:"ba ";s:3:"159";s:3:"fa ";s:3:"160";s:3:"nde";s:3:"161";s:3:"nge";s:3:"162";s:3:"nya";s:3:"163";s:3:"o y";s:3:"164";s:3:"u w";s:3:"165";s:3:"ua ";s:3:"166";s:3:"umo";s:3:"167";s:3:"waz";s:3:"168";s:3:"ye ";s:3:"169";s:3:" ut";s:3:"170";s:3:" vi";s:3:"171";s:3:"a d";s:3:"172";s:3:"a t";s:3:"173";s:3:"aif";s:3:"174";s:3:"di ";s:3:"175";s:3:"ere";s:3:"176";s:3:"ing";s:3:"177";s:3:"kin";s:3:"178";s:3:"nda";s:3:"179";s:3:"o n";s:3:"180";s:3:"oa ";s:3:"181";s:3:"tai";s:3:"182";s:3:"toa";s:3:"183";s:3:"usa";s:3:"184";s:3:"uto";s:3:"185";s:3:"was";s:3:"186";s:3:"yak";s:3:"187";s:3:"zo ";s:3:"188";s:3:" ji";s:3:"189";s:3:" mw";s:3:"190";s:3:"a p";s:3:"191";s:3:"aia";s:3:"192";s:3:"amu";s:3:"193";s:3:"ang";s:3:"194";s:3:"bik";s:3:"195";s:3:"bo ";s:3:"196";s:3:"del";s:3:"197";s:3:"e w";s:3:"198";s:3:"ene";s:3:"199";s:3:"eng";s:3:"200";s:3:"ich";s:3:"201";s:3:"iri";s:3:"202";s:3:"iti";s:3:"203";s:3:"ito";s:3:"204";s:3:"ki ";s:3:"205";s:3:"kir";s:3:"206";s:3:"ko ";s:3:"207";s:3:"kuu";s:3:"208";s:3:"mar";s:3:"209";s:3:"mbo";s:3:"210";s:3:"mil";s:3:"211";s:3:"ngi";s:3:"212";s:3:"ngo";s:3:"213";s:3:"o l";s:3:"214";s:3:"ong";s:3:"215";s:3:"si ";s:3:"216";s:3:"ta ";s:3:"217";s:3:"tak";s:3:"218";s:3:"u y";s:3:"219";s:3:"umu";s:3:"220";s:3:"usi";s:3:"221";s:3:"uu ";s:3:"222";s:3:"wam";s:3:"223";s:3:" af";s:3:"224";s:3:" ba";s:3:"225";s:3:" li";s:3:"226";s:3:" si";s:3:"227";s:3:" zi";s:3:"228";s:3:"a v";s:3:"229";s:3:"ami";s:3:"230";s:3:"atu";s:3:"231";s:3:"awi";s:3:"232";s:3:"eri";s:3:"233";s:3:"fan";s:3:"234";s:3:"fur";s:3:"235";s:3:"ger";s:3:"236";s:3:"i z";s:3:"237";s:3:"isi";s:3:"238";s:3:"izo";s:3:"239";s:3:"lea";s:3:"240";s:3:"mbi";s:3:"241";s:3:"mwa";s:3:"242";s:3:"nye";s:3:"243";s:3:"o h";s:3:"244";s:3:"o m";s:3:"245";s:3:"oni";s:3:"246";s:3:"rez";s:3:"247";s:3:"saa";s:3:"248";s:3:"ser";s:3:"249";s:3:"sin";s:3:"250";s:3:"tat";s:3:"251";s:3:"tis";s:3:"252";s:3:"tu ";s:3:"253";s:3:"uin";s:3:"254";s:3:"uki";s:3:"255";s:3:"ur ";s:3:"256";s:3:"wi ";s:3:"257";s:3:"yar";s:3:"258";s:3:" da";s:3:"259";s:3:" en";s:3:"260";s:3:" mp";s:3:"261";s:3:" ny";s:3:"262";s:3:" ta";s:3:"263";s:3:" ul";s:3:"264";s:3:" we";s:3:"265";s:3:"a c";s:3:"266";s:3:"a f";s:3:"267";s:3:"ais";s:3:"268";s:3:"apo";s:3:"269";s:3:"ayo";s:3:"270";s:3:"bar";s:3:"271";s:3:"dhi";s:3:"272";s:3:"e a";s:3:"273";s:3:"eke";s:3:"274";s:3:"eny";s:3:"275";s:3:"eon";s:3:"276";s:3:"hai";s:3:"277";s:3:"han";s:3:"278";s:3:"hiy";s:3:"279";s:3:"hur";s:3:"280";s:3:"i s";s:3:"281";s:3:"imw";s:3:"282";s:3:"kal";s:3:"283";s:3:"kwe";s:3:"284";s:3:"lak";s:3:"285";s:3:"lam";s:3:"286";s:3:"mak";s:3:"287";s:3:"msa";s:3:"288";s:3:"ne ";s:3:"289";s:3:"ngu";s:3:"290";s:3:"ru ";s:3:"291";s:3:"sal";s:3:"292";s:3:"swa";s:3:"293";s:3:"te ";s:3:"294";s:3:"ti ";s:3:"295";s:3:"uku";s:3:"296";s:3:"uma";s:3:"297";s:3:"una";s:3:"298";s:3:"uru";s:3:"299";}s:7:"swedish";a:300:{s:3:"en ";s:1:"0";s:3:" de";s:1:"1";s:3:"et ";s:1:"2";s:3:"er ";s:1:"3";s:3:"tt ";s:1:"4";s:3:"om ";s:1:"5";s:4:"för";s:1:"6";s:3:"ar ";s:1:"7";s:3:"de ";s:1:"8";s:3:"att";s:1:"9";s:4:" fö";s:2:"10";s:3:"ing";s:2:"11";s:3:" in";s:2:"12";s:3:" at";s:2:"13";s:3:" i ";s:2:"14";s:3:"det";s:2:"15";s:3:"ch ";s:2:"16";s:3:"an ";s:2:"17";s:3:"gen";s:2:"18";s:3:" an";s:2:"19";s:3:"t s";s:2:"20";s:3:"som";s:2:"21";s:3:"te ";s:2:"22";s:3:" oc";s:2:"23";s:3:"ter";s:2:"24";s:3:" ha";s:2:"25";s:3:"lle";s:2:"26";s:3:"och";s:2:"27";s:3:" sk";s:2:"28";s:3:" so";s:2:"29";s:3:"ra ";s:2:"30";s:3:"r a";s:2:"31";s:3:" me";s:2:"32";s:3:"var";s:2:"33";s:3:"nde";s:2:"34";s:4:"är ";s:2:"35";s:3:" ko";s:2:"36";s:3:"on ";s:2:"37";s:3:"ans";s:2:"38";s:3:"int";s:2:"39";s:3:"n s";s:2:"40";s:3:"na ";s:2:"41";s:3:" en";s:2:"42";s:3:" fr";s:2:"43";s:4:" på";s:2:"44";s:3:" st";s:2:"45";s:3:" va";s:2:"46";s:3:"and";s:2:"47";s:3:"nte";s:2:"48";s:4:"på ";s:2:"49";s:3:"ska";s:2:"50";s:3:"ta ";s:2:"51";s:3:" vi";s:2:"52";s:3:"der";s:2:"53";s:4:"äll";s:2:"54";s:4:"örs";s:2:"55";s:3:" om";s:2:"56";s:3:"da ";s:2:"57";s:3:"kri";s:2:"58";s:3:"ka ";s:2:"59";s:3:"nst";s:2:"60";s:3:" ho";s:2:"61";s:3:"as ";s:2:"62";s:4:"stä";s:2:"63";s:3:"r d";s:2:"64";s:3:"t f";s:2:"65";s:3:"upp";s:2:"66";s:3:" be";s:2:"67";s:3:"nge";s:2:"68";s:3:"r s";s:2:"69";s:3:"tal";s:2:"70";s:4:"täl";s:2:"71";s:4:"ör ";s:2:"72";s:3:" av";s:2:"73";s:3:"ger";s:2:"74";s:3:"ill";s:2:"75";s:3:"ng ";s:2:"76";s:3:"e s";s:2:"77";s:3:"ekt";s:2:"78";s:3:"ade";s:2:"79";s:3:"era";s:2:"80";s:3:"ers";s:2:"81";s:3:"har";s:2:"82";s:3:"ll ";s:2:"83";s:3:"lld";s:2:"84";s:3:"rin";s:2:"85";s:3:"rna";s:2:"86";s:4:"säk";s:2:"87";s:3:"und";s:2:"88";s:3:"inn";s:2:"89";s:3:"lig";s:2:"90";s:3:"ns ";s:2:"91";s:3:" ma";s:2:"92";s:3:" pr";s:2:"93";s:3:" up";s:2:"94";s:3:"age";s:2:"95";s:3:"av ";s:2:"96";s:3:"iva";s:2:"97";s:3:"kti";s:2:"98";s:3:"lda";s:2:"99";s:3:"orn";s:3:"100";s:3:"son";s:3:"101";s:3:"ts ";s:3:"102";s:3:"tta";s:3:"103";s:4:"äkr";s:3:"104";s:3:" sj";s:3:"105";s:3:" ti";s:3:"106";s:3:"avt";s:3:"107";s:3:"ber";s:3:"108";s:3:"els";s:3:"109";s:3:"eta";s:3:"110";s:3:"kol";s:3:"111";s:3:"men";s:3:"112";s:3:"n d";s:3:"113";s:3:"t k";s:3:"114";s:3:"vta";s:3:"115";s:4:"år ";s:3:"116";s:3:"juk";s:3:"117";s:3:"man";s:3:"118";s:3:"n f";s:3:"119";s:3:"nin";s:3:"120";s:3:"r i";s:3:"121";s:4:"rsä";s:3:"122";s:3:"sju";s:3:"123";s:3:"sso";s:3:"124";s:4:" är";s:3:"125";s:3:"a s";s:3:"126";s:3:"ach";s:3:"127";s:3:"ag ";s:3:"128";s:3:"bac";s:3:"129";s:3:"den";s:3:"130";s:3:"ett";s:3:"131";s:3:"fte";s:3:"132";s:3:"hor";s:3:"133";s:3:"nba";s:3:"134";s:3:"oll";s:3:"135";s:3:"rnb";s:3:"136";s:3:"ste";s:3:"137";s:3:"til";s:3:"138";s:3:" ef";s:3:"139";s:3:" si";s:3:"140";s:3:"a a";s:3:"141";s:3:"e h";s:3:"142";s:3:"ed ";s:3:"143";s:3:"eft";s:3:"144";s:3:"ga ";s:3:"145";s:3:"ig ";s:3:"146";s:3:"it ";s:3:"147";s:3:"ler";s:3:"148";s:3:"med";s:3:"149";s:3:"n i";s:3:"150";s:3:"nd ";s:3:"151";s:4:"så ";s:3:"152";s:3:"tiv";s:3:"153";s:3:" bl";s:3:"154";s:3:" et";s:3:"155";s:3:" fi";s:3:"156";s:4:" sä";s:3:"157";s:3:"at ";s:3:"158";s:3:"des";s:3:"159";s:3:"e a";s:3:"160";s:3:"gar";s:3:"161";s:3:"get";s:3:"162";s:3:"lan";s:3:"163";s:3:"lss";s:3:"164";s:3:"ost";s:3:"165";s:3:"r b";s:3:"166";s:3:"r e";s:3:"167";s:3:"re ";s:3:"168";s:3:"ret";s:3:"169";s:3:"sta";s:3:"170";s:3:"t i";s:3:"171";s:3:" ge";s:3:"172";s:3:" he";s:3:"173";s:3:" re";s:3:"174";s:3:"a f";s:3:"175";s:3:"all";s:3:"176";s:3:"bos";s:3:"177";s:3:"ets";s:3:"178";s:3:"lek";s:3:"179";s:3:"let";s:3:"180";s:3:"ner";s:3:"181";s:3:"nna";s:3:"182";s:3:"nne";s:3:"183";s:3:"r f";s:3:"184";s:3:"rit";s:3:"185";s:3:"s s";s:3:"186";s:3:"sen";s:3:"187";s:3:"sto";s:3:"188";s:3:"tor";s:3:"189";s:3:"vav";s:3:"190";s:3:"ygg";s:3:"191";s:3:" ka";s:3:"192";s:4:" så";s:3:"193";s:3:" tr";s:3:"194";s:3:" ut";s:3:"195";s:3:"ad ";s:3:"196";s:3:"al ";s:3:"197";s:3:"are";s:3:"198";s:3:"e o";s:3:"199";s:3:"gon";s:3:"200";s:3:"kom";s:3:"201";s:3:"n a";s:3:"202";s:3:"n h";s:3:"203";s:3:"nga";s:3:"204";s:3:"r h";s:3:"205";s:3:"ren";s:3:"206";s:3:"t d";s:3:"207";s:3:"tag";s:3:"208";s:3:"tar";s:3:"209";s:3:"tre";s:3:"210";s:4:"ätt";s:3:"211";s:4:" få";s:3:"212";s:4:" hä";s:3:"213";s:3:" se";s:3:"214";s:3:"a d";s:3:"215";s:3:"a i";s:3:"216";s:3:"a p";s:3:"217";s:3:"ale";s:3:"218";s:3:"ann";s:3:"219";s:3:"ara";s:3:"220";s:3:"byg";s:3:"221";s:3:"gt ";s:3:"222";s:3:"han";s:3:"223";s:3:"igt";s:3:"224";s:3:"kan";s:3:"225";s:3:"la ";s:3:"226";s:3:"n o";s:3:"227";s:3:"nom";s:3:"228";s:3:"nsk";s:3:"229";s:3:"omm";s:3:"230";s:3:"r k";s:3:"231";s:3:"r p";s:3:"232";s:3:"r v";s:3:"233";s:3:"s f";s:3:"234";s:3:"s k";s:3:"235";s:3:"t a";s:3:"236";s:3:"t p";s:3:"237";s:3:"ver";s:3:"238";s:3:" bo";s:3:"239";s:3:" br";s:3:"240";s:3:" ku";s:3:"241";s:4:" nå";s:3:"242";s:3:"a b";s:3:"243";s:3:"a e";s:3:"244";s:3:"del";s:3:"245";s:3:"ens";s:3:"246";s:3:"es ";s:3:"247";s:3:"fin";s:3:"248";s:3:"ige";s:3:"249";s:3:"m s";s:3:"250";s:3:"n p";s:3:"251";s:4:"någ";s:3:"252";s:3:"or ";s:3:"253";s:3:"r o";s:3:"254";s:3:"rbe";s:3:"255";s:3:"rs ";s:3:"256";s:3:"rt ";s:3:"257";s:3:"s a";s:3:"258";s:3:"s n";s:3:"259";s:3:"skr";s:3:"260";s:3:"t o";s:3:"261";s:3:"ten";s:3:"262";s:3:"tio";s:3:"263";s:3:"ven";s:3:"264";s:3:" al";s:3:"265";s:3:" ja";s:3:"266";s:3:" p ";s:3:"267";s:3:" r ";s:3:"268";s:3:" sa";s:3:"269";s:3:"a h";s:3:"270";s:3:"bet";s:3:"271";s:3:"cke";s:3:"272";s:3:"dra";s:3:"273";s:3:"e f";s:3:"274";s:3:"e i";s:3:"275";s:3:"eda";s:3:"276";s:3:"eno";s:3:"277";s:4:"erä";s:3:"278";s:3:"ess";s:3:"279";s:3:"ion";s:3:"280";s:3:"jag";s:3:"281";s:3:"m f";s:3:"282";s:3:"ne ";s:3:"283";s:3:"nns";s:3:"284";s:3:"pro";s:3:"285";s:3:"r t";s:3:"286";s:3:"rar";s:3:"287";s:3:"riv";s:3:"288";s:4:"rät";s:3:"289";s:3:"t e";s:3:"290";s:3:"t t";s:3:"291";s:3:"ust";s:3:"292";s:3:"vad";s:3:"293";s:4:"öre";s:3:"294";s:3:" ar";s:3:"295";s:3:" by";s:3:"296";s:3:" kr";s:3:"297";s:3:" mi";s:3:"298";s:3:"arb";s:3:"299";}s:7:"tagalog";a:300:{s:3:"ng ";s:1:"0";s:3:"ang";s:1:"1";s:3:" na";s:1:"2";s:3:" sa";s:1:"3";s:3:"an ";s:1:"4";s:3:"nan";s:1:"5";s:3:"sa ";s:1:"6";s:3:"na ";s:1:"7";s:3:" ma";s:1:"8";s:3:" ca";s:1:"9";s:3:"ay ";s:2:"10";s:3:"n g";s:2:"11";s:3:" an";s:2:"12";s:3:"ong";s:2:"13";s:3:" ga";s:2:"14";s:3:"at ";s:2:"15";s:3:" pa";s:2:"16";s:3:"ala";s:2:"17";s:3:" si";s:2:"18";s:3:"a n";s:2:"19";s:3:"ga ";s:2:"20";s:3:"g n";s:2:"21";s:3:"g m";s:2:"22";s:3:"ito";s:2:"23";s:3:"g c";s:2:"24";s:3:"man";s:2:"25";s:3:"san";s:2:"26";s:3:"g s";s:2:"27";s:3:"ing";s:2:"28";s:3:"to ";s:2:"29";s:3:"ila";s:2:"30";s:3:"ina";s:2:"31";s:3:" di";s:2:"32";s:3:" ta";s:2:"33";s:3:"aga";s:2:"34";s:3:"iya";s:2:"35";s:3:"aca";s:2:"36";s:3:"g t";s:2:"37";s:3:" at";s:2:"38";s:3:"aya";s:2:"39";s:3:"ama";s:2:"40";s:3:"lan";s:2:"41";s:3:"a a";s:2:"42";s:3:"qui";s:2:"43";s:3:"a c";s:2:"44";s:3:"a s";s:2:"45";s:3:"nag";s:2:"46";s:3:" ba";s:2:"47";s:3:"g i";s:2:"48";s:3:"tan";s:2:"49";s:3:"'t ";s:2:"50";s:3:" cu";s:2:"51";s:3:"aua";s:2:"52";s:3:"g p";s:2:"53";s:3:" ni";s:2:"54";s:3:"os ";s:2:"55";s:3:"'y ";s:2:"56";s:3:"a m";s:2:"57";s:3:" n ";s:2:"58";s:3:"la ";s:2:"59";s:3:" la";s:2:"60";s:3:"o n";s:2:"61";s:3:"yan";s:2:"62";s:3:" ay";s:2:"63";s:3:"usa";s:2:"64";s:3:"cay";s:2:"65";s:3:"on ";s:2:"66";s:3:"ya ";s:2:"67";s:3:" it";s:2:"68";s:3:"al ";s:2:"69";s:3:"apa";s:2:"70";s:3:"ata";s:2:"71";s:3:"t n";s:2:"72";s:3:"uan";s:2:"73";s:3:"aha";s:2:"74";s:3:"asa";s:2:"75";s:3:"pag";s:2:"76";s:3:" gu";s:2:"77";s:3:"g l";s:2:"78";s:3:"di ";s:2:"79";s:3:"mag";s:2:"80";s:3:"aba";s:2:"81";s:3:"g a";s:2:"82";s:3:"ara";s:2:"83";s:3:"a p";s:2:"84";s:3:"in ";s:2:"85";s:3:"ana";s:2:"86";s:3:"it ";s:2:"87";s:3:"si ";s:2:"88";s:3:"cus";s:2:"89";s:3:"g b";s:2:"90";s:3:"uin";s:2:"91";s:3:"a t";s:2:"92";s:3:"as ";s:2:"93";s:3:"n n";s:2:"94";s:3:"hin";s:2:"95";s:3:" hi";s:2:"96";s:3:"a't";s:2:"97";s:3:"ali";s:2:"98";s:3:" bu";s:2:"99";s:3:"gan";s:3:"100";s:3:"uma";s:3:"101";s:3:"a d";s:3:"102";s:3:"agc";s:3:"103";s:3:"aqu";s:3:"104";s:3:"g d";s:3:"105";s:3:" tu";s:3:"106";s:3:"aon";s:3:"107";s:3:"ari";s:3:"108";s:3:"cas";s:3:"109";s:3:"i n";s:3:"110";s:3:"niy";s:3:"111";s:3:"pin";s:3:"112";s:3:"a i";s:3:"113";s:3:"gca";s:3:"114";s:3:"siy";s:3:"115";s:3:"a'y";s:3:"116";s:3:"yao";s:3:"117";s:3:"ag ";s:3:"118";s:3:"ca ";s:3:"119";s:3:"han";s:3:"120";s:3:"ili";s:3:"121";s:3:"pan";s:3:"122";s:3:"sin";s:3:"123";s:3:"ual";s:3:"124";s:3:"n s";s:3:"125";s:3:"nam";s:3:"126";s:3:" lu";s:3:"127";s:3:"can";s:3:"128";s:3:"dit";s:3:"129";s:3:"gui";s:3:"130";s:3:"y n";s:3:"131";s:3:"gal";s:3:"132";s:3:"hat";s:3:"133";s:3:"nal";s:3:"134";s:3:" is";s:3:"135";s:3:"bag";s:3:"136";s:3:"fra";s:3:"137";s:3:" fr";s:3:"138";s:3:" su";s:3:"139";s:3:"a l";s:3:"140";s:3:" co";s:3:"141";s:3:"ani";s:3:"142";s:3:" bi";s:3:"143";s:3:" da";s:3:"144";s:3:"alo";s:3:"145";s:3:"isa";s:3:"146";s:3:"ita";s:3:"147";s:3:"may";s:3:"148";s:3:"o s";s:3:"149";s:3:"sil";s:3:"150";s:3:"una";s:3:"151";s:3:" in";s:3:"152";s:3:" pi";s:3:"153";s:3:"l n";s:3:"154";s:3:"nil";s:3:"155";s:3:"o a";s:3:"156";s:3:"pat";s:3:"157";s:3:"sac";s:3:"158";s:3:"t s";s:3:"159";s:3:" ua";s:3:"160";s:3:"agu";s:3:"161";s:3:"ail";s:3:"162";s:3:"bin";s:3:"163";s:3:"dal";s:3:"164";s:3:"g h";s:3:"165";s:3:"ndi";s:3:"166";s:3:"oon";s:3:"167";s:3:"ua ";s:3:"168";s:3:" ha";s:3:"169";s:3:"ind";s:3:"170";s:3:"ran";s:3:"171";s:3:"s n";s:3:"172";s:3:"tin";s:3:"173";s:3:"ulo";s:3:"174";s:3:"eng";s:3:"175";s:3:"g f";s:3:"176";s:3:"ini";s:3:"177";s:3:"lah";s:3:"178";s:3:"lo ";s:3:"179";s:3:"rai";s:3:"180";s:3:"rin";s:3:"181";s:3:"ton";s:3:"182";s:3:"g u";s:3:"183";s:3:"inu";s:3:"184";s:3:"lon";s:3:"185";s:3:"o'y";s:3:"186";s:3:"t a";s:3:"187";s:3:" ar";s:3:"188";s:3:"a b";s:3:"189";s:3:"ad ";s:3:"190";s:3:"bay";s:3:"191";s:3:"cal";s:3:"192";s:3:"gya";s:3:"193";s:3:"ile";s:3:"194";s:3:"mat";s:3:"195";s:3:"n a";s:3:"196";s:3:"pau";s:3:"197";s:3:"ra ";s:3:"198";s:3:"tay";s:3:"199";s:3:"y m";s:3:"200";s:3:"ant";s:3:"201";s:3:"ban";s:3:"202";s:3:"i m";s:3:"203";s:3:"nas";s:3:"204";s:3:"nay";s:3:"205";s:3:"no ";s:3:"206";s:3:"sti";s:3:"207";s:3:" ti";s:3:"208";s:3:"ags";s:3:"209";s:3:"g g";s:3:"210";s:3:"ta ";s:3:"211";s:3:"uit";s:3:"212";s:3:"uno";s:3:"213";s:3:" ib";s:3:"214";s:3:" ya";s:3:"215";s:3:"a u";s:3:"216";s:3:"abi";s:3:"217";s:3:"ati";s:3:"218";s:3:"cap";s:3:"219";s:3:"ig ";s:3:"220";s:3:"is ";s:3:"221";s:3:"la'";s:3:"222";s:3:" do";s:3:"223";s:3:" pu";s:3:"224";s:3:"api";s:3:"225";s:3:"ayo";s:3:"226";s:3:"gos";s:3:"227";s:3:"gul";s:3:"228";s:3:"lal";s:3:"229";s:3:"tag";s:3:"230";s:3:"til";s:3:"231";s:3:"tun";s:3:"232";s:3:"y c";s:3:"233";s:3:"y s";s:3:"234";s:3:"yon";s:3:"235";s:3:"ano";s:3:"236";s:3:"bur";s:3:"237";s:3:"iba";s:3:"238";s:3:"isi";s:3:"239";s:3:"lam";s:3:"240";s:3:"nac";s:3:"241";s:3:"nat";s:3:"242";s:3:"ni ";s:3:"243";s:3:"nto";s:3:"244";s:3:"od ";s:3:"245";s:3:"pa ";s:3:"246";s:3:"rgo";s:3:"247";s:3:"urg";s:3:"248";s:3:" m ";s:3:"249";s:3:"adr";s:3:"250";s:3:"ast";s:3:"251";s:3:"cag";s:3:"252";s:3:"gay";s:3:"253";s:3:"gsi";s:3:"254";s:3:"i p";s:3:"255";s:3:"ino";s:3:"256";s:3:"len";s:3:"257";s:3:"lin";s:3:"258";s:3:"m g";s:3:"259";s:3:"mar";s:3:"260";s:3:"nah";s:3:"261";s:3:"to'";s:3:"262";s:3:" de";s:3:"263";s:3:"a h";s:3:"264";s:3:"cat";s:3:"265";s:3:"cau";s:3:"266";s:3:"con";s:3:"267";s:3:"iqu";s:3:"268";s:3:"lac";s:3:"269";s:3:"mab";s:3:"270";s:3:"min";s:3:"271";s:3:"og ";s:3:"272";s:3:"par";s:3:"273";s:3:"sal";s:3:"274";s:3:" za";s:3:"275";s:3:"ao ";s:3:"276";s:3:"doo";s:3:"277";s:3:"ipi";s:3:"278";s:3:"nod";s:3:"279";s:3:"nte";s:3:"280";s:3:"uha";s:3:"281";s:3:"ula";s:3:"282";s:3:" re";s:3:"283";s:3:"ill";s:3:"284";s:3:"lit";s:3:"285";s:3:"mac";s:3:"286";s:3:"nit";s:3:"287";s:3:"o't";s:3:"288";s:3:"or ";s:3:"289";s:3:"ora";s:3:"290";s:3:"sum";s:3:"291";s:3:"y p";s:3:"292";s:3:" al";s:3:"293";s:3:" mi";s:3:"294";s:3:" um";s:3:"295";s:3:"aco";s:3:"296";s:3:"ada";s:3:"297";s:3:"agd";s:3:"298";s:3:"cab";s:3:"299";}s:7:"turkish";a:300:{s:3:"lar";s:1:"0";s:3:"en ";s:1:"1";s:3:"ler";s:1:"2";s:3:"an ";s:1:"3";s:3:"in ";s:1:"4";s:3:" bi";s:1:"5";s:3:" ya";s:1:"6";s:3:"eri";s:1:"7";s:3:"de ";s:1:"8";s:3:" ka";s:1:"9";s:3:"ir ";s:2:"10";s:4:"arı";s:2:"11";s:3:" ba";s:2:"12";s:3:" de";s:2:"13";s:3:" ha";s:2:"14";s:4:"ın ";s:2:"15";s:3:"ara";s:2:"16";s:3:"bir";s:2:"17";s:3:" ve";s:2:"18";s:3:" sa";s:2:"19";s:3:"ile";s:2:"20";s:3:"le ";s:2:"21";s:3:"nde";s:2:"22";s:3:"da ";s:2:"23";s:3:" bu";s:2:"24";s:3:"ana";s:2:"25";s:3:"ini";s:2:"26";s:5:"ını";s:2:"27";s:3:"er ";s:2:"28";s:3:"ve ";s:2:"29";s:4:" yı";s:2:"30";s:3:"lma";s:2:"31";s:4:"yıl";s:2:"32";s:3:" ol";s:2:"33";s:3:"ar ";s:2:"34";s:3:"n b";s:2:"35";s:3:"nda";s:2:"36";s:3:"aya";s:2:"37";s:3:"li ";s:2:"38";s:4:"ası";s:2:"39";s:3:" ge";s:2:"40";s:3:"ind";s:2:"41";s:3:"n k";s:2:"42";s:3:"esi";s:2:"43";s:3:"lan";s:2:"44";s:3:"nla";s:2:"45";s:3:"ak ";s:2:"46";s:4:"anı";s:2:"47";s:3:"eni";s:2:"48";s:3:"ni ";s:2:"49";s:4:"nı ";s:2:"50";s:4:"rın";s:2:"51";s:3:"san";s:2:"52";s:3:" ko";s:2:"53";s:3:" ye";s:2:"54";s:3:"maz";s:2:"55";s:4:"baş";s:2:"56";s:3:"ili";s:2:"57";s:3:"rin";s:2:"58";s:4:"alı";s:2:"59";s:3:"az ";s:2:"60";s:3:"hal";s:2:"61";s:4:"ınd";s:2:"62";s:3:" da";s:2:"63";s:4:" gü";s:2:"64";s:3:"ele";s:2:"65";s:4:"ılm";s:2:"66";s:6:"ığı";s:2:"67";s:3:"eki";s:2:"68";s:4:"gün";s:2:"69";s:3:"i b";s:2:"70";s:4:"içi";s:2:"71";s:3:"den";s:2:"72";s:3:"kar";s:2:"73";s:3:"si ";s:2:"74";s:3:" il";s:2:"75";s:3:"e y";s:2:"76";s:3:"na ";s:2:"77";s:3:"yor";s:2:"78";s:3:"ek ";s:2:"79";s:3:"n s";s:2:"80";s:4:" iç";s:2:"81";s:3:"bu ";s:2:"82";s:3:"e b";s:2:"83";s:3:"im ";s:2:"84";s:3:"ki ";s:2:"85";s:3:"len";s:2:"86";s:3:"ri ";s:2:"87";s:4:"sın";s:2:"88";s:3:" so";s:2:"89";s:4:"ün ";s:2:"90";s:3:" ta";s:2:"91";s:3:"nin";s:2:"92";s:4:"iği";s:2:"93";s:3:"tan";s:2:"94";s:3:"yan";s:2:"95";s:3:" si";s:2:"96";s:3:"nat";s:2:"97";s:4:"nın";s:2:"98";s:3:"kan";s:2:"99";s:4:"rı ";s:3:"100";s:4:"çin";s:3:"101";s:5:"ğı ";s:3:"102";s:3:"eli";s:3:"103";s:3:"n a";s:3:"104";s:4:"ır ";s:3:"105";s:3:" an";s:3:"106";s:3:"ine";s:3:"107";s:3:"n y";s:3:"108";s:3:"ola";s:3:"109";s:3:" ar";s:3:"110";s:3:"al ";s:3:"111";s:3:"e s";s:3:"112";s:3:"lik";s:3:"113";s:3:"n d";s:3:"114";s:3:"sin";s:3:"115";s:3:" al";s:3:"116";s:4:" dü";s:3:"117";s:3:"anl";s:3:"118";s:3:"ne ";s:3:"119";s:3:"ya ";s:3:"120";s:4:"ım ";s:3:"121";s:4:"ına";s:3:"122";s:3:" be";s:3:"123";s:3:"ada";s:3:"124";s:3:"ala";s:3:"125";s:3:"ama";s:3:"126";s:3:"ilm";s:3:"127";s:3:"or ";s:3:"128";s:4:"sı ";s:3:"129";s:3:"yen";s:3:"130";s:3:" me";s:3:"131";s:4:"atı";s:3:"132";s:3:"di ";s:3:"133";s:3:"eti";s:3:"134";s:3:"ken";s:3:"135";s:3:"la ";s:3:"136";s:4:"lı ";s:3:"137";s:3:"oru";s:3:"138";s:4:" gö";s:3:"139";s:3:" in";s:3:"140";s:3:"and";s:3:"141";s:3:"e d";s:3:"142";s:3:"men";s:3:"143";s:3:"un ";s:3:"144";s:4:"öne";s:3:"145";s:3:"a d";s:3:"146";s:3:"at ";s:3:"147";s:3:"e a";s:3:"148";s:3:"e g";s:3:"149";s:3:"yar";s:3:"150";s:3:" ku";s:3:"151";s:4:"ayı";s:3:"152";s:3:"dan";s:3:"153";s:3:"edi";s:3:"154";s:3:"iri";s:3:"155";s:5:"ünü";s:3:"156";s:4:"ği ";s:3:"157";s:5:"ılı";s:3:"158";s:3:"eme";s:3:"159";s:4:"eği";s:3:"160";s:3:"i k";s:3:"161";s:3:"i y";s:3:"162";s:4:"ıla";s:3:"163";s:4:" ça";s:3:"164";s:3:"a y";s:3:"165";s:3:"alk";s:3:"166";s:4:"dı ";s:3:"167";s:3:"ede";s:3:"168";s:3:"el ";s:3:"169";s:4:"ndı";s:3:"170";s:3:"ra ";s:3:"171";s:4:"üne";s:3:"172";s:4:" sü";s:3:"173";s:4:"dır";s:3:"174";s:3:"e k";s:3:"175";s:3:"ere";s:3:"176";s:3:"ik ";s:3:"177";s:3:"imi";s:3:"178";s:4:"işi";s:3:"179";s:3:"mas";s:3:"180";s:3:"n h";s:3:"181";s:4:"sür";s:3:"182";s:3:"yle";s:3:"183";s:3:" ad";s:3:"184";s:3:" fi";s:3:"185";s:3:" gi";s:3:"186";s:3:" se";s:3:"187";s:3:"a k";s:3:"188";s:3:"arl";s:3:"189";s:5:"aşı";s:3:"190";s:3:"iyo";s:3:"191";s:3:"kla";s:3:"192";s:5:"lığ";s:3:"193";s:3:"nem";s:3:"194";s:3:"ney";s:3:"195";s:3:"rme";s:3:"196";s:3:"ste";s:3:"197";s:4:"tı ";s:3:"198";s:3:"unl";s:3:"199";s:3:"ver";s:3:"200";s:4:" sı";s:3:"201";s:3:" te";s:3:"202";s:3:" to";s:3:"203";s:3:"a s";s:3:"204";s:4:"aşk";s:3:"205";s:3:"ekl";s:3:"206";s:3:"end";s:3:"207";s:3:"kal";s:3:"208";s:4:"liğ";s:3:"209";s:3:"min";s:3:"210";s:4:"tır";s:3:"211";s:3:"ulu";s:3:"212";s:3:"unu";s:3:"213";s:3:"yap";s:3:"214";s:3:"ye ";s:3:"215";s:4:"ı i";s:3:"216";s:4:"şka";s:3:"217";s:5:"ştı";s:3:"218";s:4:" bü";s:3:"219";s:3:" ke";s:3:"220";s:3:" ki";s:3:"221";s:3:"ard";s:3:"222";s:3:"art";s:3:"223";s:4:"aşa";s:3:"224";s:3:"n i";s:3:"225";s:3:"ndi";s:3:"226";s:3:"ti ";s:3:"227";s:3:"top";s:3:"228";s:4:"ı b";s:3:"229";s:3:" va";s:3:"230";s:4:" ön";s:3:"231";s:3:"aki";s:3:"232";s:3:"cak";s:3:"233";s:3:"ey ";s:3:"234";s:3:"fil";s:3:"235";s:3:"isi";s:3:"236";s:3:"kle";s:3:"237";s:3:"kur";s:3:"238";s:3:"man";s:3:"239";s:3:"nce";s:3:"240";s:3:"nle";s:3:"241";s:3:"nun";s:3:"242";s:3:"rak";s:3:"243";s:4:"ık ";s:3:"244";s:3:" en";s:3:"245";s:3:" yo";s:3:"246";s:3:"a g";s:3:"247";s:3:"lis";s:3:"248";s:3:"mak";s:3:"249";s:3:"n g";s:3:"250";s:3:"tir";s:3:"251";s:3:"yas";s:3:"252";s:4:" iş";s:3:"253";s:4:" yö";s:3:"254";s:3:"ale";s:3:"255";s:3:"bil";s:3:"256";s:3:"bul";s:3:"257";s:3:"et ";s:3:"258";s:3:"i d";s:3:"259";s:3:"iye";s:3:"260";s:3:"kil";s:3:"261";s:3:"ma ";s:3:"262";s:3:"n e";s:3:"263";s:3:"n t";s:3:"264";s:3:"nu ";s:3:"265";s:3:"olu";s:3:"266";s:3:"rla";s:3:"267";s:3:"te ";s:3:"268";s:4:"yön";s:3:"269";s:5:"çık";s:3:"270";s:3:" ay";s:3:"271";s:4:" mü";s:3:"272";s:4:" ço";s:3:"273";s:5:" çı";s:3:"274";s:3:"a a";s:3:"275";s:3:"a b";s:3:"276";s:3:"ata";s:3:"277";s:3:"der";s:3:"278";s:3:"gel";s:3:"279";s:3:"i g";s:3:"280";s:3:"i i";s:3:"281";s:3:"ill";s:3:"282";s:3:"ist";s:3:"283";s:4:"ldı";s:3:"284";s:3:"lu ";s:3:"285";s:3:"mek";s:3:"286";s:3:"mle";s:3:"287";s:4:"n ç";s:3:"288";s:3:"onu";s:3:"289";s:3:"opl";s:3:"290";s:3:"ran";s:3:"291";s:3:"rat";s:3:"292";s:4:"rdı";s:3:"293";s:3:"rke";s:3:"294";s:3:"siy";s:3:"295";s:3:"son";s:3:"296";s:3:"ta ";s:3:"297";s:5:"tçı";s:3:"298";s:4:"tın";s:3:"299";}s:9:"ukrainian";a:300:{s:5:" на";s:1:"0";s:5:" за";s:1:"1";s:6:"ння";s:1:"2";s:5:"ня ";s:1:"3";s:5:"на ";s:1:"4";s:5:" пр";s:1:"5";s:6:"ого";s:1:"6";s:5:"го ";s:1:"7";s:6:"ськ";s:1:"8";s:5:" по";s:1:"9";s:4:" у ";s:2:"10";s:6:"від";s:2:"11";s:6:"ере";s:2:"12";s:5:" мі";s:2:"13";s:5:" не";s:2:"14";s:5:"их ";s:2:"15";s:5:"ть ";s:2:"16";s:6:"пер";s:2:"17";s:5:" ві";s:2:"18";s:5:"ів ";s:2:"19";s:5:" пе";s:2:"20";s:5:" що";s:2:"21";s:6:"льн";s:2:"22";s:5:"ми ";s:2:"23";s:5:"ні ";s:2:"24";s:5:"не ";s:2:"25";s:5:"ти ";s:2:"26";s:6:"ати";s:2:"27";s:6:"енн";s:2:"28";s:6:"міс";s:2:"29";s:6:"пра";s:2:"30";s:6:"ува";s:2:"31";s:6:"ник";s:2:"32";s:6:"про";s:2:"33";s:6:"рав";s:2:"34";s:6:"івн";s:2:"35";s:5:" та";s:2:"36";s:6:"буд";s:2:"37";s:6:"влі";s:2:"38";s:6:"рів";s:2:"39";s:5:" ко";s:2:"40";s:5:" рі";s:2:"41";s:6:"аль";s:2:"42";s:5:"но ";s:2:"43";s:6:"ому";s:2:"44";s:5:"що ";s:2:"45";s:5:" ви";s:2:"46";s:5:"му ";s:2:"47";s:6:"рев";s:2:"48";s:5:"ся ";s:2:"49";s:6:"інн";s:2:"50";s:5:" до";s:2:"51";s:5:" уп";s:2:"52";s:6:"авл";s:2:"53";s:6:"анн";s:2:"54";s:6:"ком";s:2:"55";s:5:"ли ";s:2:"56";s:6:"лін";s:2:"57";s:6:"ног";s:2:"58";s:6:"упр";s:2:"59";s:5:" бу";s:2:"60";s:4:" з ";s:2:"61";s:5:" ро";s:2:"62";s:5:"за ";s:2:"63";s:5:"и н";s:2:"64";s:6:"нов";s:2:"65";s:6:"оро";s:2:"66";s:6:"ост";s:2:"67";s:6:"ста";s:2:"68";s:5:"ті ";s:2:"69";s:6:"ють";s:2:"70";s:5:" мо";s:2:"71";s:5:" ні";s:2:"72";s:5:" як";s:2:"73";s:6:"бор";s:2:"74";s:5:"ва ";s:2:"75";s:6:"ван";s:2:"76";s:6:"ень";s:2:"77";s:5:"и п";s:2:"78";s:5:"нь ";s:2:"79";s:6:"ові";s:2:"80";s:6:"рон";s:2:"81";s:6:"сті";s:2:"82";s:5:"та ";s:2:"83";s:5:"у в";s:2:"84";s:6:"ько";s:2:"85";s:6:"іст";s:2:"86";s:4:" в ";s:2:"87";s:5:" ре";s:2:"88";s:5:"до ";s:2:"89";s:5:"е п";s:2:"90";s:6:"заб";s:2:"91";s:5:"ий ";s:2:"92";s:6:"нсь";s:2:"93";s:5:"о в";s:2:"94";s:5:"о п";s:2:"95";s:6:"при";s:2:"96";s:5:"і п";s:2:"97";s:5:" ку";s:2:"98";s:5:" пі";s:2:"99";s:5:" сп";s:3:"100";s:5:"а п";s:3:"101";s:6:"або";s:3:"102";s:6:"анс";s:3:"103";s:6:"аці";s:3:"104";s:6:"ват";s:3:"105";s:6:"вни";s:3:"106";s:5:"и в";s:3:"107";s:6:"ими";s:3:"108";s:5:"ка ";s:3:"109";s:6:"нен";s:3:"110";s:6:"ніч";s:3:"111";s:6:"она";s:3:"112";s:5:"ої ";s:3:"113";s:6:"пов";s:3:"114";s:6:"ьки";s:3:"115";s:6:"ьно";s:3:"116";s:6:"ізн";s:3:"117";s:6:"ічн";s:3:"118";s:5:" ав";s:3:"119";s:5:" ма";s:3:"120";s:5:" ор";s:3:"121";s:5:" су";s:3:"122";s:5:" чи";s:3:"123";s:5:" ін";s:3:"124";s:5:"а з";s:3:"125";s:5:"ам ";s:3:"126";s:5:"ає ";s:3:"127";s:6:"вне";s:3:"128";s:6:"вто";s:3:"129";s:6:"дом";s:3:"130";s:6:"ент";s:3:"131";s:6:"жит";s:3:"132";s:6:"зни";s:3:"133";s:5:"им ";s:3:"134";s:6:"итл";s:3:"135";s:5:"ла ";s:3:"136";s:6:"них";s:3:"137";s:6:"ниц";s:3:"138";s:6:"ова";s:3:"139";s:6:"ови";s:3:"140";s:5:"ом ";s:3:"141";s:6:"пор";s:3:"142";s:6:"тьс";s:3:"143";s:5:"у р";s:3:"144";s:6:"ься";s:3:"145";s:6:"ідо";s:3:"146";s:6:"іль";s:3:"147";s:6:"ісь";s:3:"148";s:5:" ва";s:3:"149";s:5:" ді";s:3:"150";s:5:" жи";s:3:"151";s:5:" че";s:3:"152";s:4:" і ";s:3:"153";s:5:"а в";s:3:"154";s:5:"а н";s:3:"155";s:6:"али";s:3:"156";s:6:"вез";s:3:"157";s:6:"вно";s:3:"158";s:6:"еве";s:3:"159";s:6:"езе";s:3:"160";s:6:"зен";s:3:"161";s:6:"ицт";s:3:"162";s:5:"ки ";s:3:"163";s:6:"ких";s:3:"164";s:6:"кон";s:3:"165";s:5:"ку ";s:3:"166";s:6:"лас";s:3:"167";s:5:"ля ";s:3:"168";s:6:"мож";s:3:"169";s:6:"нач";s:3:"170";s:6:"ним";s:3:"171";s:6:"ної";s:3:"172";s:5:"о б";s:3:"173";s:6:"ову";s:3:"174";s:6:"оди";s:3:"175";s:5:"ою ";s:3:"176";s:5:"ро ";s:3:"177";s:6:"рок";s:3:"178";s:6:"сно";s:3:"179";s:6:"спо";s:3:"180";s:6:"так";s:3:"181";s:6:"тва";s:3:"182";s:5:"ту ";s:3:"183";s:5:"у п";s:3:"184";s:6:"цтв";s:3:"185";s:6:"ьни";s:3:"186";s:5:"я з";s:3:"187";s:5:"і м";s:3:"188";s:5:"ії ";s:3:"189";s:5:" вс";s:3:"190";s:5:" гр";s:3:"191";s:5:" де";s:3:"192";s:5:" но";s:3:"193";s:5:" па";s:3:"194";s:5:" се";s:3:"195";s:5:" ук";s:3:"196";s:5:" їх";s:3:"197";s:5:"а о";s:3:"198";s:6:"авт";s:3:"199";s:6:"аст";s:3:"200";s:6:"ают";s:3:"201";s:6:"вар";s:3:"202";s:6:"ден";s:3:"203";s:5:"ди ";s:3:"204";s:5:"ду ";s:3:"205";s:6:"зна";s:3:"206";s:5:"и з";s:3:"207";s:6:"ико";s:3:"208";s:6:"ися";s:3:"209";s:6:"ити";s:3:"210";s:6:"ког";s:3:"211";s:6:"мен";s:3:"212";s:6:"ном";s:3:"213";s:5:"ну ";s:3:"214";s:5:"о н";s:3:"215";s:5:"о с";s:3:"216";s:6:"обу";s:3:"217";s:6:"ово";s:3:"218";s:6:"пла";s:3:"219";s:6:"ран";s:3:"220";s:6:"рив";s:3:"221";s:6:"роб";s:3:"222";s:6:"ска";s:3:"223";s:6:"тан";s:3:"224";s:6:"тим";s:3:"225";s:6:"тис";s:3:"226";s:5:"то ";s:3:"227";s:6:"тра";s:3:"228";s:6:"удо";s:3:"229";s:6:"чин";s:3:"230";s:6:"чни";s:3:"231";s:5:"і в";s:3:"232";s:5:"ію ";s:3:"233";s:4:" а ";s:3:"234";s:5:" во";s:3:"235";s:5:" да";s:3:"236";s:5:" кв";s:3:"237";s:5:" ме";s:3:"238";s:5:" об";s:3:"239";s:5:" ск";s:3:"240";s:5:" ти";s:3:"241";s:5:" фі";s:3:"242";s:4:" є ";s:3:"243";s:5:"а р";s:3:"244";s:5:"а с";s:3:"245";s:5:"а у";s:3:"246";s:5:"ак ";s:3:"247";s:6:"ані";s:3:"248";s:6:"арт";s:3:"249";s:6:"асн";s:3:"250";s:5:"в у";s:3:"251";s:6:"вик";s:3:"252";s:6:"віз";s:3:"253";s:6:"дов";s:3:"254";s:6:"дпо";s:3:"255";s:6:"дів";s:3:"256";s:6:"еві";s:3:"257";s:6:"енс";s:3:"258";s:5:"же ";s:3:"259";s:5:"и м";s:3:"260";s:5:"и с";s:3:"261";s:6:"ика";s:3:"262";s:6:"ичн";s:3:"263";s:5:"кі ";s:3:"264";s:6:"ків";s:3:"265";s:6:"між";s:3:"266";s:6:"нан";s:3:"267";s:6:"нос";s:3:"268";s:5:"о у";s:3:"269";s:6:"обл";s:3:"270";s:6:"одн";s:3:"271";s:5:"ок ";s:3:"272";s:6:"оло";s:3:"273";s:6:"отр";s:3:"274";s:6:"рен";s:3:"275";s:6:"рим";s:3:"276";s:6:"роз";s:3:"277";s:5:"сь ";s:3:"278";s:5:"сі ";s:3:"279";s:6:"тла";s:3:"280";s:6:"тів";s:3:"281";s:5:"у з";s:3:"282";s:6:"уго";s:3:"283";s:6:"уді";s:3:"284";s:5:"чи ";s:3:"285";s:5:"ше ";s:3:"286";s:5:"я н";s:3:"287";s:5:"я у";s:3:"288";s:6:"ідп";s:3:"289";s:5:"ій ";s:3:"290";s:6:"іна";s:3:"291";s:5:"ія ";s:3:"292";s:5:" ка";s:3:"293";s:5:" ни";s:3:"294";s:5:" ос";s:3:"295";s:5:" си";s:3:"296";s:5:" то";s:3:"297";s:5:" тр";s:3:"298";s:5:" уг";s:3:"299";}s:4:"urdu";a:300:{s:5:"یں ";s:1:"0";s:5:" کی";s:1:"1";s:5:"کے ";s:1:"2";s:5:" کے";s:1:"3";s:5:"نے ";s:1:"4";s:5:" کہ";s:1:"5";s:5:"ے ک";s:1:"6";s:5:"کی ";s:1:"7";s:6:"میں";s:1:"8";s:5:" می";s:1:"9";s:5:"ہے ";s:2:"10";s:5:"وں ";s:2:"11";s:5:"کہ ";s:2:"12";s:5:" ہے";s:2:"13";s:5:"ان ";s:2:"14";s:6:"ہیں";s:2:"15";s:5:"ور ";s:2:"16";s:5:" کو";s:2:"17";s:5:"یا ";s:2:"18";s:5:" ان";s:2:"19";s:5:" نے";s:2:"20";s:5:"سے ";s:2:"21";s:5:" سے";s:2:"22";s:5:" کر";s:2:"23";s:6:"ستا";s:2:"24";s:5:" او";s:2:"25";s:6:"اور";s:2:"26";s:6:"تان";s:2:"27";s:5:"ر ک";s:2:"28";s:5:"ی ک";s:2:"29";s:5:" اس";s:2:"30";s:5:"ے ا";s:2:"31";s:5:" پا";s:2:"32";s:5:" ہو";s:2:"33";s:5:" پر";s:2:"34";s:5:"رف ";s:2:"35";s:5:" کا";s:2:"36";s:5:"ا ک";s:2:"37";s:5:"ی ا";s:2:"38";s:5:" ہی";s:2:"39";s:5:"در ";s:2:"40";s:5:"کو ";s:2:"41";s:5:" ای";s:2:"42";s:5:"ں ک";s:2:"43";s:5:" مش";s:2:"44";s:5:" مل";s:2:"45";s:5:"ات ";s:2:"46";s:6:"صدر";s:2:"47";s:6:"اکس";s:2:"48";s:6:"شرف";s:2:"49";s:6:"مشر";s:2:"50";s:6:"پاک";s:2:"51";s:6:"کست";s:2:"52";s:5:"ی م";s:2:"53";s:5:" دی";s:2:"54";s:5:" صد";s:2:"55";s:5:" یہ";s:2:"56";s:5:"ا ہ";s:2:"57";s:5:"ن ک";s:2:"58";s:6:"وال";s:2:"59";s:5:"یہ ";s:2:"60";s:5:"ے و";s:2:"61";s:5:" بھ";s:2:"62";s:5:" دو";s:2:"63";s:5:"اس ";s:2:"64";s:5:"ر ا";s:2:"65";s:6:"نہی";s:2:"66";s:5:"کا ";s:2:"67";s:5:"ے س";s:2:"68";s:5:"ئی ";s:2:"69";s:5:"ہ ا";s:2:"70";s:5:"یت ";s:2:"71";s:5:"ے ہ";s:2:"72";s:5:"ت ک";s:2:"73";s:5:" سا";s:2:"74";s:5:"لے ";s:2:"75";s:5:"ہا ";s:2:"76";s:5:"ے ب";s:2:"77";s:5:" وا";s:2:"78";s:5:"ار ";s:2:"79";s:5:"نی ";s:2:"80";s:6:"کہا";s:2:"81";s:5:"ی ہ";s:2:"82";s:5:"ے م";s:2:"83";s:5:" سی";s:2:"84";s:5:" لی";s:2:"85";s:6:"انہ";s:2:"86";s:6:"انی";s:2:"87";s:5:"ر م";s:2:"88";s:5:"ر پ";s:2:"89";s:6:"ریت";s:2:"90";s:5:"ن م";s:2:"91";s:5:"ھا ";s:2:"92";s:5:"یر ";s:2:"93";s:5:" جا";s:2:"94";s:5:" جن";s:2:"95";s:5:"ئے ";s:2:"96";s:5:"پر ";s:2:"97";s:5:"ں ن";s:2:"98";s:5:"ہ ک";s:2:"99";s:5:"ی و";s:3:"100";s:5:"ے د";s:3:"101";s:5:" تو";s:3:"102";s:5:" تھ";s:3:"103";s:5:" گی";s:3:"104";s:6:"ایک";s:3:"105";s:5:"ل ک";s:3:"106";s:5:"نا ";s:3:"107";s:5:"کر ";s:3:"108";s:5:"ں م";s:3:"109";s:5:"یک ";s:3:"110";s:5:" با";s:3:"111";s:5:"ا ت";s:3:"112";s:5:"دی ";s:3:"113";s:5:"ن س";s:3:"114";s:6:"کیا";s:3:"115";s:6:"یوں";s:3:"116";s:5:"ے ج";s:3:"117";s:5:"ال ";s:3:"118";s:5:"تو ";s:3:"119";s:5:"ں ا";s:3:"120";s:5:"ے پ";s:3:"121";s:5:" چا";s:3:"122";s:5:"ام ";s:3:"123";s:6:"بھی";s:3:"124";s:5:"تی ";s:3:"125";s:5:"تے ";s:3:"126";s:6:"دوس";s:3:"127";s:5:"س ک";s:3:"128";s:6:"ملک";s:3:"129";s:5:"ن ا";s:3:"130";s:6:"ہور";s:3:"131";s:5:"یے ";s:3:"132";s:5:" مو";s:3:"133";s:5:" وک";s:3:"134";s:6:"ائی";s:3:"135";s:6:"ارت";s:3:"136";s:6:"الے";s:3:"137";s:6:"بھا";s:3:"138";s:6:"ردی";s:3:"139";s:5:"ری ";s:3:"140";s:5:"وہ ";s:3:"141";s:6:"ویز";s:3:"142";s:5:"ں د";s:3:"143";s:5:"ھی ";s:3:"144";s:5:"ی س";s:3:"145";s:5:" رہ";s:3:"146";s:5:" من";s:3:"147";s:5:" نہ";s:3:"148";s:5:" ور";s:3:"149";s:5:" وہ";s:3:"150";s:5:" ہن";s:3:"151";s:5:"ا ا";s:3:"152";s:6:"است";s:3:"153";s:5:"ت ا";s:3:"154";s:5:"ت پ";s:3:"155";s:5:"د ک";s:3:"156";s:5:"ز م";s:3:"157";s:5:"ند ";s:3:"158";s:6:"ورد";s:3:"159";s:6:"وکل";s:3:"160";s:5:"گی ";s:3:"161";s:6:"گیا";s:3:"162";s:5:"ہ پ";s:3:"163";s:5:"یز ";s:3:"164";s:5:"ے ت";s:3:"165";s:5:" اع";s:3:"166";s:5:" اپ";s:3:"167";s:5:" جس";s:3:"168";s:5:" جم";s:3:"169";s:5:" جو";s:3:"170";s:5:" سر";s:3:"171";s:6:"اپن";s:3:"172";s:6:"اکث";s:3:"173";s:6:"تھا";s:3:"174";s:6:"ثری";s:3:"175";s:6:"دیا";s:3:"176";s:5:"ر د";s:3:"177";s:5:"رت ";s:3:"178";s:6:"روی";s:3:"179";s:5:"سی ";s:3:"180";s:6:"ملا";s:3:"181";s:6:"ندو";s:3:"182";s:6:"وست";s:3:"183";s:6:"پرو";s:3:"184";s:6:"چاہ";s:3:"185";s:6:"کثر";s:3:"186";s:6:"کلا";s:3:"187";s:5:"ہ ہ";s:3:"188";s:6:"ہند";s:3:"189";s:5:"ہو ";s:3:"190";s:5:"ے ل";s:3:"191";s:5:" اک";s:3:"192";s:5:" دا";s:3:"193";s:5:" سن";s:3:"194";s:5:" وز";s:3:"195";s:5:" پی";s:3:"196";s:5:"ا چ";s:3:"197";s:5:"اء ";s:3:"198";s:6:"اتھ";s:3:"199";s:6:"اقا";s:3:"200";s:5:"اہ ";s:3:"201";s:5:"تھ ";s:3:"202";s:5:"دو ";s:3:"203";s:5:"ر ب";s:3:"204";s:6:"روا";s:3:"205";s:5:"رے ";s:3:"206";s:6:"سات";s:3:"207";s:5:"ف ک";s:3:"208";s:6:"قات";s:3:"209";s:5:"لا ";s:3:"210";s:6:"لاء";s:3:"211";s:5:"م م";s:3:"212";s:5:"م ک";s:3:"213";s:5:"من ";s:3:"214";s:6:"نوں";s:3:"215";s:5:"و ا";s:3:"216";s:6:"کرن";s:3:"217";s:5:"ں ہ";s:3:"218";s:6:"ھار";s:3:"219";s:6:"ہوئ";s:3:"220";s:5:"ہی ";s:3:"221";s:5:"یش ";s:3:"222";s:5:" ام";s:3:"223";s:5:" لا";s:3:"224";s:5:" مس";s:3:"225";s:5:" پو";s:3:"226";s:5:" پہ";s:3:"227";s:6:"انے";s:3:"228";s:5:"ت م";s:3:"229";s:5:"ت ہ";s:3:"230";s:5:"ج ک";s:3:"231";s:6:"دون";s:3:"232";s:6:"زیر";s:3:"233";s:5:"س س";s:3:"234";s:5:"ش ک";s:3:"235";s:5:"ف ن";s:3:"236";s:5:"ل ہ";s:3:"237";s:6:"لاق";s:3:"238";s:5:"لی ";s:3:"239";s:6:"وری";s:3:"240";s:6:"وزی";s:3:"241";s:6:"ونو";s:3:"242";s:6:"کھن";s:3:"243";s:5:"گا ";s:3:"244";s:5:"ں س";s:3:"245";s:5:"ں گ";s:3:"246";s:6:"ھنے";s:3:"247";s:5:"ھے ";s:3:"248";s:5:"ہ ب";s:3:"249";s:5:"ہ ج";s:3:"250";s:5:"ہر ";s:3:"251";s:5:"ی آ";s:3:"252";s:5:"ی پ";s:3:"253";s:5:" حا";s:3:"254";s:5:" وف";s:3:"255";s:5:" گا";s:3:"256";s:5:"ا ج";s:3:"257";s:5:"ا گ";s:3:"258";s:5:"اد ";s:3:"259";s:6:"ادی";s:3:"260";s:6:"اعظ";s:3:"261";s:6:"اہت";s:3:"262";s:5:"جس ";s:3:"263";s:6:"جمہ";s:3:"264";s:5:"جو ";s:3:"265";s:5:"ر س";s:3:"266";s:5:"ر ہ";s:3:"267";s:6:"رنے";s:3:"268";s:5:"س م";s:3:"269";s:5:"سا ";s:3:"270";s:6:"سند";s:3:"271";s:6:"سنگ";s:3:"272";s:5:"ظم ";s:3:"273";s:6:"عظم";s:3:"274";s:5:"ل م";s:3:"275";s:6:"لیے";s:3:"276";s:5:"مل ";s:3:"277";s:6:"موہ";s:3:"278";s:6:"مہو";s:3:"279";s:6:"نگھ";s:3:"280";s:5:"و ص";s:3:"281";s:6:"ورٹ";s:3:"282";s:6:"وہن";s:3:"283";s:5:"کن ";s:3:"284";s:5:"گھ ";s:3:"285";s:5:"گے ";s:3:"286";s:5:"ں ج";s:3:"287";s:5:"ں و";s:3:"288";s:5:"ں ی";s:3:"289";s:5:"ہ د";s:3:"290";s:5:"ہن ";s:3:"291";s:6:"ہوں";s:3:"292";s:5:"ے ح";s:3:"293";s:5:"ے گ";s:3:"294";s:5:"ے ی";s:3:"295";s:5:" اگ";s:3:"296";s:5:" بع";s:3:"297";s:5:" رو";s:3:"298";s:5:" شا";s:3:"299";}s:5:"uzbek";a:300:{s:5:"ан ";s:1:"0";s:6:"ган";s:1:"1";s:6:"лар";s:1:"2";s:5:"га ";s:1:"3";s:5:"нг ";s:1:"4";s:6:"инг";s:1:"5";s:6:"нин";s:1:"6";s:5:"да ";s:1:"7";s:5:"ни ";s:1:"8";s:6:"ида";s:1:"9";s:6:"ари";s:2:"10";s:6:"ига";s:2:"11";s:6:"ини";s:2:"12";s:5:"ар ";s:2:"13";s:5:"ди ";s:2:"14";s:5:" би";s:2:"15";s:6:"ани";s:2:"16";s:5:" бо";s:2:"17";s:6:"дан";s:2:"18";s:6:"лга";s:2:"19";s:5:" ҳа";s:2:"20";s:5:" ва";s:2:"21";s:5:" са";s:2:"22";s:5:"ги ";s:2:"23";s:6:"ила";s:2:"24";s:5:"н б";s:2:"25";s:5:"и б";s:2:"26";s:5:" кў";s:2:"27";s:5:" та";s:2:"28";s:5:"ир ";s:2:"29";s:5:" ма";s:2:"30";s:6:"ага";s:2:"31";s:6:"ала";s:2:"32";s:6:"бир";s:2:"33";s:5:"ри ";s:2:"34";s:6:"тга";s:2:"35";s:6:"лан";s:2:"36";s:6:"лик";s:2:"37";s:5:"а к";s:2:"38";s:6:"аги";s:2:"39";s:6:"ати";s:2:"40";s:5:"та ";s:2:"41";s:6:"ади";s:2:"42";s:6:"даг";s:2:"43";s:6:"рга";s:2:"44";s:5:" йи";s:2:"45";s:5:" ми";s:2:"46";s:5:" па";s:2:"47";s:5:" бў";s:2:"48";s:5:" қа";s:2:"49";s:5:" қи";s:2:"50";s:5:"а б";s:2:"51";s:6:"илл";s:2:"52";s:5:"ли ";s:2:"53";s:6:"аси";s:2:"54";s:5:"и т";s:2:"55";s:5:"ик ";s:2:"56";s:6:"или";s:2:"57";s:6:"лла";s:2:"58";s:6:"ард";s:2:"59";s:6:"вчи";s:2:"60";s:5:"ва ";s:2:"61";s:5:"иб ";s:2:"62";s:6:"ири";s:2:"63";s:6:"лиг";s:2:"64";s:6:"нга";s:2:"65";s:6:"ран";s:2:"66";s:5:" ке";s:2:"67";s:5:" ўз";s:2:"68";s:5:"а с";s:2:"69";s:6:"ахт";s:2:"70";s:6:"бўл";s:2:"71";s:6:"иги";s:2:"72";s:6:"кўр";s:2:"73";s:6:"рда";s:2:"74";s:6:"рни";s:2:"75";s:5:"са ";s:2:"76";s:5:" бе";s:2:"77";s:5:" бу";s:2:"78";s:5:" да";s:2:"79";s:5:" жа";s:2:"80";s:5:"а т";s:2:"81";s:6:"ази";s:2:"82";s:6:"ери";s:2:"83";s:5:"и а";s:2:"84";s:6:"илг";s:2:"85";s:6:"йил";s:2:"86";s:6:"ман";s:2:"87";s:6:"пах";s:2:"88";s:6:"рид";s:2:"89";s:5:"ти ";s:2:"90";s:6:"увч";s:2:"91";s:6:"хта";s:2:"92";s:5:" не";s:2:"93";s:5:" со";s:2:"94";s:5:" уч";s:2:"95";s:6:"айт";s:2:"96";s:6:"лли";s:2:"97";s:6:"тла";s:2:"98";s:5:" ай";s:2:"99";s:5:" фр";s:3:"100";s:5:" эт";s:3:"101";s:5:" ҳо";s:3:"102";s:5:"а қ";s:3:"103";s:6:"али";s:3:"104";s:6:"аро";s:3:"105";s:6:"бер";s:3:"106";s:6:"бил";s:3:"107";s:6:"бор";s:3:"108";s:6:"ими";s:3:"109";s:6:"ист";s:3:"110";s:5:"он ";s:3:"111";s:6:"рин";s:3:"112";s:6:"тер";s:3:"113";s:6:"тил";s:3:"114";s:5:"ун ";s:3:"115";s:6:"фра";s:3:"116";s:6:"қил";s:3:"117";s:5:" ба";s:3:"118";s:5:" ол";s:3:"119";s:6:"анс";s:3:"120";s:6:"ефт";s:3:"121";s:6:"зир";s:3:"122";s:6:"кат";s:3:"123";s:6:"мил";s:3:"124";s:6:"неф";s:3:"125";s:6:"саг";s:3:"126";s:5:"чи ";s:3:"127";s:6:"ўра";s:3:"128";s:5:" на";s:3:"129";s:5:" те";s:3:"130";s:5:" эн";s:3:"131";s:5:"а э";s:3:"132";s:5:"ам ";s:3:"133";s:6:"арн";s:3:"134";s:5:"ат ";s:3:"135";s:5:"иш ";s:3:"136";s:5:"ма ";s:3:"137";s:6:"нла";s:3:"138";s:6:"рли";s:3:"139";s:6:"чил";s:3:"140";s:6:"шга";s:3:"141";s:5:" иш";s:3:"142";s:5:" му";s:3:"143";s:5:" ўқ";s:3:"144";s:6:"ара";s:3:"145";s:6:"ваз";s:3:"146";s:5:"и у";s:3:"147";s:5:"иқ ";s:3:"148";s:6:"моқ";s:3:"149";s:6:"рим";s:3:"150";s:6:"учу";s:3:"151";s:6:"чун";s:3:"152";s:5:"ши ";s:3:"153";s:6:"энг";s:3:"154";s:6:"қув";s:3:"155";s:6:"ҳам";s:3:"156";s:5:" сў";s:3:"157";s:5:" ши";s:3:"158";s:6:"бар";s:3:"159";s:6:"бек";s:3:"160";s:6:"дам";s:3:"161";s:5:"и ҳ";s:3:"162";s:6:"иши";s:3:"163";s:6:"лад";s:3:"164";s:6:"оли";s:3:"165";s:6:"олл";s:3:"166";s:6:"ори";s:3:"167";s:6:"оқд";s:3:"168";s:5:"р б";s:3:"169";s:5:"ра ";s:3:"170";s:6:"рла";s:3:"171";s:6:"уни";s:3:"172";s:5:"фт ";s:3:"173";s:6:"ўлг";s:3:"174";s:6:"ўқу";s:3:"175";s:5:" де";s:3:"176";s:5:" ка";s:3:"177";s:5:" қў";s:3:"178";s:5:"а ў";s:3:"179";s:6:"аба";s:3:"180";s:6:"амм";s:3:"181";s:6:"атл";s:3:"182";s:5:"б к";s:3:"183";s:6:"бош";s:3:"184";s:6:"збе";s:3:"185";s:5:"и в";s:3:"186";s:5:"им ";s:3:"187";s:5:"ин ";s:3:"188";s:6:"ишл";s:3:"189";s:6:"лаб";s:3:"190";s:6:"лей";s:3:"191";s:6:"мин";s:3:"192";s:5:"н д";s:3:"193";s:6:"нда";s:3:"194";s:5:"оқ ";s:3:"195";s:5:"р м";s:3:"196";s:6:"рил";s:3:"197";s:6:"сид";s:3:"198";s:6:"тал";s:3:"199";s:6:"тан";s:3:"200";s:6:"тид";s:3:"201";s:6:"тон";s:3:"202";s:6:"ўзб";s:3:"203";s:5:" ам";s:3:"204";s:5:" ки";s:3:"205";s:5:"а ҳ";s:3:"206";s:6:"анг";s:3:"207";s:6:"анд";s:3:"208";s:6:"арт";s:3:"209";s:6:"аёт";s:3:"210";s:6:"дир";s:3:"211";s:6:"ент";s:3:"212";s:5:"и д";s:3:"213";s:5:"и м";s:3:"214";s:5:"и о";s:3:"215";s:5:"и э";s:3:"216";s:6:"иро";s:3:"217";s:6:"йти";s:3:"218";s:6:"нсу";s:3:"219";s:6:"оди";s:3:"220";s:5:"ор ";s:3:"221";s:5:"си ";s:3:"222";s:6:"тиш";s:3:"223";s:6:"тоб";s:3:"224";s:6:"эти";s:3:"225";s:6:"қар";s:3:"226";s:6:"қда";s:3:"227";s:5:" бл";s:3:"228";s:5:" ге";s:3:"229";s:5:" до";s:3:"230";s:5:" ду";s:3:"231";s:5:" но";s:3:"232";s:5:" пр";s:3:"233";s:5:" ра";s:3:"234";s:5:" фо";s:3:"235";s:5:" қо";s:3:"236";s:5:"а м";s:3:"237";s:5:"а о";s:3:"238";s:6:"айд";s:3:"239";s:6:"ало";s:3:"240";s:6:"ама";s:3:"241";s:6:"бле";s:3:"242";s:5:"г н";s:3:"243";s:6:"дол";s:3:"244";s:6:"ейр";s:3:"245";s:5:"ек ";s:3:"246";s:6:"ерг";s:3:"247";s:6:"жар";s:3:"248";s:6:"зид";s:3:"249";s:5:"и к";s:3:"250";s:5:"и ф";s:3:"251";s:5:"ий ";s:3:"252";s:6:"ило";s:3:"253";s:6:"лди";s:3:"254";s:6:"либ";s:3:"255";s:6:"лин";s:3:"256";s:5:"ми ";s:3:"257";s:6:"мма";s:3:"258";s:5:"н в";s:3:"259";s:5:"н к";s:3:"260";s:5:"н ў";s:3:"261";s:5:"н ҳ";s:3:"262";s:6:"ози";s:3:"263";s:6:"ора";s:3:"264";s:6:"оси";s:3:"265";s:6:"рас";s:3:"266";s:6:"риш";s:3:"267";s:6:"рка";s:3:"268";s:6:"роқ";s:3:"269";s:6:"сто";s:3:"270";s:6:"тин";s:3:"271";s:6:"хат";s:3:"272";s:6:"шир";s:3:"273";s:5:" ав";s:3:"274";s:5:" рў";s:3:"275";s:5:" ту";s:3:"276";s:5:" ўт";s:3:"277";s:5:"а п";s:3:"278";s:6:"авт";s:3:"279";s:6:"ада";s:3:"280";s:6:"аза";s:3:"281";s:6:"анл";s:3:"282";s:5:"б б";s:3:"283";s:6:"бой";s:3:"284";s:5:"бу ";s:3:"285";s:6:"вто";s:3:"286";s:5:"г э";s:3:"287";s:6:"гин";s:3:"288";s:6:"дар";s:3:"289";s:6:"ден";s:3:"290";s:6:"дун";s:3:"291";s:6:"иде";s:3:"292";s:6:"ион";s:3:"293";s:6:"ирл";s:3:"294";s:6:"ишг";s:3:"295";s:6:"йха";s:3:"296";s:6:"кел";s:3:"297";s:6:"кўп";s:3:"298";s:6:"лио";s:3:"299";}s:10:"vietnamese";a:300:{s:3:"ng ";s:1:"0";s:3:" th";s:1:"1";s:3:" ch";s:1:"2";s:3:"g t";s:1:"3";s:3:" nh";s:1:"4";s:4:"ông";s:1:"5";s:3:" kh";s:1:"6";s:3:" tr";s:1:"7";s:3:"nh ";s:1:"8";s:4:" cô";s:1:"9";s:4:"côn";s:2:"10";s:3:" ty";s:2:"11";s:3:"ty ";s:2:"12";s:3:"i t";s:2:"13";s:3:"n t";s:2:"14";s:3:" ng";s:2:"15";s:5:"ại ";s:2:"16";s:3:" ti";s:2:"17";s:3:"ch ";s:2:"18";s:3:"y l";s:2:"19";s:5:"ền ";s:2:"20";s:5:" đư";s:2:"21";s:3:"hi ";s:2:"22";s:5:" gở";s:2:"23";s:5:"gởi";s:2:"24";s:5:"iền";s:2:"25";s:5:"tiề";s:2:"26";s:5:"ởi ";s:2:"27";s:3:" gi";s:2:"28";s:3:" le";s:2:"29";s:3:" vi";s:2:"30";s:3:"cho";s:2:"31";s:3:"ho ";s:2:"32";s:4:"khá";s:2:"33";s:4:" và";s:2:"34";s:4:"hác";s:2:"35";s:3:" ph";s:2:"36";s:3:"am ";s:2:"37";s:4:"hàn";s:2:"38";s:4:"ách";s:2:"39";s:4:"ôi ";s:2:"40";s:3:"i n";s:2:"41";s:6:"ược";s:2:"42";s:5:"ợc ";s:2:"43";s:4:" tô";s:2:"44";s:4:"chú";s:2:"45";s:5:"iệt";s:2:"46";s:4:"tôi";s:2:"47";s:4:"ên ";s:2:"48";s:4:"úng";s:2:"49";s:5:"ệt ";s:2:"50";s:4:" có";s:2:"51";s:3:"c t";s:2:"52";s:4:"có ";s:2:"53";s:4:"hún";s:2:"54";s:5:"việ";s:2:"55";s:7:"đượ";s:2:"56";s:3:" na";s:2:"57";s:3:"g c";s:2:"58";s:3:"i c";s:2:"59";s:3:"n c";s:2:"60";s:3:"n n";s:2:"61";s:3:"t n";s:2:"62";s:4:"và ";s:2:"63";s:3:"n l";s:2:"64";s:4:"n đ";s:2:"65";s:4:"àng";s:2:"66";s:4:"ác ";s:2:"67";s:5:"ất ";s:2:"68";s:3:"h l";s:2:"69";s:3:"nam";s:2:"70";s:4:"ân ";s:2:"71";s:4:"ăm ";s:2:"72";s:4:" hà";s:2:"73";s:4:" là";s:2:"74";s:4:" nă";s:2:"75";s:3:" qu";s:2:"76";s:5:" tạ";s:2:"77";s:3:"g m";s:2:"78";s:4:"năm";s:2:"79";s:5:"tại";s:2:"80";s:5:"ới ";s:2:"81";s:5:" lẹ";s:2:"82";s:3:"ay ";s:2:"83";s:3:"e g";s:2:"84";s:3:"h h";s:2:"85";s:3:"i v";s:2:"86";s:4:"i đ";s:2:"87";s:3:"le ";s:2:"88";s:5:"lẹ ";s:2:"89";s:5:"ều ";s:2:"90";s:5:"ời ";s:2:"91";s:4:"hân";s:2:"92";s:3:"nhi";s:2:"93";s:3:"t t";s:2:"94";s:5:" củ";s:2:"95";s:5:" mộ";s:2:"96";s:5:" về";s:2:"97";s:4:" đi";s:2:"98";s:3:"an ";s:2:"99";s:5:"của";s:3:"100";s:4:"là ";s:3:"101";s:5:"một";s:3:"102";s:5:"về ";s:3:"103";s:4:"ành";s:3:"104";s:5:"ết ";s:3:"105";s:5:"ột ";s:3:"106";s:5:"ủa ";s:3:"107";s:3:" bi";s:3:"108";s:4:" cá";s:3:"109";s:3:"a c";s:3:"110";s:3:"anh";s:3:"111";s:4:"các";s:3:"112";s:3:"h c";s:3:"113";s:5:"iều";s:3:"114";s:3:"m t";s:3:"115";s:5:"ện ";s:3:"116";s:3:" ho";s:3:"117";s:3:"'s ";s:3:"118";s:3:"ave";s:3:"119";s:3:"e's";s:3:"120";s:3:"el ";s:3:"121";s:3:"g n";s:3:"122";s:3:"le'";s:3:"123";s:3:"n v";s:3:"124";s:3:"o c";s:3:"125";s:3:"rav";s:3:"126";s:3:"s t";s:3:"127";s:3:"thi";s:3:"128";s:3:"tra";s:3:"129";s:3:"vel";s:3:"130";s:5:"ận ";s:3:"131";s:5:"ến ";s:3:"132";s:3:" ba";s:3:"133";s:3:" cu";s:3:"134";s:3:" sa";s:3:"135";s:5:" đó";s:3:"136";s:6:" đế";s:3:"137";s:3:"c c";s:3:"138";s:3:"chu";s:3:"139";s:5:"hiề";s:3:"140";s:3:"huy";s:3:"141";s:3:"khi";s:3:"142";s:4:"nhâ";s:3:"143";s:4:"như";s:3:"144";s:3:"ong";s:3:"145";s:3:"ron";s:3:"146";s:3:"thu";s:3:"147";s:4:"thư";s:3:"148";s:3:"tro";s:3:"149";s:3:"y c";s:3:"150";s:4:"ày ";s:3:"151";s:6:"đến";s:3:"152";s:6:"ười";s:3:"153";s:6:"ườn";s:3:"154";s:5:"ề v";s:3:"155";s:5:"ờng";s:3:"156";s:5:" vớ";s:3:"157";s:5:"cuộ";s:3:"158";s:4:"g đ";s:3:"159";s:5:"iết";s:3:"160";s:5:"iện";s:3:"161";s:4:"ngà";s:3:"162";s:3:"o t";s:3:"163";s:3:"u c";s:3:"164";s:5:"uộc";s:3:"165";s:5:"với";s:3:"166";s:4:"à c";s:3:"167";s:4:"ài ";s:3:"168";s:4:"ơng";s:3:"169";s:5:"ươn";s:3:"170";s:5:"ải ";s:3:"171";s:5:"ộc ";s:3:"172";s:5:"ức ";s:3:"173";s:3:" an";s:3:"174";s:5:" lậ";s:3:"175";s:3:" ra";s:3:"176";s:5:" sẽ";s:3:"177";s:5:" số";s:3:"178";s:5:" tổ";s:3:"179";s:3:"a k";s:3:"180";s:5:"biế";s:3:"181";s:3:"c n";s:3:"182";s:4:"c đ";s:3:"183";s:5:"chứ";s:3:"184";s:3:"g v";s:3:"185";s:3:"gia";s:3:"186";s:4:"gày";s:3:"187";s:4:"hán";s:3:"188";s:4:"hôn";s:3:"189";s:4:"hư ";s:3:"190";s:5:"hức";s:3:"191";s:3:"i g";s:3:"192";s:3:"i h";s:3:"193";s:3:"i k";s:3:"194";s:3:"i p";s:3:"195";s:4:"iên";s:3:"196";s:4:"khô";s:3:"197";s:5:"lập";s:3:"198";s:3:"n k";s:3:"199";s:3:"ra ";s:3:"200";s:4:"rên";s:3:"201";s:5:"sẽ ";s:3:"202";s:3:"t c";s:3:"203";s:4:"thà";s:3:"204";s:4:"trê";s:3:"205";s:5:"tổ ";s:3:"206";s:3:"u n";s:3:"207";s:3:"y t";s:3:"208";s:4:"ình";s:3:"209";s:5:"ấy ";s:3:"210";s:5:"ập ";s:3:"211";s:5:"ổ c";s:3:"212";s:4:" má";s:3:"213";s:6:" để";s:3:"214";s:3:"ai ";s:3:"215";s:3:"c s";s:3:"216";s:6:"gườ";s:3:"217";s:3:"h v";s:3:"218";s:3:"hoa";s:3:"219";s:5:"hoạ";s:3:"220";s:3:"inh";s:3:"221";s:3:"m n";s:3:"222";s:4:"máy";s:3:"223";s:3:"n g";s:3:"224";s:4:"ngư";s:3:"225";s:5:"nhậ";s:3:"226";s:3:"o n";s:3:"227";s:3:"oa ";s:3:"228";s:4:"oàn";s:3:"229";s:3:"p c";s:3:"230";s:5:"số ";s:3:"231";s:4:"t đ";s:3:"232";s:3:"y v";s:3:"233";s:4:"ào ";s:3:"234";s:4:"áy ";s:3:"235";s:4:"ăn ";s:3:"236";s:5:"đó ";s:3:"237";s:6:"để ";s:3:"238";s:6:"ước";s:3:"239";s:5:"ần ";s:3:"240";s:5:"ển ";s:3:"241";s:5:"ớc ";s:3:"242";s:4:" bá";s:3:"243";s:4:" cơ";s:3:"244";s:5:" cả";s:3:"245";s:5:" cầ";s:3:"246";s:5:" họ";s:3:"247";s:5:" kỳ";s:3:"248";s:3:" li";s:3:"249";s:5:" mạ";s:3:"250";s:5:" sở";s:3:"251";s:5:" tặ";s:3:"252";s:4:" vé";s:3:"253";s:5:" vụ";s:3:"254";s:6:" đạ";s:3:"255";s:4:"a đ";s:3:"256";s:3:"bay";s:3:"257";s:4:"cơ ";s:3:"258";s:3:"g s";s:3:"259";s:3:"han";s:3:"260";s:5:"hươ";s:3:"261";s:3:"i s";s:3:"262";s:5:"kỳ ";s:3:"263";s:3:"m c";s:3:"264";s:3:"n m";s:3:"265";s:3:"n p";s:3:"266";s:3:"o b";s:3:"267";s:5:"oại";s:3:"268";s:3:"qua";s:3:"269";s:5:"sở ";s:3:"270";s:3:"tha";s:3:"271";s:4:"thá";s:3:"272";s:5:"tặn";s:3:"273";s:4:"vào";s:3:"274";s:4:"vé ";s:3:"275";s:5:"vụ ";s:3:"276";s:3:"y b";s:3:"277";s:4:"àn ";s:3:"278";s:4:"áng";s:3:"279";s:4:"ơ s";s:3:"280";s:5:"ầu ";s:3:"281";s:5:"ật ";s:3:"282";s:5:"ặng";s:3:"283";s:5:"ọc ";s:3:"284";s:5:"ở t";s:3:"285";s:5:"ững";s:3:"286";s:3:" du";s:3:"287";s:3:" lu";s:3:"288";s:3:" ta";s:3:"289";s:3:" to";s:3:"290";s:5:" từ";s:3:"291";s:5:" ở ";s:3:"292";s:3:"a v";s:3:"293";s:3:"ao ";s:3:"294";s:3:"c v";s:3:"295";s:5:"cả ";s:3:"296";s:3:"du ";s:3:"297";s:3:"g l";s:3:"298";s:5:"giả";s:3:"299";}s:5:"welsh";a:300:{s:3:"yn ";s:1:"0";s:3:"dd ";s:1:"1";s:3:" yn";s:1:"2";s:3:" y ";s:1:"3";s:3:"ydd";s:1:"4";s:3:"eth";s:1:"5";s:3:"th ";s:1:"6";s:3:" i ";s:1:"7";s:3:"aet";s:1:"8";s:3:"d y";s:1:"9";s:3:"ch ";s:2:"10";s:3:"od ";s:2:"11";s:3:"ol ";s:2:"12";s:3:"edd";s:2:"13";s:3:" ga";s:2:"14";s:3:" gw";s:2:"15";s:3:"'r ";s:2:"16";s:3:"au ";s:2:"17";s:3:"ddi";s:2:"18";s:3:"ad ";s:2:"19";s:3:" cy";s:2:"20";s:3:" gy";s:2:"21";s:3:" ei";s:2:"22";s:3:" o ";s:2:"23";s:3:"iad";s:2:"24";s:3:"yr ";s:2:"25";s:3:"an ";s:2:"26";s:3:"bod";s:2:"27";s:3:"wed";s:2:"28";s:3:" bo";s:2:"29";s:3:" dd";s:2:"30";s:3:"el ";s:2:"31";s:3:"n y";s:2:"32";s:3:" am";s:2:"33";s:3:"di ";s:2:"34";s:3:"edi";s:2:"35";s:3:"on ";s:2:"36";s:3:" we";s:2:"37";s:3:" ym";s:2:"38";s:3:" ar";s:2:"39";s:3:" rh";s:2:"40";s:3:"odd";s:2:"41";s:3:" ca";s:2:"42";s:3:" ma";s:2:"43";s:3:"ael";s:2:"44";s:3:"oed";s:2:"45";s:3:"dae";s:2:"46";s:3:"n a";s:2:"47";s:3:"dda";s:2:"48";s:3:"er ";s:2:"49";s:3:"h y";s:2:"50";s:3:"all";s:2:"51";s:3:"ei ";s:2:"52";s:3:" ll";s:2:"53";s:3:"am ";s:2:"54";s:3:"eu ";s:2:"55";s:3:"fod";s:2:"56";s:3:"fyd";s:2:"57";s:3:"l y";s:2:"58";s:3:"n g";s:2:"59";s:3:"wyn";s:2:"60";s:3:"d a";s:2:"61";s:3:"i g";s:2:"62";s:3:"mae";s:2:"63";s:3:"neu";s:2:"64";s:3:"os ";s:2:"65";s:3:" ne";s:2:"66";s:3:"d i";s:2:"67";s:3:"dod";s:2:"68";s:3:"dol";s:2:"69";s:3:"n c";s:2:"70";s:3:"r h";s:2:"71";s:3:"wyd";s:2:"72";s:3:"wyr";s:2:"73";s:3:"ai ";s:2:"74";s:3:"ar ";s:2:"75";s:3:"in ";s:2:"76";s:3:"rth";s:2:"77";s:3:" fy";s:2:"78";s:3:" he";s:2:"79";s:3:" me";s:2:"80";s:3:" yr";s:2:"81";s:3:"'n ";s:2:"82";s:3:"dia";s:2:"83";s:3:"est";s:2:"84";s:3:"h c";s:2:"85";s:3:"hai";s:2:"86";s:3:"i d";s:2:"87";s:3:"id ";s:2:"88";s:3:"r y";s:2:"89";s:3:"y b";s:2:"90";s:3:" dy";s:2:"91";s:3:" ha";s:2:"92";s:3:"ada";s:2:"93";s:3:"i b";s:2:"94";s:3:"n i";s:2:"95";s:3:"ote";s:2:"96";s:3:"rot";s:2:"97";s:3:"tes";s:2:"98";s:3:"y g";s:2:"99";s:3:"yd ";s:3:"100";s:3:" ad";s:3:"101";s:3:" mr";s:3:"102";s:3:" un";s:3:"103";s:3:"cyn";s:3:"104";s:3:"dau";s:3:"105";s:3:"ddy";s:3:"106";s:3:"edo";s:3:"107";s:3:"i c";s:3:"108";s:3:"i w";s:3:"109";s:3:"ith";s:3:"110";s:3:"lae";s:3:"111";s:3:"lla";s:3:"112";s:3:"nd ";s:3:"113";s:3:"oda";s:3:"114";s:3:"ryd";s:3:"115";s:3:"tho";s:3:"116";s:3:" a ";s:3:"117";s:3:" dr";s:3:"118";s:3:"aid";s:3:"119";s:3:"ain";s:3:"120";s:3:"ddo";s:3:"121";s:3:"dyd";s:3:"122";s:3:"fyn";s:3:"123";s:3:"gyn";s:3:"124";s:3:"hol";s:3:"125";s:3:"io ";s:3:"126";s:3:"o a";s:3:"127";s:3:"wch";s:3:"128";s:3:"wyb";s:3:"129";s:3:"ybo";s:3:"130";s:3:"ych";s:3:"131";s:3:" br";s:3:"132";s:3:" by";s:3:"133";s:3:" di";s:3:"134";s:3:" fe";s:3:"135";s:3:" na";s:3:"136";s:3:" o'";s:3:"137";s:3:" pe";s:3:"138";s:3:"art";s:3:"139";s:3:"byd";s:3:"140";s:3:"dro";s:3:"141";s:3:"gal";s:3:"142";s:3:"l e";s:3:"143";s:3:"lai";s:3:"144";s:3:"mr ";s:3:"145";s:3:"n n";s:3:"146";s:3:"r a";s:3:"147";s:3:"rhy";s:3:"148";s:3:"wn ";s:3:"149";s:3:"ynn";s:3:"150";s:3:" on";s:3:"151";s:3:" r ";s:3:"152";s:3:"cae";s:3:"153";s:3:"d g";s:3:"154";s:3:"d o";s:3:"155";s:3:"d w";s:3:"156";s:3:"gan";s:3:"157";s:3:"gwy";s:3:"158";s:3:"n d";s:3:"159";s:3:"n f";s:3:"160";s:3:"n o";s:3:"161";s:3:"ned";s:3:"162";s:3:"ni ";s:3:"163";s:3:"o'r";s:3:"164";s:3:"r d";s:3:"165";s:3:"ud ";s:3:"166";s:3:"wei";s:3:"167";s:3:"wrt";s:3:"168";s:3:" an";s:3:"169";s:3:" cw";s:3:"170";s:3:" da";s:3:"171";s:3:" ni";s:3:"172";s:3:" pa";s:3:"173";s:3:" pr";s:3:"174";s:3:" wy";s:3:"175";s:3:"d e";s:3:"176";s:3:"dai";s:3:"177";s:3:"dim";s:3:"178";s:3:"eud";s:3:"179";s:3:"gwa";s:3:"180";s:3:"idd";s:3:"181";s:3:"im ";s:3:"182";s:3:"iri";s:3:"183";s:3:"lwy";s:3:"184";s:3:"n b";s:3:"185";s:3:"nol";s:3:"186";s:3:"r o";s:3:"187";s:3:"rwy";s:3:"188";s:3:" ch";s:3:"189";s:3:" er";s:3:"190";s:3:" fo";s:3:"191";s:3:" ge";s:3:"192";s:3:" hy";s:3:"193";s:3:" i'";s:3:"194";s:3:" ro";s:3:"195";s:3:" sa";s:3:"196";s:3:" tr";s:3:"197";s:3:"bob";s:3:"198";s:3:"cwy";s:3:"199";s:3:"cyf";s:3:"200";s:3:"dio";s:3:"201";s:3:"dyn";s:3:"202";s:3:"eit";s:3:"203";s:3:"hel";s:3:"204";s:3:"hyn";s:3:"205";s:3:"ich";s:3:"206";s:3:"ll ";s:3:"207";s:3:"mdd";s:3:"208";s:3:"n r";s:3:"209";s:3:"ond";s:3:"210";s:3:"pro";s:3:"211";s:3:"r c";s:3:"212";s:3:"r g";s:3:"213";s:3:"red";s:3:"214";s:3:"rha";s:3:"215";s:3:"u a";s:3:"216";s:3:"u c";s:3:"217";s:3:"u y";s:3:"218";s:3:"y c";s:3:"219";s:3:"ymd";s:3:"220";s:3:"ymr";s:3:"221";s:3:"yw ";s:3:"222";s:3:" ac";s:3:"223";s:3:" be";s:3:"224";s:3:" bl";s:3:"225";s:3:" co";s:3:"226";s:3:" os";s:3:"227";s:3:"adw";s:3:"228";s:3:"ae ";s:3:"229";s:3:"af ";s:3:"230";s:3:"d p";s:3:"231";s:3:"efn";s:3:"232";s:3:"eic";s:3:"233";s:3:"en ";s:3:"234";s:3:"eol";s:3:"235";s:3:"es ";s:3:"236";s:3:"fer";s:3:"237";s:3:"gel";s:3:"238";s:3:"h g";s:3:"239";s:3:"hod";s:3:"240";s:3:"ied";s:3:"241";s:3:"ir ";s:3:"242";s:3:"laf";s:3:"243";s:3:"n h";s:3:"244";s:3:"na ";s:3:"245";s:3:"nyd";s:3:"246";s:3:"odo";s:3:"247";s:3:"ofy";s:3:"248";s:3:"rdd";s:3:"249";s:3:"rie";s:3:"250";s:3:"ros";s:3:"251";s:3:"stw";s:3:"252";s:3:"twy";s:3:"253";s:3:"yda";s:3:"254";s:3:"yng";s:3:"255";s:3:" at";s:3:"256";s:3:" de";s:3:"257";s:3:" go";s:3:"258";s:3:" id";s:3:"259";s:3:" oe";s:3:"260";s:4:" â ";s:3:"261";s:3:"'ch";s:3:"262";s:3:"ac ";s:3:"263";s:3:"ach";s:3:"264";s:3:"ae'";s:3:"265";s:3:"al ";s:3:"266";s:3:"bl ";s:3:"267";s:3:"d c";s:3:"268";s:3:"d l";s:3:"269";s:3:"dan";s:3:"270";s:3:"dde";s:3:"271";s:3:"ddw";s:3:"272";s:3:"dir";s:3:"273";s:3:"dla";s:3:"274";s:3:"ed ";s:3:"275";s:3:"ela";s:3:"276";s:3:"ell";s:3:"277";s:3:"ene";s:3:"278";s:3:"ewn";s:3:"279";s:3:"gyd";s:3:"280";s:3:"hau";s:3:"281";s:3:"hyw";s:3:"282";s:3:"i a";s:3:"283";s:3:"i f";s:3:"284";s:3:"iol";s:3:"285";s:3:"ion";s:3:"286";s:3:"l a";s:3:"287";s:3:"l i";s:3:"288";s:3:"lia";s:3:"289";s:3:"med";s:3:"290";s:3:"mon";s:3:"291";s:3:"n s";s:3:"292";s:3:"no ";s:3:"293";s:3:"obl";s:3:"294";s:3:"ola";s:3:"295";s:3:"ref";s:3:"296";s:3:"rn ";s:3:"297";s:3:"thi";s:3:"298";s:3:"un ";s:3:"299";}}s:18:"trigram-unicodemap";a:13:{s:11:"Basic Latin";a:38:{s:8:"albanian";i:661;s:5:"azeri";i:653;s:7:"bengali";i:1;s:7:"cebuano";i:750;s:8:"croatian";i:733;s:5:"czech";i:652;s:6:"danish";i:734;s:5:"dutch";i:741;s:7:"english";i:723;s:8:"estonian";i:739;s:7:"finnish";i:743;s:6:"french";i:733;s:6:"german";i:750;s:5:"hausa";i:752;s:8:"hawaiian";i:751;s:9:"hungarian";i:693;s:9:"icelandic";i:662;s:10:"indonesian";i:776;s:7:"italian";i:741;s:5:"latin";i:764;s:7:"latvian";i:693;s:10:"lithuanian";i:738;s:9:"mongolian";i:19;s:9:"norwegian";i:742;s:6:"pidgin";i:702;s:6:"polish";i:701;s:10:"portuguese";i:726;s:8:"romanian";i:714;s:6:"slovak";i:677;s:7:"slovene";i:740;s:6:"somali";i:755;s:7:"spanish";i:749;s:7:"swahili";i:770;s:7:"swedish";i:717;s:7:"tagalog";i:767;s:7:"turkish";i:673;s:10:"vietnamese";i:503;s:5:"welsh";i:728;}s:18:"Latin-1 Supplement";a:21:{s:8:"albanian";i:68;s:5:"azeri";i:10;s:5:"czech";i:51;s:6:"danish";i:13;s:8:"estonian";i:19;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:9:"hungarian";i:72;s:9:"icelandic";i:80;s:7:"italian";i:3;s:9:"norwegian";i:5;s:6:"polish";i:6;s:10:"portuguese";i:18;s:8:"romanian";i:9;s:6:"slovak";i:37;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:25;s:10:"vietnamese";i:56;s:5:"welsh";i:1;}s:14:"[Malformatted]";a:42:{s:8:"albanian";i:68;s:6:"arabic";i:724;s:5:"azeri";i:109;s:7:"bengali";i:1472;s:9:"bulgarian";i:750;s:8:"croatian";i:10;s:5:"czech";i:78;s:6:"danish";i:13;s:8:"estonian";i:19;s:5:"farsi";i:706;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:5:"hausa";i:8;s:5:"hindi";i:1386;s:9:"hungarian";i:74;s:9:"icelandic";i:80;s:7:"italian";i:3;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:6:"nepali";i:1514;s:9:"norwegian";i:5;s:6:"pashto";i:677;s:6:"polish";i:45;s:10:"portuguese";i:18;s:8:"romanian";i:31;s:7:"russian";i:759;s:7:"serbian";i:757;s:6:"slovak";i:45;s:7:"slovene";i:10;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:87;s:9:"ukrainian";i:748;s:4:"urdu";i:682;s:5:"uzbek";i:773;s:10:"vietnamese";i:289;s:5:"welsh";i:1;}s:6:"Arabic";a:4:{s:6:"arabic";i:724;s:5:"farsi";i:706;s:6:"pashto";i:677;s:4:"urdu";i:682;}s:16:"Latin Extended-B";a:3:{s:5:"azeri";i:73;s:5:"hausa";i:8;s:10:"vietnamese";i:19;}s:16:"Latin Extended-A";a:12:{s:5:"azeri";i:25;s:8:"croatian";i:10;s:5:"czech";i:27;s:9:"hungarian";i:2;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:6:"polish";i:39;s:8:"romanian";i:22;s:6:"slovak";i:8;s:7:"slovene";i:10;s:7:"turkish";i:62;s:10:"vietnamese";i:20;}s:27:"Combining Diacritical Marks";a:1:{s:5:"azeri";i:1;}s:7:"Bengali";a:1:{s:7:"bengali";i:714;}s:8:"Gujarati";a:1:{s:7:"bengali";i:16;}s:8:"Gurmukhi";a:1:{s:7:"bengali";i:6;}s:8:"Cyrillic";a:9:{s:9:"bulgarian";i:750;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:7:"russian";i:759;s:7:"serbian";i:757;s:9:"ukrainian";i:748;s:5:"uzbek";i:773;}s:10:"Devanagari";a:2:{s:5:"hindi";i:693;s:6:"nepali";i:757;}s:25:"Latin Extended Additional";a:1:{s:10:"vietnamese";i:97;}}}
\ No newline at end of file
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/data/unicode_blocks.dat b/build/production/LIME/php/lib/Text_LanguageDetect/data/unicode_blocks.dat
new file mode 100644
index 00000000..3b24cd2c
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/data/unicode_blocks.dat
@@ -0,0 +1 @@
+a:145:{i:0;a:3:{i:0;s:6:"0x0000";i:1;s:6:"0x007F";i:2;s:11:"Basic Latin";}i:1;a:3:{i:0;s:6:"0x0080";i:1;s:6:"0x00FF";i:2;s:18:"Latin-1 Supplement";}i:2;a:3:{i:0;s:6:"0x0100";i:1;s:6:"0x017F";i:2;s:16:"Latin Extended-A";}i:3;a:3:{i:0;s:6:"0x0180";i:1;s:6:"0x024F";i:2;s:16:"Latin Extended-B";}i:4;a:3:{i:0;s:6:"0x0250";i:1;s:6:"0x02AF";i:2;s:14:"IPA Extensions";}i:5;a:3:{i:0;s:6:"0x02B0";i:1;s:6:"0x02FF";i:2;s:24:"Spacing Modifier Letters";}i:6;a:3:{i:0;s:6:"0x0300";i:1;s:6:"0x036F";i:2;s:27:"Combining Diacritical Marks";}i:7;a:3:{i:0;s:6:"0x0370";i:1;s:6:"0x03FF";i:2;s:16:"Greek and Coptic";}i:8;a:3:{i:0;s:6:"0x0400";i:1;s:6:"0x04FF";i:2;s:8:"Cyrillic";}i:9;a:3:{i:0;s:6:"0x0500";i:1;s:6:"0x052F";i:2;s:19:"Cyrillic Supplement";}i:10;a:3:{i:0;s:6:"0x0530";i:1;s:6:"0x058F";i:2;s:8:"Armenian";}i:11;a:3:{i:0;s:6:"0x0590";i:1;s:6:"0x05FF";i:2;s:6:"Hebrew";}i:12;a:3:{i:0;s:6:"0x0600";i:1;s:6:"0x06FF";i:2;s:6:"Arabic";}i:13;a:3:{i:0;s:6:"0x0700";i:1;s:6:"0x074F";i:2;s:6:"Syriac";}i:14;a:3:{i:0;s:6:"0x0750";i:1;s:6:"0x077F";i:2;s:17:"Arabic Supplement";}i:15;a:3:{i:0;s:6:"0x0780";i:1;s:6:"0x07BF";i:2;s:6:"Thaana";}i:16;a:3:{i:0;s:6:"0x0900";i:1;s:6:"0x097F";i:2;s:10:"Devanagari";}i:17;a:3:{i:0;s:6:"0x0980";i:1;s:6:"0x09FF";i:2;s:7:"Bengali";}i:18;a:3:{i:0;s:6:"0x0A00";i:1;s:6:"0x0A7F";i:2;s:8:"Gurmukhi";}i:19;a:3:{i:0;s:6:"0x0A80";i:1;s:6:"0x0AFF";i:2;s:8:"Gujarati";}i:20;a:3:{i:0;s:6:"0x0B00";i:1;s:6:"0x0B7F";i:2;s:5:"Oriya";}i:21;a:3:{i:0;s:6:"0x0B80";i:1;s:6:"0x0BFF";i:2;s:5:"Tamil";}i:22;a:3:{i:0;s:6:"0x0C00";i:1;s:6:"0x0C7F";i:2;s:6:"Telugu";}i:23;a:3:{i:0;s:6:"0x0C80";i:1;s:6:"0x0CFF";i:2;s:7:"Kannada";}i:24;a:3:{i:0;s:6:"0x0D00";i:1;s:6:"0x0D7F";i:2;s:9:"Malayalam";}i:25;a:3:{i:0;s:6:"0x0D80";i:1;s:6:"0x0DFF";i:2;s:7:"Sinhala";}i:26;a:3:{i:0;s:6:"0x0E00";i:1;s:6:"0x0E7F";i:2;s:4:"Thai";}i:27;a:3:{i:0;s:6:"0x0E80";i:1;s:6:"0x0EFF";i:2;s:3:"Lao";}i:28;a:3:{i:0;s:6:"0x0F00";i:1;s:6:"0x0FFF";i:2;s:7:"Tibetan";}i:29;a:3:{i:0;s:6:"0x1000";i:1;s:6:"0x109F";i:2;s:7:"Myanmar";}i:30;a:3:{i:0;s:6:"0x10A0";i:1;s:6:"0x10FF";i:2;s:8:"Georgian";}i:31;a:3:{i:0;s:6:"0x1100";i:1;s:6:"0x11FF";i:2;s:11:"Hangul Jamo";}i:32;a:3:{i:0;s:6:"0x1200";i:1;s:6:"0x137F";i:2;s:8:"Ethiopic";}i:33;a:3:{i:0;s:6:"0x1380";i:1;s:6:"0x139F";i:2;s:19:"Ethiopic Supplement";}i:34;a:3:{i:0;s:6:"0x13A0";i:1;s:6:"0x13FF";i:2;s:8:"Cherokee";}i:35;a:3:{i:0;s:6:"0x1400";i:1;s:6:"0x167F";i:2;s:37:"Unified Canadian Aboriginal Syllabics";}i:36;a:3:{i:0;s:6:"0x1680";i:1;s:6:"0x169F";i:2;s:5:"Ogham";}i:37;a:3:{i:0;s:6:"0x16A0";i:1;s:6:"0x16FF";i:2;s:5:"Runic";}i:38;a:3:{i:0;s:6:"0x1700";i:1;s:6:"0x171F";i:2;s:7:"Tagalog";}i:39;a:3:{i:0;s:6:"0x1720";i:1;s:6:"0x173F";i:2;s:7:"Hanunoo";}i:40;a:3:{i:0;s:6:"0x1740";i:1;s:6:"0x175F";i:2;s:5:"Buhid";}i:41;a:3:{i:0;s:6:"0x1760";i:1;s:6:"0x177F";i:2;s:8:"Tagbanwa";}i:42;a:3:{i:0;s:6:"0x1780";i:1;s:6:"0x17FF";i:2;s:5:"Khmer";}i:43;a:3:{i:0;s:6:"0x1800";i:1;s:6:"0x18AF";i:2;s:9:"Mongolian";}i:44;a:3:{i:0;s:6:"0x1900";i:1;s:6:"0x194F";i:2;s:5:"Limbu";}i:45;a:3:{i:0;s:6:"0x1950";i:1;s:6:"0x197F";i:2;s:6:"Tai Le";}i:46;a:3:{i:0;s:6:"0x1980";i:1;s:6:"0x19DF";i:2;s:11:"New Tai Lue";}i:47;a:3:{i:0;s:6:"0x19E0";i:1;s:6:"0x19FF";i:2;s:13:"Khmer Symbols";}i:48;a:3:{i:0;s:6:"0x1A00";i:1;s:6:"0x1A1F";i:2;s:8:"Buginese";}i:49;a:3:{i:0;s:6:"0x1D00";i:1;s:6:"0x1D7F";i:2;s:19:"Phonetic Extensions";}i:50;a:3:{i:0;s:6:"0x1D80";i:1;s:6:"0x1DBF";i:2;s:30:"Phonetic Extensions Supplement";}i:51;a:3:{i:0;s:6:"0x1DC0";i:1;s:6:"0x1DFF";i:2;s:38:"Combining Diacritical Marks Supplement";}i:52;a:3:{i:0;s:6:"0x1E00";i:1;s:6:"0x1EFF";i:2;s:25:"Latin Extended Additional";}i:53;a:3:{i:0;s:6:"0x1F00";i:1;s:6:"0x1FFF";i:2;s:14:"Greek Extended";}i:54;a:3:{i:0;s:6:"0x2000";i:1;s:6:"0x206F";i:2;s:19:"General Punctuation";}i:55;a:3:{i:0;s:6:"0x2070";i:1;s:6:"0x209F";i:2;s:27:"Superscripts and Subscripts";}i:56;a:3:{i:0;s:6:"0x20A0";i:1;s:6:"0x20CF";i:2;s:16:"Currency Symbols";}i:57;a:3:{i:0;s:6:"0x20D0";i:1;s:6:"0x20FF";i:2;s:39:"Combining Diacritical Marks for Symbols";}i:58;a:3:{i:0;s:6:"0x2100";i:1;s:6:"0x214F";i:2;s:18:"Letterlike Symbols";}i:59;a:3:{i:0;s:6:"0x2150";i:1;s:6:"0x218F";i:2;s:12:"Number Forms";}i:60;a:3:{i:0;s:6:"0x2190";i:1;s:6:"0x21FF";i:2;s:6:"Arrows";}i:61;a:3:{i:0;s:6:"0x2200";i:1;s:6:"0x22FF";i:2;s:22:"Mathematical Operators";}i:62;a:3:{i:0;s:6:"0x2300";i:1;s:6:"0x23FF";i:2;s:23:"Miscellaneous Technical";}i:63;a:3:{i:0;s:6:"0x2400";i:1;s:6:"0x243F";i:2;s:16:"Control Pictures";}i:64;a:3:{i:0;s:6:"0x2440";i:1;s:6:"0x245F";i:2;s:29:"Optical Character Recognition";}i:65;a:3:{i:0;s:6:"0x2460";i:1;s:6:"0x24FF";i:2;s:22:"Enclosed Alphanumerics";}i:66;a:3:{i:0;s:6:"0x2500";i:1;s:6:"0x257F";i:2;s:11:"Box Drawing";}i:67;a:3:{i:0;s:6:"0x2580";i:1;s:6:"0x259F";i:2;s:14:"Block Elements";}i:68;a:3:{i:0;s:6:"0x25A0";i:1;s:6:"0x25FF";i:2;s:16:"Geometric Shapes";}i:69;a:3:{i:0;s:6:"0x2600";i:1;s:6:"0x26FF";i:2;s:21:"Miscellaneous Symbols";}i:70;a:3:{i:0;s:6:"0x2700";i:1;s:6:"0x27BF";i:2;s:8:"Dingbats";}i:71;a:3:{i:0;s:6:"0x27C0";i:1;s:6:"0x27EF";i:2;s:36:"Miscellaneous Mathematical Symbols-A";}i:72;a:3:{i:0;s:6:"0x27F0";i:1;s:6:"0x27FF";i:2;s:21:"Supplemental Arrows-A";}i:73;a:3:{i:0;s:6:"0x2800";i:1;s:6:"0x28FF";i:2;s:16:"Braille Patterns";}i:74;a:3:{i:0;s:6:"0x2900";i:1;s:6:"0x297F";i:2;s:21:"Supplemental Arrows-B";}i:75;a:3:{i:0;s:6:"0x2980";i:1;s:6:"0x29FF";i:2;s:36:"Miscellaneous Mathematical Symbols-B";}i:76;a:3:{i:0;s:6:"0x2A00";i:1;s:6:"0x2AFF";i:2;s:35:"Supplemental Mathematical Operators";}i:77;a:3:{i:0;s:6:"0x2B00";i:1;s:6:"0x2BFF";i:2;s:32:"Miscellaneous Symbols and Arrows";}i:78;a:3:{i:0;s:6:"0x2C00";i:1;s:6:"0x2C5F";i:2;s:10:"Glagolitic";}i:79;a:3:{i:0;s:6:"0x2C80";i:1;s:6:"0x2CFF";i:2;s:6:"Coptic";}i:80;a:3:{i:0;s:6:"0x2D00";i:1;s:6:"0x2D2F";i:2;s:19:"Georgian Supplement";}i:81;a:3:{i:0;s:6:"0x2D30";i:1;s:6:"0x2D7F";i:2;s:8:"Tifinagh";}i:82;a:3:{i:0;s:6:"0x2D80";i:1;s:6:"0x2DDF";i:2;s:17:"Ethiopic Extended";}i:83;a:3:{i:0;s:6:"0x2E00";i:1;s:6:"0x2E7F";i:2;s:24:"Supplemental Punctuation";}i:84;a:3:{i:0;s:6:"0x2E80";i:1;s:6:"0x2EFF";i:2;s:23:"CJK Radicals Supplement";}i:85;a:3:{i:0;s:6:"0x2F00";i:1;s:6:"0x2FDF";i:2;s:15:"Kangxi Radicals";}i:86;a:3:{i:0;s:6:"0x2FF0";i:1;s:6:"0x2FFF";i:2;s:34:"Ideographic Description Characters";}i:87;a:3:{i:0;s:6:"0x3000";i:1;s:6:"0x303F";i:2;s:27:"CJK Symbols and Punctuation";}i:88;a:3:{i:0;s:6:"0x3040";i:1;s:6:"0x309F";i:2;s:8:"Hiragana";}i:89;a:3:{i:0;s:6:"0x30A0";i:1;s:6:"0x30FF";i:2;s:8:"Katakana";}i:90;a:3:{i:0;s:6:"0x3100";i:1;s:6:"0x312F";i:2;s:8:"Bopomofo";}i:91;a:3:{i:0;s:6:"0x3130";i:1;s:6:"0x318F";i:2;s:25:"Hangul Compatibility Jamo";}i:92;a:3:{i:0;s:6:"0x3190";i:1;s:6:"0x319F";i:2;s:6:"Kanbun";}i:93;a:3:{i:0;s:6:"0x31A0";i:1;s:6:"0x31BF";i:2;s:17:"Bopomofo Extended";}i:94;a:3:{i:0;s:6:"0x31C0";i:1;s:6:"0x31EF";i:2;s:11:"CJK Strokes";}i:95;a:3:{i:0;s:6:"0x31F0";i:1;s:6:"0x31FF";i:2;s:28:"Katakana Phonetic Extensions";}i:96;a:3:{i:0;s:6:"0x3200";i:1;s:6:"0x32FF";i:2;s:31:"Enclosed CJK Letters and Months";}i:97;a:3:{i:0;s:6:"0x3300";i:1;s:6:"0x33FF";i:2;s:17:"CJK Compatibility";}i:98;a:3:{i:0;s:6:"0x3400";i:1;s:6:"0x4DBF";i:2;s:34:"CJK Unified Ideographs Extension A";}i:99;a:3:{i:0;s:6:"0x4DC0";i:1;s:6:"0x4DFF";i:2;s:23:"Yijing Hexagram Symbols";}i:100;a:3:{i:0;s:6:"0x4E00";i:1;s:6:"0x9FFF";i:2;s:22:"CJK Unified Ideographs";}i:101;a:3:{i:0;s:6:"0xA000";i:1;s:6:"0xA48F";i:2;s:12:"Yi Syllables";}i:102;a:3:{i:0;s:6:"0xA490";i:1;s:6:"0xA4CF";i:2;s:11:"Yi Radicals";}i:103;a:3:{i:0;s:6:"0xA700";i:1;s:6:"0xA71F";i:2;s:21:"Modifier Tone Letters";}i:104;a:3:{i:0;s:6:"0xA800";i:1;s:6:"0xA82F";i:2;s:12:"Syloti Nagri";}i:105;a:3:{i:0;s:6:"0xAC00";i:1;s:6:"0xD7AF";i:2;s:16:"Hangul Syllables";}i:106;a:3:{i:0;s:6:"0xD800";i:1;s:6:"0xDB7F";i:2;s:15:"High Surrogates";}i:107;a:3:{i:0;s:6:"0xDB80";i:1;s:6:"0xDBFF";i:2;s:27:"High Private Use Surrogates";}i:108;a:3:{i:0;s:6:"0xDC00";i:1;s:6:"0xDFFF";i:2;s:14:"Low Surrogates";}i:109;a:3:{i:0;s:6:"0xE000";i:1;s:6:"0xF8FF";i:2;s:16:"Private Use Area";}i:110;a:3:{i:0;s:6:"0xF900";i:1;s:6:"0xFAFF";i:2;s:28:"CJK Compatibility Ideographs";}i:111;a:3:{i:0;s:6:"0xFB00";i:1;s:6:"0xFB4F";i:2;s:29:"Alphabetic Presentation Forms";}i:112;a:3:{i:0;s:6:"0xFB50";i:1;s:6:"0xFDFF";i:2;s:27:"Arabic Presentation Forms-A";}i:113;a:3:{i:0;s:6:"0xFE00";i:1;s:6:"0xFE0F";i:2;s:19:"Variation Selectors";}i:114;a:3:{i:0;s:6:"0xFE10";i:1;s:6:"0xFE1F";i:2;s:14:"Vertical Forms";}i:115;a:3:{i:0;s:6:"0xFE20";i:1;s:6:"0xFE2F";i:2;s:20:"Combining Half Marks";}i:116;a:3:{i:0;s:6:"0xFE30";i:1;s:6:"0xFE4F";i:2;s:23:"CJK Compatibility Forms";}i:117;a:3:{i:0;s:6:"0xFE50";i:1;s:6:"0xFE6F";i:2;s:19:"Small Form Variants";}i:118;a:3:{i:0;s:6:"0xFE70";i:1;s:6:"0xFEFF";i:2;s:27:"Arabic Presentation Forms-B";}i:119;a:3:{i:0;s:6:"0xFF00";i:1;s:6:"0xFFEF";i:2;s:29:"Halfwidth and Fullwidth Forms";}i:120;a:3:{i:0;s:6:"0xFFF0";i:1;s:6:"0xFFFF";i:2;s:8:"Specials";}i:121;a:3:{i:0;s:7:"0x10000";i:1;s:7:"0x1007F";i:2;s:18:"Linear B Syllabary";}i:122;a:3:{i:0;s:7:"0x10080";i:1;s:7:"0x100FF";i:2;s:18:"Linear B Ideograms";}i:123;a:3:{i:0;s:7:"0x10100";i:1;s:7:"0x1013F";i:2;s:14:"Aegean Numbers";}i:124;a:3:{i:0;s:7:"0x10140";i:1;s:7:"0x1018F";i:2;s:21:"Ancient Greek Numbers";}i:125;a:3:{i:0;s:7:"0x10300";i:1;s:7:"0x1032F";i:2;s:10:"Old Italic";}i:126;a:3:{i:0;s:7:"0x10330";i:1;s:7:"0x1034F";i:2;s:6:"Gothic";}i:127;a:3:{i:0;s:7:"0x10380";i:1;s:7:"0x1039F";i:2;s:8:"Ugaritic";}i:128;a:3:{i:0;s:7:"0x103A0";i:1;s:7:"0x103DF";i:2;s:11:"Old Persian";}i:129;a:3:{i:0;s:7:"0x10400";i:1;s:7:"0x1044F";i:2;s:7:"Deseret";}i:130;a:3:{i:0;s:7:"0x10450";i:1;s:7:"0x1047F";i:2;s:7:"Shavian";}i:131;a:3:{i:0;s:7:"0x10480";i:1;s:7:"0x104AF";i:2;s:7:"Osmanya";}i:132;a:3:{i:0;s:7:"0x10800";i:1;s:7:"0x1083F";i:2;s:17:"Cypriot Syllabary";}i:133;a:3:{i:0;s:7:"0x10A00";i:1;s:7:"0x10A5F";i:2;s:10:"Kharoshthi";}i:134;a:3:{i:0;s:7:"0x1D000";i:1;s:7:"0x1D0FF";i:2;s:25:"Byzantine Musical Symbols";}i:135;a:3:{i:0;s:7:"0x1D100";i:1;s:7:"0x1D1FF";i:2;s:15:"Musical Symbols";}i:136;a:3:{i:0;s:7:"0x1D200";i:1;s:7:"0x1D24F";i:2;s:30:"Ancient Greek Musical Notation";}i:137;a:3:{i:0;s:7:"0x1D300";i:1;s:7:"0x1D35F";i:2;s:21:"Tai Xuan Jing Symbols";}i:138;a:3:{i:0;s:7:"0x1D400";i:1;s:7:"0x1D7FF";i:2;s:33:"Mathematical Alphanumeric Symbols";}i:139;a:3:{i:0;s:7:"0x20000";i:1;s:7:"0x2A6DF";i:2;s:34:"CJK Unified Ideographs Extension B";}i:140;a:3:{i:0;s:7:"0x2F800";i:1;s:7:"0x2FA1F";i:2;s:39:"CJK Compatibility Ideographs Supplement";}i:141;a:3:{i:0;s:7:"0xE0000";i:1;s:7:"0xE007F";i:2;s:4:"Tags";}i:142;a:3:{i:0;s:7:"0xE0100";i:1;s:7:"0xE01EF";i:2;s:30:"Variation Selectors Supplement";}i:143;a:3:{i:0;s:7:"0xF0000";i:1;s:7:"0xFFFFF";i:2;s:32:"Supplementary Private Use Area-A";}i:144;a:3:{i:0;s:8:"0x100000";i:1;s:8:"0x10FFFF";i:2;s:32:"Supplementary Private Use Area-B";}}
\ No newline at end of file
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_clui.php b/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_clui.php
new file mode 100644
index 00000000..8e7d8577
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_clui.php
@@ -0,0 +1,35 @@
+getLanguages();
+sort($langs);
+echo join(', ', $langs);
+
+echo "\ntotal ", count($langs), "\n\n";
+
+while ($line = fgets($stdin)) {
+    $result = $l->detect($line, 4);
+    print_r($result);
+    $blocks = $l->detectUnicodeBlocks($line, true);
+    print_r($blocks);
+}
+
+fclose($stdin);
+unset($l);
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+?>
diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_web.php b/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_web.php
new file mode 100644
index 00000000..1e155fef
--- /dev/null
+++ b/build/production/LIME/php/lib/Text_LanguageDetect/docs/example_web.php
@@ -0,0 +1,72 @@
+
+
+
+Text_LanguageDetect demonstration
+
+
+

Text_LanguageDetect

+Supported languages:\n"; +$langs = $l->getLanguages(); +sort($langs); +foreach ($langs as $lang) { + echo ucfirst($lang), ', '; + $i++; +} + +echo "
total $i

"; + +?> +
+Enter text to identify language (at least a couple of sentences):
+ +
+ +
+utf8strlen($q); + if ($len < 20) { // this value picked somewhat arbitrarily + echo "Warning: string not very long ($len chars)
\n"; + } + + $result = $l->detectConfidence($q); + + if ($result == null) { + echo "Text_LanguageDetect cannot identify this piece of text.

\n"; + } else { + echo "Text_LanguageDetect thinks this text is written in {$result['language']} ({$result['similarity']}, {$result['confidence']})

\n"; + } + + $result = $l->detectUnicodeBlocks($q, false); + if (!empty($result)) { + arsort($result); + echo "Unicode blocks present: ", join(', ', array_keys($result)), "\n

"; + } +} + +unset($l); + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +?> + diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/docs/iso.php b/build/production/LIME/php/lib/Text_LanguageDetect/docs/iso.php new file mode 100644 index 00000000..6d7ec1d2 --- /dev/null +++ b/build/production/LIME/php/lib/Text_LanguageDetect/docs/iso.php @@ -0,0 +1,21 @@ +setNameMode(2); +echo $l->detectSimple('Das ist ein kleiner Text') . "\n"; + +//will output the ISO 639-2 three-letter language code +// "deu" +$l->setNameMode(3); +echo $l->detectSimple('Das ist ein kleiner Text') . "\n"; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php b/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php new file mode 100644 index 00000000..bbf4dd77 --- /dev/null +++ b/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php @@ -0,0 +1,2056 @@ +x = new Text_LanguageDetect(); + } + + function tearDown () + { + unset($this->x); + } + + function test_get_data_locAbsolute() + { + $this->assertEquals( + '/path/to/file', + $this->x->_get_data_loc('/path/to/file') + ); + } + + function test_get_data_locPearPath() + { + $this->x->_data_dir = '/path/to/pear/data'; + $this->assertEquals( + '/path/to/pear/data/Text_LanguageDetect/file', + $this->x->_get_data_loc('file') + ); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database does not exist: + */ + function test_readdbNonexistingFile() + { + $this->x->_readdb('thisfiledoesnotexist'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database is not readable: + */ + function test_readdbUnreadableFile() + { + $name = tempnam(sys_get_temp_dir(), 'unittest-Text_LanguageDetect-'); + chmod($name, 0000); + $this->x->_readdb($name); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database has no elements. + */ + function test_checkTrigramEmpty() + { + $this->x->_checkTrigram(array()); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database is not an array + */ + function test_checkTrigramNoArray() + { + $this->x->_checkTrigram('foo'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Error loading database. Try turning magic_quotes_runtime off + */ + function test_checkTrigramNoArrayMagicQuotes() + { + if (version_compare(PHP_VERSION, '5.4.0-dev') >= 0) { + $this->markTestSkipped('5.4.0 has no magic quotes anymore'); + } + ini_set('magic_quotes_runtime', 1); + $this->x->_checkTrigram('foo'); + } + + function test_splitter () + { + $str = 'hello'; + + $result = $this->x->_trigram($str); + + $this->assertEquals(array(' he' => 1, 'hel' => 1, 'ell' => 1, 'llo' => 1, 'lo ' => 1), $result); + + $str = 'aa aa whatever'; + + $result = $this->x->_trigram($str); + $this->assertEquals(2, $result[' aa']); + $this->assertEquals(2, $result['aa ']); + $this->assertEquals(1, $result['a a']); + + $str = 'aa aa'; + $result = $this->x->_trigram($str); + $this->assertArrayNotHasKey(' a', $result, ' a'); + $this->assertArrayNotHasKey('a ', $result, 'a '); + } + + function test_splitter2 () + { + $str = 'resumé'; + + $result = $this->x->_trigram($str); + + $this->assertTrue(isset($result['mé ']), 'mé '); + $this->assertTrue(isset($result['umé']), 'umé'); + $this->assertTrue(!isset($result['é ']), 'é'); + + // tests lower-casing accented characters + $str = 'resumÉ'; + + $result = $this->x->_trigram($str); + + $this->assertTrue(isset($result['mé ']),'mé '); + $this->assertTrue(isset($result['umé']),'umé'); + $this->assertTrue(!isset($result['é ']),'é'); + } + + function test_sort () + { + $arr = array('a' => 1, 'b' => 2, 'c' => 2); + $this->x->_bub_sort($arr); + + $final_arr = array('b' => 2, 'c' => 2, 'a' => 1); + + $this->assertEquals($final_arr, $arr); + } + + function test_error () + { + // this test passes the object a series of bad strings to see how it handles them + + $result = $this->x->detectSimple(""); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple("\n"); + + $this->assertTrue(!$result); + + // should fail on extremely short strings + $result = $this->x->detectSimple("a"); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple("aa"); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple('xxxxxxxxxxxxxxxxxxx'); + + $this->assertEquals(null, $result); + } + + function testOmitLanguages() + { + $str = 'This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.'; + + $myobj = new Text_LanguageDetect; + + $myobj->_use_unicode_narrowing = false; + + $count = $myobj->getLanguageCount(); + $returnval = $myobj->omitLanguages('english'); + $newcount = $myobj->getLanguageCount(); + + $this->assertEquals(1, $returnval); + $this->assertEquals(1, $count - $newcount); + + $result = strtolower($myobj->detectSimple($str)); + + $this->assertTrue($result != 'english', $result); + + $myobj = new Text_LanguageDetect; + + $count = $myobj->getLanguageCount(); + $returnval = $myobj->omitLanguages(array('danish', 'italian'), true); + $newcount = $myobj->getLanguageCount(); + + $this->assertEquals($count - $newcount, $returnval); + $this->assertEquals($count - $returnval, $newcount); + + $result = strtolower($myobj->detectSimple($str)); + + $this->assertTrue($result == 'danish' || $result == 'italian', $result); + + $result = $myobj->detect($str); + + $this->assertEquals(2, count($result)); + $this->assertTrue(isset($result['danish'])); + $this->assertTrue(isset($result['italian'])); + + unset($myobj); + } + + function testOmitLanguagesNameMode2() + { + $this->x->setNameMode(2); + $this->assertEquals(1, $this->x->omitLanguages('en')); + } + + function testOmitLanguagesIncludeString() + { + $this->assertGreaterThan(1, $this->x->omitLanguages('english', true)); + $langs = $this->x->getLanguages(); + $this->assertEquals(1, count($langs)); + $this->assertContains('english', $langs); + } + + function testOmitLanguagesClearsClusterCache() + { + $this->x->omitLanguages(array('english', 'german'), true); + $this->assertNull($this->x->_clusters); + $this->x->clusterLanguages(); + $this->assertNotNull($this->x->_clusters); + $this->x->omitLanguages('german'); + $this->assertNull($this->x->_clusters, 'cluster cache be empty now'); + } + + function test_perl_compatibility() + { + // if this test fails, then many of the others will + + $myobj = new Text_LanguageDetect; + $myobj->setPerlCompatible(true); + + $testtext = "hello"; + + $result = $myobj->_trigram($testtext); + + $this->assertTrue(!isset($result[' he'])); + } + + function test_french_db () + { + + $safe_model = array( + "es " => 0, " de" => 1, "de " => 2, " le" => 3, "ent" => 4, + "le " => 5, "nt " => 6, "la " => 7, "s d" => 8, " la" => 9, + "ion" => 10, "on " => 11, "re " => 12, " pa" => 13, "e l" => 14, + "e d" => 15, " l'" => 16, "e p" => 17, " co" => 18, " pr" => 19, + "tio" => 20, "ns " => 21, " en" => 22, "ne " => 23, "que" => 24, + "r l" => 25, "les" => 26, "ur " => 27, "en " => 28, "ati" => 29, + "ue " => 30, " po" => 31, " d'" => 32, "par" => 33, " a " => 34, + "et " => 35, "it " => 36, " qu" => 37, "men" => 38, "ons" => 39, + "te " => 40, " et" => 41, "t d" => 42, " re" => 43, "des" => 44, + " un" => 45, "ie " => 46, "s l" => 47, " su" => 48, "pou" => 49, + " au" => 50, " à " => 51, "con" => 52, "er " => 53, " no" => 54, + "ait" => 55, "e c" => 56, "se " => 57, "té " => 58, "du " => 59, + " du" => 60, " dé" => 61, "ce " => 62, "e e" => 63, "is " => 64, + "n d" => 65, "s a" => 66, " so" => 67, "e r" => 68, "e s" => 69, + "our" => 70, "res" => 71, "ssi" => 72, "eur" => 73, " se" => 74, + "eme" => 75, "est" => 76, "us " => 77, "sur" => 78, "ant" => 79, + "iqu" => 80, "s p" => 81, "une" => 82, "uss" => 83, "l'a" => 84, + "pro" => 85, "ter" => 86, "tre" => 87, "end" => 88, "rs " => 89, + " ce" => 90, "e a" => 91, "t p" => 92, "un " => 93, " ma" => 94, + " ru" => 95, " ré" => 96, "ous" => 97, "ris" => 98, "rus" => 99, + "sse" => 100, "ans" => 101, "ar " => 102, "com" => 103, "e m" => 104, + "ire" => 105, "nce" => 106, "nte" => 107, "t l" => 108, " av" => 109, + " mo" => 110, " te" => 111, "il " => 112, "me " => 113, "ont" => 114, + "ten" => 115, "a p" => 116, "dan" => 117, "pas" => 118, "qui" => 119, + "s e" => 120, "s s" => 121, " in" => 122, "ist" => 123, "lle" => 124, + "nou" => 125, "pré" => 126, "'un" => 127, "air" => 128, "d'a" => 129, + "ir " => 130, "n e" => 131, "rop" => 132, "ts " => 133, " da" => 134, + "a s" => 135, "as " => 136, "au " => 137, "den" => 138, "mai" => 139, + "mis" => 140, "ori" => 141, "out" => 142, "rme" => 143, "sio" => 144, + "tte" => 145, "ux " => 146, "a d" => 147, "ien" => 148, "n a" => 149, + "ntr" => 150, "omm" => 151, "ort" => 152, "ouv" => 153, "s c" => 154, + "son" => 155, "tes" => 156, "ver" => 157, "ère" => 158, " il" => 159, + " m " => 160, " sa" => 161, " ve" => 162, "a r" => 163, "ais" => 164, + "ava" => 165, "di " => 166, "n p" => 167, "sti" => 168, "ven" => 169, + " mi" => 170, "ain" => 171, "enc" => 172, "for" => 173, "ité" => 174, + "lar" => 175, "oir" => 176, "rem" => 177, "ren" => 178, "rro" => 179, + "rés" => 180, "sie" => 181, "t a" => 182, "tur" => 183, " pe" => 184, + " to" => 185, "d'u" => 186, "ell" => 187, "err" => 188, "ers" => 189, + "ide" => 190, "ine" => 191, "iss" => 192, "mes" => 193, "por" => 194, + "ran" => 195, "sit" => 196, "st " => 197, "t r" => 198, "uti" => 199, + "vai" => 200, "é l" => 201, "ési" => 202, " di" => 203, " n'" => 204, + " ét" => 205, "a c" => 206, "ass" => 207, "e t" => 208, "in " => 209, + "nde" => 210, "pre" => 211, "rat" => 212, "s m" => 213, "ste" => 214, + "tai" => 215, "tch" => 216, "ui " => 217, "uro" => 218, "ès " => 219, + " es" => 220, " fo" => 221, " tr" => 222, "'ad" => 223, "app" => 224, + "aux" => 225, "e à" => 226, "ett" => 227, "iti" => 228, "lit" => 229, + "nal" => 230, "opé" => 231, "r d" => 232, "ra " => 233, "rai" => 234, + "ror" => 235, "s r" => 236, "tat" => 237, "uté" => 238, "à l" => 239, + " af" => 240, "anc" => 241, "ara" => 242, "art" => 243, "bre" => 244, + "ché" => 245, "dre" => 246, "e f" => 247, "ens" => 248, "lem" => 249, + "n r" => 250, "n t" => 251, "ndr" => 252, "nne" => 253, "onn" => 254, + "pos" => 255, "s t" => 256, "tiq" => 257, "ure" => 258, " tu" => 259, + "ale" => 260, "and" => 261, "ave" => 262, "cla" => 263, "cou" => 264, + "e n" => 265, "emb" => 266, "ins" => 267, "jou" => 268, "mme" => 269, + "rie" => 270, "rès" => 271, "sem" => 272, "str" => 273, "t i" => 274, + "ues" => 275, "uni" => 276, "uve" => 277, "é d" => 278, "ée " => 279, + " ch" => 280, " do" => 281, " eu" => 282, " fa" => 283, " lo" => 284, + " ne" => 285, " ra" => 286, "arl" => 287, "att" => 288, "ec " => 289, + "ica" => 290, "l a" => 291, "l'o" => 292, "l'é" => 293, "mmi" => 294, + "nta" => 295, "orm" => 296, "ou " => 297, "r u" => 298, "rle" => 299 + ); + + + $my_arr = $this->x->_lang_db['french']; + + foreach ($safe_model as $key => $value) { + $this->assertTrue(isset($my_arr[$key]),$key); + if (isset($my_arr[$key])) { + $this->assertEquals($value, $my_arr[$key], $key); + } + } + } + + function test_english_db () + { + + $realdb = array( + " th" => 0, "the" => 1, "he " => 2, "ed " => 3, " to" => 4, + " in" => 5, "er " => 6, "ing" => 7, "ng " => 8, " an" => 9, + "nd " => 10, " of" => 11, "and" => 12, "to " => 13, "of " => 14, + " co" => 15, "at " => 16, "on " => 17, "in " => 18, " a " => 19, + "d t" => 20, " he" => 21, "e t" => 22, "ion" => 23, "es " => 24, + " re" => 25, "re " => 26, "hat" => 27, " sa" => 28, " st" => 29, + " ha" => 30, "her" => 31, "tha" => 32, "tio" => 33, "or " => 34, + " ''" => 35, "en " => 36, " wh" => 37, "e s" => 38, "ent" => 39, + "n t" => 40, "s a" => 41, "as " => 42, "for" => 43, "is " => 44, + "t t" => 45, " be" => 46, "ld " => 47, "e a" => 48, "rs " => 49, + " wa" => 50, "ut " => 51, "ve " => 52, "ll " => 53, "al " => 54, + " ma" => 55, "e i" => 56, " fo" => 57, "'s " => 58, "an " => 59, + "est" => 60, " hi" => 61, " mo" => 62, " se" => 63, " pr" => 64, + "s t" => 65, "ate" => 66, "st " => 67, "ter" => 68, "ere" => 69, + "ted" => 70, "nt " => 71, "ver" => 72, "d a" => 73, " wi" => 74, + "se " => 75, "e c" => 76, "ect" => 77, "ns " => 78, " on" => 79, + "ly " => 80, "tol" => 81, "ey " => 82, "r t" => 83, " ca" => 84, + "ati" => 85, "ts " => 86, "all" => 87, " no" => 88, "his" => 89, + "s o" => 90, "ers" => 91, "con" => 92, "e o" => 93, "ear" => 94, + "f t" => 95, "e w" => 96, "was" => 97, "ons" => 98, "sta" => 99, + "'' " => 100, "sti" => 101, "n a" => 102, "sto" => 103, "t h" => 104, + " we" => 105, "id " => 106, "th " => 107, " it" => 108, "ce " => 109, + " di" => 110, "ave" => 111, "d h" => 112, "cou" => 113, "pro" => 114, + "ad " => 115, "oll" => 116, "ry " => 117, "d s" => 118, "e m" => 119, + " so" => 120, "ill" => 121, "cti" => 122, "te " => 123, "tor" => 124, + "eve" => 125, "g t" => 126, "it " => 127, " ch" => 128, " de" => 129, + "hav" => 130, "oul" => 131, "ty " => 132, "uld" => 133, "use" => 134, + " al" => 135, "are" => 136, "ch " => 137, "me " => 138, "out" => 139, + "ove" => 140, "wit" => 141, "ys " => 142, "chi" => 143, "t a" => 144, + "ith" => 145, "oth" => 146, " ab" => 147, " te" => 148, " wo" => 149, + "s s" => 150, "res" => 151, "t w" => 152, "tin" => 153, "e b" => 154, + "e h" => 155, "nce" => 156, "t s" => 157, "y t" => 158, "e p" => 159, + "ele" => 160, "hin" => 161, "s i" => 162, "nte" => 163, " li" => 164, + "le " => 165, " do" => 166, "aid" => 167, "hey" => 168, "ne " => 169, + "s w" => 170, " as" => 171, " fr" => 172, " tr" => 173, "end" => 174, + "sai" => 175, " el" => 176, " ne" => 177, " su" => 178, "'t " => 179, + "ay " => 180, "hou" => 181, "ive" => 182, "lec" => 183, "n't" => 184, + " ye" => 185, "but" => 186, "d o" => 187, "o t" => 188, "y o" => 189, + " ho" => 190, " me" => 191, "be " => 192, "cal" => 193, "e e" => 194, + "had" => 195, "ple" => 196, " at" => 197, " bu" => 198, " la" => 199, + "d b" => 200, "s h" => 201, "say" => 202, "t i" => 203, " ar" => 204, + "e f" => 205, "ght" => 206, "hil" => 207, "igh" => 208, "int" => 209, + "not" => 210, "ren" => 211, " is" => 212, " pa" => 213, " sh" => 214, + "ays" => 215, "com" => 216, "n s" => 217, "r a" => 218, "rin" => 219, + "y a" => 220, " un" => 221, "n c" => 222, "om " => 223, "thi" => 224, + " mi" => 225, "by " => 226, "d i" => 227, "e d" => 228, "e n" => 229, + "t o" => 230, " by" => 231, "e r" => 232, "eri" => 233, "old" => 234, + "ome" => 235, "whe" => 236, "yea" => 237, " gr" => 238, "ar " => 239, + "ity" => 240, "mpl" => 241, "oun" => 242, "one" => 243, "ow " => 244, + "r s" => 245, "s f" => 246, "tat" => 247, " ba" => 248, " vo" => 249, + "bou" => 250, "sam" => 251, "tim" => 252, "vot" => 253, "abo" => 254, + "ant" => 255, "ds " => 256, "ial" => 257, "ine" => 258, "man" => 259, + "men" => 260, " or" => 261, " po" => 262, "amp" => 263, "can" => 264, + "der" => 265, "e l" => 266, "les" => 267, "ny " => 268, "ot " => 269, + "rec" => 270, "tes" => 271, "tho" => 272, "ica" => 273, "ild" => 274, + "ir " => 275, "nde" => 276, "ose" => 277, "ous" => 278, "pre" => 279, + "ste" => 280, "era" => 281, "per" => 282, "r o" => 283, "red" => 284, + "rie" => 285, " bo" => 286, " le" => 287, "ali" => 288, "ars" => 289, + "ore" => 290, "ric" => 291, "s m" => 292, "str" => 293, " fa" => 294, + "ess" => 295, "ie " => 296, "ist" => 297, "lat" => 298, "uri" => 299, + ); + + $mod = $this->x->_lang_db['english']; + + foreach ($realdb as $key => $value) { + $this->assertTrue(isset($mod[$key]), $key); + if (isset($mod[$key])) { + $this->assertEquals($value, $mod[$key], $key); + } + } + + foreach ($mod as $key => $value) { + $this->assertTrue(isset($realdb[$key])); + if (isset($realdb[$key])) { + $this->assertEquals($value, $realdb[$key], $key); + } + } + } + + function test_confidence () + { + $str = 'The next thing to notice is the Content-length header. The Content-length header notifies the server of the size of the data that you intend to send. This prevents unexpected end-of-data errors from the server when dealing with binary data, because the server will read the specified number of bytes from the data stream regardless of any spurious end-of-data characters.'; + + $result = $this->x->detectConfidence($str); + + $this->assertEquals(3, count($result)); + $this->assertTrue(isset($result['language']), 'language'); + $this->assertTrue(isset($result['similarity']), 'similarity'); + $this->assertTrue(isset($result['confidence']), 'confidence'); + $this->assertEquals('english', $result['language']); + $this->assertTrue($result['similarity'] <= 300 && $result['similarity'] >= 0, $result['similarity']); + $this->assertTrue($result['confidence'] <= 1 && $result['confidence'] >= 0, $result['confidence']); + + // todo: tests for Danish and Norwegian should have lower confidence + } + + function test_long_example () + { + // an example that is more than 300 trigrams long + $str = 'The Italian Renaissance began the opening phase of the Renaissance, a period of great cultural change and achievement from the 14th to the 16th century. The word renaissance means "rebirth," and the era is best known for the renewed interest in the culture of classical antiquity. The Italian Renaissance began in northern Italy, centering in Florence. It then spread south, having an especially significant impact on Rome, which was largely rebuilt by the Renaissance popes. The Italian Renaissance is best known for its cultural achievements. This includes works of literature by such figures as Petrarch, Castiglione, and Machiavelli; artists such as Michaelangelo and Leonardo da Vinci, and great works of architecture such as The Duomo in Florence and St. Peter\'s Basilica in Rome. At the same time, present-day historians also see the era as one of economic regression and of little progress in science. Furthermore, some historians argue that the lot of the peasants and urban poor, the majority of the population, worsened during this period.'; + + $this->x->setPerlCompatible(); + $tri = $this->x->_trigram($str); + + $exp_tri = array( + ' th', + 'the', + 'he ', + ' an', + ' re', + ' of', + 'ce ', + 'nce', + 'of ', + 'ren', + ' in', + 'and', + 'nd ', + 'an ', + 'san', + ' it', + 'ais', + 'anc', + 'ena', + 'in ', + 'iss', + 'nai', + 'ssa', + 'tur', + ' pe', + 'as ', + 'ch ', + 'ent', + 'ian', + 'me ', + 'n r', + 'res', + ' as', + ' be', + ' wo', + 'at ', + 'chi', + 'e i', + 'e o', + 'e p', + 'gre', + 'his', + 'ing', + 'is ', + 'ita', + 'n f', + 'ng ', + 're ', + 's a', + 'st ', + 'tal', + 'ter', + 'th ', + 'ts ', + 'ure', + 'wor', + ' ar', + ' cu', + ' po', + ' su', + 'ach', + 'al ', + 'ali', + 'ans', + 'ant', + 'cul', + 'e b', + 'e r', + 'e t', + 'enc', + 'era', + 'eri', + 'es ', + 'est', + 'f t', + 'ica', + 'ion', + 'ist', + 'lia', + 'ltu', + 'ly ', + 'ns ', + 'nt ', + 'ome', + 'on ', + 'or ', + 'ore', + 'ori', + 'rea', + 'rom', + 'rth', + 's b', + 's o', + 'suc', + 't t', + 'uch', + 'ult', + ' ac', + ' by', + ' ce', + ' da', + ' du', + ' er', + ' fl', + ' fo', + ' gr', + ' hi', + ' is', + ' kn', + ' li', + ' ma', + ' on', + ' pr', + ' ro', + ' so', + 'a i', + 'ang', + 'arc', + 'arg', + 'beg', + 'bes', + 'by ', + 'cen', + 'cha', + 'd o', + 'd s', + 'e a', + 'e e', + 'e m', + 'e s', + 'eat', + 'ed ', + 'ega', + 'eme', + 'ene', + 'ess', + 'eve', + 'f l', + 'flo', + 'for', + 'gan', + 'gel', + 'h a', + 'her', + 'hie', + 'ich', + 'iev', + 'inc', + 'iod', + 'ite', + 'ity', + 'kno', + 'ks ', + 'l a', + 'lit', + 'lor', + 'men', + 'mic', + 'n i', + 'n s', + 'n t', + 'ne ', + 'nge', + 'now', + 'nte', + 'nts', + 'od ', + 'one', + 'ope', + 'ork', + 'own', + 'per', + 'pet', + 'pop', + 'pre', + 'ra ', + 'ral', + 'rch', + 'reb', + 'ria', + 'rin', + 'rio', + 'rks', + 's i', + 's p', + 'sen', + 'ssi', + 'sto', + 't i', + 't k', + 't o', + 'thi', + 'tor', + 'ty ', + 'ura', + 'vem', + 'vin', + 'wn ', + 'y s', + ' a ', + ' al', + ' at', + ' ba', + ' ca', + ' ch', + ' cl', + ' ec', + ' es', + ' fi', + ' fr', + ' fu', + ' ha', + ' im', + ' la', + ' le', + ' lo', + ' me', + ' mi', + ' no', + ' op', + ' ph', + ' sa', + ' sc', + ' se', + ' si', + ' sp', + ' st', + ' ti', + ' to', + ' ur', + ' vi', + ' wa', + ' wh', + '\'s ', + 'a a', + 'a p', + 'a v', + 'act', + 'ad ', + 'ael', + 'ajo', + 'all', + 'als', + 'aly', + 'ame', + 'ard', + 'art', + 'asa', + 'ase', + 'asi', + 'ass', + 'ast', + 'ati', + 'atu', + 'ave', + 'avi', + 'ay ', + 'ban', + 'bas', + 'bir', + 'bui', + 'c r', + 'ca ', + 'cal', + 'can', + 'cas', + 'ci ', + 'cia', + 'cie', + 'cla', + 'clu', + 'con', + 'ct ', + 'ctu', + 'd a', + 'd d', + 'd g', + 'd i', + 'd l', + 'd m', + 'd r', + 'd t', + 'd u', + 'da ', + 'day', + 'des', + 'do ', + 'duo', + 'dur', + 'e c', + 'e d', + 'e h', + 'e l', + 'e w', + 'ead', + 'ean', + 'eas', + 'ebi', + 'ebu', + 'eci', + 'eco', + 'ect', + 'ee ', + 'egr', + 'ela', + 'ell', + 'elo', + 'ely', + 'en ', + 'eni', + 'eon', + 'er\'', + 'ere', + 'erm', + 'ern', + 'ese', + 'esp', + 'ete', + 'etr', + 'ewe', + 'f a', + 'f c', + 'f e', + 'f g', + 'fic', + 'fig', + 'fro', + 'fur', + 'g a', + 'g i', + 'g p', + 'g t', + 'ge ', + 'gli', + 'gni', + 'gue', + 'gur', + 'h c', + 'h f', + 'h t', + 'h w', + 'hae', + 'han', + 'has', + 'hat', + 'hav', + 'hen', + 'hia', + 'hic', + 'hit', + 'ial', + 'iav', + 'ic ', + 'ien', + 'ifi', + 'igl', + 'ign', + 'igu', + 'ili', + 'ilt', + 'ime', + 'imp', + 'int', + 'iqu', + 'irt', + 'it ', + 'its', + 'itt', + 'jor', + 'l c', + 'lan', + 'lar', + 'las', + 'lat', + 'le ', + 'leo', + 'li ', + 'lic', + 'lio', + 'lli', + 'lly', + 'lo ', + 'lot', + 'lso', + 'lt ', + 'lud', + 'm t', + 'mac', + 'maj', + 'mea', + 'mo ', + 'mor', + 'mpa', + 'n a', + 'n e', + 'n n', + 'n p', + 'nar', + 'nci', + 'ncl', + 'ned', + 'new', + 'nif', + 'nin', + 'nom', + 'nor', + 'nti', + 'ntu', + 'o a', + 'o d', + 'o i', + 'o s', + 'o t', + 'ogr', + 'om ', + 'omi', + 'omo', + 'ona', + 'ono', + 'oor', + 'opu', + 'ord', + 'ors', + 'ort', + 'ot ', + 'out', + 'pac', + 'pea', + 'pec', + 'pen', + 'pes', + 'pha', + 'poo', + 'pro', + 'pul', + 'qui', + 'r i', + 'r t', + 'r\'s', + 'rar', + 'rat', + 'rba', + 'rd ', + 'rdo', + 'reg', + 'rge', + 'rgu', + 'rit', + 'rmo', + 'rn ', + 'rog', + 'rse', + 'rti', + 'ry ', + 's c', + 's l', + 's m', + 's s', + 's t', + 's w', + 'sam', + 'sci', + 'se ', + 'see', + 'sic', + 'sig', + 'sil', + 'sio', + 'so ', + 'som', + 'sou', + 'spe', + 'spr', + 'ss ', + 'sti', + 'sts', + 't b', + 't c', + 't d', + 't f', + 't w', + 'tec', + 'tha', + 'tig', + 'tim', + 'tio', + 'tiq', + 'tis', + 'tle', + 'to ', + 'tra', + 'ttl', + 'ude', + 'ue ', + 'uil', + 'uit', + 'ula', + 'uom', + 'urb', + 'uri', + 'urt', + 'ury', + 'uth', + 'vel', + 'was', + 'wed', + 'whi', + 'y h', + 'y o', + 'y r', + 'y t' + ); + + $differences = array_diff(array_keys($tri), $exp_tri); + $this->assertEquals(0, count($differences)); + $this->assertEquals(0, count(array_diff($exp_tri, array_keys($tri)))); + $this->assertEquals(count($exp_tri), count($tri)); + //print_r(array_diff($exp_tri, array_keys($tri))); + //print_r(array_diff(array_keys($tri), $exp_tri)); + + // tests the bubble sort mechanism + $this->x->_bub_sort($tri); + $this->assertEquals($exp_tri, array_keys($tri)); + + $true_differences = array( + "cas" => array('change' => 300, 'baserank' => 265, 'refrank' => null), "s i" => array('change' => 21, 'baserank' => 183, 'refrank' => 162), + "e b" => array('change' => 88, 'baserank' => 66, 'refrank' => 154), "ent" => array('change' => 12, 'baserank' => 27, 'refrank' => 39), + "ome" => array('change' => 152, 'baserank' => 83, 'refrank' => 235), "ral" => array('change' => 300, 'baserank' => 176, 'refrank' => null), + "ita" => array('change' => 300, 'baserank' => 44, 'refrank' => null), "bas" => array('change' => 300, 'baserank' => 258, 'refrank' => null), + " ar" => array('change' => 148, 'baserank' => 56, 'refrank' => 204), " in" => array('change' => 5, 'baserank' => 10, 'refrank' => 5), + " ti" => array('change' => 300, 'baserank' => 227, 'refrank' => null), "ty " => array('change' => 61, 'baserank' => 193, 'refrank' => 132), + "tur" => array('change' => 300, 'baserank' => 23, 'refrank' => null), "iss" => array('change' => 300, 'baserank' => 20, 'refrank' => null), + "ria" => array('change' => 300, 'baserank' => 179, 'refrank' => null), " me" => array('change' => 25, 'baserank' => 216, 'refrank' => 191), + "t k" => array('change' => 300, 'baserank' => 189, 'refrank' => null), " es" => array('change' => 300, 'baserank' => 207, 'refrank' => null), + "ren" => array('change' => 202, 'baserank' => 9, 'refrank' => 211), "in " => array('change' => 1, 'baserank' => 19, 'refrank' => 18), + "ly " => array('change' => 0, 'baserank' => 80, 'refrank' => 80), "st " => array('change' => 18, 'baserank' => 49, 'refrank' => 67), + "ne " => array('change' => 8, 'baserank' => 161, 'refrank' => 169), "all" => array('change' => 154, 'baserank' => 241, 'refrank' => 87), + "vin" => array('change' => 300, 'baserank' => 196, 'refrank' => null), " op" => array('change' => 300, 'baserank' => 219, 'refrank' => null), + "chi" => array('change' => 107, 'baserank' => 36, 'refrank' => 143), "e w" => array('change' => 197, 'baserank' => 293, 'refrank' => 96), + " ro" => array('change' => 300, 'baserank' => 113, 'refrank' => null), "act" => array('change' => 300, 'baserank' => 237, 'refrank' => null), + "d r" => array('change' => 300, 'baserank' => 280, 'refrank' => null), "nt " => array('change' => 11, 'baserank' => 82, 'refrank' => 71), + "can" => array('change' => 0, 'baserank' => 264, 'refrank' => 264), "rea" => array('change' => 300, 'baserank' => 88, 'refrank' => null), + "ssa" => array('change' => 300, 'baserank' => 22, 'refrank' => null), " fo" => array('change' => 47, 'baserank' => 104, 'refrank' => 57), + "eas" => array('change' => 300, 'baserank' => 296, 'refrank' => null), "mic" => array('change' => 300, 'baserank' => 157, 'refrank' => null), + "cul" => array('change' => 300, 'baserank' => 65, 'refrank' => null), " an" => array('change' => 6, 'baserank' => 3, 'refrank' => 9), + "n t" => array('change' => 120, 'baserank' => 160, 'refrank' => 40), "arg" => array('change' => 300, 'baserank' => 118, 'refrank' => null), + " it" => array('change' => 93, 'baserank' => 15, 'refrank' => 108), "ebi" => array('change' => 300, 'baserank' => 297, 'refrank' => null), + " re" => array('change' => 21, 'baserank' => 4, 'refrank' => 25), "res" => array('change' => 120, 'baserank' => 31, 'refrank' => 151), + " be" => array('change' => 13, 'baserank' => 33, 'refrank' => 46), "rom" => array('change' => 300, 'baserank' => 89, 'refrank' => null), + "'s " => array('change' => 175, 'baserank' => 233, 'refrank' => 58), "arc" => array('change' => 300, 'baserank' => 117, 'refrank' => null), + " su" => array('change' => 119, 'baserank' => 59, 'refrank' => 178), "s p" => array('change' => 300, 'baserank' => 184, 'refrank' => null), + "ich" => array('change' => 300, 'baserank' => 145, 'refrank' => null), "d d" => array('change' => 300, 'baserank' => 275, 'refrank' => null), + "cal" => array('change' => 70, 'baserank' => 263, 'refrank' => 193), "ci " => array('change' => 300, 'baserank' => 266, 'refrank' => null), + "ssi" => array('change' => 300, 'baserank' => 186, 'refrank' => null), "bes" => array('change' => 300, 'baserank' => 120, 'refrank' => null), + "des" => array('change' => 300, 'baserank' => 285, 'refrank' => null), "e s" => array('change' => 91, 'baserank' => 129, 'refrank' => 38), + "ch " => array('change' => 111, 'baserank' => 26, 'refrank' => 137), "san" => array('change' => 300, 'baserank' => 14, 'refrank' => null), + "asi" => array('change' => 300, 'baserank' => 249, 'refrank' => null), "ajo" => array('change' => 300, 'baserank' => 240, 'refrank' => null), + "ase" => array('change' => 300, 'baserank' => 248, 'refrank' => null), " wa" => array('change' => 181, 'baserank' => 231, 'refrank' => 50), + "vem" => array('change' => 300, 'baserank' => 195, 'refrank' => null), "ed " => array('change' => 128, 'baserank' => 131, 'refrank' => 3), + "ant" => array('change' => 191, 'baserank' => 64, 'refrank' => 255), "a p" => array('change' => 300, 'baserank' => 235, 'refrank' => null), + "lor" => array('change' => 300, 'baserank' => 155, 'refrank' => null), "kno" => array('change' => 300, 'baserank' => 151, 'refrank' => null), + "ais" => array('change' => 300, 'baserank' => 16, 'refrank' => null), " pe" => array('change' => 300, 'baserank' => 24, 'refrank' => null), + "or " => array('change' => 51, 'baserank' => 85, 'refrank' => 34), "e i" => array('change' => 19, 'baserank' => 37, 'refrank' => 56), + " sp" => array('change' => 300, 'baserank' => 225, 'refrank' => null), "ad " => array('change' => 123, 'baserank' => 238, 'refrank' => 115), + " kn" => array('change' => 300, 'baserank' => 108, 'refrank' => null), "ega" => array('change' => 300, 'baserank' => 132, 'refrank' => null), + " ba" => array('change' => 46, 'baserank' => 202, 'refrank' => 248), "d t" => array('change' => 261, 'baserank' => 281, 'refrank' => 20), + "ork" => array('change' => 300, 'baserank' => 169, 'refrank' => null), "lia" => array('change' => 300, 'baserank' => 78, 'refrank' => null), + "ard" => array('change' => 300, 'baserank' => 245, 'refrank' => null), "iev" => array('change' => 300, 'baserank' => 146, 'refrank' => null), + "of " => array('change' => 6, 'baserank' => 8, 'refrank' => 14), " cu" => array('change' => 300, 'baserank' => 57, 'refrank' => null), + "day" => array('change' => 300, 'baserank' => 284, 'refrank' => null), "cen" => array('change' => 300, 'baserank' => 122, 'refrank' => null), + "re " => array('change' => 21, 'baserank' => 47, 'refrank' => 26), "ist" => array('change' => 220, 'baserank' => 77, 'refrank' => 297), + " fl" => array('change' => 300, 'baserank' => 103, 'refrank' => null), "anc" => array('change' => 300, 'baserank' => 17, 'refrank' => null), + "at " => array('change' => 19, 'baserank' => 35, 'refrank' => 16), "rch" => array('change' => 300, 'baserank' => 177, 'refrank' => null), + "ang" => array('change' => 300, 'baserank' => 116, 'refrank' => null), " mi" => array('change' => 8, 'baserank' => 217, 'refrank' => 225), + "y s" => array('change' => 300, 'baserank' => 198, 'refrank' => null), "ca " => array('change' => 300, 'baserank' => 262, 'refrank' => null), + " ma" => array('change' => 55, 'baserank' => 110, 'refrank' => 55), " lo" => array('change' => 300, 'baserank' => 215, 'refrank' => null), + "rin" => array('change' => 39, 'baserank' => 180, 'refrank' => 219), " im" => array('change' => 300, 'baserank' => 212, 'refrank' => null), + " er" => array('change' => 300, 'baserank' => 102, 'refrank' => null), "ce " => array('change' => 103, 'baserank' => 6, 'refrank' => 109), + "bui" => array('change' => 300, 'baserank' => 260, 'refrank' => null), "lit" => array('change' => 300, 'baserank' => 154, 'refrank' => null), + "iod" => array('change' => 300, 'baserank' => 148, 'refrank' => null), "ame" => array('change' => 300, 'baserank' => 244, 'refrank' => null), + "ter" => array('change' => 17, 'baserank' => 51, 'refrank' => 68), "e a" => array('change' => 78, 'baserank' => 126, 'refrank' => 48), + "f l" => array('change' => 300, 'baserank' => 137, 'refrank' => null), "eri" => array('change' => 162, 'baserank' => 71, 'refrank' => 233), + "ra " => array('change' => 300, 'baserank' => 175, 'refrank' => null), "ng " => array('change' => 38, 'baserank' => 46, 'refrank' => 8), + "d i" => array('change' => 50, 'baserank' => 277, 'refrank' => 227), "asa" => array('change' => 300, 'baserank' => 247, 'refrank' => null), + "wn " => array('change' => 300, 'baserank' => 197, 'refrank' => null), " at" => array('change' => 4, 'baserank' => 201, 'refrank' => 197), + "now" => array('change' => 300, 'baserank' => 163, 'refrank' => null), " by" => array('change' => 133, 'baserank' => 98, 'refrank' => 231), + "n s" => array('change' => 58, 'baserank' => 159, 'refrank' => 217), " li" => array('change' => 55, 'baserank' => 109, 'refrank' => 164), + "l a" => array('change' => 300, 'baserank' => 153, 'refrank' => null), "da " => array('change' => 300, 'baserank' => 283, 'refrank' => null), + "ean" => array('change' => 300, 'baserank' => 295, 'refrank' => null), "tal" => array('change' => 300, 'baserank' => 50, 'refrank' => null), + "d a" => array('change' => 201, 'baserank' => 274, 'refrank' => 73), "ct " => array('change' => 300, 'baserank' => 272, 'refrank' => null), + "ali" => array('change' => 226, 'baserank' => 62, 'refrank' => 288), "ian" => array('change' => 300, 'baserank' => 28, 'refrank' => null), + " sa" => array('change' => 193, 'baserank' => 221, 'refrank' => 28), "do " => array('change' => 300, 'baserank' => 286, 'refrank' => null), + "t o" => array('change' => 40, 'baserank' => 190, 'refrank' => 230), "ure" => array('change' => 300, 'baserank' => 54, 'refrank' => null), + "e c" => array('change' => 213, 'baserank' => 289, 'refrank' => 76), "ing" => array('change' => 35, 'baserank' => 42, 'refrank' => 7), + "d o" => array('change' => 63, 'baserank' => 124, 'refrank' => 187), " ha" => array('change' => 181, 'baserank' => 211, 'refrank' => 30), + "ts " => array('change' => 33, 'baserank' => 53, 'refrank' => 86), "rth" => array('change' => 300, 'baserank' => 90, 'refrank' => null), + "cla" => array('change' => 300, 'baserank' => 269, 'refrank' => null), " ac" => array('change' => 300, 'baserank' => 97, 'refrank' => null), + "th " => array('change' => 55, 'baserank' => 52, 'refrank' => 107), "rio" => array('change' => 300, 'baserank' => 181, 'refrank' => null), + "al " => array('change' => 7, 'baserank' => 61, 'refrank' => 54), "sto" => array('change' => 84, 'baserank' => 187, 'refrank' => 103), + "e o" => array('change' => 55, 'baserank' => 38, 'refrank' => 93), "bir" => array('change' => 300, 'baserank' => 259, 'refrank' => null), + " pr" => array('change' => 48, 'baserank' => 112, 'refrank' => 64), " le" => array('change' => 73, 'baserank' => 214, 'refrank' => 287), + "nai" => array('change' => 300, 'baserank' => 21, 'refrank' => null), "t i" => array('change' => 15, 'baserank' => 188, 'refrank' => 203), + " po" => array('change' => 204, 'baserank' => 58, 'refrank' => 262), "f t" => array('change' => 21, 'baserank' => 74, 'refrank' => 95), + "ban" => array('change' => 300, 'baserank' => 257, 'refrank' => null), "an " => array('change' => 46, 'baserank' => 13, 'refrank' => 59), + "wor" => array('change' => 300, 'baserank' => 55, 'refrank' => null), "pet" => array('change' => 300, 'baserank' => 172, 'refrank' => null), + "ael" => array('change' => 300, 'baserank' => 239, 'refrank' => null), "ura" => array('change' => 300, 'baserank' => 194, 'refrank' => null), + "eve" => array('change' => 11, 'baserank' => 136, 'refrank' => 125), "ion" => array('change' => 53, 'baserank' => 76, 'refrank' => 23), + "nge" => array('change' => 300, 'baserank' => 162, 'refrank' => null), "cha" => array('change' => 300, 'baserank' => 123, 'refrank' => null), + "ity" => array('change' => 90, 'baserank' => 150, 'refrank' => 240), " se" => array('change' => 160, 'baserank' => 223, 'refrank' => 63), + " on" => array('change' => 32, 'baserank' => 111, 'refrank' => 79), "s b" => array('change' => 300, 'baserank' => 91, 'refrank' => null), + "ans" => array('change' => 300, 'baserank' => 63, 'refrank' => null), "own" => array('change' => 300, 'baserank' => 170, 'refrank' => null), + " si" => array('change' => 300, 'baserank' => 224, 'refrank' => null), "e r" => array('change' => 165, 'baserank' => 67, 'refrank' => 232), + "est" => array('change' => 13, 'baserank' => 73, 'refrank' => 60), "hie" => array('change' => 300, 'baserank' => 144, 'refrank' => null), + "aly" => array('change' => 300, 'baserank' => 243, 'refrank' => null), "and" => array('change' => 1, 'baserank' => 11, 'refrank' => 12), + "beg" => array('change' => 300, 'baserank' => 119, 'refrank' => null), "dur" => array('change' => 300, 'baserank' => 288, 'refrank' => null), + "reb" => array('change' => 300, 'baserank' => 178, 'refrank' => null), "e e" => array('change' => 67, 'baserank' => 127, 'refrank' => 194), + "men" => array('change' => 104, 'baserank' => 156, 'refrank' => 260), " la" => array('change' => 14, 'baserank' => 213, 'refrank' => 199), + "con" => array('change' => 179, 'baserank' => 271, 'refrank' => 92), " fu" => array('change' => 300, 'baserank' => 210, 'refrank' => null), + "e l" => array('change' => 26, 'baserank' => 292, 'refrank' => 266), "s a" => array('change' => 7, 'baserank' => 48, 'refrank' => 41), + "art" => array('change' => 300, 'baserank' => 246, 'refrank' => null), "ltu" => array('change' => 300, 'baserank' => 79, 'refrank' => null), + "a i" => array('change' => 300, 'baserank' => 115, 'refrank' => null), "ctu" => array('change' => 300, 'baserank' => 273, 'refrank' => null), + "tor" => array('change' => 68, 'baserank' => 192, 'refrank' => 124), "ach" => array('change' => 300, 'baserank' => 60, 'refrank' => null), + "d g" => array('change' => 300, 'baserank' => 276, 'refrank' => null), "od " => array('change' => 300, 'baserank' => 166, 'refrank' => null), + "nte" => array('change' => 1, 'baserank' => 164, 'refrank' => 163), "ena" => array('change' => 300, 'baserank' => 18, 'refrank' => null), + "d l" => array('change' => 300, 'baserank' => 278, 'refrank' => null), "ene" => array('change' => 300, 'baserank' => 134, 'refrank' => null), + "e h" => array('change' => 136, 'baserank' => 291, 'refrank' => 155), "era" => array('change' => 211, 'baserank' => 70, 'refrank' => 281), + "on " => array('change' => 67, 'baserank' => 84, 'refrank' => 17), " ce" => array('change' => 300, 'baserank' => 99, 'refrank' => null), + "ay " => array('change' => 76, 'baserank' => 256, 'refrank' => 180), " da" => array('change' => 300, 'baserank' => 100, 'refrank' => null), + "ori" => array('change' => 300, 'baserank' => 87, 'refrank' => null), "atu" => array('change' => 300, 'baserank' => 253, 'refrank' => null), + "ave" => array('change' => 143, 'baserank' => 254, 'refrank' => 111), "rks" => array('change' => 300, 'baserank' => 182, 'refrank' => null), + "e d" => array('change' => 62, 'baserank' => 290, 'refrank' => 228), "ns " => array('change' => 3, 'baserank' => 81, 'refrank' => 78), + " ca" => array('change' => 119, 'baserank' => 203, 'refrank' => 84), "d s" => array('change' => 7, 'baserank' => 125, 'refrank' => 118), + "uch" => array('change' => 300, 'baserank' => 95, 'refrank' => null), "a v" => array('change' => 300, 'baserank' => 236, 'refrank' => null), + "nce" => array('change' => 149, 'baserank' => 7, 'refrank' => 156), "his" => array('change' => 48, 'baserank' => 41, 'refrank' => 89), + "flo" => array('change' => 300, 'baserank' => 138, 'refrank' => null), "ead" => array('change' => 300, 'baserank' => 294, 'refrank' => null), + " vi" => array('change' => 300, 'baserank' => 230, 'refrank' => null), "me " => array('change' => 109, 'baserank' => 29, 'refrank' => 138), + "suc" => array('change' => 300, 'baserank' => 93, 'refrank' => null), "e p" => array('change' => 120, 'baserank' => 39, 'refrank' => 159), + "eci" => array('change' => 300, 'baserank' => 299, 'refrank' => null), "eme" => array('change' => 300, 'baserank' => 133, 'refrank' => null), + "sen" => array('change' => 300, 'baserank' => 185, 'refrank' => null), "ks " => array('change' => 300, 'baserank' => 152, 'refrank' => null), + " to" => array('change' => 224, 'baserank' => 228, 'refrank' => 4), " gr" => array('change' => 133, 'baserank' => 105, 'refrank' => 238), + " ch" => array('change' => 76, 'baserank' => 204, 'refrank' => 128), "ati" => array('change' => 167, 'baserank' => 252, 'refrank' => 85), + " th" => array('change' => 0, 'baserank' => 0, 'refrank' => 0), " ec" => array('change' => 300, 'baserank' => 206, 'refrank' => null), + " wo" => array('change' => 115, 'baserank' => 34, 'refrank' => 149), "ope" => array('change' => 300, 'baserank' => 168, 'refrank' => null), + " a " => array('change' => 180, 'baserank' => 199, 'refrank' => 19), "one" => array('change' => 76, 'baserank' => 167, 'refrank' => 243), + "n f" => array('change' => 300, 'baserank' => 45, 'refrank' => null), "eat" => array('change' => 300, 'baserank' => 130, 'refrank' => null), + "ica" => array('change' => 198, 'baserank' => 75, 'refrank' => 273), "inc" => array('change' => 300, 'baserank' => 147, 'refrank' => null), + "enc" => array('change' => 300, 'baserank' => 69, 'refrank' => null), "ore" => array('change' => 204, 'baserank' => 86, 'refrank' => 290), + "is " => array('change' => 1, 'baserank' => 43, 'refrank' => 44), " as" => array('change' => 139, 'baserank' => 32, 'refrank' => 171), + "nts" => array('change' => 300, 'baserank' => 165, 'refrank' => null), "d m" => array('change' => 300, 'baserank' => 279, 'refrank' => null), + "her" => array('change' => 112, 'baserank' => 143, 'refrank' => 31), " al" => array('change' => 65, 'baserank' => 200, 'refrank' => 135), + " is" => array('change' => 105, 'baserank' => 107, 'refrank' => 212), "e t" => array('change' => 46, 'baserank' => 68, 'refrank' => 22), + "c r" => array('change' => 300, 'baserank' => 261, 'refrank' => null), " hi" => array('change' => 45, 'baserank' => 106, 'refrank' => 61), + "cia" => array('change' => 300, 'baserank' => 267, 'refrank' => null), " fr" => array('change' => 37, 'baserank' => 209, 'refrank' => 172), + "ult" => array('change' => 300, 'baserank' => 96, 'refrank' => null), "e m" => array('change' => 9, 'baserank' => 128, 'refrank' => 119), + "ass" => array('change' => 300, 'baserank' => 250, 'refrank' => null), "s o" => array('change' => 2, 'baserank' => 92, 'refrank' => 90), + "pop" => array('change' => 300, 'baserank' => 173, 'refrank' => null), "nd " => array('change' => 2, 'baserank' => 12, 'refrank' => 10), + "the" => array('change' => 0, 'baserank' => 1, 'refrank' => 1), " st" => array('change' => 197, 'baserank' => 226, 'refrank' => 29), + " no" => array('change' => 130, 'baserank' => 218, 'refrank' => 88), "ast" => array('change' => 300, 'baserank' => 251, 'refrank' => null), + " fi" => array('change' => 300, 'baserank' => 208, 'refrank' => null), "ess" => array('change' => 160, 'baserank' => 135, 'refrank' => 295), + "gre" => array('change' => 300, 'baserank' => 40, 'refrank' => null), "h a" => array('change' => 300, 'baserank' => 142, 'refrank' => null), + "duo" => array('change' => 300, 'baserank' => 287, 'refrank' => null), " so" => array('change' => 6, 'baserank' => 114, 'refrank' => 120), + "es " => array('change' => 48, 'baserank' => 72, 'refrank' => 24), "for" => array('change' => 96, 'baserank' => 139, 'refrank' => 43), + "gan" => array('change' => 300, 'baserank' => 140, 'refrank' => null), "per" => array('change' => 111, 'baserank' => 171, 'refrank' => 282), + "thi" => array('change' => 33, 'baserank' => 191, 'refrank' => 224), " of" => array('change' => 6, 'baserank' => 5, 'refrank' => 11), + " cl" => array('change' => 300, 'baserank' => 205, 'refrank' => null), " sc" => array('change' => 300, 'baserank' => 222, 'refrank' => null), + "t t" => array('change' => 49, 'baserank' => 94, 'refrank' => 45), "als" => array('change' => 300, 'baserank' => 242, 'refrank' => null), + "avi" => array('change' => 300, 'baserank' => 255, 'refrank' => null), "cie" => array('change' => 300, 'baserank' => 268, 'refrank' => null), + " du" => array('change' => 300, 'baserank' => 101, 'refrank' => null), "pre" => array('change' => 105, 'baserank' => 174, 'refrank' => 279), + "as " => array('change' => 17, 'baserank' => 25, 'refrank' => 42), "a a" => array('change' => 300, 'baserank' => 234, 'refrank' => null), + "gel" => array('change' => 300, 'baserank' => 141, 'refrank' => null), "ite" => array('change' => 300, 'baserank' => 149, 'refrank' => null), + "n r" => array('change' => 300, 'baserank' => 30, 'refrank' => null), "by " => array('change' => 105, 'baserank' => 121, 'refrank' => 226), + "d u" => array('change' => 300, 'baserank' => 282, 'refrank' => null), "clu" => array('change' => 300, 'baserank' => 270, 'refrank' => null), + " ur" => array('change' => 300, 'baserank' => 229, 'refrank' => null), "ebu" => array('change' => 300, 'baserank' => 298, 'refrank' => null), + "n i" => array('change' => 300, 'baserank' => 158, 'refrank' => null), "he " => array('change' => 0, 'baserank' => 2, 'refrank' => 2), + " wh" => array('change' => 195, 'baserank' => 232, 'refrank' => 37), " ph" => array('change' => 300, 'baserank' => 220, 'refrank' => null), + ); + + $ranked = $this->x->_arr_rank($this->x->_trigram($str)); + $results = $this->x->detect($str); + + $count = count($ranked); + $sum = 0; + + //foreach ($this->x->_lang_db['english'] as $key => $value) { + foreach ($ranked as $key => $value) { + if (isset($ranked[$key]) && isset($this->x->_lang_db['english'][$key])) { + $difference = abs($this->x->_lang_db['english'][$key] - $ranked[$key]); + } else { + $difference = 300; + } + + $this->assertTrue(isset($true_differences[$key]), "'$key'"); + if (isset($true_differences[$key])) { + $this->assertEquals($true_differences[$key]['change'], $difference, "'$key'"); + } + $sum += $difference; + } + + $this->assertEquals(300, $count); + $this->assertEquals(59490, $sum); + + $this->assertEquals('english', key($results)); + $this->assertEquals(198, floor(current($results))); + next($results); + $this->assertEquals('italian', key($results)); + $this->assertEquals(228, floor(current($results))); + } + + function test_french () + { + $this->x->setPerlCompatible(); + $str = "Verifions que le détecteur de langues marche"; + + $trigrams = $this->x->_trigram($str); + $this->assertEquals(42, count($trigrams)); + // verified in Language::Guess + + $ranked = $this->x->_arr_rank($trigrams); + $this->assertEquals(0, $ranked['e l']); + + $correct_ranks = array( + ' de' => 1, + "éte" => 41, + "dét" => 12, + 'fio' => 18, + 'de ' => 11, + 'ons' => 28, + 'ect' => 14, + 'le ' => 24, + 'arc' => 8, + 'lan' => 23, + 'es ' => 16, + 'mar' => 25, + " dé" => 2, + 'ifi' => 21, + 'gue' => 19, + 'ur ' => 39, + 'rch' => 31, + 'ang' => 7, + 'que' => 29, + 'ngu' => 26, + 'e d' => 13, + 'rif' => 32, + ' ma' => 5, + 'tec' => 35, + 'ns ' => 27, + ' la' => 3, + ' le' => 4, + 'r d' => 30, + 'e l' => 0, + 'che' => 9, + 's m' => 33, + 'ue ' => 37, + 'ver' => 40, + 'teu' => 36, + 'eri' => 15, + 'cte' => 10, + 'ues' => 38, + 's q' => 34, + 'eur' => 17, + ' qu' => 6, + 'he ' => 20, + 'ion' => 22 + ); + + + $this->assertEquals(count($correct_ranks), count($ranked), "different number of trigrams found"); + + $distances = array( + ' de' => array('change' => 0, 'baserank' => 1, 'refrank' => 1), + 'éte' => array('change' => 300, 'baserank' => 41, 'refrank' => null), + 'dét' => array('change' => 300, 'baserank' => 12, 'refrank' => null), + 'fio' => array('change' => 300, 'baserank' => 18, 'refrank' => null), + 'de ' => array('change' => 9, 'baserank' => 11, 'refrank' => 2), + 'ons' => array('change' => 11, 'baserank' => 28, 'refrank' => 39), + 'ect' => array('change' => 300, 'baserank' => 14, 'refrank' => null), + 'le ' => array('change' => 19, 'baserank' => 24, 'refrank' => 5), + 'arc' => array('change' => 300, 'baserank' => 8, 'refrank' => null), + 'lan' => array('change' => 300, 'baserank' => 23, 'refrank' => null), + 'es ' => array('change' => 16, 'baserank' => 16, 'refrank' => 0), + 'mar' => array('change' => 300, 'baserank' => 25, 'refrank' => null), + ' dé' => array('change' => 59, 'baserank' => 2, 'refrank' => 61), + 'ifi' => array('change' => 300, 'baserank' => 21, 'refrank' => null), + 'gue' => array('change' => 300, 'baserank' => 19, 'refrank' => null), + 'ur ' => array('change' => 12, 'baserank' => 39, 'refrank' => 27), + 'rch' => array('change' => 300, 'baserank' => 31, 'refrank' => null), + 'ang' => array('change' => 300, 'baserank' => 7, 'refrank' => null), + 'que' => array('change' => 5, 'baserank' => 29, 'refrank' => 24), + 'ngu' => array('change' => 300, 'baserank' => 26, 'refrank' => null), + 'e d' => array('change' => 2, 'baserank' => 13, 'refrank' => 15), + 'rif' => array('change' => 300, 'baserank' => 32, 'refrank' => null), + ' ma' => array('change' => 89, 'baserank' => 5, 'refrank' => 94), + 'tec' => array('change' => 300, 'baserank' => 35, 'refrank' => null), + 'ns ' => array('change' => 6, 'baserank' => 27, 'refrank' => 21), + ' la' => array('change' => 6, 'baserank' => 3, 'refrank' => 9), + ' le' => array('change' => 1, 'baserank' => 4, 'refrank' => 3), + 'r d' => array('change' => 202, 'baserank' => 30, 'refrank' => 232), + 'e l' => array('change' => 14, 'baserank' => 0, 'refrank' => 14), + 'che' => array('change' => 300, 'baserank' => 9, 'refrank' => null), + 's m' => array('change' => 180, 'baserank' => 33, 'refrank' => 213), + 'ue ' => array('change' => 7, 'baserank' => 37, 'refrank' => 30), + 'ver' => array('change' => 117, 'baserank' => 40, 'refrank' => 157), + 'teu' => array('change' => 300, 'baserank' => 36, 'refrank' => null), + 'eri' => array('change' => 300, 'baserank' => 15, 'refrank' => null), + 'cte' => array('change' => 300, 'baserank' => 10, 'refrank' => null), + 'ues' => array('change' => 237, 'baserank' => 38, 'refrank' => 275), + 's q' => array('change' => 300, 'baserank' => 34, 'refrank' => null), + 'eur' => array('change' => 56, 'baserank' => 17, 'refrank' => 73), + ' qu' => array('change' => 31, 'baserank' => 6, 'refrank' => 37), + 'he ' => array('change' => 300, 'baserank' => 20, 'refrank' => null), + 'ion' => array('change' => 12, 'baserank' => 22, 'refrank' => 10), + ); + + + + $french_ranks = $this->x->_lang_db['french']; + + $sumchange = 0; + foreach ($ranked as $key => $value) { + if (isset($french_ranks[$key])) { + $difference = abs($french_ranks[$key] - $ranked[$key]); + } else { + $difference = 300; + } + $this->assertTrue(isset($distances[$key]), $key); + if (isset($distances[$key])) { + $this->assertEquals($distances[$key]['baserank'], $ranked[$key], "baserank for $key"); + if ($distances[$key]['refrank'] === null) { + $this->assertArrayNotHasKey($key, $french_ranks); + } else { + $this->assertEquals($distances[$key]['refrank'], $french_ranks[$key], "refrank for $key"); + } + $this->assertEquals($distances[$key]['change'], $difference, "difference for $key"); + } + + $sumchange += $difference; + } + + $actual_result = $this->x->_distance($french_ranks, $ranked); + $this->assertEquals($sumchange, $actual_result); + $this->assertEquals(7091, $actual_result); + $this->assertEquals(168, floor($sumchange/count($trigrams))); + + $final_result = $this->x->detect($str); + $this->assertEquals(168, floor($final_result['french'])); + $this->assertEquals(211, $final_result['spanish']); + } + + function test_russian () + { + $str = 'авай проверить узнает ли наш угадатель русски язык'; + + $this->x->setPerlCompatible(); + $trigrams = $this->x->_trigram($str); + $ranked = $this->x->_arr_rank($trigrams); + + $correct_ranks = array( + ' ру' => array('change' => 300, 'baserank' => 3, 'refrank' => null), + 'ай ' => array('change' => 300, 'baserank' => 10, 'refrank' => null), + 'ада' => array('change' => 300, 'baserank' => 8, 'refrank' => null), + ' пр' => array('change' => 1, 'baserank' => 2, 'refrank' => 1), + ' яз' => array('change' => 300, 'baserank' => 6, 'refrank' => null), + 'ить' => array('change' => 300, 'baserank' => 24, 'refrank' => null), + ' на' => array('change' => 1, 'baserank' => 1, 'refrank' => 0), + 'зна' => array('change' => 153, 'baserank' => 20, 'refrank' => 173), + 'вай' => array('change' => 300, 'baserank' => 13, 'refrank' => null), + 'ш у' => array('change' => 300, 'baserank' => 44, 'refrank' => null), + 'ль ' => array('change' => 300, 'baserank' => 28, 'refrank' => null), + ' ли' => array('change' => 300, 'baserank' => 0, 'refrank' => null), + 'сск' => array('change' => 300, 'baserank' => 37, 'refrank' => null), + 'ть ' => array('change' => 31, 'baserank' => 40, 'refrank' => 9), + 'ава' => array('change' => 300, 'baserank' => 7, 'refrank' => null), + 'про' => array('change' => 18, 'baserank' => 32, 'refrank' => 14), + 'гад' => array('change' => 300, 'baserank' => 15, 'refrank' => null), + 'усс' => array('change' => 300, 'baserank' => 43, 'refrank' => null), + 'ык ' => array('change' => 300, 'baserank' => 45, 'refrank' => null), + 'ель' => array('change' => 64, 'baserank' => 17, 'refrank' => 81), + 'язы' => array('change' => 300, 'baserank' => 47, 'refrank' => null), + ' уг' => array('change' => 300, 'baserank' => 4, 'refrank' => null), + 'ате' => array('change' => 152, 'baserank' => 11, 'refrank' => 163), + 'и н' => array('change' => 63, 'baserank' => 22, 'refrank' => 85), + 'и я' => array('change' => 300, 'baserank' => 23, 'refrank' => null), + 'ает' => array('change' => 152, 'baserank' => 9, 'refrank' => 161), + 'узн' => array('change' => 300, 'baserank' => 42, 'refrank' => null), + 'ери' => array('change' => 300, 'baserank' => 18, 'refrank' => null), + 'ли ' => array('change' => 23, 'baserank' => 27, 'refrank' => 4), + 'т л' => array('change' => 300, 'baserank' => 38, 'refrank' => null), + ' уз' => array('change' => 300, 'baserank' => 5, 'refrank' => null), + 'дат' => array('change' => 203, 'baserank' => 16, 'refrank' => 219), + 'зык' => array('change' => 300, 'baserank' => 21, 'refrank' => null), + 'ров' => array('change' => 59, 'baserank' => 34, 'refrank' => 93), + 'рит' => array('change' => 300, 'baserank' => 33, 'refrank' => null), + 'ь р' => array('change' => 300, 'baserank' => 46, 'refrank' => null), + 'ет ' => array('change' => 19, 'baserank' => 19, 'refrank' => 38), + 'ки ' => array('change' => 116, 'baserank' => 26, 'refrank' => 142), + 'рус' => array('change' => 300, 'baserank' => 35, 'refrank' => null), + 'тел' => array('change' => 16, 'baserank' => 39, 'refrank' => 23), + 'нае' => array('change' => 300, 'baserank' => 29, 'refrank' => null), + 'й п' => array('change' => 300, 'baserank' => 25, 'refrank' => null), + 'наш' => array('change' => 300, 'baserank' => 30, 'refrank' => null), + 'уга' => array('change' => 300, 'baserank' => 41, 'refrank' => null), + 'ове' => array('change' => 214, 'baserank' => 31, 'refrank' => 245), + 'ски' => array('change' => 112, 'baserank' => 36, 'refrank' => 148), + 'вер' => array('change' => 31, 'baserank' => 14, 'refrank' => 45), + 'аш ' => array('change' => 300, 'baserank' => 12, 'refrank' => null), + ); + + $this->assertEquals(48, count($ranked)); + + + $russian = $this->x->_lang_db['russian']; + + $sumchange = 0; + foreach ($ranked as $key => $value) { + if (isset($russian[$key])) { + $difference = abs($russian[$key] - $ranked[$key]); + } else { + $difference = 300; + } + $this->assertTrue(isset($correct_ranks[$key], $key)); + if (isset($correct_ranks[$key])) { + $this->assertEquals($correct_ranks[$key]['baserank'], $ranked[$key], "baserank for $key"); + if ($correct_ranks[$key]['refrank'] === null) { + $this->assertArrayNotHasKey($key, $russian); + } else { + $this->assertEquals($correct_ranks[$key]['refrank'], $russian[$key], "refrank for $key"); + } + $this->assertEquals($correct_ranks[$key]['change'], $difference, "difference for $key"); + } + + $sumchange += $difference; + } + + $actual_result = $this->x->_distance($russian, $ranked); + $this->assertEquals($sumchange, $actual_result); + $this->assertEquals(10428, $actual_result); + $this->assertEquals(217, floor($sumchange/count($trigrams))); + + $final_result = $this->x->detect($str); + $this->assertEquals(217,floor($final_result['russian'])); + } + + function test_ranker () + { + $str = 'is it s i'; + + $result = $this->x->_arr_rank($this->x->_trigram($str)); + + $this->assertEquals(0, $result['s i']); + } + + + function test_count () + { + $langs = $this->x->getLanguages(); + + $count = $this->x->getLanguageCount(); + + $this->assertEquals(count($langs), $count); + + foreach ($langs as $lang) { + $this->assertTrue($this->x->languageExists($lang), $lang); + } + } + + function testLanguageExistsNameMode2() + { + $this->x->setNameMode(2); + $this->assertTrue($this->x->languageExists('en')); + $this->assertFalse($this->x->languageExists('english')); + } + + function testLanguageExistsArrayNameMode2() + { + $this->x->setNameMode(2); + $this->assertTrue($this->x->languageExists(array('en', 'de'))); + $this->assertFalse($this->x->languageExists(array('en', 'doesnotexist'))); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Unsupported parameter type passed to languageExists() + */ + function testLanguageExistsUnsupportedType() + { + $this->x->languageExists(1.23); + } + + function testGetLanguages() + { + $langs = $this->x->getLanguages(); + $this->assertContains('english', $langs); + $this->assertContains('swedish', $langs); + } + + function testGetLanguagesNameMode2() + { + $this->x->setNameMode(2); + $langs = $this->x->getLanguages(); + $this->assertContains('en', $langs); + $this->assertContains('sv', $langs); + } + + function testDetect() + { + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('array', $scores); + $this->assertGreaterThan(5, count($scores)); + + list($key, $value) = each($scores); + $this->assertEquals('german', $key, 'text is german'); + } + + function testDetectNameMode2() + { + $this->x->setNameMode(2); + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle'); + list($key, $value) = each($scores); + $this->assertEquals('de', $key, 'text is german'); + } + + function testDetectNameMode2Limit() + { + $this->x->setNameMode(2); + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle', 1); + list($key, $value) = each($scores); + $this->assertEquals('de', $key, 'text is german'); + } + + function testDetectSimple() + { + $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('string', $lang); + $this->assertEquals('german', $lang, 'text is german'); + } + + function testDetectSimpleNameMode2() + { + $this->x->setNameMode(2); + $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('string', $lang); + $this->assertEquals('de', $lang, 'text is german'); + } + + function testDetectSimpleNoLanguages() + { + $this->x->omitLanguages('english', true); + $this->x->omitLanguages('english', false); + $this->assertNull( + $this->x->detectSimple('Das ist ein kleiner Text für euch alle') + ); + } + + function testLanguageSimilarity() + { + $this->x->setPerlCompatible(true); + $eng_dan = $this->x->languageSimilarity('english', 'danish'); + $nor_dan = $this->x->languageSimilarity('norwegian', 'danish'); + $swe_dan = $this->x->languageSimilarity('swedish', 'danish'); + + // remember, lower means more similar + $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is + $this->assertTrue($eng_dan > $swe_dan); // english is less similar to danish than swedish is + $this->assertTrue($nor_dan < $swe_dan); // norwegian is more similar to danish than swedish + + // test the range of the results + $this->assertTrue($eng_dan <= 300, $eng_dan); + $this->assertTrue($eng_dan >= 0, $eng_dan); + + // test it in perl compatible mode + $this->x->setPerlCompatible(false); + + $eng_dan = $this->x->languageSimilarity('english', 'danish'); + $nor_dan = $this->x->languageSimilarity('norwegian', 'danish'); + $swe_dan = $this->x->languageSimilarity('swedish', 'danish'); + + // now higher is more similar + $this->assertTrue($eng_dan < $nor_dan); + $this->assertTrue($eng_dan < $swe_dan); + $this->assertTrue($nor_dan > $swe_dan); + + $this->assertTrue($eng_dan <= 1, $eng_dan); + $this->assertTrue($eng_dan >= 0, $eng_dan); + + $this->x->setPerlCompatible(true); + + $eng_all = $this->x->languageSimilarity('english'); + $this->assertEquals($this->x->getLanguageCount() - 1, count($eng_all)); + $this->assertTrue(!isset($eng_all['english'])); + + $this->assertTrue($eng_all['italian'] < $eng_all['turkish']); + $this->assertTrue($eng_all['french'] < $eng_all['kyrgyz']); + + $all = $this->x->languageSimilarity(); + $this->assertTrue(!isset($all['english']['english'])); + $this->assertTrue($all['french']['spanish'] < $all['french']['mongolian']); + $this->assertTrue($all['spanish']['latin'] < $all['hindi']['finnish']); + $this->assertTrue($all['russian']['uzbek'] < $all['russian']['english']); + } + + + function testLanguageSimilarityNameMode2() + { + $this->x->setNameMode(2); + $this->x->setPerlCompatible(true); + $eng_dan = $this->x->languageSimilarity('en', 'dk'); + $nor_dan = $this->x->languageSimilarity('no', 'dk'); + + // remember, lower means more similar + $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is + } + + function testLanguageSimilarityUnknownLanguage() + { + $this->assertNull($this->x->languageSimilarity('doesnotexist')); + } + + function testLanguageSimilarityUnknownLanguage2() + { + $this->assertNull($this->x->languageSimilarity('english', 'doesnotexist')); + } + + function test_compatibility () + { + $str = "I am the very model of a modern major general."; + + + $this->x->setPerlCompatible(false); + $result = $this->x->detectConfidence($str); + + $this->assertTrue(!is_null($result)); + $this->assertTrue(is_array($result)); + extract($result); + $this->assertEquals('english', $language); + $this->assertTrue($similarity <= 1 && $similarity >= 0, $similarity); + $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence); + + $this->x->setPerlCompatible(true); + $result = $this->x->detectConfidence($str); + extract($result, EXTR_OVERWRITE); + + $this->assertEquals('english', $language); + + // technically the lowest possible score is 0 but it's extremely unlikely to hit that + $this->assertTrue($similarity <= 300 && $similarity >= 1, $similarity); + $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence); + + } + + function testDetectConfidenceNoText() + { + $this->assertNull($this->x->detectConfidence('')); + } + + function test_omit_error () + { + $str = 'On January 29, 1737, Thomas Paine was born in Thetford, England. His father, a corseter, had grand visions for his son, but by the age of 12, Thomas had failed out of school. The young Paine began apprenticing for his father, but again, he failed.'; + + $myobj = new Text_LanguageDetect; + + $result = $myobj->detectSimple($str); + $this->assertEquals('english', $result); + + // omit all languages and you should get an error + $myobj->omitLanguages($myobj->getLanguages()); + + $result = $myobj->detectSimple($str); + + $this->assertNull($result, gettype($result)); + } + + function test_cyrillic () + { + // tests whether the cyrillic lower-casing works + + $uppercased = 'А Б В Г Д Е Ж З И Й К Л М Н О П' + . 'Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я'; + + $lowercased = 'а б в г д е ж з и й к л м н о п' + . 'р с т у ф х ц ч ш щ ъ ы ь э ю я'; + + $this->assertEquals(strlen($uppercased), strlen($lowercased)); + + $i = 0; + $j = 0; + $new_u = ''; + while ($i < strlen($uppercased)) { + $u = Text_LanguageDetect::_next_char($uppercased, $i, true); + $l = Text_LanguageDetect::_next_char($lowercased, $j, true); + $this->assertEquals($u, $l); + + $new_u .= $u; + } + + $this->assertEquals($i, $j); + $this->assertEquals($i, strlen($lowercased)); + if (function_exists('mb_strtolower')) { + $this->assertEquals($new_u, mb_strtolower($uppercased, 'UTF-8')); + } + } + + function test_block_detection() + { + $exp_output = << 37 + [CJK Unified Ideographs] => 2 + [Hiragana] => 1 + [Latin-1 Supplement] => 4 +) +EOF; + $teststr = 'lsdkfj あ 葉 叶 slskdfj s Åj;sdklf ÿjs;kdjåf î'; + $result = $this->x->detectUnicodeBlocks($teststr, false); + + ksort($result); + ob_start(); + print_r($result); + $str_result = ob_get_contents(); + ob_end_clean(); + $this->assertEquals(trim($exp_output), trim($str_result)); + + // test whether skipping the spaces reduces the basic latin count + $result2 = $this->x->detectUnicodeBlocks($teststr, true); + $this->assertTrue($result2['Basic Latin'] < $result['Basic Latin']); + + $result3 = $this->x->unicodeBlockName('и'); + $this->assertEquals('Cyrillic', $result3); + + $this->assertEquals('Basic Latin', $this->x->unicodeBlockName('A')); + + // see what happens when you try an unassigned range + $utf8 = $this->code2utf(0x0800); + + $this->assertEquals(false, $this->x->unicodeBlockName($utf8)); + + // try unicode vals in several different ranges + $unicode['Supplementary Private Use Area-A'] = 0xF0001; + $unicode['Supplementary Private Use Area-B'] = 0x100001; + $unicode['CJK Unified Ideographs Extension B'] = 0x20001; + $unicode['Ugaritic'] = 0x10381; + $unicode['Gothic'] = 0x10331; + $unicode['Low Surrogates'] = 0xDC01; + $unicode['CJK Unified Ideographs'] = 0x4E00; + $unicode['Glagolitic'] = 0x2C00; + $unicode['Latin Extended Additional'] = 0x1EFF; + $unicode['Devanagari'] = 0x0900; + $unicode['Hebrew'] = 0x0590; + $unicode['Latin Extended-B'] = 0x024F; + $unicode['Latin-1 Supplement'] = 0x00FF; + $unicode['Basic Latin'] = 0x007F; + + foreach ($unicode as $range => $codepoint) { + $result = $this->x->unicodeBlockName($this->code2utf($codepoint)); + $this->assertEquals($range, $result, $codepoint); + } + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Pass a single char only to this method + */ + function testUnicodeBlockNameParamString() + { + $this->x->unicodeBlockName('foo bar baz'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Input must be of type string or int + */ + function testUnicodeBlockNameUnsupportedParamType() + { + $this->x->unicodeBlockName(1.23); + } + + + // utility function + // found in http://www.php.net/manual/en/function.utf8-encode.php#49336 + function code2utf($num) + { + if ($num < 128) { + return chr($num); + + } elseif ($num < 2048) { + return chr(($num >> 6) + 192) . chr(($num & 63) + 128); + + } elseif ($num < 65536) { + return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + + } elseif ($num < 2097152) { + return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + } else { + return ''; + } + } + + function test_utf8len() + { + $str = 'Iñtërnâtiônàlizætiøn'; + $this->assertEquals(20, $this->x->utf8strlen($str), utf8_decode($str)); + + $str = '時期日'; + $this->assertEquals(3, $this->x->utf8strlen($str), utf8_decode($str)); + } + + function test_unicode() + { + // test whether it can get the right unicode values for utf8 chars + + $chars['ת'] = 0x5EA; + + $chars['ç'] = 0x00E7; + + $chars['a'] = 0x0061; + + $chars['Φ'] = 0x03A6; + + $chars['И'] = 0x0418; + + $chars['ڰ'] = 0x6B0; + + $chars['Ụ'] = 0x1EE4; + + $chars['놔'] = 0xB194; + + $chars['遮'] = 0x906E; + + $chars['怀'] = 0x6000; + + $chars['ฤ'] = 0x0E24; + + $chars['Я'] = 0x042F; + + $chars['ü'] = 0x00FC; + + $chars['Đ'] = 0x0110; + + $chars['א'] = 0x05D0; + + + foreach ($chars as $utf8 => $unicode) { + $this->assertEquals($unicode, $this->x->_utf8char2unicode($utf8), $utf8); + } + } + + function test_unicode_off() + { + + // see what happens when you turn the unicode setting off + + $myobj = new Text_LanguageDetect; + + $str = 'This is a delightful sample of English text'; + + $myobj->useUnicodeBlocks(true); + $result1 = $myobj->detectConfidence($str); + + $myobj->useUnicodeBlocks(false); + $result2 = $myobj->detectConfidence($str); + + $this->assertEquals($result1, $result2); + + // note this test doesn't tell if unicode narrowing was actually used or not + } + + + function test_detection() + { + + // WARNING: the below lines may make your terminal go ape! be warned + + + + + + + + + + + + + + + + + + + + + + + + // test strings from the test module used by perl's Language::Guess + + $testarr = array( + "english" => "This is a test of the language checker", + "french" => "Verifions que le détecteur de langues marche", + "polish" => "Sprawdźmy, czy odgadywacz języków pracuje", + "russian" => "Давай проверим узнает ли нашь угадыватель русский язык", + "spanish" => "La respuesta de los acreedores a la oferta argentina para salir del default no ha sido muy positiv", + "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei privind organizarea scrutinului nu au fost soluţionate", + "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.", + "danish" => "På denne side bringer vi billeder fra de mange forskellige forberedelser til arrangementet, efterhånden som vi får dem ", + "swedish" => "Vi säger att Frälsningen är en gåva till alla, fritt och för intet. Men som vi nämnt så finns det två villkor som måste", + "norwegian" => "Nominasjonskomiteen i Akershus KrF har skviset ut Einar Holstad fra stortingslisten. Ytre Enebakk-mannen har plass p Stortinget s lenge Valgerd Svarstad Haugland sitter i", + "finnish" => "on julkishallinnon verkkopalveluiden yhteinen osoite. Kansalaisten arkielämää helpottavaa tietoa on koottu eri aihealueisiin", + "estonian" => "Ennetamaks reisil ebameeldivaid vahejuhtumeid vii end kurssi reisidokumentide ja viisade reeglitega ning muu praktilise informatsiooniga", + "hungarian" => "Hiába jön létre az önkéntes magyar haderő, hiába nem lesz többé bevonulás, változatlanul fennmarad a hadkötelezettség intézménye", + "uzbek" => "милиция ва уч солиқ идораси ходимлари яраланган. Шаҳарда хавфсизлик чоралари кучайтирилган.", + + + "czech" => "Francouzský ministr financí zmírnil výhrady vůči nízkým firemním daním v nových členských státech EU", + "dutch" => "Die kritiek was volgens hem bitter hard nodig, omdat Nederland binnen een paar jaar in een soort Belfast zou dreigen te nderen", + + "croatian" => "biće prilično izjednačena, sugerišu najnovije ankete. Oba kandidata tvrde da su sposobni da dobiju rat protiv terorizma", + + "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei ivind organizarea scrutinului nu au fost soluţionate", + + "turkish" => "yakın tarihin en çekişmeli başkanlık seçiminde oy verme işlemi sürerken, katılımda rekor bekleniyor.", + + "kyrgyz" => "көрбөгөндөй элдик толкундоо болуп, Кокон шаарынын көчөлөрүндө бир нече миң киши нааразылык билдирди.", + + + "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.", + + + "azeri" => "Daxil olan xəbərlərdə deyilir ki, 6 nəfər Bağdadın mərkəzində yerləşən Təhsil Nazirliyinin binası yaxınlığında baş vermiş partlayış zamanı həlak olub.", + + + "macedonian" => "на јавното мислење покажуваат дека трката е толку тесна, што се очекува двајцата соперници да ја прекршат традицијата и да се појават и на самиот изборен ден.", + + + + "kazakh" => "Сайлау нәтижесінде дауыстардың басым бөлігін ел премьер министрі Виктор Янукович пен оның қарсыласы, оппозиция жетекшісі Виктор Ющенко алды.", + + + "bulgarian" => " е готов да даде гаранции, че няма да прави ядрено оръжие, ако му се разреши мирна атомна програма", + + + "arabic" => " ملايين الناخبين الأمريكيين يدلون بأصواتهم وسط إقبال قياسي على انتخابات هي الأشد تنافسا منذ عقود", + + ); + + + + + + + + + + + + + + + + + + + + + + + + + + // should be safe at this point + + + $languages = $this->x->getLanguages(); + foreach (array_keys($testarr) as $key) { + $this->assertTrue(in_array($key, $languages), "$key was not in known languages"); + } + + foreach ($testarr as $key=>$value) { + $this->assertEquals($key, $this->x->detectSimple($value)); + } + } + + + public function test_convertFromNameMode0() + { + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('english') + ); + } + + public function test_convertFromNameMode2String() + { + $this->x->setNameMode(2); + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('en') + ); + } + + public function test_convertFromNameMode3String() + { + $this->x->setNameMode(3); + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('eng') + ); + } + + public function test_convertFromNameMode2ArrayVal() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('english', 'german'), + $this->x->_convertFromNameMode(array('en', 'de')) + ); + } + + public function test_convertFromNameMode2ArrayKey() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('english' => 'foo', 'german' => 'test'), + $this->x->_convertFromNameMode( + array('en' => 'foo', 'de' => 'test'), + true + ) + ); + } + + public function test_convertFromNameMode3ArrayVal() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('english', 'german'), + $this->x->_convertFromNameMode(array('eng', 'deu')) + ); + } + + public function test_convertFromNameMode3ArrayKey() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('english' => 'foo', 'german' => 'test'), + $this->x->_convertFromNameMode( + array('eng' => 'foo', 'deu' => 'test'), + true + ) + ); + } + + public function test_convertToNameMode0() + { + $this->assertEquals( + 'english', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode2String() + { + $this->x->setNameMode(2); + $this->assertEquals( + 'en', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode3String() + { + $this->x->setNameMode(3); + $this->assertEquals( + 'eng', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode2ArrayVal() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('en', 'de'), + $this->x->_convertToNameMode(array('english', 'german')) + ); + } + + public function test_convertToNameMode2ArrayKey() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('en' => 'foo', 'de' => 'test'), + $this->x->_convertToNameMode( + array('english' => 'foo', 'german' => 'test'), + true + ) + ); + } + + public function test_convertToNameMode3ArrayVal() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('eng', 'deu'), + $this->x->_convertToNameMode(array('english', 'german')) + ); + } + + public function test_convertToNameMode3ArrayKey() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('eng' => 'foo', 'deu' => 'test'), + $this->x->_convertToNameMode( + array('english' => 'foo', 'german' => 'test'), + true + ) + ); + } +} diff --git a/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php b/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php new file mode 100644 index 00000000..e01d715e --- /dev/null +++ b/build/production/LIME/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php @@ -0,0 +1,72 @@ +assertEquals( + 'de', + Text_LanguageDetect_ISO639::nameToCode2('german') + ); + } + + public function testNameToCode2Fail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::nameToCode2('doesnotexist') + ); + } + + public function testNameToCode3() + { + $this->assertEquals( + 'fra', + Text_LanguageDetect_ISO639::nameToCode3('french') + ); + } + + public function testNameToCode3Fail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::nameToCode3('doesnotexist') + ); + } + + public function testCode2ToName() + { + $this->assertEquals( + 'english', + Text_LanguageDetect_ISO639::code2ToName('en') + ); + } + + public function testCode2ToNameFail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::code2ToName('nx') + ); + } + + public function testCode3ToName() + { + $this->assertEquals( + 'romanian', + Text_LanguageDetect_ISO639::code3ToName('rom') + ); + } + + public function testCode3ToNameFail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::code3ToName('nxx') + ); + } + +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/lime-config.php b/build/production/LIME/php/lime-config.php index bc8f19ef..67487844 100644 --- a/build/production/LIME/php/lime-config.php +++ b/build/production/LIME/php/lime-config.php @@ -48,7 +48,7 @@ define('EXIST_ADMIN_USER', 'admin'); // the exist admin password -define('EXIST_ADMIN_PASSWORD', 'existPassword'); +define('EXIST_ADMIN_PASSWORD', 'exist'); // the exist db base url define('EXIST_URL','http://localhost:8080/exist/'); @@ -59,4 +59,4 @@ // absolute path to AbiWord utility define('ABIWORD_PATH', '/usr/bin/abiword'); -?> \ No newline at end of file +?> diff --git a/build/production/LIME/php/parsers/MetaParser.php b/build/production/LIME/php/parsers/MetaParser.php new file mode 100644 index 00000000..571497bf --- /dev/null +++ b/build/production/LIME/php/parsers/MetaParser.php @@ -0,0 +1,290 @@ +lang = $lang; + $this->docType = $docType; + $this->content = $content; + } + + public function parseDocument() { + $return = array(); + + $dateRes = $this->parseDate(); + $structureRes = $this->parseStructure(); + $bodyRes = $this->parseBody(); + $quoteRes = $this->parseQuote(); + $referenceRes = $this->parseReference(); + $docRes = $this->parseDocNum(); + $docTypeRes = $this->parseDocType(); + + //print_r($structureRes); + + $this->handleParserDocTypeResult($docTypeRes, $return); + $this->handleParserDocNumResult($docRes, $return); + $this->handleParserRefResult($referenceRes, $return); + $this->handleParserQuoteResult($quoteRes, $return); + $this->handleParserStructureResult($structureRes, $return); + $this->handleParserDateResult($dateRes, $return); + + $this->handleParserBodyResult($bodyRes, $return); + + $this->normalizeOffsets($return); + return json_encode($return); + } + + public function parseStructure() { + $parser = new StructureParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseBody() { + $parser = new BodyParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseQuote() { + $parser = new QuoteParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseList() { + $parser = new ListParser($this->lang); + return $parser->parse($this->content); + } + + public function parseReference() { + $parser = new ReferenceParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseDocNum() { + $parser = new DocNumParser($this->lang); + return $parser->parse($this->content); + } + + public function parseDate() { + $parser = new DateParser($this->lang); + return $parser->parse($this->content); + } + + public function parseDocType() { + $parser = new DocTypeParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + private function handleParserResult($name, $result, &$completeResult) { + $completeResult[$name] = $result; + } + + private function handleParserDocTypeResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $completeResult[] = array_merge(Array("name"=> "docType"), $match); + } + } + + private function handleParserDocNumResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $match["string"] = $match["match"]; + unset($match["match"]); + $completeResult[] = array_merge(Array("name"=> "docNum"), $match); + } + } + + private function handleParserRefResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $match["string"] = $match["ref"]; + unset($match["ref"]); + $completeResult[] = array_merge(Array("name"=> "ref"), $match); + } + } + + private function handleParserQuoteResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $completeResult[] = Array("name"=> "quotedText", + "start" => $match["start"]["offset"], + "end" => $match["end"]["offset"]+strlen($match["end"]["string"]), + "string" => $match["quoted"]["string"]); + /*"startQuote" => $match["start"]["string"], + "endQuote" => $match["end"]["string"],*/ + } + } + + private function handleParserDateResult($result, &$completeResult) { + if(array_key_exists("dates", $result["response"])) { + foreach ($result["response"]["dates"] as $key => $match) { + foreach($match["offsets"] as $offset) { + $completeResult[] = Array("name"=> "date", + "string" => $match["match"], + "date" => $match["date"], + "start" => $offset["start"], + "end" => $offset["end"]); + } + } + } + } + + private function handleParserStructureResult($result, &$completeResult) { + $tmpArray = Array(); + if($result["response"]["success"]) { + foreach($result["response"]["structure"] as $key => $element) { + $newElement = Array("name"=> $element, + "string" => (array_key_exists("value", $result["response"][$element])) + ? $result["response"][$element]["value"] : "", + "end" => (array_key_exists("end", $result["response"][$element])) + ? $result["response"][$element]["end"] : ""); + if(!empty($newElement["string"]) && empty($tmpArray)) { + $newElement["start"] = 0; + } else { + $lastElement = end($tmpArray); + if(!empty($lastElement["string"])) { + $newElement["start"] = $lastElement["end"]; + } + if($key == (count($result["response"]["structure"])-1)) { + $newElement["end"] = strlen($this->content); + } + } + if(array_key_exists("start", $newElement)) { + $tmpArray[] = $newElement; + $completeResult[] = $newElement; + } + } + } + } + + private function handleParserBodyResult($result, &$completeResult) { + foreach ($result["response"] as $elementName => $elements) { + $nums = Array(); + foreach ($elements as $element) { + $newElement = Array("name"=> "num", + "string" => $element["value"], + "start" => $element["start"], + "end" => $element["start"]+strlen($element["value"])); + $nums[] = $newElement; + $completeResult[] = $newElement; + } + foreach ($nums as $key => $num) { + $parent = $this->getElementParent($num, $completeResult); + $parentIndex = array_search($parent, $completeResult); + if($parent["name"] == "quotedText") { + $completeResult[$parentIndex]["name"] = "quotedStructure"; + } + $end = $parent["end"]; + if(array_key_exists($key+1, $nums)) { + $parentNext = $this->getElementParent($nums[$key+1], $completeResult); + if($parentNext === $parent) { + $end = $nums[$key+1]["start"]; + } else { + $nextSibling = $this->getElementWithSameParent($num, $parent, $completeResult); + if(!empty($nextSibling)) { + $end = $nextSibling[0]["start"]; + } + } + } + if($end != 0) { + $newElement = Array("name"=> $elementName, + "start" => $num["start"], + "end" => $end); + $completeResult[] = $newElement; + } + + } + } + } + + private function getElementWithSameParent($element, $parent, $completeResult) { + $elements = array_filter($completeResult, function($res) use ($element, $parent, $completeResult) { + return ($res != $element && $res["name"] == $element["name"]); + }); + $siblings = Array(); + foreach ($elements as $el) { + $parentNext = $this->getElementParent($el, $completeResult); + if($parentNext === $parent) { + $siblings[] = $el; + } + } + return $siblings; + } + + private function getElementParent($element, $completeResult) { + $parents = array_filter($completeResult, function($res) use ($element) { + return ($res != $element && $res["start"] <= $element["start"] && $res["end"]>=$element["end"]); + }); + usort($parents , function($a, $b) use ($element) { + if ($a == $b) { + return 0; + } + return ($a["end"] < $b["end"]) ? -1 : 1; + }); + + return (!empty($parents)) ? $parents[0] : NULL; + } + + private function normalizeOffsets(&$completeResult) { + $encoding = mb_detect_encoding($this->content); + foreach ($completeResult as &$element) { + $subStr = substr($this->content, 0, $element["start"]); + $element["start"] = mb_strlen($subStr, $encoding); + $subStr = substr($this->content, 0, $element["end"]); + $element["end"] = mb_strlen($subStr, $encoding); + } + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/BodyParser.php b/build/production/LIME/php/parsers/body/BodyParser.php new file mode 100644 index 00000000..e2bfd7f8 --- /dev/null +++ b/build/production/LIME/php/parsers/body/BodyParser.php @@ -0,0 +1,118 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $return = $this->parse_ricorsive($content, 0); + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function parse_ricorsive($content, $hierarchyIndex) { + $return = array(); + $hierarchy = array_slice($this->parserRules["hierarchy"], $hierarchyIndex); + foreach($hierarchy as $key => $value) { + if(array_key_exists($value, $this->parserRules)) { + $resolved = resolveRegex($this->parserRules[$value], $this->parserRules, + $this->lang,$this->docType, $this->dirName); + + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + $return[$value] = array(); + $offsets = array(); + $values = array(); + foreach($result["0"] as $index => $match) { + $values[] = $match[0]; + $offsets[] = $match[1]; + } + $pairs = arrayToPairsArray($offsets, strlen($content)); + for($i = 0; $i < count($pairs); $i++) { + $pair = $pairs[$i]; + $valueArray = array(); + $subString = substr($content, $pair[0], ($pair[1]-$pair[0])); + $valueArray["value"] = $values[$i]; + $valueArray["start"] = $offsets[$i]; + $valueArray["contains"] = $this->parse_ricorsive($subString,$hierarchyIndex+$key+1); + $return[$value][] = $valueArray; + } + break; + } + } + } + return $return; + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/conf.php b/build/production/LIME/php/parsers/body/conf.php new file mode 100644 index 00000000..db9e79f5 --- /dev/null +++ b/build/production/LIME/php/parsers/body/conf.php @@ -0,0 +1,59 @@ + "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + //"number" => "\d+|{{roman}}+", + "number" => "\d+", + "title" => "/({{titleList}})\s*({{number}})/", + "chapter" => "/({{chapterList}})\s*({{number}})/", + "article" => "/({{articleList}})\s*({{number}}\s*[º°\.]*)/", + "section" => "/({{sectionList}})\s*({{number}}\s*[º°]*\.)/", + "book" => "/({{bookList}})\s*({{number}}\s*[º°]*\.)/" +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/docType/act/conf.php b/build/production/LIME/php/parsers/body/docType/act/conf.php new file mode 100644 index 00000000..b65118e4 --- /dev/null +++ b/build/production/LIME/php/parsers/body/docType/act/conf.php @@ -0,0 +1,52 @@ + Array("book","title","section","chapter","article") +); + +?> \ No newline at end of file diff --git a/app/view/markingmenu/treebutton/Widgets.js b/build/production/LIME/php/parsers/body/docType/bill/conf.php similarity index 93% rename from app/view/markingmenu/treebutton/Widgets.js rename to build/production/LIME/php/parsers/body/docType/bill/conf.php index 9b5415ee..d0d4c934 100644 --- a/app/view/markingmenu/treebutton/Widgets.js +++ b/build/production/LIME/php/parsers/body/docType/bill/conf.php @@ -1,3 +1,4 @@ + Array("book","title","section","chapter","article") +); -/** - * A container for the widgets - */ -Ext.define('LIME.view.markingmenu.treebutton.Widgets', { - extend : 'Ext.container.Container', - alias : 'widget.treeButtonWidgets' -}); +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/index.php b/build/production/LIME/php/parsers/body/index.php new file mode 100644 index 00000000..9b7ccc2f --- /dev/null +++ b/build/production/LIME/php/parsers/body/index.php @@ -0,0 +1,61 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/deu/act/conf.php b/build/production/LIME/php/parsers/body/lang/deu/act/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/deu/act/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/deu/bill/conf.php b/build/production/LIME/php/parsers/body/lang/deu/bill/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/deu/bill/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/eng/act/conf.php b/build/production/LIME/php/parsers/body/lang/eng/act/conf.php new file mode 100644 index 00000000..742050c2 --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/eng/act/conf.php @@ -0,0 +1,52 @@ + Array("Section","SECTION","SEC\.","Sec\."), +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/eng/bill/conf.php b/build/production/LIME/php/parsers/body/lang/eng/bill/conf.php new file mode 100644 index 00000000..742050c2 --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/eng/bill/conf.php @@ -0,0 +1,52 @@ + Array("Section","SECTION","SEC\.","Sec\."), +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/esp/act/conf.php b/build/production/LIME/php/parsers/body/lang/esp/act/conf.php new file mode 100644 index 00000000..7be99f7f --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/esp/act/conf.php @@ -0,0 +1,56 @@ + Array("LIBRO","Libro"), + "titleList" => Array("T(Í|í|i)tulo","T(I|Í)TULO"), + "sectionList" => Array("Secci(ó|o)n","SECCION"), + "articleList" => Array("Art(I|Í|i|í)culo", "Art\.","ART(I|Í)CULO"), + "chapterList" => Array("Cap(í|i)tulo","CAPÍTULO") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/esp/bill/conf.php b/build/production/LIME/php/parsers/body/lang/esp/bill/conf.php new file mode 100644 index 00000000..7be99f7f --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/esp/bill/conf.php @@ -0,0 +1,56 @@ + Array("LIBRO","Libro"), + "titleList" => Array("T(Í|í|i)tulo","T(I|Í)TULO"), + "sectionList" => Array("Secci(ó|o)n","SECCION"), + "articleList" => Array("Art(I|Í|i|í)culo", "Art\.","ART(I|Í)CULO"), + "chapterList" => Array("Cap(í|i)tulo","CAPÍTULO") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/fra/act/conf.php b/build/production/LIME/php/parsers/body/lang/fra/act/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/fra/act/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/fra/bill/conf.php b/build/production/LIME/php/parsers/body/lang/fra/bill/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/fra/bill/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/ita/act/conf.php b/build/production/LIME/php/parsers/body/lang/ita/act/conf.php new file mode 100644 index 00000000..959614ae --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/ita/act/conf.php @@ -0,0 +1,54 @@ + Array("Titolo","TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/body/lang/ita/bill/conf.php b/build/production/LIME/php/parsers/body/lang/ita/bill/conf.php new file mode 100644 index 00000000..7862399a --- /dev/null +++ b/build/production/LIME/php/parsers/body/lang/ita/bill/conf.php @@ -0,0 +1,55 @@ + Array("Titolo","TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/DateParser.php b/build/production/LIME/php/parsers/date/DateParser.php new file mode 100644 index 00000000..40942519 --- /dev/null +++ b/build/production/LIME/php/parsers/date/DateParser.php @@ -0,0 +1,189 @@ +lang = $lang; + $this->loadConfiguration($lang); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $preg_result = array(); + $element = array(); + foreach ($this->patterns as $key => $value) { + $success = preg_match_all($value, $content, $n, PREG_OFFSET_CAPTURE); + if ($success) { + $preg_result[] = $n; + $element[] = $key; + /*To avoid another pattern match with the same string remove it*/ + $content = preg_replace($value, "", $content); + } + } + + if (isset($preg_result[0])) { + //if exist the first of result than success + $return['dates'] = array(); + foreach ($preg_result as $key => $n) { + $counter = array(); + foreach ($n["0"] as $k => $value) { + $offset = $n["0"][$k][1]; + $match = $n["0"][$k][0]; + if (!isset($counter[$match])) + $counter[$match] = 0; + $counter[$match]++; + if (!isset($return['dates'][$match])) + $return['dates'][$match] = array(); + if (!isset($return['dates'][$match]["offsets"])) + $return['dates'][$match]["offsets"] = array(); + $return['dates'][$match]["offsets"][] = Array("start" => $offset, + "end" => $offset+strlen($match)); + if ($counter[$match] == 1) { + $return['dates'][$match]['rule'] = $element[$key]; + $return['dates'][$match]['match'] = $match; + /*if ($debug) { + $return['dates'][$match]['pattern'] = $this->patterns[$element[$key]]; + }*/ + if (isset($n['day'][$k][0])) { + $tmp_day = $n['day'][$k][0]; + } + if (isset($n['month'][$k][0])) { + $tmp_month = $n['month'][$k][0]; + if (!is_numeric($tmp_month)) { + $mouthNumber = (array_search(strtolower($tmp_month), $this->monthsNames)); + /* check if the case is a month with multiple different names */ + if ($mouthNumber === FALSE) { + for ($i = 0; $i < count($this->monthsNames); $i++) { + if (stristr($this->monthsNames[$i], $tmp_month) !== FALSE) { + $mouthNumber = $i; + break; + } + } + } + $tmp_month = $mouthNumber + 1; + } + } + if (isset($n['year'][$k][0])) { + $tmp_year = $n['year'][$k][0]; + } + /* Relax the rule, a date without day is ok, we assume that the day is the first day */ + if (!$tmp_day) { + $tmp_day = "1"; + } + if ($tmp_month && $tmp_year) { + $return['dates'][$match]['day'] = $tmp_day; + $return['dates'][$match]['month'] = $n['month'][$k][0]; + $return['dates'][$match]['year'] = $n['year'][$k][0]; + + if (!checkdate($tmp_month, $tmp_day, $tmp_year)) { + $return['dates'][$match]['date'] = "invalid date"; + } else { + $datetime = new DateTime($tmp_year . "/" . $tmp_month . "/" . $tmp_day); + $return['dates'][$match]['date'] = $datetime -> format('Y-m-d'); + } + } + } + $return['dates'][$match]['counter'] = $counter[$match]; + + } + + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + + } + + public function loadConfiguration() { + global $patterns, $monthsNames; + global $day,$year,$num_month,$date_sep; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + $day = "(\d){1,2}"; + $year = "(\d){4}"; + $num_month = "(\d){1,2}"; + $date_sep = "(?:\\\\|\\/|-|\.)"; + + require_once "standard.php"; + if (isset($vocs[$this->lang])) { + require_once $vocs[$this->lang]; + } + + $months = implode("|", $monthsNames); + if($this->lang != "ita") { + $patterns = array("(day) month-name year" => "/((?P$day)\W?\s+)?(?P$months)\W?\s+(?P$year)/i", + "month-name (day) year" => "/(?P$months)\W?\s+((?P$day)\W?\s+)?(?P$year)/i", + "month-name year (day)" => "/(?P$months)\W?\s+(?P$year)\W?\s+((?P$day))?/i"); + + } else { + $patterns = array("(day) month-name year" => "/((?P$day)\W?\s+)?(?P$months)\W?\s+(?P$year)/i"); + } + + if (isset($localpatterns) && $this->lang != "ita") { + $patterns = array_merge($localpatterns, $patterns); + $patterns = $localpatterns; + } + + $this->patterns = $patterns; + $this->monthsNames = $monthsNames; + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/english.php b/build/production/LIME/php/parsers/date/english.php new file mode 100644 index 00000000..64bf6e71 --- /dev/null +++ b/build/production/LIME/php/parsers/date/english.php @@ -0,0 +1,65 @@ + +
  • 14 july 2011
  • +
  • 14 July 2011
  • +
  • 03-17-2000
  • +
  • January, 01, 2010
  • + +END; + + +$localpatterns = array( + "dayth month-name year"=> "/(?P$day)th\s+(?P$months)\W?\s+(?P$year)/i", + "mm dd yyyy" => "/(?P$num_month)\s*$date_sep\s*(?P$day)\s*$date_sep\s*(?P$year)/i" +) ; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/espanol.php b/build/production/LIME/php/parsers/date/espanol.php new file mode 100644 index 00000000..841826c8 --- /dev/null +++ b/build/production/LIME/php/parsers/date/espanol.php @@ -0,0 +1,80 @@ + "setiembre" +); +*/ +$months = implode("|",$monthsNames); + +$localpatterns = array( + "day de month-name de year"=> "/(?P$day)\s+de\s+(?P$months)\s+de\s+(?P$year)/i", + "month-name (day) de year"=> "/(?P$months)\s+((?P$day)\s+)?de\s+(?P$year)/i" + +) ; +$examples = <<28 Octubre 2012 +
  • 14 noviembre 2012
  • +
  • Octubre noviembre 14 noviembre 2012 Enero Octubre, 01, 2012
  • +END; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/index.php b/build/production/LIME/php/parsers/date/index.php new file mode 100644 index 00000000..ec152bfe --- /dev/null +++ b/build/production/LIME/php/parsers/date/index.php @@ -0,0 +1,58 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/italian.php b/build/production/LIME/php/parsers/date/italian.php new file mode 100644 index 00000000..ee5b92fa --- /dev/null +++ b/build/production/LIME/php/parsers/date/italian.php @@ -0,0 +1,81 @@ + "/(?P$day)\s*$date_sep\s*(?P$num_month)\s*$date_sep\s*(?P$year)/i" +) ; + + +$examples = <<28 giugno 2012 +
  • 28 Maggio 2012
  • +
  • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
  • +
  • 17-03-2000
  • +
  • Agosto 12, 2012
  • +
  • Agosto 2012, 12
  • +
  • Agosto 2012 12
  • +
  • Agosto 12 2012
  • +
  • 12 Agosto, 2012
  • +
  • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
  • +END; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/standard.php b/build/production/LIME/php/parsers/date/standard.php new file mode 100644 index 00000000..f6af0bac --- /dev/null +++ b/build/production/LIME/php/parsers/date/standard.php @@ -0,0 +1,63 @@ + \ No newline at end of file diff --git a/build/production/LIME/php/parsers/date/test.js b/build/production/LIME/php/parsers/date/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/build/production/LIME/php/parsers/date/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for dates + + + + + + +
    +
    +
    +

    Test Unit per il parser di date

    + +

    Il servizio prende in input un testo contenente delle date in diversi formati + e restituisce un JSON con tutte le date trovate, le date valide vengono trasformate nel formato aaaa-mm-dd.

    + + + + + + + + + + + + + + + + + + + + +
    ExamplesResult
    +
    + +
    +
      + +
    +
    +
    +
      + +
    +
    +
    +
      + +
    +
    +
    +
    Try it out
    +

    + + +

    +

    + + + + + + + + + + +

    +
    +

    Request format:

    +
      +
    • POST http://www.site.com/dir/date/
    • +
    + + +
    +
    + + diff --git a/build/production/LIME/php/parsers/docNum/DocNumParser.php b/build/production/LIME/php/parsers/docNum/DocNumParser.php new file mode 100644 index 00000000..da6bab6a --- /dev/null +++ b/build/production/LIME/php/parsers/docNum/DocNumParser.php @@ -0,0 +1,110 @@ +lang = $lang; + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $success = false ; + while (!$success && $element = each($this->patterns)) { + $success = preg_match_all($element['value'], $content, $n, PREG_OFFSET_CAPTURE) ; + } + + if ($success) { + if (isset($n['num'])) { + foreach($n["match"] as $k => $value){ + $match = $n["match"][$k][0]; + $num = intval($n['num'][$k][0]); + $offset = $n["match"][$k][1]; + $return[] = array("match" =>$match, + "numVal" => $num, + "start"=> $offset, + "end"=> $offset+strlen($match)); + } + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + global $patterns, $decorations; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + require_once "standard.php" ; + if (isset($vocs[$this->lang])) { + require_once $vocs[$this->lang] ; + } + $decs = isset($decorations)?'|'.implode("|",$decorations):''; + $patterns = array( + "n|num" => "/(^|>|\s)(?P(n|num|no|nr$decs)(\.|º|°|\s)\s*(?P(\d+)\s*[.-\/]?\s*(\d+)?))/i", + ); + if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + } + + $this->patterns = $patterns; + } +} + +?> \ No newline at end of file diff --git a/php/Proxies/Services/Proxies_Services_FileToString.php b/build/production/LIME/php/parsers/docNum/english.php similarity index 74% rename from php/Proxies/Services/Proxies_Services_FileToString.php rename to build/production/LIME/php/parsers/docNum/english.php index b4aeeb53..53cb19ee 100644 --- a/php/Proxies/Services/Proxies_Services_FileToString.php +++ b/build/production/LIME/php/parsers/docNum/english.php @@ -1,5 +1,4 @@ -_fileContent = file_get_contents($_FILES['file']['tmp_name']); - } - } - - /** - * this method is used to retrive the result by the service - * @return The result that the service computed - */ - public function getResults() - { - $output = Array(); - $output['success'] = true; - $output['msg'] = $this->_fileContent; - return str_replace('\/','/',json_encode($output)); - } -} +$decorations = array( + "number" +) ; + +$examples = << +
  • 14 july 2011
  • +
  • 14 July 2011
  • +
  • 03-17-2000
  • +
  • January, 01, 2010
  • + +END; ?> diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToString.php b/build/production/LIME/php/parsers/docNum/espanol.php similarity index 74% rename from build/production/LIME/php/Proxies/Services/Proxies_Services_FileToString.php rename to build/production/LIME/php/parsers/docNum/espanol.php index b4aeeb53..6d95956b 100644 --- a/build/production/LIME/php/Proxies/Services/Proxies_Services_FileToString.php +++ b/build/production/LIME/php/parsers/docNum/espanol.php @@ -1,5 +1,4 @@ -_fileContent = file_get_contents($_FILES['file']['tmp_name']); - } - } - - /** - * this method is used to retrive the result by the service - * @return The result that the service computed - */ - public function getResults() - { - $output = Array(); - $output['success'] = true; - $output['msg'] = $this->_fileContent; - return str_replace('\/','/',json_encode($output)); - } -} + +$examples = <<28 Octubre 2012 +
  • 14 noviembre 2012
  • +
  • Octubre noviembre 14 noviembre 2012 Enero Octubre, 01, 2012
  • +END; + ?> diff --git a/build/production/LIME/php/parsers/docNum/index.php b/build/production/LIME/php/parsers/docNum/index.php new file mode 100644 index 00000000..42ddf8fb --- /dev/null +++ b/build/production/LIME/php/parsers/docNum/index.php @@ -0,0 +1,62 @@ +parse($string, TRUE); + +?> diff --git a/build/production/LIME/php/parsers/docNum/italian.php b/build/production/LIME/php/parsers/docNum/italian.php new file mode 100644 index 00000000..137daf29 --- /dev/null +++ b/build/production/LIME/php/parsers/docNum/italian.php @@ -0,0 +1,65 @@ +28 giugno 2012 +
  • 28 Maggio 2012
  • +
  • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
  • +
  • 17-03-2000
  • +
  • Agosto 12, 2012
  • +
  • Agosto 2012, 12
  • +
  • Agosto 2012 12
  • +
  • Agosto 12 2012
  • +
  • 12 Agosto, 2012
  • +
  • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
  • +END; + +?> diff --git a/build/production/LIME/php/parsers/docNum/standard.php b/build/production/LIME/php/parsers/docNum/standard.php new file mode 100644 index 00000000..acffa7d3 --- /dev/null +++ b/build/production/LIME/php/parsers/docNum/standard.php @@ -0,0 +1,48 @@ + diff --git a/build/production/LIME/php/parsers/docNum/test.js b/build/production/LIME/php/parsers/docNum/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/build/production/LIME/php/parsers/docNum/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for dates + + + + + + +
    +
    +
    +

    Test Unit per il parser di date

    + +

    Il servizio prende in input un testo contenente delle date in diversi formati + e restituisce un JSON con tutte le date trovate, le date valide vengono trasformate nel formato aaaa-mm-dd.

    + + + + + + + + + + + + + + + + + + + + +
    ExamplesResult
    +
    + +
    +
      + +
    +
    +
    +
      + +
    +
    +
    +
      + +
    +
    +
    +
    Try it out
    +

    + + +

    +

    + + + + + + + + + + +

    +
    +

    Request format:

    +
      +
    • POST http://www.site.com/dir/date/
    • +
    + + +
    +
    + + diff --git a/build/production/LIME/php/parsers/doctype/DocTypeParser.php b/build/production/LIME/php/parsers/doctype/DocTypeParser.php new file mode 100644 index 00000000..9fb7c90a --- /dev/null +++ b/build/production/LIME/php/parsers/doctype/DocTypeParser.php @@ -0,0 +1,98 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $resolved = resolveRegex($this->parserRules['main'],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + for ($i = 0; $i < $success; $i++) { + $match = $result["doctype"][$i][0]; + $offset = $result["doctype"][$i][1]; + $entry = Array ( + "string" => $match, + "start" => $offset, + "end" => $offset+strlen($match) + ); + + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/doctype/conf.php b/build/production/LIME/php/parsers/doctype/conf.php new file mode 100644 index 00000000..b00a7440 --- /dev/null +++ b/build/production/LIME/php/parsers/doctype/conf.php @@ -0,0 +1,52 @@ + "/({{doctype}})/", +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/doctype/index.php b/build/production/LIME/php/parsers/doctype/index.php new file mode 100644 index 00000000..264124ad --- /dev/null +++ b/build/production/LIME/php/parsers/doctype/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/doctype/lang/esp/conf.php b/build/production/LIME/php/parsers/doctype/lang/esp/conf.php new file mode 100644 index 00000000..0058dad7 --- /dev/null +++ b/build/production/LIME/php/parsers/doctype/lang/esp/conf.php @@ -0,0 +1,54 @@ + Array("PROYECTO DE LEY", + "Proyecto (D|d)e (L|l)ey", + "Exposición de motivos") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/framework/aknssg.css b/build/production/LIME/php/parsers/framework/aknssg.css new file mode 100644 index 00000000..d6796e18 --- /dev/null +++ b/build/production/LIME/php/parsers/framework/aknssg.css @@ -0,0 +1,138 @@ +body { + background-color: #CD1006; + color: #444444; + font-size: 10pt; + font-family: "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif +} + +div#portal-top { + background-image: url('http://akn.web.cs.unibo.it/resolver/img/akoma_banner.jpg'); + margin-left: auto; + margin-right: auto; + width: 800px; + height: 100px; +} + +div#portal-divisor { + background-image: url('http://akn.web.cs.unibo.it/resolver/img/image-header.png'); + margin-left: auto; + margin-right: auto; + width: 800px; + height: 25px; +} + +div#main-container { + background-color: #ffffff; +} + +h1 { + text-align: center; + color: #DC0808; + font-size: 200%; +} + +h2 { + margin-top: -15px; + text-align: center; + color: #DC0808; + font-size: 130%; +} + +p.content { + margin-left: 25px; + margin-right: 25px; + line-height: 1.2em; +} + +div.copyright { + margin-left: 25px; + margin-right: 25px; + text-align: left; + font-size: 9pt; + line-height: 1.2em; + color: #7C7C7C; + margin-top: 30px; + padding-bottom: 10px; +} + +th { + background-color: #CDC197; + height: 1.8em; + line-height: 1.5em; + font-size: 94%; + padding-top: 0.1em; + text-align: center; +} + +table { + border: 1px solid #CDC197; + margin-left: 25px; + margin-right: 25px; + font-size: 10pt; +} + +a { + color: #CD1006; +} + +.item { + font-size: 100%; +} + +.moduleName { + font-size: 85%; + font-style: italic; + color: #777777; +} + +.elementName { + font-size: 90%; + font-family: courier, fixed, monospace +} + +.description { + margin-left: 30px; + margin-right: 30px; + font-size: 8pt; + background-color: #ffffdd; + border: solid #ffff99 thin; + margin-top: -10px; + padding: 2pt; +} + +li { + margin-left: 20px; + line-height: 1.2em; +} + +.subModules { + margin-top: -8px; + margin-left: 30px; + margin-right: 30px; + font-size: 95%; +} + +.details { + font-size: 80%; +} + +.buttons { + text-align: center; +} +.spacer { + width: 50pt; +} + +#selectionShown { + font-family: courier, fixed, monospace; + font-size: 90%; +} + +#submit { + margin-left: 50px; +} + +.code { + font-family:'courier new'; + white-space:pre-wrap; +} diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 00000000..5b5dab2a Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 00000000..ad3d6346 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 00000000..42ccba26 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 00000000..5a46b47c Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 00000000..86c2baa6 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png new file mode 100644 index 00000000..e65ca129 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 00000000..7c9fa6c6 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png new file mode 100644 index 00000000..0e05810f Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png new file mode 100644 index 00000000..b273ff11 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 00000000..09d1cdc8 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png new file mode 100644 index 00000000..59bd45b9 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png new file mode 100644 index 00000000..6d02426c Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 00000000..2ab019b7 Binary files /dev/null and b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png differ diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css new file mode 100644 index 00000000..abb818d1 --- /dev/null +++ b/build/production/LIME/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css @@ -0,0 +1,572 @@ +/* + * jQuery UI CSS Framework 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault= + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: ; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Resizable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; }/* + * jQuery UI Autocomplete 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/index.html b/build/production/LIME/php/parsers/framework/jquery-ui/index.html new file mode 100644 index 00000000..22074b1e --- /dev/null +++ b/build/production/LIME/php/parsers/framework/jquery-ui/index.html @@ -0,0 +1,367 @@ + + + + + jQuery UI Example Page + + + + + + + +

    Welcome to jQuery UI!

    +

    This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.7.custom.min.js), and css/ui-lightness/jquery-ui-1.8.7.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

    +

    You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

    + +

    YOUR COMPONENTS:

    + + +

    Accordion

    +
    +
    +

    First

    +
    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
    +
    +
    +

    Second

    +
    Phasellus mattis tincidunt nibh.
    +
    +
    +

    Third

    +
    Nam dui erat, auctor a, dignissim quis.
    +
    +
    + + +

    Tabs

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    +
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
    +
    + + +

    Dialog

    +

    Open Dialog

    + + +

    Overlay and Shadow Classes (not currently used in UI widgets)

    +
    +

    Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

    Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

    Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

    Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

    Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

    + + +
    +
    +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    +
    + +
    + + + +
    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

    +
    + + + +

    Framework Icons (content color preview)

    +
      + +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • + +
    • +
    • +
    • +
    • +
    • +
    + + + +

    Slider

    +
    + + +

    Datepicker

    +
    + + +

    Progressbar

    +
    + + +

    Highlight / Error

    +
    +
    +

    + Hey! Sample ui-state-highlight style.

    +
    +
    +
    +
    +
    +

    + Alert: Sample ui-state-error style.

    +
    +
    + + + + + diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js b/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js new file mode 100644 index 00000000..8f3ca2e2 --- /dev/null +++ b/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
    a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
    ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
    t
    ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

    ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
    ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js b/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js new file mode 100644 index 00000000..b03a87e8 --- /dev/null +++ b/build/production/LIME/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js @@ -0,0 +1,781 @@ +/*! + * jQuery UI 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.7",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+parseInt(c.curCSS(this,"marginRight",true))||0,w=m+q+parseInt(c.curCSS(this,"marginBottom",true))||0,i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=m/2; +i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, +b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable, +{version:"1.8.7"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize, +function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n= +(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition= +false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left- +a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize", +b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top", +"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset, +f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left= +a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+ +a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&& +e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative", +height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width= +d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", +null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): +d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute|| +"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")}, +_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!= +this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a= +this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable"); +if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h= +0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width= +this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f}, +update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b= +null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this)); +this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])? +g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive", +g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over= +0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(g){return a._keydown(g)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ +a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j, +down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})}); +f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.7",animations:{slide:function(a, +b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:a._move("previousPage", +c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay); +break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
      ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| +"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"), +h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){f=this.options.source;this.source= +function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}}); +d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0); +a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a, +c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
      ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.7",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
      ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.7"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.7"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.7"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
      ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, +_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= +d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, +c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& +d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", +function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= +-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, +"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]}, +_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e- +g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]? +b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= +false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= +d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); +else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames, +j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y", +RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
      '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
      ';var A=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
      "+(l?"
      "+(i[0]>0&&D==i[1]-1?'
      ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
      ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
      ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.7";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
      ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.7"})})(jQuery); +;/* + * jQuery UI Effects 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){f.queue(this,"fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l= +h.splice(h.length-1,1)[0];h.splice(1,0,l);f.dequeue(this)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c}, +b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.7",save:function(c,a){for(var b=0;b
      ").addClass("ui-effects-wrapper").css({fontSize:"100%", +background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h
      ").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* +f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c
      ').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/english.php b/build/production/LIME/php/parsers/heading/english.php new file mode 100644 index 00000000..d2ae56ac --- /dev/null +++ b/build/production/LIME/php/parsers/heading/english.php @@ -0,0 +1,67 @@ + "/^(?PTEST)\W+(?P.*)$/i" +) ; + +$examples = << +
    • Art. 12 Heading of the article
    • +
    • Article 14 bis - Heading of the article
    • +
    • Tome XV + Another heading
    • +
    • 14) Some text
    • +
    • c - Other text
    • +
    • Section 123 - Even more text
    • +
    • Sect. 123 a: More and more text
    • +
    • Section (43)
    • + +END; + + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/espanol.php b/build/production/LIME/php/parsers/heading/espanol.php new file mode 100644 index 00000000..d97536d7 --- /dev/null +++ b/build/production/LIME/php/parsers/heading/espanol.php @@ -0,0 +1,58 @@ + "/^(?PPRUEVA)\W+(?P.*)$/i" +) ; + +$examples = << + +END; + + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/index.php b/build/production/LIME/php/parsers/heading/index.php new file mode 100644 index 00000000..9b1c7d2e --- /dev/null +++ b/build/production/LIME/php/parsers/heading/index.php @@ -0,0 +1,263 @@ + "Fabio Vitali", + "name" => "Heading parser", + "date" => "14/06/2012", + "desc" => "A parser for the headings of legislative documents", + "copyright" => "© 2012 Fabio Vitali, all rights reserved", +); +$return = array() ; + +$debug = isset($_GET['debug'])?true:false ; +debug("*** START ***"); +$string = stripcslashes(isset($_GET['s'])?$_GET['s']:"") ; +debug("string: ".$string); +$format = isset($_GET['f'])?$_GET['f']:"json" ; +debug("format: ".$format); +$voc = isset($_GET['l'])?$_GET['l']:"standard" ; +debug("voc: ".$voc); + +$vocs = array( + "ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", +); + + +require_once "standard.php" ; +debug("Loaded standard vocabulary") ; +if (isset($vocs[$voc])) { + require_once $vocs[$voc] ; + debug("Loaded ".$voc." vocabulary") ; +} + +$digit = "(\d+)" ; +$roman = "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))"; +$letter = "([a-ZA-Z]+)" ; + +$decs = implode("|",$decorations); +$parts = implode("|",array_keys($partNames)) ; +$pts = implode("\.|",array_keys($abbreviations))."\." ; + +$patterns = array( + "base: part num [dec] - heading" => "/^(?P$parts)\W+(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "abbreviated: pt. num [dec] - heading" => "/^(?P$pts)\W+(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "no part name: num [dec] - heading" => "/^(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "no heading: part num" => "/^(?P\w+)\W+(?P\w+)$/i", + "all heading" => "/^(?P.*)$/" +) ; +debug("Loaded standard patterns") ; +if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + debug("Loaded ".$voc." patterns") ; +} + +$success = false ; +while (!$success && $element = each($patterns)) { + $success = preg_match($element['value'], $string, $n) ; + debug($element['value'].": ".$string." - ".($success?"correct":"incorrect")) ; +} +debug("Patterns completed with ".($success?"success":"no success")) ; + +if ($success) { + $return['rule'] = $element['key']; + if ($debug) { + $return['pattern'] = $element['value']; + } + if (isset($n['part'])) { + $return['partString'] = $n['part'] ; + $val = strtolower($n['part']) ; + if (isset($partNames[$val])) { + $return['part'] = $partNames[$val] ; + } elseif (isset($abbreviations[substr($val,0,strlen($val)-1)])) { + $return['part'] = $abbreviations[substr($val,0,strlen($val)-1)] ; + } else { + $return['part'] = "" ; + } + } + if (isset($n['num'])) { + $return['numString'] = $n['num'] ; + if (is_numeric($n['num'])) { + $return['numType'] = 'number'; + $return['numValue'] = intval($n['num']) ; + debug("Number is numeric:".$return['numValue']) ; + } else { + $val = romanValue($n['num']) ; + if ($val>0) { + $return['numType'] = 'roman'; + $return['numValue'] = $val ; + debug("Number is roman:".$val) ; + } else { + $return['numType'] = 'letter'; + $return['numValue'] = letterValue($n['num']) ; + debug("Number is letter:".$val) ; + } + } + } + if (isset($n['dec']) && $n['dec']!="") { + $return['decoration'] = $n['dec'] ; + } + if (isset($n['heading']) && $n['heading']!="") { + $return['heading'] = $n['heading'] ; + } + if ($debug) { + $return['match'] = $n ; + } +} +debug("Return value created") ; + + +$ret = array( + "response" => $return, + "request" => $_REQUEST, + "metadata" => $meta +) ; + +if ($debug) { + $ret["debug"]=$debugInfo ; +} + +if ($format=="json") { +// header('Content-type: application/json'); + echo json_encode($ret) ; +} else { + $simple = toXml($ret, 'data') ; + $dom = dom_import_simplexml($simple)->ownerDocument; + $dom->formatOutput = true; +// header ("Content-Type:text/xml"); + echo stripcslashes($dom->saveXML()) ; +} + +// ------------------------------------- // + +function romanValue($s) { + $romans = array( + 'M' => 1000, + 'CM' => 900, + 'D' => 500, + 'CD' => 400, + 'C' => 100, + 'XC' => 90, + 'L' => 50, + 'XL' => 40, + 'X' => 10, + 'IX' => 9, + 'V' => 5, + 'IV' => 4, + 'I' => 1, + 'm' => 1000, + 'cm' => 900, + 'd' => 500, + 'cd' => 400, + 'c' => 100, + 'xc' => 90, + 'l' => 50, + 'xl' => 40, + 'x' => 10, + 'ix' => 9, + 'v' => 5, + 'iv' => 4, + 'i' => 1, + ); + + $result = 0; + + foreach ($romans as $key => $value) { + while (strpos($s, $key) === 0) { + $result += $value; + $s = substr($s, strlen($key)); + } + } + return $result ; +} + +function letterValue($s) { + return ord($s) - ord('a') +1 ; +} + +function toXml($data, $r = 'data', &$xml=null) { + if (ini_get('zend.ze1_compatibility_mode') == 1) { + ini_set ('zend.ze1_compatibility_mode', 0); + } + + if (is_null($xml) || !isset($xml)) { + $xml = simplexml_load_string("<".$r."/>"); + } + + foreach($data as $key => $value) { + if (is_numeric($key)) { + $key = $r; + } + $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key); + if (is_array($value)) { + $node = isAssoc($value) ? $xml->addChild($key) : $xml; + toXml($value, $key, $node); + } else { + $value = htmlentities($value); + $xml->addChild($key,$value); + } + } + return $xml; +} + +function isAssoc( $array ) { + return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array))))); +} + +function debug($t) { + global $debug, $debugInfo; + if ($debug) { + if (!isset($debugInfo)) + $debugInfo = array() ; +// echo $t."\n" ; + array_push($debugInfo,$t) ; + } +} +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/italian.php b/build/production/LIME/php/parsers/heading/italian.php new file mode 100644 index 00000000..2395ffc7 --- /dev/null +++ b/build/production/LIME/php/parsers/heading/italian.php @@ -0,0 +1,108 @@ + "clause" , + "sezione" => "section" , + "parte" => "part" , + "paragrafo" => "paragraph" , + "capitolo" => "chapter" , + "titolo" => "title" , + "articolo" => "article" , + "libro" => "book" , + "tomo" => "tome" , + "divisione" => "division" , + "lista" => "list" , + "punto" => "point" , + "lettera" => "indent" , + "numero" => "alinea" , + "subsezione" => "subsection" , + "subparte" => "subpart" , + "subparagrafo" => "subparagraph" , + "subcapitolo" => "subchapter" , + "subtitolo" => "subtitle" , + "subccomma" => "subclause" , + "sublista" => "sublist" +) ; + +$abbreviations = array( + "c" => "clause" , + "sez" => "section" , + "pt" => "part" , + "par" => "paragraph" , + "cap" => "chapter" , + "tit" => "title" , + "art" => "article" , + "div" => "division" , +) ; + +$decorations = array( + "bis", + "ter", + "quater", + "quinquies", + "[a-z]{1,2}" +) ; + +$localpatterns = array( + "solo italiano: PROVA - heading" => "/^(?PPROVA)\W+(?P.*)$/i" +) ; + +$examples = <<Art. 12 Rubrica dell'articolo +
    • Articolo 14 bis - Rubrica dell'articolo
    • +
    • Tomo XV + Altra rubrica dell'articolo
    • +
    • 14) Del testo
    • +
    • c - Dell'altro testo
    • +
    • Sezione 123 - Ancora testo
    • +
    • Sez. 123 a: Dell'altro testo
    • +
    • Libro XXVII: Del matrimonio
    • +
    • Tomo ii: questo è sbagliato
    • +END; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/standard.php b/build/production/LIME/php/parsers/heading/standard.php new file mode 100644 index 00000000..12f96a32 --- /dev/null +++ b/build/production/LIME/php/parsers/heading/standard.php @@ -0,0 +1,92 @@ + "clause" , + "section" => "section" , + "part" => "part" , + "paragraph" => "paragraph" , + "chapter" => "chapter" , + "title" => "title" , + "article" => "article" , + "book" => "book" , + "tome" => "tome" , + "division" => "division" , + "list" => "list" , + "point" => "point" , + "indent" => "indent" , + "alinea" => "alinea" , + "subsection" => "subsection" , + "subpart" => "subpart" , + "subparagraph" => "subparagraph" , + "subchapter" => "subchapter" , + "subtitle" => "subtitle" , + "subclause" => "subclause" , + "sublist" => "sublist" +) ; + +$abbreviations = array( + "cl" => "clause" , + "sect" => "section" , + "pt" => "part" , + "par" => "paragraph" , + "chp" => "chapter" , + "tit" => "title" , + "art" => "article" , + "div" => "division" , +) ; + +$decorations = array( + "bis", + "ter", + "quater", + "quinquies", + "[a-z]{1,2}" +) ; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/heading/test.html b/build/production/LIME/php/parsers/heading/test.html new file mode 100644 index 00000000..46ba91b2 --- /dev/null +++ b/build/production/LIME/php/parsers/heading/test.html @@ -0,0 +1,205 @@ + + + + + Test page: parser for headings + + + + + + + + +
      +
      +
      +

      Test Unit per il parser di heading

      + +

      Il servizio prende in input una stringa della forma "Art 12 bis - Rubrica dell'articolo" + e restituisce un JSON con nome della parte, numero, decorazione, rubrica (eventualmente vuoti). Gestisce un elenco fisso di nomi di parti, numeri interi, lettere e numeri romani, e una varietà di separatori.

      + + + + + + + + + + + + + + + + + + + + +
      ExamplesResult
      +
      + +
      +
        +
      • Art. 12 Heading of the article
      • +
      • Article 14 bis - Heading of the article
      • +
      • Tome XV + Another heading
      • +
      • 14) Some text
      • +
      • c - Other text
      • +
      • Section 123 - Even more text
      • +
      • Sect. 123 a: More and more text
      • +
      • Section (43)
      • +
      +
      +
      +
        +
      • Art. 12 Rubrica dell'articolo
      • +
      • Articolo 14 bis - Rubrica dell'articolo
      • +
      • Tomo XV + Altra rubrica dell'articolo
      • +
      • 14) Del testo
      • +
      • c - Dell'altro testo
      • +
      • Sezione 123 - Ancora testo
      • +
      • Sez. 123 a: Dell'altro testo
      • +
      • Libro XXVII: Del matrimonio
      • +
      +
      +
      Try it outCorresponding Akoma Ntoso snippet
      +

      + + +

      +

      + + + + + + + + + + +

      +
      +

      Request format:

      +
        +
      • GET http://www.site.com/dir/heading/?s=art+12+bis+-+Rubrica+dell'articolo
      • +
      • GET http://www.site.com/dir/heading/?s=art%2012%20bis%20-%20Rubrica%20dell'articolo
      • +
      + + +
      + + + diff --git a/build/production/LIME/php/parsers/heading/test.js b/build/production/LIME/php/parsers/heading/test.js new file mode 100644 index 00000000..adc4e6a3 --- /dev/null +++ b/build/production/LIME/php/parsers/heading/test.js @@ -0,0 +1,97 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?s=xxx&l=yyy&f=zzz" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + url: serviceURI.replace("xxx",encodeURI(t)).replace("yyy",l).replace("zzz",f)+(d?"&debug":"") , + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for headings + + + + + + +
      +
      +
      +

      Test Unit per il parser di heading

      + +

      Il servizio prende in input una stringa della forma "Art 12 bis - Rubrica dell'articolo" + e restituisce un JSON con nome della parte, numero, decorazione, rubrica (eventualmente vuoti). Gestisce un elenco fisso di nomi di parti, numeri interi, lettere e numeri romani, e una varietà di separatori.

      + + + + + + + + + + + + + + + + + + + + +
      ExamplesResult
      +
      + +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
      Try it outCorresponding Akoma Ntoso snippet
      +

      + + +

      +

      + + + + + + + + + + +

      +
      +

      Request format:

      +
        +
      • GET http://www.site.com/dir/heading/?s=art+12+bis+-+Rubrica+dell'articolo
      • +
      • GET http://www.site.com/dir/heading/?s=art%2012%20bis%20-%20Rubrica%20dell'articolo
      • +
      + + +
      + + + diff --git a/build/production/LIME/php/parsers/index.php b/build/production/LIME/php/parsers/index.php new file mode 100644 index 00000000..b49d07d1 --- /dev/null +++ b/build/production/LIME/php/parsers/index.php @@ -0,0 +1,94 @@ +parseDocument(); + break; + case 'body': + echo $metaParser->parseBody(); + break; + case 'date': + echo $metaParser->parseDate(); + break; + case 'docnum': + echo $metaParser->parseDocNum(); + break; + case 'doctype': + echo $metaParser->parseDocType(); + break; + case 'list': + echo $metaParser->parseList(); + break; + case 'quote': + echo $metaParser->parseQuote(); + break; + case 'reference': + echo $metaParser->parseReference(); + break; + case 'structure': + echo $metaParser->parseStructure(); + break; + default: + http_response_code(406); + break; + } +} else { + http_response_code(406); +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/list/ListParser.php b/build/production/LIME/php/parsers/list/ListParser.php new file mode 100644 index 00000000..8952a2f3 --- /dev/null +++ b/build/production/LIME/php/parsers/list/ListParser.php @@ -0,0 +1,145 @@ +lang = $lang; + $this->loadConfiguration($lang); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $preg_result = array(); + $element = array(); + $success = false ; + while (!$success && $element = each($this->patterns)) { + $success = preg_match_all($element['value'], $content, $n) ; + } + + if ($success) { + $return['items']=array(); + $tmpResult = array(); + $matches = $n['0']; + for($i=0;$i $match, "str" => $myStr); + } + + $intro = substr($content,0,$tmpResult[0]['pos']); + if($intro != ""){ + $return['intro'] = $intro; + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + global $patterns, $monthsNames,$monthsNamesExceptions; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + $day = "(\d){1,2}"; + $year = "(\d){4}"; + $num_month = "(\d){1,2}"; + + require_once "standard.php" ; + /*debug("Loaded standard vocabulary") ; + if (isset($vocs[$voc])) { + require_once $vocs[$voc] ; + debug("Loaded ".$voc." vocabulary") ; + } + */ + $digit = "(?:\d+[-]?\w*)"; + //$roman = "(?i:M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))"; questo è giusto ma fa match anche con la stringa vuota + $roman = "(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})"; + //$roman = "(?i:[IVXLCDM]+)"; + //$number = "$digit|$roman"; + $number = $digit; + + $patterns = array( + "num" => "/[\(\[]?(?P(($number)(?:\s*[e,]\s*$number))|$number)\s*[\)\]]/i", + "letter" => "/[\(\[]?(?P[a-zA-Z]+)\s*[\)\]]/i" + ); + + if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + } + + $this->patterns = $patterns; + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/list/english.php b/build/production/LIME/php/parsers/list/english.php new file mode 100644 index 00000000..66b77c2d --- /dev/null +++ b/build/production/LIME/php/parsers/list/english.php @@ -0,0 +1,64 @@ + +
    • 14 july 2011
    • +
    • 14 July 2011
    • +
    • 03-17-2000
    • +
    • January, 01, 2010
    • + +END; + + +$localpatterns = array( + "dayth month-name(,) year"=> "/(?P$day)th\s*(?P$months),*\s*(?P$year)/i" +) ; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/list/espanol.php b/build/production/LIME/php/parsers/list/espanol.php new file mode 100644 index 00000000..25953a91 --- /dev/null +++ b/build/production/LIME/php/parsers/list/espanol.php @@ -0,0 +1,81 @@ + "setiembre" +); +*/ +$months = implode("|",$monthsNames); + +$localpatterns = array( + "month-name day de year"=> "/(?P$months)\s(?P$day)\sde\s(?P$year)/i", + "day de month-name de year"=> "/(?P$day)\sde\s(?P$months)\sde\s(?P$year)/i" +) ; +$examples = <<- En virtud de lo dispuesto en los artÍculos 1º y 2º de la presente ley: + +A) Toda intervención judicial que haya sido interrumpida, suspendida y/o archivada por aplicación de la Ley Nº 15.848, de 22 de diciembre de 1986, continuará de oficio, por la mera solicitud del interesado o del Ministerio Público y no se podrá invocar la validez de dicha ley ni de actos administrativos que se hubieran dictado en su aplicación, con el fin de obstaculizar, impedir o archivar, o mantener suspendidas y/o archivadas, indagatorias o acciones penales. + +B) Sin perjuicio de los delitos imprescriptibles, cuando se tratara de delitos de naturaleza prescriptibles, hayan o no sido incluidos en la caducidad establecida en el artÍculo 1º de la Ley Nº 15.848, de 22 de diciembre de 1986, no se computará en ningún caso para el tÉrmino de prescripción, el comprendido entre el 22 de diciembre de 1986 y la fecha de promulgación de la presente ley. +END; + +?> diff --git a/build/production/LIME/php/parsers/list/index.php b/build/production/LIME/php/parsers/list/index.php new file mode 100644 index 00000000..d66deeb6 --- /dev/null +++ b/build/production/LIME/php/parsers/list/index.php @@ -0,0 +1,58 @@ +parse($string, TRUE); +?> diff --git a/build/production/LIME/php/parsers/list/italian.php b/build/production/LIME/php/parsers/list/italian.php new file mode 100644 index 00000000..2c9eba79 --- /dev/null +++ b/build/production/LIME/php/parsers/list/italian.php @@ -0,0 +1,105 @@ + "clause" , + "sezione" => "section" , + "parte" => "part" , + "paragrafo" => "paragraph" , + "capitolo" => "chapter" , + "titolo" => "title" , + "articolo" => "article" , + "libro" => "book" , + "tomo" => "tome" , + "divisione" => "division" , + "lista" => "list" , + "punto" => "point" , + "lettera" => "indent" , + "numero" => "alinea" , + "subsezione" => "subsection" , + "subparte" => "subpart" , + "subparagrafo" => "subparagraph" , + "subcapitolo" => "subchapter" , + "subtitolo" => "subtitle" , + "subccomma" => "subclause" , + "sublista" => "sublist" +) ; + +$monthsNames = array( + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" +); + +$localpatterns = array( + "ISO dd-mm-yyyy" => "/(?P$day)-(?P$num_month)-(?P$year)$/i" +) ; + + +$examples = <<28 giugno 2012 +
    • 28 Maggio 2012
    • +
    • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
    • +
    • 17-03-2000
    • +
    • Agosto 12, 2012
    • +
    • Agosto 2012, 12
    • +
    • Agosto 2012 12
    • +
    • Agosto 12 2012
    • +
    • 12 Agosto, 2012
    • +
    • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
    • +END; + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/list/standard.php b/build/production/LIME/php/parsers/list/standard.php new file mode 100644 index 00000000..dd98e075 --- /dev/null +++ b/build/production/LIME/php/parsers/list/standard.php @@ -0,0 +1,89 @@ + "clause" , + "section" => "section" , + "part" => "part" , + "paragraph" => "paragraph" , + "chapter" => "chapter" , + "title" => "title" , + "article" => "article" , + "book" => "book" , + "tome" => "tome" , + "division" => "division" , + "list" => "list" , + "point" => "point" , + "indent" => "indent" , + "alinea" => "alinea" , + "subsection" => "subsection" , + "subpart" => "subpart" , + "subparagraph" => "subparagraph" , + "subchapter" => "subchapter" , + "subtitle" => "subtitle" , + "subclause" => "subclause" , + "sublist" => "sublist" +) ; + +$monthsNames = array( + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october|oct.", + "november", + "december" +); + + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/list/test.js b/build/production/LIME/php/parsers/list/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/build/production/LIME/php/parsers/list/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for lists + + + + + + +
      +
      +
      +

      Test Unit per il parser di liste

      + +

      Il servizio prende in input un testo e restituisce gli elementi che riconosce come elementi di una lista.

      + + + + + + + + + + + + + + + + + + + + +
      ExamplesResult
      +
      + +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
      Try it out
      +

      + + +

      +

      + + + + + + + + + + +

      +
      +

      Request format:

      +
        +
      • POST http://www.site.com/dir/list/
      • +
      + + +
      + + + diff --git a/build/production/LIME/php/parsers/quote/QuoteParser.php b/build/production/LIME/php/parsers/quote/QuoteParser.php new file mode 100644 index 00000000..22d86da2 --- /dev/null +++ b/build/production/LIME/php/parsers/quote/QuoteParser.php @@ -0,0 +1,110 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $resolved = resolveRegex($this->parserRules['quote'],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + for ($i = 0; $i < $success; $i++) { + $struct = FALSE; + if ($this->isStructure($result["quoted"][$i][0])) $struct = TRUE; + + $entry = Array ( + "start" => Array("string" => $result["start"][$i][0], + "offset" => $result["start"][$i][1]), + + "quoted" => Array("string" => $result["quoted"][$i][0], + "offset" => $result["quoted"][$i][1]), + + "struct" => $struct, + + "end" => Array("string" => $result["end"][$i][0], + "offset" => $result["end"][$i][1]) + ); + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function isStructure($content) { + $resolved = resolveRegex($this->parserRules['struct'],$this->parserRules,$this->lang, $this->docType); + return preg_match_all($resolved["value"],$content,$result,PREG_OFFSET_CAPTURE); + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/quote/conf.php b/build/production/LIME/php/parsers/quote/conf.php new file mode 100644 index 00000000..b78652c3 --- /dev/null +++ b/build/production/LIME/php/parsers/quote/conf.php @@ -0,0 +1,53 @@ + "/(?P[\"])(?P[^\"^\”]+)(?P[\"\”])/", + "struct" => "/|<\/?p>/" +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/quote/index.php b/build/production/LIME/php/parsers/quote/index.php new file mode 100644 index 00000000..25231890 --- /dev/null +++ b/build/production/LIME/php/parsers/quote/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/ReferenceParser.php b/build/production/LIME/php/parsers/reference/ReferenceParser.php new file mode 100644 index 00000000..d460309d --- /dev/null +++ b/build/production/LIME/php/parsers/reference/ReferenceParser.php @@ -0,0 +1,124 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $references = $this->parserRules['references']; + + foreach($references as $ref) { + $resolved = resolveRegex($this->parserRules[$ref],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) + for ($i = 0; $i < $success; $i++) { + $match = $result[0][$i][0]; + $offset = $result[0][$i][1]; + $entry = Array( + "ref" => $match, + "start" => $offset, + "end" => $offset+strlen($match) + ); + + if (array_key_exists("type", $result)) { + if(is_array($result["type"])) { + $result["type"] = $result["type"][$i][0]; + } + } + + if (array_key_exists("date", $result)) { + $date = $this->requestDate($result["date"][$i][0]); + if(array_key_exists("dates", $date['response'])) { + $date = $date['response']['dates']; + if(!empty($date)) { + $last = end($date); + $entry["date"] = $last['date']; + } + } + } + + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function requestDate($content) { + $parser = new DateParser($this->lang); + return $parser->parse($content); + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/conf.php b/build/production/LIME/php/parsers/reference/conf.php new file mode 100644 index 00000000..8292fb76 --- /dev/null +++ b/build/production/LIME/php/parsers/reference/conf.php @@ -0,0 +1,51 @@ + Array() +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/index.php b/build/production/LIME/php/parsers/reference/index.php new file mode 100644 index 00000000..c6053bee --- /dev/null +++ b/build/production/LIME/php/parsers/reference/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/lang/esp/conf.php b/build/production/LIME/php/parsers/reference/lang/esp/conf.php new file mode 100644 index 00000000..2e18360a --- /dev/null +++ b/build/production/LIME/php/parsers/reference/lang/esp/conf.php @@ -0,0 +1,69 @@ + Array("ref_1","ref_2"), + "ref_1" => "/{{type}}\s+Nº\s+\d+\.?\d*\,?\s*{{date}}/", + "ref_2" => "/{{partition}}\s+\d+(\s+(de la|del|de)\s+{{source}})?/", + + "type" => Array("Ley", + "LEY", + "Decreto Ley"), + + "date" => "[\w\d\s]+\d{4}", + + "partition" => Array("artículo", + "inciso"), + + "source" => Array("Constitución de la República", + "Constitución", + "Carta", + "Código Penal") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/lang/ita/authorities b/build/production/LIME/php/parsers/reference/lang/ita/authorities new file mode 100644 index 00000000..94286fc3 --- /dev/null +++ b/build/production/LIME/php/parsers/reference/lang/ita/authorities @@ -0,0 +1,437 @@ +agenzia del demanio +agenzia del territorio +agenzia delle dogane +agenzia delle entrate +agenzia italiana del farmaco +agenzia per la rappresentanza negoziale delle pubbliche amministrazioni +agenzia per le erogazioni in agricoltura +agenzia spaziale italiana +alto commissario per l'alimentazione +alto commissario per l'igiene e la sanit\u00e0 pubblica +alto commissario per il coordinamento della protezione civile +amministrazione autonoma dei monopoli di stato +assessorato regionale all'assetto del territorio +automobile club d'italia +autorit\u00e0 garante della concorrenza e del mercato +autorit\u00e0 di bacino dei fiumi isonzo, tagliamento, livenza, piave, brenta-bacchiglione +autorit\u00e0 di bacino dei fiumi liri-garigliano e volturno +autorit\u00e0 di bacino del fiume adige +autorit\u00e0 di bacino del fiume arno +autorit\u00e0 di bacino del fiume po +autorit\u00e0 di bacino della basilicata +autorit\u00e0 di bacino della puglia +autorit\u00e0 di bacino interregionale dei fiumi trigno, biferno e minori, saccione e fortore +autorit\u00e0 di bacino interregionale del fiume fiora +autorit\u00e0 di bacino interregionale del fiume sele +autorit\u00e0 di bacino interregionale del fiume tevere +autorit\u00e0 di bacino interregionale del fiume magra +autorit\u00e0 di bacino interregionale del reno +autorit\u00e0 di bacino interregionale marecchia e conca +autorit\u00e0 di bacino pilota del fiume serchio +autorit\u00e0 per l'informatica nella pubblica amministrazione +autorit\u00e0 per l'energia elettrica e il gas +autorit\u00e0 per la vigilanza sui contratti pubblici di lavoro, servizi e forniture +autorit\u00e0 per la vigilanza sui lavori pubblici +autorit\u00e0 per le garanzie nelle comunicazioni +avvocatura generale dello stato +azienda nazionale autonoma delle strade +azienda di stato per gli interventi nel mercato agricolo +banca centrale europea +banca d'italia +capo del governo +capo provvisorio dello stato +camera dei deputati +cassa depositi e prestiti +cassa di compensazione e garanzia +centro europeo dell'educazione +centro nazionale per l'informatica nella pubblica amministrazione +comitato interministeriale dei prezzi +comitato interministeriale per il credito e il risparmio +comitato interministeriale per il coordinamento della politica industriale +comitato interministeriale per la programmazione economica +comitato interministeriale per la programmazione economica nel trasporto +comitato nazionale dell'albo delle imprese esercenti servizi di smaltimento dei rifiuti +comitato nazionale di parit\u00e0 e pari opportunit\u00e0 nel lavoro +comitato centrale per l'albo nazionale delle persone fisiche e giuridiche che esercitano l'autotrasporto di cose per conto di terzi +comitato dei ministri per il mezzogiorno e le zone depresse +comitato dei ministri per l'esecuzione di opere straordinarie di pubblico interesse nell'italia settentrionale e centrale +comitato dei ministri per l'esecuzione di opere straordinarie per l'italia settentrionale e centrale +comitato dei ministri per la cassa per il mezzogiorno +comitato economico e sociale europeo +comitato dei ministri per la cassa per il mezzogiorno e le zone depresse +comitato nazionale per la bioetica +comitato per le aree naturali protette +commissario straordinario di governo per l'anagrafe nazionale bovina +commissario straordinario di governo per l'emergenza bse +commissario del governo nella regione friuli-venezia giulia +commissario delegato per la sicurezza dei materiali nucleari +commissario delegato per l'emergenza alluvione in sardegna del 6/12/2004 +commissario governativo per l'emergenza idrica in sardegna +commissario prefettizio +commissione nazionale per le societ\u00e0 e la borsa +commissione tributaria regionale del lazio +commissione tributaria regionale del veneto +commissione tributaria regionale dell'emilia romagna +commissione tributaria regionale della lombardia +commissione tributaria regionale della sardegna +commissione di vigilanza sui fondi pensione +commissione di garanzia dell'attuazione della legge sullo sciopero nei servizi pubblici essenziali +commissione parlamentare per l'indirizzo generale e la vigilanza dei servizi radio televisivi +commissione per le adozioni internazionali +commissione unica del farmaco +commissione comunit\u00e0 europea +commissione comunit\u00e0 europee +commissione unione europea +comune di roma +comunit\u00e0 europea +comunit\u00e0 economica europea +comunita europea carbone e acciaio +comunita europea energia atomica +conferenza unificata +conferenza unificata stato-regioni e stato-citt\u00e0 ed autonomie locali + "norm": "conferenza.presidenti.regioni.province.autonome +conferenza dei presidenti delle regioni e delle province autonome + "norm": "conferenza.permanente.rapporti.stato.regioni.province.autonome.trento.bolzano +conferenza permanente per i rapporti tra lo stato, le regioni e le province autonome di trento e di bolzano +consiglio comunale +consiglio comunit\u00e0 europea +consiglio regionale +consiglio d'europa +consiglio della magistratura militare +consiglio delle comunit\u00e0 europee +consiglio di cooperazione doganale +consiglio di presidenza della giustizia amministrativa +consiglio di presidenza della giustizia tributaria +consiglio di sicurezza dell'o.n.u. +consiglio di stato +consiglio nazionale del notariato +consiglio nazionale delle ricerche +consiglio per la ricerca e la sperimentazione in agricoltura +consiglio superiore dei lavori pubblici +consiglio superiore della magistratura +consiglio unione europea +consorzio per l'area di ricerca scientifica e tecnologica di trieste +corte costituzionale +corte dei conti +corte di giustizia dell'unione europea +corte di giustizia delle comunit\u00e0 europee +corte suprema di cassazione +corte suprema di cassazione - ufficio centrale per il referendum +corte suprema di cassazione - ufficio elettorale centrale nazionale +ente nazionale per l'assistenza al volo +ente nazionale per l'aviazione civile +ente nazionale per le strade +ente per le nuove tecnologie, l'energia e l'ambiente +ente poste fino al 97 (v. del. cipe 18-12) +federazione nazionale degli ordini dei medici chirurghi e degli odontoiatri +garante per la protezione dei dati personali +garante per la radiodiffusione e l'editoria +garante per la tutela delle persone e di altri soggetti rispetto al trattamento dei dati personali +gestore della rete di trasmissione nazionale +giunta comunale +giunta regionale +guardia di finanza +iuav - universit\u00e0 degli studi +istituto elettrotecnico nazionale galileo ferraris +istituto italiano di scienze umane di firenze +istituto italiano di studi germanici +istituto nazionale della previdenza sociale +istituto nazionale di alta matematica francesco severi +istituto nazionale di astrofisica +istituto nazionale di fisica nucleare +istituto nazionale di geofisica e vulcanologia +istituto nazionale di previdenza per i dipendenti dell'amministrazione pubblica +istituto nazionale di previdenza per i dirigenti di aziende industriali +istituto nazionale di ricerca metrologica +istituto nazionale per studi ed esperienze di architettura navale +istituto nazionale per l'assicurazione contro gli infortuni sul lavoro +istituto nazionale per l'assistenza ai dipendenti locali +istituto nazionale per la valutazione del sistema dell'istruzione +istituto nazionale per la valutazione del sistema educativo di istruzione e di formazione +istituto nazionale per la fisica della materia +istituto superiore di sanit\u00e0 +istituto superiore per la prevenzione e la sicurezza del lavoro +istituto universitario orientale di napoli +istituto universitario suor orsola benincasa +istituto universitario di architettura di venezia +istituto universitario di lingue moderne +istituto di previdenza per il settore marittimo +istituto nazionale di oceanografia e di geofisica sperimentale +istituto nazionale di oceanografia e di geofisica sperimentale - ogs +istituto nazionale di statistica +istituto nazionale per il commercio estero +istituto nazionale per la fauna selvatica +istituto per la vigilanza sulle assicurazioni private e di interesse collettivo +libera universit\u00e0 internazionale degli studi sociali +libera universit\u00e0 internazionale degli studi sociali guido carli +libera universit\u00e0 vita-salute san raffaele +libera universit\u00e0 di bolzano +libera universit\u00e0 di lingue e comunicazione iulm +libera universit\u00e0 \"maria s.s. assunta\" di roma +libero istituto universitario campus bio-medico +luiss - libera universit\u00e0 internazionale degli studi sociali guido carli +ministero degli affari esteri +ministero dei lavori pubblici +ministero dei trasporti +ministero dei trasporti e dell'aviazione civile +ministero dei trasporti e della marina mercantile +ministero dei trasporti e della navigazione +ministero del bilancio +ministero del bilancio e della programmazione economica +ministero del commercio con l'estero +ministero del commercio internazionale +ministero del lavoro e della previdenza sociale +ministero del lavoro e delle politiche sociali +ministero del tesoro +ministero del tesoro, del bilancio e della programmazione economica +ministero del turismo e dello spettacolo +ministero dell'industria e del commercio +ministero dell'industria, del commercio e artigianato e del commercio estero +ministero dell'industria, del commercio e dell'artigianato +ministero dell'africa italiana +ministero dell'agricoltura e foreste +ministero dell'ambiente +ministero dell'ambiente e della tutela del territorio +ministero dell'ambiente e della tutela del territorio e del mare +ministero dell'ambiente e delle aree urbane +ministero dell'economia e delle finanze +ministero dell'interno +ministero dell'industria, del commercio e del lavoro +ministero dell'istruzione +ministero dell'istruzione, dell'universit\u00e0 e della ricerca +ministero dell'universit\u00e0 e della ricerca +ministero dell'universit\u00e0 e della ricerca scientifica +ministero dell'universit\u00e0 e della ricerca scientifica e tecnologica +ministero dell'universit\u00e0 e della ricerca tecnologica e scientifica +ministero della difesa +ministero della giustizia +ministero della marina mercantile +ministero della pubblica istruzione +ministero della pubblica istruzione e dell'universit\u00e0 e della ricerca scientifica e tecnologica +ministero della salute +ministero della sanit\u00e0 +ministero della solidariet\u00e0 sociale +ministero delle comunicazioni +ministero delle finanze +ministero delle infrastrutture +ministero delle infrastrutture e dei trasporti +ministero delle partecipazioni statali +ministero delle politiche agricole e forestali +ministero delle politiche agricole, alimentari e forestali +ministero delle poste e delle telecomunicazioni +ministero delle risorse agricole +ministero delle risorse agricole alimentari e forestali +ministero delle finanze e del tesoro +ministero dell'industria +ministero dell'industria, del commercio e del lavoro +ministero dello sviluppo economico +ministero di grazia e giustizia +ministero per i beni culturali +ministero per i beni culturali e ambientali +ministero per i beni e le attivit\u00e0 culturali +ministero per la famiglia e la solidariet\u00e0 sociale +ministero per le attivit\u00e0 produttive +ministero per le corporazioni +ministero per le politiche agricole +ministro con incarichi speciali +ministro dei beni culturali +ministro dei beni culturali e dell'ambiente +ministro dell'ambiente +ministro dell'ecologia +ministro per compiti politici particolari e di coordinamento, speciale riguardo alla presidenza della delegazione italiana all'onu +ministro per compiti politici, con particolare riguardo agli enti vigilati dalla presidenza del consiglio +ministro per gli affari regionali +ministro per gli affari regionali e i problemi istituzionali +ministro per gli affari regionali e la funzione pubblica +ministro per gli affari regionali e le autonomie locali +ministro per gli affari sociali +ministro per gli interventi straordinari nel mezzogiorno +ministro per gli interventi straordinari nel mezzogiorno e le zone depresse del centro-nord +ministro per gli italiani nel mondo +ministro per i diritti e le pari opportunit\u00e0 +ministro per i problemi della giovent\u00f9 +ministro per i problemi delle aree urbane +ministro per i problemi relativi all'attuazione delle regioni +ministro per i problemi relativi alle regioni +ministro per i rapporti con il parlamento +ministro per i rapporti con il parlamento e le riforme istituzionali +ministro per i rapporti fra il governo e il parlamento +ministro per il coordinamento della protezione civile +ministro per il coordinamento delle iniziative per la ricerca scientifica e tecnologica +ministro per il coordinamento delle politiche comunitarie +ministro per il coordinamento delle politiche comunitarie e degli affari regionali +ministro per il coordinamento delle politiche dell'unione europea +ministro per il coordinamento interno delle politiche comunitarie +ministro per il turismo e per lo spettacolo +ministro per il turismo e per lo sport +ministro per l'attuazione del programma di governo +ministro per l'immigrazione +ministro per l'innovazione e le tecnologie +ministro per l'organizzazione della pubblica amministrazione +ministro per l'organizzazione della pubblica amministrazione e delle regioni +ministro per la cassa del mezzogiorno +ministro per la famiglia e la solidariet\u00e0 sociale +ministro per la funzione pubblica +ministro per la funzione pubblica e per gli affari regionali +ministro per la politica comunitaria +ministro per la ricerca scientifica +ministro per la ricerca scientifica e tecnologica +ministro per la riforma amministrativa +ministro per la riforma burocratica +ministro per la riforma della pubblica amministrazione +ministro per la riforma della pubblica amministrazione e per l'attuazione della costituzione +ministro per la solidariet\u00e0 sociale +ministero per le corporazioni +ministro per le pari opportunit\u00e0 +ministro per le politiche comunitarie +ministro per le politiche europee +ministro per le politiche giovanili e le attivit\u00e0 sportive +ministro per le politiche per la famiglia +ministro per le privatizzazioni +ministro per le riforme e le innovazioni nella pubblica amministrazione +ministro per le riforme elettorali e istituzionali +ministro per le riforme istituzionali +ministro per le riforme istituzionali e la devoluzione +museo storico della fisica e centro studi e ricerche \"enrico fermi\" +organizzazione marittima internazionale +organizzazione mondiale per il commercio +osservatorio astrofisico di catania +osservatorio astronomico di bologna +osservatorio astronomico di brera +osservatorio astronomico di capodimonte +osservatorio astronomico di collurania-teramo +osservatorio astronomico di padova +osservatorio astronomico di palermo +osservatorio astronomico di roma +osservatorio astronomico di torino +osservatorio astronomico di trieste +osservatorio vesuviano +parlamento +parlamento europeo +parlamento europeo e consiglio +parti sociali +podest\u00e0 +politecnico di bari +politecnico di milano +prefettura di sondrio +presidente del consiglio dei ministri +presidente del senato della repubblica +presidente della camera dei deputati +presidente della repubblica +presidenza del consiglio dei ministri +presidenza della repubblica +provincia autonoma di bolzano +provincia autonoma di trento +regione abruzzo +regione basilicata +regione calabria +regione campania +regione emilia-romagna +regione friuli-venezia-giulia +regione lazio +regione liguria +regione lombardia +regione marche +regione molise +regione piemonte +regione puglia +regione sardegna +regione sicilia +regione toscana +regione trentino-alto-adige +regione umbria +regione valle d'aosta +regione veneto +registro aeronautico italiano +scuola imt alti studi di lucca +scuola internazionale superiore di studi avanzati +scuola normale superiore di pisa +seconda universit\u00e0 statale degli studi di milano +seconda universit\u00e0 degli studi di napoli +segretariato generale della giustizia amministrativa +senato della repubblica +sindaco +stato +stazione astronomica di cagliari-carloforte +stazione zoologica \"anthon dohrn\" di napoli +ufficio italiano dei cambi +unione europea +universit\u00e0 ca' foscari di venezia +universit\u00e0 cattolica del sacro cuore +universit\u00e0 commerciale \"luigi bocconi\" di milano +universit\u00e0 degli studi g. d'annunzio di chieti +universit\u00e0 degli studi mediterranea di reggio calabria +universit\u00e0 degli studi roma tre +universit\u00e0 degli studi del molise +universit\u00e0 degli studi del piemonte orientale amedeo avogadro +universit\u00e0 degli studi del sannio +universit\u00e0 degli studi dell'aquila +universit\u00e0 degli studi dell'insubria +universit\u00e0 degli studi della basilicata +universit\u00e0 degli studi della tuscia +universit\u00e0 degli studi di ancona +universit\u00e0 degli studi di bologna +universit\u00e0 degli studi di cagliari +universit\u00e0 degli studi di camerino +universit\u00e0 degli studi di cassino +universit\u00e0 degli studi di catania +universit\u00e0 degli studi di ferrara +universit\u00e0 degli studi di firenze +universit\u00e0 degli studi di foggia +universit\u00e0 degli studi di genova +universit\u00e0 degli studi di lecce +universit\u00e0 degli studi di macerata +universit\u00e0 degli studi di messina +universit\u00e0 degli studi di milano - bicocca +universit\u00e0 degli studi di modena +universit\u00e0 degli studi di modena e reggio emilia +universit\u00e0 degli studi di napoli federico ii +universit\u00e0 degli studi di napoli parthenope +universit\u00e0 degli studi di napoli l'orientale +universit\u00e0 degli studi di padova +universit\u00e0 degli studi di palermo +universit\u00e0 degli studi di parma +universit\u00e0 degli studi di pavia +universit\u00e0 degli studi di perugia +universit\u00e0 degli studi di pisa +universit\u00e0 degli studi di reggio calabria +universit\u00e0 degli studi di roma tor vergata +universit\u00e0 degli studi di salerno +universit\u00e0 degli studi di siena +universit\u00e0 degli studi di teramo +universit\u00e0 degli studi di trieste +universit\u00e0 degli studi di udine +universit\u00e0 degli studi di urbino +universit\u00e0 degli studi di urbino carlo bo +universit\u00e0 degli studi di verona +universit\u00e0 del salento +universit\u00e0 della calabria +universit\u00e0 della valle d'aosta +universit\u00e0 di bari +universit\u00e0 di milano +universit\u00e0 di bergamo +universit\u00e0 di scienze gastronomiche +universit\u00e0 di torino +universit\u00e0 italiana per stranieri di perugia +universit\u00e0 per stranieri di perugia +universit\u00e0 politecnica delle marche +universit\u00e0 telematica delle scienze umane +universit\u00e0 telematica internazionale \"uninettuno\" +universit\u00e0 telematica giustino fortunato +universit\u00e0 telematica guglielmo marconi +universit\u00e0 suor orsola benincasa +corte suprema di cassazione - prima sezione civile +corte suprema di cassazione -\u00a0seconda sezione civile +corte suprema di cassazione -\u00a0terza sezione civile +corte suprema di cassazione - sezioni unite civili +corte suprema di cassazione -\u00a0quinta sezione civile (sezione tributaria) +corte suprema di cassazione -\u00a0sezione lavoro +corte suprema di cassazione - prima sezione penale +corte suprema di cassazione - seconda sezione penale +corte suprema di cassazione - terza sezione penale +corte suprema di cassazione - quarta sezione penale +corte suprema di cassazione - quinta sezione penale +corte suprema di cassazione - sesta sezione penale +corte suprema di cassazione - settima sezione penale +corte suprema di cassazione -\u00a0sezioni\u00a0unite penali +tribunale\u00a0penale di messina \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/lang/ita/conf.php b/build/production/LIME/php/parsers/reference/lang/ita/conf.php new file mode 100644 index 00000000..0e2f671a --- /dev/null +++ b/build/production/LIME/php/parsers/reference/lang/ita/conf.php @@ -0,0 +1,68 @@ + Array("ref_1"),#,"ref_2"), + "ref_1" => "/{{type}}\s+{{date}}\s*(,\s*n\.\s*\d+)/", + "ref_2" => "/{{partition}}\s+\d+\s+{{prep}}\s+{{type}}\s+({{prep}}\s+{{authorities}}\s+)?{{date}}\s*(,\s*n\.\s*\d+)?/", + + "type" => Array("legge", + "decreto", + "decreti", + "decreto legislativo", + "decreto del Presidente della Repubblica"), + + "date" => "[\w\d\s]+\d{4}", + + "partition" => Array("articolo", + "art\."), + + "prep" => Array("de","del","della","dello","dei","degli","delle") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/reference/lang/ita/type b/build/production/LIME/php/parsers/reference/lang/ita/type new file mode 100644 index 00000000..4f1d1fd9 --- /dev/null +++ b/build/production/LIME/php/parsers/reference/lang/ita/type @@ -0,0 +1,59 @@ +accordo +accordo collettivo nazionale +accordo procedimentale interministeriale +accordo programma +atto regolazione +autorizzazione +avviso rettifica +circolare +codice +comunicato +comunicato di rettifica +comunicazione +contratto collettivo nazionale del lavoro +contratto collettivo nazionale lavoro personale non dirigente cassa depositi prestiti +convenzione +costituzione +decisione +decreto +decreto legge +decreto legislativo +decreto legislativo luogotenenziale +decreto luogotenenziale +delibera +determinazione +direttiva +disposizione +documento +entrata in vigore +errata corrige +estratto decreto +intesa +istruzione +istruzioni +legge +legge costituzionale +mancata conversione +memorandum d'intesa +ordinanza +parere +protocollo +protocollo di adesione +protocollo intesa +provvedimento +raccomandazione +regio decreto +regio decreto legge +regio decreto legislativo +regolamento +regolamento modificativo +relazione +relazione decreto +ripubblicazione +risoluzione +testo aggiornato +testo coordinato +testo unico +trattato +sentenza +statuto \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/StructureParser.php b/build/production/LIME/php/parsers/structure/StructureParser.php new file mode 100644 index 00000000..a6c56b8e --- /dev/null +++ b/build/production/LIME/php/parsers/structure/StructureParser.php @@ -0,0 +1,125 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $structure = $this->parserRules["structure"]; + $initOffset = 0; + $successSum = FALSE; + + foreach($structure as $key => $value) { + $subString = substr($content, $initOffset, (strlen($content)-$initOffset)); + $return[$value] = array(); + if(array_key_exists($value, $this->parserRules)) { + $resolved = resolveRegex($this->parserRules[$value], $this->parserRules, + $this->lang, $this->docType, $this->dirName); + + $success = preg_match_all($resolved["value"], $subString, $result, PREG_OFFSET_CAPTURE); + if ($success) { + $successSum = TRUE; + /*echo $value; + print_r($result);*/ + $lastMatch = end($result[0]); + $delimiter = $lastMatch[0]; + $endOffset = $lastMatch[1]; + $valueArray = Array( + "value" => $delimiter, + "end" => $initOffset+$endOffset + ); + if(isset($resolved["flags"])) { + foreach($resolved["flags"] as $matchedPart => $flags) { + if(isset($result[$matchedPart]) && $result[$matchedPart][0][1] != -1){ + $valueArray["flags"] = $flags; + if(strpos("i", $flags) !== FALSE) { + $valueArray["end"] += strlen($valueArray["value"]); + } + } + } + } + $return[$value] = $valueArray; + } + } else { + $valueArray = array(); + $return[$value] = $valueArray; + } + } + $return["structure"] = $structure; + $return["success"] = $successSum; + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/conf.php b/build/production/LIME/php/parsers/structure/conf.php new file mode 100644 index 00000000..90ba9273 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/conf.php @@ -0,0 +1,55 @@ + "/{{preambleInitList}}|{{preambleEndList}}[:]?/", + */ + +$rules = Array( + "preface" => "/{{preambleInitList}}[:]?/", + "preamble" => "/{{preambleEndList#i}}[:]?/" +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/docType/act/conf.php b/build/production/LIME/php/parsers/structure/docType/act/conf.php new file mode 100644 index 00000000..e375eaa3 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/docType/act/conf.php @@ -0,0 +1,52 @@ + "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "body", "conclusions") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/docType/bill/conf.php b/build/production/LIME/php/parsers/structure/docType/bill/conf.php new file mode 100644 index 00000000..e375eaa3 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/docType/bill/conf.php @@ -0,0 +1,52 @@ + "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "body", "conclusions") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/docType/doc/conf.php b/build/production/LIME/php/parsers/structure/docType/doc/conf.php new file mode 100644 index 00000000..110b7970 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/docType/doc/conf.php @@ -0,0 +1,53 @@ + "/{{preambleEndList#i}}[:]?|{{mainBodyInitList}}/", + "mainBody" => "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "mainBody", "conclusions") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/index.php b/build/production/LIME/php/parsers/structure/index.php new file mode 100644 index 00000000..5b0d73c7 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/index.php @@ -0,0 +1,60 @@ +parse($string, TRUE); + + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/eng/act/conf.php b/build/production/LIME/php/parsers/structure/lang/eng/act/conf.php new file mode 100644 index 00000000..9d206301 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/eng/act/conf.php @@ -0,0 +1,54 @@ + Array("An Act"), + "preambleEndList" => Array("Be it enacted"), + "conclusionsInitList" => Array("Approved[\s\w\d,]+") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/eng/bill/conf.php b/build/production/LIME/php/parsers/structure/lang/eng/bill/conf.php new file mode 100644 index 00000000..5f7782d9 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/eng/bill/conf.php @@ -0,0 +1,52 @@ + Array("LEGISLATIVE COUNSEL", "Legislative Counsel", "Legislative counsel"), + "preambleEndList" => Array("The people of", "do enact as follows") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/esp/act/conf.php b/build/production/LIME/php/parsers/structure/lang/esp/act/conf.php new file mode 100644 index 00000000..b3c64521 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/esp/act/conf.php @@ -0,0 +1,61 @@ + Array("El Senado y la Cámara de Representantes de la República", + "Honorable Cámara de Diputados", + "La Cámara de Representantes", + "Creación", + "CÁMARA DE SENADORES", + "Modificaciones de la Cámara de Senadores"), + + "conclusionsInitList" => Array("Dios guarde a V.E.,", + "Sala de Sesiones de la Cámara de Representantes", + "Sala de Sesiones de la Cámara de Senadores", + "Sala de Sesiones de la Asamblea General") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/esp/act/preambleEndList b/build/production/LIME/php/parsers/structure/lang/esp/act/preambleEndList new file mode 100644 index 00000000..d788c701 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/esp/act/preambleEndList @@ -0,0 +1,35 @@ +Asunto +Carpeta +Repartido +Distribuido +Proyecto de ley +Informe +Informe en mayor�a +Informe en minor�a +Exposici�n de Motivos +Mensaje +Diario de Sesiones +Proyecto de Resoluci�n +Resoluci�n +Observaciones +Mensaje Complementario +Mensaje Sustitutivo +Ley +Decreto Ley +Comunicaci�n de CSS a CRR +Comunicaci�n de CRR a CSS +Comunicaci�n de AG a CSS +Comunicaci�n de AG a CRR +Comunicaci�n de CSS a Ag +Comunicaci�n de CRR a AG +Comunicaci�n de CRR a Pe +Comunicaci�n de CSS a Pe +Comunicaci�n de AG a Pe +PROYECTO DE LEY +DECRETAN +TEXTO APROBADO +EXPOSICI�N DE MOTIVOS +INFORME +MODIFICACIONES AL PROYECTO DE LEY +CÁMARA DE REPRESENTANTES +Proyecto de Resolución diff --git a/build/production/LIME/php/parsers/structure/lang/esp/bill/conf.php b/build/production/LIME/php/parsers/structure/lang/esp/bill/conf.php new file mode 100644 index 00000000..d965d978 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/esp/bill/conf.php @@ -0,0 +1,69 @@ + Array("Honorable Cámara de Diputados", + "La Cámara de Representantes", + "Creación", + "CÁMARA DE SENADORES", + "Modificaciones de la Cámara de Senadores"), + + /* + "preambleEndList" => Array("PROYECTO DE LEY", + "TEXTO APROBADO", + "PROYECTO DE LEY SUSTITUTIVO", + "EXPOSICIÓN DE MOTIVOS", + "INFORME"), + */ + + "conclusionsInitList" => Array("Dios guarde a V.E.,", + "Sala de Sesiones de la Cámara de Representantes", + "Sala de Sesiones de la Cámara de Senadores", + "Sala de Sesiones de la Asamblea General", + "Sala de la Comisiòn","Sala de la Comisión") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/esp/bill/preambleEndList b/build/production/LIME/php/parsers/structure/lang/esp/bill/preambleEndList new file mode 100644 index 00000000..d788c701 --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/esp/bill/preambleEndList @@ -0,0 +1,35 @@ +Asunto +Carpeta +Repartido +Distribuido +Proyecto de ley +Informe +Informe en mayor�a +Informe en minor�a +Exposici�n de Motivos +Mensaje +Diario de Sesiones +Proyecto de Resoluci�n +Resoluci�n +Observaciones +Mensaje Complementario +Mensaje Sustitutivo +Ley +Decreto Ley +Comunicaci�n de CSS a CRR +Comunicaci�n de CRR a CSS +Comunicaci�n de AG a CSS +Comunicaci�n de AG a CRR +Comunicaci�n de CSS a Ag +Comunicaci�n de CRR a AG +Comunicaci�n de CRR a Pe +Comunicaci�n de CSS a Pe +Comunicaci�n de AG a Pe +PROYECTO DE LEY +DECRETAN +TEXTO APROBADO +EXPOSICI�N DE MOTIVOS +INFORME +MODIFICACIONES AL PROYECTO DE LEY +CÁMARA DE REPRESENTANTES +Proyecto de Resolución diff --git a/build/production/LIME/php/parsers/structure/lang/ita/act/conf.php b/build/production/LIME/php/parsers/structure/lang/ita/act/conf.php new file mode 100644 index 00000000..968f818f --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/ita/act/conf.php @@ -0,0 +1,74 @@ + "/(?<=\>)({{titleList}}|{{chapterList}}|{{articleList}})\s*({{number}})|{{preambleEndList#i}}/m", + "roman" => "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + "number" => "\d+|{{roman}}+", + "titleList" => Array("Titolo", "TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo"), + + "preambleInitList" => Array("Il Presidente della Repubblica", + "IL PRESIDENTE DELLA REPUBBLICA", + "Attesto che"), + + "preambleEndList" => Array ("Emana il seguente decreto legislativo", + "Attesto che", + "\s*E\s*m\s*a\s*n\s*a\s*.*({{followingDoctype}}:)?", + "EMANA\s*({{followingDoctype}}:)?", + "Promulga\s*({{followingDoctype}}:)?"), + + "followingDoctype" => Array("(I|i)l\*seguente\s*(R|r)egolamento)", + "(I|i)l seguente decreto legislativo", + "la seguente legge"), + + "conclusionsInitList" => Array("Il presente decreto,", + "IL PRESIDENTE") + +); +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/ita/bill/conf.php b/build/production/LIME/php/parsers/structure/lang/ita/bill/conf.php new file mode 100644 index 00000000..968f818f --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/ita/bill/conf.php @@ -0,0 +1,74 @@ + "/(?<=\>)({{titleList}}|{{chapterList}}|{{articleList}})\s*({{number}})|{{preambleEndList#i}}/m", + "roman" => "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + "number" => "\d+|{{roman}}+", + "titleList" => Array("Titolo", "TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo"), + + "preambleInitList" => Array("Il Presidente della Repubblica", + "IL PRESIDENTE DELLA REPUBBLICA", + "Attesto che"), + + "preambleEndList" => Array ("Emana il seguente decreto legislativo", + "Attesto che", + "\s*E\s*m\s*a\s*n\s*a\s*.*({{followingDoctype}}:)?", + "EMANA\s*({{followingDoctype}}:)?", + "Promulga\s*({{followingDoctype}}:)?"), + + "followingDoctype" => Array("(I|i)l\*seguente\s*(R|r)egolamento)", + "(I|i)l seguente decreto legislativo", + "la seguente legge"), + + "conclusionsInitList" => Array("Il presente decreto,", + "IL PRESIDENTE") + +); +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/structure/lang/ita/doc/conf.php b/build/production/LIME/php/parsers/structure/lang/ita/doc/conf.php new file mode 100644 index 00000000..fb0c95fb --- /dev/null +++ b/build/production/LIME/php/parsers/structure/lang/ita/doc/conf.php @@ -0,0 +1,67 @@ + Array("PREMESSO CHE", + "Premesso", + "PREMESSO", + "Premesso e considerato", + "PREMESSO E CONSIDERATO CHE", + "Considerato"), + + "preambleEndList" => Array("TUTTO CI.+ PREMESSO E CONSIDERATO", + "TUTTO CI.+ VISTO E PREMESSO", + "TUTTO CI.+ CONSIDERATO E PREMESSO", + "TUTTO CI.+ PREMESSO", + "SI INTERPELLA", + "INTERROGANO"), + + "mainBodyInitList" => Array("Tutt.+ ci.+ premesso e considerato,"), + + "conclusionsInitList" => Array("I CONSIGLIERI SOTTOSCRITTORI") +); + +?> \ No newline at end of file diff --git a/build/production/LIME/php/parsers/utils.php b/build/production/LIME/php/parsers/utils.php new file mode 100644 index 00000000..28335e6c --- /dev/null +++ b/build/production/LIME/php/parsers/utils.php @@ -0,0 +1,280 @@ + implode("|", $value)); + } + + $flags = Array(); + $success = preg_match_all($keyRe, $value, $result); + if ($success) { + foreach($result["0"] as $k => $toBeReplaced) { + $keyword = $result["1"][$k]; + if (strlen($result["2"][$k])) { + $flags[$keyword] = $result["2"][$k]; + } + if(array_key_exists($keyword, $configArray)) { + $resolved = resolveRegex($configArray[$keyword], $configArray, + $lang,$documentType, $directory); + } else { + // get parser's configuration by document language + $standardLang = array( + "spa" => "esp" + ); + $lang = array_key_exists($lang, $standardLang) ? $standardLang[$lang] : $lang; + /////////////////////////////////////////////////// + + $localFileName = $directory . "/lang/" . $lang . "/" . $documentType . "/" . $keyword; + $localFileName2 = $directory . "/lang/" . $lang . "/" . $keyword; + if(file_exists($localFileName)) { + $resolved = resolveRegex(file($localFileName), + $configArray,$lang,$documentType, $directory); + + } else if(file_exists($localFileName2)) { + $resolved = resolveRegex(file($localFileName), + $configArray,$lang,$documentType, $directory); + } else { + $commonFileName = $directory . "/../common/lang/" . $lang . "/" . $keyword; + if(file_exists($commonFileName)) { + $resolved = resolveRegex(file($commonFileName), + $configArray,$lang,$documentType, $directory); + } + } + } + + if(isset($resolved['flags'])) { + $flags = array_merge($flags,$resolved['flags']); + } + if(isset($resolved['value'])) { + $regexPart = sprintf("(?P<%s>%s)", $keyword, $resolved['value']); + $value = str_replace($toBeReplaced, $regexPart, $value); + } + } + } + + $resolved = Array('value' => $value); + if(count($flags)) $resolved['flags'] = $flags; + return $resolved; +} + +function arrayToPairsArray($array, $max) { + $result = array(); + for($i = 0; $i < count($array); $i++) { + $pair = array(); + $pair[0] = $array[$i]; + if($i == count($array)-1) { + $pair[1] = $max; + } else { + $pair[1] = $array[$i+1]; + } + $result[] = $pair; + } + return $result; +} + +function importParserConfiguration($lang, $documentType, $directory = "") { + + $parserRules = Array(); + $directory = empty($directory) ? getcwd() : $directory; + // get parser's common configuration + $filename = $directory . "/../common/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's standard configuration + $filename = $directory . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's configuration by document type + $filename = $directory . "/docType/" . $documentType . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's configuration by document language + $standardLang = array( + "spa" => "esp" + ); + $lang = array_key_exists($lang, $standardLang) ? $standardLang[$lang] : $lang; + /////////////////////////////////////////////////// + + $filename = $directory . "/lang/" . $lang . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + $filename = $directory . "/lang/" . $lang . "/" . $documentType . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + return $parserRules; +} + + +function toXml($data, $r = 'data', &$xml = null) { + if (ini_get('zend.ze1_compatibility_mode') == 1) { + ini_set('zend.ze1_compatibility_mode', 0); + } + + if (is_null($xml) || !isset($xml)) { + $xml = simplexml_load_string("<" . $r . "/>"); + } + + foreach ($data as $key => $value) { + if (is_numeric($key)) { + $key = $r; + } + $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key); + if (is_array($value)) { + $node = isAssoc($value) ? $xml -> addChild($key) : $xml; + toXml($value, $key, $node); + } else { + $value = htmlentities($value); + $xml -> addChild($key, $value); + } + } + return $xml; +} + +function isAssoc($array) { + return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array))))); +} + +function debug($t, $debug, $debugInfo) { + if ($debug) { + if (!isset($debugInfo)) + $debugInfo = array(); + // echo $t."\n" ; + array_push($debugInfo, $t); + } +} + +if (!function_exists('http_response_code')) { + function http_response_code($code = NULL) { + + if ($code !== NULL) { + + switch ($code) { + case 100: $text = 'Continue'; break; + case 101: $text = 'Switching Protocols'; break; + case 200: $text = 'OK'; break; + case 201: $text = 'Created'; break; + case 202: $text = 'Accepted'; break; + case 203: $text = 'Non-Authoritative Information'; break; + case 204: $text = 'No Content'; break; + case 205: $text = 'Reset Content'; break; + case 206: $text = 'Partial Content'; break; + case 300: $text = 'Multiple Choices'; break; + case 301: $text = 'Moved Permanently'; break; + case 302: $text = 'Moved Temporarily'; break; + case 303: $text = 'See Other'; break; + case 304: $text = 'Not Modified'; break; + case 305: $text = 'Use Proxy'; break; + case 400: $text = 'Bad Request'; break; + case 401: $text = 'Unauthorized'; break; + case 402: $text = 'Payment Required'; break; + case 403: $text = 'Forbidden'; break; + case 404: $text = 'Not Found'; break; + case 405: $text = 'Method Not Allowed'; break; + case 406: $text = 'Not Acceptable'; break; + case 407: $text = 'Proxy Authentication Required'; break; + case 408: $text = 'Request Time-out'; break; + case 409: $text = 'Conflict'; break; + case 410: $text = 'Gone'; break; + case 411: $text = 'Length Required'; break; + case 412: $text = 'Precondition Failed'; break; + case 413: $text = 'Request Entity Too Large'; break; + case 414: $text = 'Request-URI Too Large'; break; + case 415: $text = 'Unsupported Media Type'; break; + case 500: $text = 'Internal Server Error'; break; + case 501: $text = 'Not Implemented'; break; + case 502: $text = 'Bad Gateway'; break; + case 503: $text = 'Service Unavailable'; break; + case 504: $text = 'Gateway Time-out'; break; + case 505: $text = 'HTTP Version not supported'; break; + default: + exit('Unknown http status code "' . htmlentities($code) . '"'); + break; + } + + $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); + + header($protocol . ' ' . $code . ' ' . $text); + + $GLOBALS['http_response_code'] = $code; + + } else { + + $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); + + } + + return $code; + } +} + +?> \ No newline at end of file diff --git a/build/production/LIME/php/setup/index.php b/build/production/LIME/php/setup/index.php index 4d94cf19..3e7121f1 100644 --- a/build/production/LIME/php/setup/index.php +++ b/build/production/LIME/php/setup/index.php @@ -53,8 +53,7 @@ $condition = TRUE; $init_db = TRUE; -$host = 'http://'.$_SERVER['HTTP_HOST'] . substr($_SERVER['REQUEST_URI'], 0, - strrpos($_SERVER['REQUEST_URI'],'/php/')); +$host = 'http://'.$_SERVER['SERVER_NAME']; $dbhost = 'http://'.$_SERVER['HTTP_HOST'].':8080/exist/'; $uname = 'admin'; $pwd = 'exist'; $abipath = '/path/to/AbiWord'; @@ -64,7 +63,8 @@ if($_POST){ $host = $_POST['host'];$dbhost = $_POST['dbhost']; $uname = $_POST['uname']; $pwd = $_POST['pwd']; $abipath = $_POST['abipath']; - if(write_lime_config()) header( 'Location: ' . $host); + if(write_lime_config()) header( 'Location: ' . $host . substr($_SERVER['REQUEST_URI'], 0, + strrpos($_SERVER['REQUEST_URI'],'/php/'))); }; ////////////////////////////////////////////////////////////////////////////////// @@ -86,8 +86,8 @@ function check_tmp_permission() { chmod($TMPFOLDER, 0700); if(!is_writable($TMPFOLDER)) { global $condition;$condition = FALSE; - return '

      Please set the folder ' . realpath($TMPFOLDER) . - ' writable.'; + return '

      Please set the php LIME folder + to have writable permission for the web server user (example: apache) '; } } @@ -172,7 +172,7 @@ function check_db() {

      - diff --git a/build/production/LIME/php/utils.php b/build/production/LIME/php/utils.php index 155882d5..2c089258 100644 --- a/build/production/LIME/php/utils.php +++ b/build/production/LIME/php/utils.php @@ -46,6 +46,7 @@ */ require_once('config.php'); +require_once('lib/Text_LanguageDetect/Text/LanguageDetect.php'); function aknToHtml($input,$stylesheet=FALSE,$language=FALSE, $fullOutput=FALSE, $akn2xsl=FALSE, $akn3xsl=FALSE) { @@ -71,6 +72,7 @@ function aknToHtml($input,$stylesheet=FALSE,$language=FALSE, $fullOutput=FALSE, // or custom stylesheet if ($stylesheet) $xsl -> load($stylesheet); else $xsl -> load($akn3xsl); + $language = 'akoma3.0'; $xpath = new DOMXPath($doc); foreach( $xpath->query('namespace::*', $doc -> documentElement) as $node ) { @@ -122,4 +124,57 @@ function XMLToJSON ($xml,$container=NULL) { return $json; } +function cssFileToArray($path) { + $cssRules = array(); + $cssContent = file_get_contents($path); + if($cssContent) { + $cssContent = preg_replace('/}(?!$)/', '}||', preg_replace('/\s+/', '', $cssContent)); + $blocks = explode("||", $cssContent); + foreach($blocks as $block) { + preg_match('/(?P[^{]+){(?P[^}]+)/',$block,$matches); + $tmpRules = explode(";", $matches["rules"]); + $rules = array(); + foreach($tmpRules as $rule) { + $values = explode(":", $rule); + if(count($values) == 2) { + $rules[$values[0]] = $values[1]; + } + } + if(array_key_exists($matches["selector"], $cssRules)) { + $cssRules[$matches["selector"]] = array_merge($cssRules[$matches["selector"]], $rules); + } else { + $cssRules[$matches["selector"]] = $rules; + } + } + } + return $cssRules; +} + +function createAttributeSet($dom, $selector, $rules) { + $name = preg_replace('/\./', '', $selector); + $attributeSet = $dom->createElementNS("http://www.w3.org/1999/XSL/Transform", "xsl:attribute-set"); + $attributeSet->setAttribute("name", $name); + foreach($rules as $rule => $value) { + $attribute = $dom->createElementNS("http://www.w3.org/1999/XSL/Transform", "xsl:attribute", $value); + $attribute->setAttribute("name", $rule); + $attributeSet->appendChild($attribute); + } + return $attributeSet; +} + +function detectLanguage($text, $length = 2) { + $l = new Text_LanguageDetect(); + + try { + $l->setNameMode($length); + + $result = $l->detect($text, 1); + $languages = array_keys($result); + return (count($languages)) ? $languages[0] : NULL; + } catch (Text_LanguageDetect_Exception $e) { + return NULL; + } +} + + ?> \ No newline at end of file diff --git a/build/production/LIME/resources/ext-aria/Readme.md b/build/production/LIME/resources/ext-aria/Readme.md new file mode 100644 index 00000000..63245855 --- /dev/null +++ b/build/production/LIME/resources/ext-aria/Readme.md @@ -0,0 +1,3 @@ +# ext-aria/resources + +This folder contains static resources (typically an `"images"` folder as well). diff --git a/build/production/LIME/resources/ext-aria/images/form/date-trigger-rtl.gif b/build/production/LIME/resources/ext-aria/images/form/date-trigger-rtl.gif new file mode 100644 index 00000000..e1c74b37 Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/form/date-trigger-rtl.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/form/date-trigger.gif b/build/production/LIME/resources/ext-aria/images/form/date-trigger.gif new file mode 100644 index 00000000..048506d7 Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/form/date-trigger.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/form/exclamation.gif b/build/production/LIME/resources/ext-aria/images/form/exclamation.gif new file mode 100644 index 00000000..daa88b8b Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/form/exclamation.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/form/trigger-rtl.gif b/build/production/LIME/resources/ext-aria/images/form/trigger-rtl.gif new file mode 100644 index 00000000..38a423cb Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/form/trigger-rtl.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/form/trigger.gif b/build/production/LIME/resources/ext-aria/images/form/trigger.gif new file mode 100644 index 00000000..bd255727 Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/form/trigger.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/shared/left-btn.gif b/build/production/LIME/resources/ext-aria/images/shared/left-btn.gif new file mode 100644 index 00000000..06224394 Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/shared/left-btn.gif differ diff --git a/build/production/LIME/resources/ext-aria/images/shared/right-btn.gif b/build/production/LIME/resources/ext-aria/images/shared/right-btn.gif new file mode 100644 index 00000000..5e3215d5 Binary files /dev/null and b/build/production/LIME/resources/ext-aria/images/shared/right-btn.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-bg.gif new file mode 100644 index 00000000..08665f0a Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-corners.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-corners.gif new file mode 100644 index 00000000..6e6dd298 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-corners.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-bg.gif new file mode 100644 index 00000000..08665f0a Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-fbg.gif new file mode 100644 index 00000000..fe34b622 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-disabled-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-fbg.gif new file mode 100644 index 00000000..fe34b622 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-large-sides.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-sides.gif new file mode 100644 index 00000000..29f443b7 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-large-sides.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-bg.gif new file mode 100644 index 00000000..7015f114 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-corners.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-corners.gif new file mode 100644 index 00000000..c4152afd Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-corners.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-bg.gif new file mode 100644 index 00000000..7015f114 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-fbg.gif new file mode 100644 index 00000000..804354b2 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-disabled-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-fbg.gif new file mode 100644 index 00000000..804354b2 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-sides.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-sides.gif new file mode 100644 index 00000000..efeaf838 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-medium-sides.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-bg.gif new file mode 100644 index 00000000..4f97a136 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-corners.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-corners.gif new file mode 100644 index 00000000..c4152afd Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-corners.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-bg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-bg.gif new file mode 100644 index 00000000..4f97a136 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-bg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-fbg.gif new file mode 100644 index 00000000..b362e826 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-disabled-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-fbg.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-fbg.gif new file mode 100644 index 00000000..b362e826 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-fbg.gif differ diff --git a/build/production/LIME/resources/images/btn/btn-default-toolbar-small-sides.gif b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-sides.gif new file mode 100644 index 00000000..97109aa7 Binary files /dev/null and b/build/production/LIME/resources/images/btn/btn-default-toolbar-small-sides.gif differ diff --git a/build/production/LIME/resources/images/button/btn-arrow.gif b/build/production/LIME/resources/images/button/btn-arrow.gif new file mode 100644 index 00000000..f90d5df4 Binary files /dev/null and b/build/production/LIME/resources/images/button/btn-arrow.gif differ diff --git a/build/production/LIME/resources/images/button/btn-sprite.gif b/build/production/LIME/resources/images/button/btn-sprite.gif new file mode 100644 index 00000000..834ff978 Binary files /dev/null and b/build/production/LIME/resources/images/button/btn-sprite.gif differ diff --git a/build/production/LIME/resources/images/button/default-large-arrow-rtl.png b/build/production/LIME/resources/images/button/default-large-arrow-rtl.png new file mode 100644 index 00000000..76beeabd Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-large-arrow.png b/build/production/LIME/resources/images/button/default-large-arrow.png new file mode 100644 index 00000000..32674e43 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-large-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-large-s-arrow-b-rtl.png new file mode 100644 index 00000000..79677a4e Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-large-s-arrow-b.png b/build/production/LIME/resources/images/button/default-large-s-arrow-b.png new file mode 100644 index 00000000..9f3928a2 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-large-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-large-s-arrow-rtl.png new file mode 100644 index 00000000..79850507 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-large-s-arrow.png b/build/production/LIME/resources/images/button/default-large-s-arrow.png new file mode 100644 index 00000000..06ad27b1 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-large-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-arrow-rtl.png b/build/production/LIME/resources/images/button/default-medium-arrow-rtl.png new file mode 100644 index 00000000..d54d3a0d Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-arrow.png b/build/production/LIME/resources/images/button/default-medium-arrow.png new file mode 100644 index 00000000..e565db49 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-medium-s-arrow-b-rtl.png new file mode 100644 index 00000000..f2fb53be Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-s-arrow-b.png b/build/production/LIME/resources/images/button/default-medium-s-arrow-b.png new file mode 100644 index 00000000..ee39ae27 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-medium-s-arrow-rtl.png new file mode 100644 index 00000000..fb111406 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-medium-s-arrow.png b/build/production/LIME/resources/images/button/default-medium-s-arrow.png new file mode 100644 index 00000000..c1d18755 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-medium-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-small-arrow-rtl.png b/build/production/LIME/resources/images/button/default-small-arrow-rtl.png new file mode 100644 index 00000000..35384457 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-small-arrow.png b/build/production/LIME/resources/images/button/default-small-arrow.png new file mode 100644 index 00000000..17a9beb1 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-small-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-small-s-arrow-b-rtl.png new file mode 100644 index 00000000..2f8b2e57 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-small-s-arrow-b.png b/build/production/LIME/resources/images/button/default-small-s-arrow-b.png new file mode 100644 index 00000000..afd13fbb Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-small-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-small-s-arrow-rtl.png new file mode 100644 index 00000000..f59b7922 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-small-s-arrow.png b/build/production/LIME/resources/images/button/default-small-s-arrow.png new file mode 100644 index 00000000..eaffbdcb Binary files /dev/null and b/build/production/LIME/resources/images/button/default-small-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-large-arrow-rtl.png new file mode 100644 index 00000000..d8f0151d Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-large-arrow.png new file mode 100644 index 00000000..31fc36e6 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b-rtl.png new file mode 100644 index 00000000..379d2d9f Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b.png b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b.png new file mode 100644 index 00000000..dcfe8eab Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-rtl.png new file mode 100644 index 00000000..612a6b16 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow.png new file mode 100644 index 00000000..731b207e Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-large-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-medium-arrow-rtl.png new file mode 100644 index 00000000..1648e51c Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-medium-arrow.png new file mode 100644 index 00000000..65fdd036 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b-rtl.png new file mode 100644 index 00000000..8d2232b1 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b.png b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b.png new file mode 100644 index 00000000..2489479f Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-rtl.png new file mode 100644 index 00000000..c81c5f2e Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow.png new file mode 100644 index 00000000..0a6857aa Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-medium-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-small-arrow-rtl.png new file mode 100644 index 00000000..89191385 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-small-arrow.png new file mode 100644 index 00000000..b56c2a65 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-arrow.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b-rtl.png new file mode 100644 index 00000000..11423517 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b.png b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b.png new file mode 100644 index 00000000..bb1b08e9 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-rtl.png b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-rtl.png new file mode 100644 index 00000000..9e9e16b0 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow.png b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow.png new file mode 100644 index 00000000..9a728579 Binary files /dev/null and b/build/production/LIME/resources/images/button/default-toolbar-small-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-large-arrow-rtl.png new file mode 100644 index 00000000..d8f0151d Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-large-arrow.png new file mode 100644 index 00000000..31fc36e6 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b-rtl.png new file mode 100644 index 00000000..379d2d9f Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b.png b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b.png new file mode 100644 index 00000000..dcfe8eab Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-rtl.png new file mode 100644 index 00000000..612a6b16 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow.png new file mode 100644 index 00000000..731b207e Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-large-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow-rtl.png new file mode 100644 index 00000000..1648e51c Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow.png new file mode 100644 index 00000000..65fdd036 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b-rtl.png new file mode 100644 index 00000000..8d2232b1 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b.png new file mode 100644 index 00000000..2489479f Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-rtl.png new file mode 100644 index 00000000..c81c5f2e Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow.png new file mode 100644 index 00000000..0a6857aa Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-medium-s-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-small-arrow-rtl.png new file mode 100644 index 00000000..89191385 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-small-arrow.png new file mode 100644 index 00000000..b56c2a65 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-arrow.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b-rtl.png new file mode 100644 index 00000000..11423517 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b.png b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b.png new file mode 100644 index 00000000..bb1b08e9 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-b.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-rtl.png b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-rtl.png new file mode 100644 index 00000000..9e9e16b0 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow-rtl.png differ diff --git a/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow.png b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow.png new file mode 100644 index 00000000..9a728579 Binary files /dev/null and b/build/production/LIME/resources/images/button/plain-toolbar-small-s-arrow.png differ diff --git a/build/production/LIME/resources/images/datepicker/arrow-left.png b/build/production/LIME/resources/images/datepicker/arrow-left.png new file mode 100644 index 00000000..fc09f9a6 Binary files /dev/null and b/build/production/LIME/resources/images/datepicker/arrow-left.png differ diff --git a/build/production/LIME/resources/images/datepicker/arrow-right.png b/build/production/LIME/resources/images/datepicker/arrow-right.png new file mode 100644 index 00000000..a22b876f Binary files /dev/null and b/build/production/LIME/resources/images/datepicker/arrow-right.png differ diff --git a/build/production/LIME/resources/images/datepicker/month-arrow.png b/build/production/LIME/resources/images/datepicker/month-arrow.png new file mode 100644 index 00000000..f0b572f6 Binary files /dev/null and b/build/production/LIME/resources/images/datepicker/month-arrow.png differ diff --git a/build/production/LIME/resources/images/dd/drop-add.png b/build/production/LIME/resources/images/dd/drop-add.png new file mode 100644 index 00000000..a7b8f28d Binary files /dev/null and b/build/production/LIME/resources/images/dd/drop-add.png differ diff --git a/build/production/LIME/resources/images/dd/drop-no.png b/build/production/LIME/resources/images/dd/drop-no.png new file mode 100644 index 00000000..02e219a1 Binary files /dev/null and b/build/production/LIME/resources/images/dd/drop-no.png differ diff --git a/build/production/LIME/resources/images/dd/drop-yes.png b/build/production/LIME/resources/images/dd/drop-yes.png new file mode 100644 index 00000000..a7b8f28d Binary files /dev/null and b/build/production/LIME/resources/images/dd/drop-yes.png differ diff --git a/build/production/LIME/resources/images/editor/tb-sprite.png b/build/production/LIME/resources/images/editor/tb-sprite.png new file mode 100644 index 00000000..98861180 Binary files /dev/null and b/build/production/LIME/resources/images/editor/tb-sprite.png differ diff --git a/build/production/LIME/resources/images/fieldset/collapse-tool.png b/build/production/LIME/resources/images/fieldset/collapse-tool.png new file mode 100644 index 00000000..97eb83f5 Binary files /dev/null and b/build/production/LIME/resources/images/fieldset/collapse-tool.png differ diff --git a/build/production/LIME/resources/images/form/checkbox.png b/build/production/LIME/resources/images/form/checkbox.png new file mode 100644 index 00000000..fc2709ca Binary files /dev/null and b/build/production/LIME/resources/images/form/checkbox.png differ diff --git a/build/production/LIME/resources/images/form/clear-trigger-rtl.png b/build/production/LIME/resources/images/form/clear-trigger-rtl.png new file mode 100644 index 00000000..73e1dbe9 Binary files /dev/null and b/build/production/LIME/resources/images/form/clear-trigger-rtl.png differ diff --git a/build/production/LIME/resources/images/form/clear-trigger.png b/build/production/LIME/resources/images/form/clear-trigger.png new file mode 100644 index 00000000..73e1dbe9 Binary files /dev/null and b/build/production/LIME/resources/images/form/clear-trigger.png differ diff --git a/build/production/LIME/resources/images/form/date-trigger-rtl.png b/build/production/LIME/resources/images/form/date-trigger-rtl.png new file mode 100644 index 00000000..94894936 Binary files /dev/null and b/build/production/LIME/resources/images/form/date-trigger-rtl.png differ diff --git a/build/production/LIME/resources/images/form/date-trigger.png b/build/production/LIME/resources/images/form/date-trigger.png new file mode 100644 index 00000000..94894936 Binary files /dev/null and b/build/production/LIME/resources/images/form/date-trigger.png differ diff --git a/build/production/LIME/resources/images/form/exclamation.png b/build/production/LIME/resources/images/form/exclamation.png new file mode 100644 index 00000000..3e6e3d08 Binary files /dev/null and b/build/production/LIME/resources/images/form/exclamation.png differ diff --git a/build/production/LIME/resources/images/form/radio.png b/build/production/LIME/resources/images/form/radio.png new file mode 100644 index 00000000..86644bb8 Binary files /dev/null and b/build/production/LIME/resources/images/form/radio.png differ diff --git a/build/production/LIME/resources/images/form/search-trigger-rtl.png b/build/production/LIME/resources/images/form/search-trigger-rtl.png new file mode 100644 index 00000000..15e15f5f Binary files /dev/null and b/build/production/LIME/resources/images/form/search-trigger-rtl.png differ diff --git a/build/production/LIME/resources/images/form/search-trigger.png b/build/production/LIME/resources/images/form/search-trigger.png new file mode 100644 index 00000000..15e15f5f Binary files /dev/null and b/build/production/LIME/resources/images/form/search-trigger.png differ diff --git a/build/production/LIME/resources/images/form/spinner-rtl.png b/build/production/LIME/resources/images/form/spinner-rtl.png new file mode 100644 index 00000000..28d140f3 Binary files /dev/null and b/build/production/LIME/resources/images/form/spinner-rtl.png differ diff --git a/build/production/LIME/resources/images/form/spinner.png b/build/production/LIME/resources/images/form/spinner.png new file mode 100644 index 00000000..28d140f3 Binary files /dev/null and b/build/production/LIME/resources/images/form/spinner.png differ diff --git a/build/production/LIME/resources/images/form/trigger-rtl.png b/build/production/LIME/resources/images/form/trigger-rtl.png new file mode 100644 index 00000000..b4e2d5c3 Binary files /dev/null and b/build/production/LIME/resources/images/form/trigger-rtl.png differ diff --git a/build/production/LIME/resources/images/form/trigger-template.png b/build/production/LIME/resources/images/form/trigger-template.png new file mode 100644 index 00000000..986122c5 Binary files /dev/null and b/build/production/LIME/resources/images/form/trigger-template.png differ diff --git a/build/production/LIME/resources/images/form/trigger.png b/build/production/LIME/resources/images/form/trigger.png new file mode 100644 index 00000000..b4e2d5c3 Binary files /dev/null and b/build/production/LIME/resources/images/form/trigger.png differ diff --git a/build/production/LIME/resources/images/grid/col-move-bottom.png b/build/production/LIME/resources/images/grid/col-move-bottom.png new file mode 100644 index 00000000..97822194 Binary files /dev/null and b/build/production/LIME/resources/images/grid/col-move-bottom.png differ diff --git a/build/production/LIME/resources/images/grid/col-move-top.png b/build/production/LIME/resources/images/grid/col-move-top.png new file mode 100644 index 00000000..6e28535a Binary files /dev/null and b/build/production/LIME/resources/images/grid/col-move-top.png differ diff --git a/build/production/LIME/resources/images/grid/columns.png b/build/production/LIME/resources/images/grid/columns.png new file mode 100644 index 00000000..70a5c873 Binary files /dev/null and b/build/production/LIME/resources/images/grid/columns.png differ diff --git a/build/production/LIME/resources/images/grid/dirty-rtl.png b/build/production/LIME/resources/images/grid/dirty-rtl.png new file mode 100644 index 00000000..5f841228 Binary files /dev/null and b/build/production/LIME/resources/images/grid/dirty-rtl.png differ diff --git a/build/production/LIME/resources/images/grid/dirty.png b/build/production/LIME/resources/images/grid/dirty.png new file mode 100644 index 00000000..fc06fdde Binary files /dev/null and b/build/production/LIME/resources/images/grid/dirty.png differ diff --git a/build/production/LIME/resources/images/grid/drop-no.png b/build/production/LIME/resources/images/grid/drop-no.png new file mode 100644 index 00000000..02e219a1 Binary files /dev/null and b/build/production/LIME/resources/images/grid/drop-no.png differ diff --git a/build/production/LIME/resources/images/grid/drop-yes.png b/build/production/LIME/resources/images/grid/drop-yes.png new file mode 100644 index 00000000..a7b8f28d Binary files /dev/null and b/build/production/LIME/resources/images/grid/drop-yes.png differ diff --git a/build/production/LIME/resources/images/grid/group-by.png b/build/production/LIME/resources/images/grid/group-by.png new file mode 100644 index 00000000..8508adeb Binary files /dev/null and b/build/production/LIME/resources/images/grid/group-by.png differ diff --git a/build/production/LIME/resources/images/grid/group-collapse.png b/build/production/LIME/resources/images/grid/group-collapse.png new file mode 100644 index 00000000..49fcc4fd Binary files /dev/null and b/build/production/LIME/resources/images/grid/group-collapse.png differ diff --git a/build/production/LIME/resources/images/grid/group-expand-sprite.png b/build/production/LIME/resources/images/grid/group-expand-sprite.png new file mode 100644 index 00000000..57cf2d2a Binary files /dev/null and b/build/production/LIME/resources/images/grid/group-expand-sprite.png differ diff --git a/build/production/LIME/resources/images/grid/group-expand.png b/build/production/LIME/resources/images/grid/group-expand.png new file mode 100644 index 00000000..d65a7df0 Binary files /dev/null and b/build/production/LIME/resources/images/grid/group-expand.png differ diff --git a/build/production/LIME/resources/images/grid/hd-pop.png b/build/production/LIME/resources/images/grid/hd-pop.png new file mode 100644 index 00000000..3ad96ef6 Binary files /dev/null and b/build/production/LIME/resources/images/grid/hd-pop.png differ diff --git a/build/production/LIME/resources/images/grid/hmenu-asc.png b/build/production/LIME/resources/images/grid/hmenu-asc.png new file mode 100644 index 00000000..a206d35f Binary files /dev/null and b/build/production/LIME/resources/images/grid/hmenu-asc.png differ diff --git a/build/production/LIME/resources/images/grid/hmenu-desc.png b/build/production/LIME/resources/images/grid/hmenu-desc.png new file mode 100644 index 00000000..55a714e1 Binary files /dev/null and b/build/production/LIME/resources/images/grid/hmenu-desc.png differ diff --git a/build/production/LIME/resources/images/grid/page-first.png b/build/production/LIME/resources/images/grid/page-first.png new file mode 100644 index 00000000..7691f320 Binary files /dev/null and b/build/production/LIME/resources/images/grid/page-first.png differ diff --git a/build/production/LIME/resources/images/grid/page-last.png b/build/production/LIME/resources/images/grid/page-last.png new file mode 100644 index 00000000..49b13d7e Binary files /dev/null and b/build/production/LIME/resources/images/grid/page-last.png differ diff --git a/build/production/LIME/resources/images/grid/page-next.png b/build/production/LIME/resources/images/grid/page-next.png new file mode 100644 index 00000000..c3e72bab Binary files /dev/null and b/build/production/LIME/resources/images/grid/page-next.png differ diff --git a/build/production/LIME/resources/images/grid/page-prev.png b/build/production/LIME/resources/images/grid/page-prev.png new file mode 100644 index 00000000..cace90be Binary files /dev/null and b/build/production/LIME/resources/images/grid/page-prev.png differ diff --git a/build/production/LIME/resources/images/grid/pick-button.png b/build/production/LIME/resources/images/grid/pick-button.png new file mode 100644 index 00000000..acafacef Binary files /dev/null and b/build/production/LIME/resources/images/grid/pick-button.png differ diff --git a/build/production/LIME/resources/images/grid/refresh.png b/build/production/LIME/resources/images/grid/refresh.png new file mode 100644 index 00000000..5320ddde Binary files /dev/null and b/build/production/LIME/resources/images/grid/refresh.png differ diff --git a/build/production/LIME/resources/images/grid/sort_asc.png b/build/production/LIME/resources/images/grid/sort_asc.png new file mode 100644 index 00000000..a206d35f Binary files /dev/null and b/build/production/LIME/resources/images/grid/sort_asc.png differ diff --git a/build/production/LIME/resources/images/grid/sort_desc.png b/build/production/LIME/resources/images/grid/sort_desc.png new file mode 100644 index 00000000..55a714e1 Binary files /dev/null and b/build/production/LIME/resources/images/grid/sort_desc.png differ diff --git a/build/production/LIME/resources/images/icons/logo-big.png b/build/production/LIME/resources/images/icons/logo-big.png new file mode 100644 index 00000000..7e8eed7d Binary files /dev/null and b/build/production/LIME/resources/images/icons/logo-big.png differ diff --git a/build/production/LIME/resources/images/icons/logo-small-bordered.png b/build/production/LIME/resources/images/icons/logo-small-bordered.png new file mode 100644 index 00000000..6865568e Binary files /dev/null and b/build/production/LIME/resources/images/icons/logo-small-bordered.png differ diff --git a/build/production/LIME/resources/images/icons/logo-small.png b/build/production/LIME/resources/images/icons/logo-small.png new file mode 100644 index 00000000..9684b4f8 Binary files /dev/null and b/build/production/LIME/resources/images/icons/logo-small.png differ diff --git a/build/production/LIME/resources/images/loadmask/loading.gif b/build/production/LIME/resources/images/loadmask/loading.gif new file mode 100644 index 00000000..8471b4f0 Binary files /dev/null and b/build/production/LIME/resources/images/loadmask/loading.gif differ diff --git a/build/production/LIME/resources/images/menu/checked.png b/build/production/LIME/resources/images/menu/checked.png new file mode 100644 index 00000000..4f5157d8 Binary files /dev/null and b/build/production/LIME/resources/images/menu/checked.png differ diff --git a/build/production/LIME/resources/images/menu/group-checked.png b/build/production/LIME/resources/images/menu/group-checked.png new file mode 100644 index 00000000..a9f0b80f Binary files /dev/null and b/build/production/LIME/resources/images/menu/group-checked.png differ diff --git a/build/production/LIME/resources/images/menu/item-over-disabled.gif b/build/production/LIME/resources/images/menu/item-over-disabled.gif new file mode 100644 index 00000000..97d5ffac Binary files /dev/null and b/build/production/LIME/resources/images/menu/item-over-disabled.gif differ diff --git a/build/production/LIME/resources/images/menu/menu-parent-left.png b/build/production/LIME/resources/images/menu/menu-parent-left.png new file mode 100644 index 00000000..d4575644 Binary files /dev/null and b/build/production/LIME/resources/images/menu/menu-parent-left.png differ diff --git a/build/production/LIME/resources/images/menu/menu-parent.png b/build/production/LIME/resources/images/menu/menu-parent.png new file mode 100644 index 00000000..2d2331ed Binary files /dev/null and b/build/production/LIME/resources/images/menu/menu-parent.png differ diff --git a/build/production/LIME/resources/images/menu/scroll-bottom.png b/build/production/LIME/resources/images/menu/scroll-bottom.png new file mode 100644 index 00000000..d89a459a Binary files /dev/null and b/build/production/LIME/resources/images/menu/scroll-bottom.png differ diff --git a/build/production/LIME/resources/images/menu/scroll-top.png b/build/production/LIME/resources/images/menu/scroll-top.png new file mode 100644 index 00000000..bbbf4af7 Binary files /dev/null and b/build/production/LIME/resources/images/menu/scroll-top.png differ diff --git a/build/production/LIME/resources/images/menu/unchecked.png b/build/production/LIME/resources/images/menu/unchecked.png new file mode 100644 index 00000000..bce8817b Binary files /dev/null and b/build/production/LIME/resources/images/menu/unchecked.png differ diff --git a/build/production/LIME/resources/images/shared/icon-error.png b/build/production/LIME/resources/images/shared/icon-error.png new file mode 100644 index 00000000..458c0989 Binary files /dev/null and b/build/production/LIME/resources/images/shared/icon-error.png differ diff --git a/build/production/LIME/resources/images/shared/icon-info.png b/build/production/LIME/resources/images/shared/icon-info.png new file mode 100644 index 00000000..87046414 Binary files /dev/null and b/build/production/LIME/resources/images/shared/icon-info.png differ diff --git a/build/production/LIME/resources/images/shared/icon-question.png b/build/production/LIME/resources/images/shared/icon-question.png new file mode 100644 index 00000000..cac922e0 Binary files /dev/null and b/build/production/LIME/resources/images/shared/icon-question.png differ diff --git a/build/production/LIME/resources/images/shared/icon-warning.png b/build/production/LIME/resources/images/shared/icon-warning.png new file mode 100644 index 00000000..042ca05c Binary files /dev/null and b/build/production/LIME/resources/images/shared/icon-warning.png differ diff --git a/build/production/LIME/resources/images/sizer/e-handle.png b/build/production/LIME/resources/images/sizer/e-handle.png new file mode 100644 index 00000000..2fe5cb15 Binary files /dev/null and b/build/production/LIME/resources/images/sizer/e-handle.png differ diff --git a/build/production/LIME/resources/images/sizer/ne-handle.png b/build/production/LIME/resources/images/sizer/ne-handle.png new file mode 100644 index 00000000..8d8eb638 Binary files /dev/null and b/build/production/LIME/resources/images/sizer/ne-handle.png differ diff --git a/build/production/LIME/resources/images/sizer/nw-handle.png b/build/production/LIME/resources/images/sizer/nw-handle.png new file mode 100644 index 00000000..9835bea8 Binary files /dev/null and b/build/production/LIME/resources/images/sizer/nw-handle.png differ diff --git a/build/production/LIME/resources/images/sizer/s-handle.png b/build/production/LIME/resources/images/sizer/s-handle.png new file mode 100644 index 00000000..06f914e7 Binary files /dev/null and b/build/production/LIME/resources/images/sizer/s-handle.png differ diff --git a/build/production/LIME/resources/images/sizer/se-handle.png b/build/production/LIME/resources/images/sizer/se-handle.png new file mode 100644 index 00000000..5a2c695c Binary files /dev/null and b/build/production/LIME/resources/images/sizer/se-handle.png differ diff --git a/build/production/LIME/resources/images/sizer/sw-handle.png b/build/production/LIME/resources/images/sizer/sw-handle.png new file mode 100644 index 00000000..7f68f406 Binary files /dev/null and b/build/production/LIME/resources/images/sizer/sw-handle.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-plain-scroll-bottom.png b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-bottom.png new file mode 100644 index 00000000..813a4d54 Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-bottom.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-plain-scroll-left.png b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-left.png new file mode 100644 index 00000000..9120ea42 Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-left.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-plain-scroll-right.png b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-right.png new file mode 100644 index 00000000..67fd5a4b Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-right.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-plain-scroll-top.png b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-top.png new file mode 100644 index 00000000..01ad4ee9 Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-plain-scroll-top.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-scroll-bottom.png b/build/production/LIME/resources/images/tab-bar/default-scroll-bottom.png new file mode 100644 index 00000000..ffff826e Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-scroll-bottom.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-scroll-left.png b/build/production/LIME/resources/images/tab-bar/default-scroll-left.png new file mode 100644 index 00000000..2c352941 Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-scroll-left.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-scroll-right.png b/build/production/LIME/resources/images/tab-bar/default-scroll-right.png new file mode 100644 index 00000000..82dfe01f Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-scroll-right.png differ diff --git a/build/production/LIME/resources/images/tab-bar/default-scroll-top.png b/build/production/LIME/resources/images/tab-bar/default-scroll-top.png new file mode 100644 index 00000000..b2fabfc3 Binary files /dev/null and b/build/production/LIME/resources/images/tab-bar/default-scroll-top.png differ diff --git a/build/production/LIME/resources/images/tab/tab-default-close.png b/build/production/LIME/resources/images/tab/tab-default-close.png new file mode 100644 index 00000000..46cc89f5 Binary files /dev/null and b/build/production/LIME/resources/images/tab/tab-default-close.png differ diff --git a/build/production/LIME/resources/images/toolbar/more.png b/build/production/LIME/resources/images/toolbar/more.png new file mode 100644 index 00000000..b6756e6a Binary files /dev/null and b/build/production/LIME/resources/images/toolbar/more.png differ diff --git a/build/production/LIME/resources/images/toolbar/scroll-left.png b/build/production/LIME/resources/images/toolbar/scroll-left.png new file mode 100644 index 00000000..5ff969ee Binary files /dev/null and b/build/production/LIME/resources/images/toolbar/scroll-left.png differ diff --git a/build/production/LIME/resources/images/toolbar/scroll-right.png b/build/production/LIME/resources/images/toolbar/scroll-right.png new file mode 100644 index 00000000..6fed21a5 Binary files /dev/null and b/build/production/LIME/resources/images/toolbar/scroll-right.png differ diff --git a/build/production/LIME/resources/images/tools/tool-sprites-dark.png b/build/production/LIME/resources/images/tools/tool-sprites-dark.png new file mode 100644 index 00000000..d617c456 Binary files /dev/null and b/build/production/LIME/resources/images/tools/tool-sprites-dark.png differ diff --git a/build/production/LIME/resources/images/tools/tool-sprites.png b/build/production/LIME/resources/images/tools/tool-sprites.png new file mode 100644 index 00000000..17fbc0f1 Binary files /dev/null and b/build/production/LIME/resources/images/tools/tool-sprites.png differ diff --git a/build/production/LIME/resources/images/tree/arrows-rtl.png b/build/production/LIME/resources/images/tree/arrows-rtl.png new file mode 100644 index 00000000..d0777e50 Binary files /dev/null and b/build/production/LIME/resources/images/tree/arrows-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/arrows.png b/build/production/LIME/resources/images/tree/arrows.png new file mode 100644 index 00000000..3f33225e Binary files /dev/null and b/build/production/LIME/resources/images/tree/arrows.png differ diff --git a/build/production/LIME/resources/images/tree/drop-above.png b/build/production/LIME/resources/images/tree/drop-above.png new file mode 100644 index 00000000..57825318 Binary files /dev/null and b/build/production/LIME/resources/images/tree/drop-above.png differ diff --git a/build/production/LIME/resources/images/tree/drop-append.png b/build/production/LIME/resources/images/tree/drop-append.png new file mode 100644 index 00000000..57825318 Binary files /dev/null and b/build/production/LIME/resources/images/tree/drop-append.png differ diff --git a/build/production/LIME/resources/images/tree/drop-below.png b/build/production/LIME/resources/images/tree/drop-below.png new file mode 100644 index 00000000..57825318 Binary files /dev/null and b/build/production/LIME/resources/images/tree/drop-below.png differ diff --git a/build/production/LIME/resources/images/tree/drop-between.png b/build/production/LIME/resources/images/tree/drop-between.png new file mode 100644 index 00000000..57825318 Binary files /dev/null and b/build/production/LIME/resources/images/tree/drop-between.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end-minus-rtl.png b/build/production/LIME/resources/images/tree/elbow-end-minus-rtl.png new file mode 100644 index 00000000..3fbf4d4d Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end-minus-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end-minus.png b/build/production/LIME/resources/images/tree/elbow-end-minus.png new file mode 100644 index 00000000..b39a71df Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end-minus.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end-plus-rtl.png b/build/production/LIME/resources/images/tree/elbow-end-plus-rtl.png new file mode 100644 index 00000000..bea9892c Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end-plus-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end-plus.png b/build/production/LIME/resources/images/tree/elbow-end-plus.png new file mode 100644 index 00000000..630438f2 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end-plus.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end-rtl.png b/build/production/LIME/resources/images/tree/elbow-end-rtl.png new file mode 100644 index 00000000..1d0821b6 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-end.png b/build/production/LIME/resources/images/tree/elbow-end.png new file mode 100644 index 00000000..2eb0ed0c Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-end.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-line-rtl.png b/build/production/LIME/resources/images/tree/elbow-line-rtl.png new file mode 100644 index 00000000..e26b7685 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-line-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-line.png b/build/production/LIME/resources/images/tree/elbow-line.png new file mode 100644 index 00000000..ac374247 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-line.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-minus-nl-rtl.png b/build/production/LIME/resources/images/tree/elbow-minus-nl-rtl.png new file mode 100644 index 00000000..1008a544 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-minus-nl-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-minus-nl.png b/build/production/LIME/resources/images/tree/elbow-minus-nl.png new file mode 100644 index 00000000..f2a805de Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-minus-nl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-minus-rtl.png b/build/production/LIME/resources/images/tree/elbow-minus-rtl.png new file mode 100644 index 00000000..cefb7045 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-minus-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-minus.png b/build/production/LIME/resources/images/tree/elbow-minus.png new file mode 100644 index 00000000..a256b48b Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-minus.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-plus-nl-rtl.png b/build/production/LIME/resources/images/tree/elbow-plus-nl-rtl.png new file mode 100644 index 00000000..e1e6ece6 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-plus-nl-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-plus-nl.png b/build/production/LIME/resources/images/tree/elbow-plus-nl.png new file mode 100644 index 00000000..3a401eaa Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-plus-nl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-plus-rtl.png b/build/production/LIME/resources/images/tree/elbow-plus-rtl.png new file mode 100644 index 00000000..487f27a6 Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-plus-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-plus.png b/build/production/LIME/resources/images/tree/elbow-plus.png new file mode 100644 index 00000000..03e202af Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-plus.png differ diff --git a/build/production/LIME/resources/images/tree/elbow-rtl.png b/build/production/LIME/resources/images/tree/elbow-rtl.png new file mode 100644 index 00000000..166e163d Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/elbow.png b/build/production/LIME/resources/images/tree/elbow.png new file mode 100644 index 00000000..4bf9ae5c Binary files /dev/null and b/build/production/LIME/resources/images/tree/elbow.png differ diff --git a/build/production/LIME/resources/images/tree/folder-open-rtl.png b/build/production/LIME/resources/images/tree/folder-open-rtl.png new file mode 100644 index 00000000..bb896d84 Binary files /dev/null and b/build/production/LIME/resources/images/tree/folder-open-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/folder-open.png b/build/production/LIME/resources/images/tree/folder-open.png new file mode 100644 index 00000000..50397daa Binary files /dev/null and b/build/production/LIME/resources/images/tree/folder-open.png differ diff --git a/build/production/LIME/resources/images/tree/folder-rtl.png b/build/production/LIME/resources/images/tree/folder-rtl.png new file mode 100644 index 00000000..69018798 Binary files /dev/null and b/build/production/LIME/resources/images/tree/folder-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/folder.png b/build/production/LIME/resources/images/tree/folder.png new file mode 100644 index 00000000..4b020540 Binary files /dev/null and b/build/production/LIME/resources/images/tree/folder.png differ diff --git a/build/production/LIME/resources/images/tree/leaf-rtl.png b/build/production/LIME/resources/images/tree/leaf-rtl.png new file mode 100644 index 00000000..b2e6f6e5 Binary files /dev/null and b/build/production/LIME/resources/images/tree/leaf-rtl.png differ diff --git a/build/production/LIME/resources/images/tree/leaf.png b/build/production/LIME/resources/images/tree/leaf.png new file mode 100644 index 00000000..6acb6358 Binary files /dev/null and b/build/production/LIME/resources/images/tree/leaf.png differ diff --git a/build/production/LIME/resources/images/tree/loading.png b/build/production/LIME/resources/images/tree/loading.png new file mode 100644 index 00000000..81b0f125 Binary files /dev/null and b/build/production/LIME/resources/images/tree/loading.png differ diff --git a/build/production/LIME/resources/images/util/splitter/mini-bottom.png b/build/production/LIME/resources/images/util/splitter/mini-bottom.png new file mode 100644 index 00000000..241209e9 Binary files /dev/null and b/build/production/LIME/resources/images/util/splitter/mini-bottom.png differ diff --git a/build/production/LIME/resources/images/util/splitter/mini-left.png b/build/production/LIME/resources/images/util/splitter/mini-left.png new file mode 100644 index 00000000..1c40b787 Binary files /dev/null and b/build/production/LIME/resources/images/util/splitter/mini-left.png differ diff --git a/build/production/LIME/resources/images/util/splitter/mini-right.png b/build/production/LIME/resources/images/util/splitter/mini-right.png new file mode 100644 index 00000000..505c3295 Binary files /dev/null and b/build/production/LIME/resources/images/util/splitter/mini-right.png differ diff --git a/build/production/LIME/resources/images/util/splitter/mini-top.png b/build/production/LIME/resources/images/util/splitter/mini-top.png new file mode 100644 index 00000000..4a378a39 Binary files /dev/null and b/build/production/LIME/resources/images/util/splitter/mini-top.png differ diff --git a/build/production/LIME/resources/images/window/icon-error.gif b/build/production/LIME/resources/images/window/icon-error.gif new file mode 100644 index 00000000..397b655a Binary files /dev/null and b/build/production/LIME/resources/images/window/icon-error.gif differ diff --git a/build/production/LIME/resources/images/window/icon-info.gif b/build/production/LIME/resources/images/window/icon-info.gif new file mode 100644 index 00000000..58281c30 Binary files /dev/null and b/build/production/LIME/resources/images/window/icon-info.gif differ diff --git a/build/production/LIME/resources/images/window/icon-question.gif b/build/production/LIME/resources/images/window/icon-question.gif new file mode 100644 index 00000000..08abd82a Binary files /dev/null and b/build/production/LIME/resources/images/window/icon-question.gif differ diff --git a/build/production/LIME/resources/images/window/icon-warning.gif b/build/production/LIME/resources/images/window/icon-warning.gif new file mode 100644 index 00000000..27ff98b4 Binary files /dev/null and b/build/production/LIME/resources/images/window/icon-warning.gif differ diff --git a/build/production/LIME/resources/stylesheets/extjs4.viewport.css b/build/production/LIME/resources/stylesheets/extjs4.viewport.css index 092375de..2c4a2429 100644 --- a/build/production/LIME/resources/stylesheets/extjs4.viewport.css +++ b/build/production/LIME/resources/stylesheets/extjs4.viewport.css @@ -96,4 +96,12 @@ /* Temporary trick to hide codemirror errors */ .cm-s-default span.cm-error { color: #117700; +} + +.forbidden-row .x-grid-cell { + color: #B5BCB5; +} + +.forbidden-cell .x-grid-cell { + color: #FF0000; } \ No newline at end of file diff --git a/build/production/LIME/resources/tiny_mce/css/content.css b/build/production/LIME/resources/tiny_mce/css/content.css index 55a892d1..480f1008 100644 --- a/build/production/LIME/resources/tiny_mce/css/content.css +++ b/build/production/LIME/resources/tiny_mce/css/content.css @@ -8,11 +8,30 @@ } */ +body { + font-size: .8em; +} + .breaking { + border: 0; margin : 2px; - padding-bottom: 10px; + background-color: rgba(0,0,0,0); + display: block; +} + +hr[data-mce-selected] { + outline: 0px solid black; +} + +.breaking:hover { } .bill { -webkit-overflow-scrolling: touch; -} \ No newline at end of file +} + +*[focused = 'true'] { + -webkit-box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); + -moz-box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); + box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); +} diff --git a/build/production/LIME/resources/xslt/AknAttributesNormalizer.xsl b/build/production/LIME/resources/xslt/AknAttributesNormalizer.xsl index 89eb2e12..8838d887 100644 --- a/build/production/LIME/resources/xslt/AknAttributesNormalizer.xsl +++ b/build/production/LIME/resources/xslt/AknAttributesNormalizer.xsl @@ -18,6 +18,11 @@ version="1.0"> + + + + + diff --git a/build/production/LIME/resources/xslt/AknToPdf.xsl b/build/production/LIME/resources/xslt/AknToPdf.xsl index 48c7741d..0ee98dd3 100644 --- a/build/production/LIME/resources/xslt/AknToPdf.xsl +++ b/build/production/LIME/resources/xslt/AknToPdf.xsl @@ -2,7 +2,6 @@ diff --git a/resources/xslt/AknToPdf.xsl b/build/production/LIME/resources/xslt/AknToPdfCh.xsl similarity index 99% rename from resources/xslt/AknToPdf.xsl rename to build/production/LIME/resources/xslt/AknToPdfCh.xsl index 48c7741d..0ee98dd3 100644 --- a/resources/xslt/AknToPdf.xsl +++ b/build/production/LIME/resources/xslt/AknToPdfCh.xsl @@ -2,7 +2,6 @@ diff --git a/build/production/LIME/resources/xslt/AknToPdfGeneric.xsl b/build/production/LIME/resources/xslt/AknToPdfGeneric.xsl new file mode 100644 index 00000000..01f587fb --- /dev/null +++ b/build/production/LIME/resources/xslt/AknToPdfGeneric.xsl @@ -0,0 +1,144 @@ + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/production/LIME/resources/xslt/AknToPdfSemiGeneric.xsl b/build/production/LIME/resources/xslt/AknToPdfSemiGeneric.xsl new file mode 100644 index 00000000..bbd47250 --- /dev/null +++ b/build/production/LIME/resources/xslt/AknToPdfSemiGeneric.xsl @@ -0,0 +1,507 @@ + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + EMPTY DOCUMENT. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + + + + + 120% + + + 80% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + italic + + + + + right + right + right + right + right + left + justify + + + + + + + + + + 25% + 50% + + + + + 75% + 50% + + + + + 110px + 230px + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/production/LIME/resources/xslt/AknToXhtml30.xsl b/build/production/LIME/resources/xslt/AknToXhtml30.xsl index 343f2359..f04b5071 100644 --- a/build/production/LIME/resources/xslt/AknToXhtml30.xsl +++ b/build/production/LIME/resources/xslt/AknToXhtml30.xsl @@ -3,7 +3,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD08" + xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD10" exclude-result-prefixes="xs" version="1.0"> @@ -120,10 +120,13 @@ akn:amendmentJustification | akn:introduction | akn:background | + akn:collectionBody | + akn:component | akn:arguments | akn:remedias | akn:motivation | akn:decision | + akn:mod | akn:fragmentBody ">
      @@ -189,7 +192,8 @@ - +
      @@ -271,8 +275,7 @@ - + + +
      + + + + + +

      +
      +
      + + + + + + + + + + + + + + + + + + + + + diff --git a/build/production/LIME/resources/xslt/CleanConvertedHtml.xsl b/build/production/LIME/resources/xslt/CleanConvertedHtml.xsl index c02de5e1..e97fd956 100644 --- a/build/production/LIME/resources/xslt/CleanConvertedHtml.xsl +++ b/build/production/LIME/resources/xslt/CleanConvertedHtml.xsl @@ -6,18 +6,34 @@ - + + + + + + + + + + + +
      - + + +
      +
      + + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/production/LIME/resources/xslt/CleanConvertedHtml_original.xsl b/build/production/LIME/resources/xslt/CleanConvertedHtml_original.xsl new file mode 100644 index 00000000..c02de5e1 --- /dev/null +++ b/build/production/LIME/resources/xslt/CleanConvertedHtml_original.xsl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + + +
      \ No newline at end of file diff --git a/build/production/LIME/resources/xslt/HtmlToAkn3.0.xsl b/build/production/LIME/resources/xslt/HtmlToAkn3.0.xsl index e24ebfd0..51823809 100644 --- a/build/production/LIME/resources/xslt/HtmlToAkn3.0.xsl +++ b/build/production/LIME/resources/xslt/HtmlToAkn3.0.xsl @@ -38,6 +38,13 @@
      + + + + + + + @@ -115,6 +122,41 @@
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/examples/editorStartContent-en.html b/config/examples/editorStartContent-en.html index d24b82c6..ea468109 100644 --- a/config/examples/editorStartContent-en.html +++ b/config/examples/editorStartContent-en.html @@ -1,5 +1,5 @@ -
      - -

      Welcome to the Language Independent Markup Editor


      +
      + +

      Welcome to the Language Independent Markup Editor

      To start using the editor click on the File menu and create a new document, import a document or open an example.

      diff --git a/config/examples/editorStartContent-es.html b/config/examples/editorStartContent-es.html index d24b82c6..ea468109 100644 --- a/config/examples/editorStartContent-es.html +++ b/config/examples/editorStartContent-es.html @@ -1,5 +1,5 @@ -
      - -

      Welcome to the Language Independent Markup Editor


      +
      + +

      Welcome to the Language Independent Markup Editor

      To start using the editor click on the File menu and create a new document, import a document or open an example.

      diff --git a/config/examples/editorStartContent-it.html b/config/examples/editorStartContent-it.html index 8474014f..b1791356 100644 --- a/config/examples/editorStartContent-it.html +++ b/config/examples/editorStartContent-it.html @@ -1,5 +1,5 @@ -
      - -

      Benvenuti nel "Language Independent Markup Editor"


      +
      + +

      Benvenuti nel "Language Independent Markup Editor"

      Per iniziare ad usare l'editor importa un documento o apri uno degli esempi.

      diff --git a/config/examples/editorStartContent-ro.html b/config/examples/editorStartContent-ro.html index d24b82c6..ea468109 100644 --- a/config/examples/editorStartContent-ro.html +++ b/config/examples/editorStartContent-ro.html @@ -1,5 +1,5 @@ -
      - -

      Welcome to the Language Independent Markup Editor


      +
      + +

      Welcome to the Language Independent Markup Editor

      To start using the editor click on the File menu and create a new document, import a document or open an example.

      diff --git a/config/examples/editorStartContent-ru.html b/config/examples/editorStartContent-ru.html index d24b82c6..ea468109 100644 --- a/config/examples/editorStartContent-ru.html +++ b/config/examples/editorStartContent-ru.html @@ -1,5 +1,5 @@ -
      - -

      Welcome to the Language Independent Markup Editor


      +
      + +

      Welcome to the Language Independent Markup Editor

      To start using the editor click on the File menu and create a new document, import a document or open an example.

      diff --git a/config/locale/lang-es.json b/config/locale/lang-es.json index 147d388e..5b0af871 100644 --- a/config/locale/lang-es.json +++ b/config/locale/lang-es.json @@ -84,7 +84,7 @@ }, "typeNotSupported": "Este tipo de archivo no es (todavía) compatible con arrastrar y soltar", "uploadError": "Se produjo un error al cargar el archivo.
      Inténtelo de nuevo.", - "savedToTpl": "El documento {docName} se salvó con éxito en {docUrl}", + "savedToTpl": "El documento {docName} se guardó con éxito en {docUrl}", "saveAs": "Guardar como ...", "welcome": "Bienvenido", "continueStr": "Continuar", diff --git a/config/locale/languages.json b/config/locale/languages.json index da685872..4e6d7c02 100644 --- a/config/locale/languages.json +++ b/config/locale/languages.json @@ -545,7 +545,7 @@ "name": "Fon" }, { - "code": "fre", + "code": "fra", "name": "French" }, { @@ -597,7 +597,7 @@ "name": "Georgian" }, { - "code": "ger", + "code": "deu", "name": "German" }, { diff --git a/languagesPlugins/akoma3.0/AknToXhtml.xsl b/languagesPlugins/akoma3.0/AknToXhtml.xsl new file mode 100644 index 00000000..38bdf66c --- /dev/null +++ b/languagesPlugins/akoma3.0/AknToXhtml.xsl @@ -0,0 +1,579 @@ + + + + + + + + + +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + +
      +
      + + + +
      + + + + + + + + + + +
      +
      + + + +
      + + + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + +
      + + + +
      +
      + + + +
      + + + + + + + + + + +
      +
      + + + + +
      + + + + + + + + + + +
      +
      + + + +
      + + + + + + + + +
      +
      + + + + + + + + + + + + + + + + + + + +

      + + + + + + + + + + +

      +
      + + +
      + + + + + +

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      +
      +
      \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/HtmlToAkn.xsl b/languagesPlugins/akoma3.0/HtmlToAkn.xsl new file mode 100644 index 00000000..4f16910d --- /dev/null +++ b/languagesPlugins/akoma3.0/HtmlToAkn.xsl @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      + +

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/Language.js b/languagesPlugins/akoma3.0/client/Language.js index b4a9deb9..f3e8f702 100644 --- a/languagesPlugins/akoma3.0/client/Language.js +++ b/languagesPlugins/akoma3.0/client/Language.js @@ -1,48 +1,48 @@ /* - * Copyright (c) 2014 - Copyright holders CIRSFID and Department of - * Computer Science and Engineering of the University of Bologna - * - * Authors: - * Monica Palmirani – CIRSFID of the University of Bologna - * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna - * Luca Cervone – CIRSFID of the University of Bologna - * - * Permission is hereby granted to any person obtaining a copy of this - * software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The Software can be used by anyone for purposes without commercial gain, - * including scientific, individual, and charity purposes. If it is used - * for purposes having commercial gains, an agreement with the copyright - * holders is required. The above copyright notice and this permission - * notice shall be included in all copies or substantial portions of the - * Software. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders and authors shall not be used in advertising or otherwise to - * promote the sale, use or other dealings in this Software without prior - * written authorization. - * - * The end-user documentation included with the redistribution, if any, - * must include the following acknowledgment: "This product includes - * software developed by University of Bologna (CIRSFID and Department of - * Computer Science and Engineering) and its authors (Monica Palmirani, - * Fabio Vitali, Luca Cervone)", in the same place and form as other - * third-party acknowledgments. Alternatively, this acknowledgment may - * appear in the software itself, in the same form and location as other - * such third-party acknowledgments. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ /** * Language dependent utilities @@ -51,33 +51,102 @@ Ext.define('LIME.ux.Language', { /* Since this is merely a utility class define it as a singleton (static members by default) */ singleton : true, alternateClassName : 'Language', - - name: 'Akoma ntoso', - + + name : 'Akoma ntoso', + + config : { + elementIdAttribute: "eId", + attributePrefix: "akn_", + metadataStructure : {}, + abbreviations : { + "adjournment" : "adj", + "administrationOfOath" : "admoath", + "address" : "addr", + "answer" : "ans", + "article" : "art", + "attachment" : "att", + "chapter" : "chp", + "citation" : "cit", + "citations" : "cits", + "clause" : "cl", + "component" : "cmp", + "communication" : "comm", + "componentRef" : "cref", + "debateSection" : "dbtsec", + "declarationOfVote" : "dclvote", + "documentRef" : "dref", + "embeddedStructure" : "estr", + "embeddedText" : "etxt", + "fragment" : "frag", + "heading" : "hdg", + "intro" : "intro", + "listIntroduction" : "intro", + "blockList" : "list", + "list" : "list", + "party" : "lwr", + "ministerialStatements" : "mnstm", + "noticesOfMotion" : "ntcmot", + "nationalInterest" : "ntnint", + "oralStatements" : "orlstm", + "paragraph" : "para", + "pointOfOrder" : "pntord", + "proceduralMotions" : "prcmot", + "personalStatements" : "prnstm", + "prayers" : "pry", + "petitions" : "pts", + "question" : "qst", + "quotedStructure" : "qstr", + "questions" : "qsts", + "quotedText" : "qtxt", + "recital" : "rec", + "recitals" : "recs", + "rollCall" : "roll", + "resolutions" : "res", + "section" : "sec", + "subchapter" : "subchp", + "subclause" : "subcl", + "subheading" : "subhdg", + "subparagraph" : "subpara", + "subsection" : "subsec", + "transitional" : "trans", + "listWrap" : "wrap", + "wrap" : "wrap", + "writtenStatements" : "wrtst" + }, + noContextElements : ["listIntroduction", "listConclusion", "docDate", "docNumber", "docTitle", "location", "docType", "heading", "num", "proponent", "signature", "role", "person", "quotedText", "subheading", "ref", "mref", "rref", "date", "time", "organization", "concept", "object", "event", "process", "from", "term", "quantity", "def", "entity", "courtType", "neutralCitation", "party", "judge", "lower", "scene", "opinion", "argument", "affectedDocument", "relatedDocument", "change", "inline", "mmod", "rmod", "remark", "recorderedTime", "vote", "outcome", "ins", "del", "legislature", "session", "shortTitle", "docPurpose", "docCommittee", "docIntroducer", "docStage", "docStatus", "docJurisdiction", "docketNumber", "placeholder", "fillIn", "decoration", "docProponent", "omissis", "extractText", "narrative", "summery", "tocItem"], + prefixSeparator: "__", + numSeparator: "_" + }, + /** - * Translate the content based on an external web service (called by + * Translate the content based on an external web service (called by * an ajax request) which uses a XSLT stylesheet. * If the ajax request is successful the success callback is called. * Note that this function doesn't return anything since it asynchronously * call callback functions. - * + * * @param {String} content The content to translate - * @param {Object} callbacks Functions to call after translating + * @param {Object} callbacks Functions to call after translating */ translateContent : function(content, markingLanguage, callbacks) { - + var params = { + requestedService : Statics.services.xsltTrasform, + output : 'akn', + input : content, + markingLanguage : markingLanguage + }, transformFile = Config.getLanguageTransformationFile("LIMEtoLanguage"); + if (transformFile) { + params = Ext.merge(params, { + transformFile : transformFile + }); + } //Calling the translate service Ext.Ajax.request({ // the url of the web service url : Utilities.getAjaxUrl(), method : 'POST', // send the content in XML format - params : { - requestedService : Statics.services.xsltTrasform, - output : 'akn', - input : content, - markingLanguage: markingLanguage - }, + params : params, scope : this, // if the translation was performed success : function(result, request) { @@ -85,8 +154,35 @@ Ext.define('LIME.ux.Language', { callbacks.success(result.responseText); } }, - failure: callbacks.failure + failure : callbacks.failure }); + }, + + getLanguageMarkingId : function(element, langPrefix, root) { + var me = this, elementId = element.getAttribute(DomUtils.elementIdAttribute), + button = DomUtils.getButtonByElement(element), elName, + markedParent, markingId = "", attributeName = langPrefix + DomUtils.langElementIdAttribute, + parentId, elNum = 1, siblings, elIndexInParent; + if (elementId && button) { + elName = button.name; + markedParent = DomUtils.getFirstMarkedAncestor(element.parentNode); + if(markedParent){ + if(markedParent.getAttribute(attributeName)) { + markingId = markedParent.getAttribute(attributeName)+me.getPrefixSeparator(); + } + siblings = markedParent.querySelectorAll("*[class~="+elName+"]"); + } else { + siblings = root.querySelectorAll("*[class~="+elName+"]"); + } + + if(siblings.length) { + elIndexInParent = Array.prototype.indexOf.call(siblings, element); + elNum = (elIndexInParent!=-1) ? elIndexInParent+1 : elNum; + } + + elName = (me.getAbbreviations()[elName]) ? (me.getAbbreviations()[elName]) : elName; + markingId += elName+me.getNumSeparator()+elNum; + } + return markingId; } - -}); \ No newline at end of file +}); diff --git a/languagesPlugins/akoma3.0/client/LoadPlugin.js b/languagesPlugins/akoma3.0/client/LoadPlugin.js index b28f5ca3..3a3f8c49 100644 --- a/languagesPlugins/akoma3.0/client/LoadPlugin.js +++ b/languagesPlugins/akoma3.0/client/LoadPlugin.js @@ -51,38 +51,44 @@ Ext.define('LIME.ux.LoadPlugin', { singleton : true, alternateClassName : 'LoadPlugin', - - metadataClass : 'meta', - authorialNoteClass : 'authorialNote', - changePosAttr: 'chposid', - changePosTargetAttr: 'chpos_id', - refToAttribute: 'refto', - - supLinkTemplate : new Ext.Template('{markerNumber}'), + + config: { + authorialNoteClass: 'authorialNote', + metadataClass: 'meta', + refToAttribute: 'noteref', + noteTmpId: 'notetmpid', + tmpSpanCls: 'posTmpSpan' + }, beforeLoad : function(params) { var metaResults = [], extdom, documents, treeData = []; if (params.docDom) { extdom = new Ext.Element(params.docDom); documents = extdom.query("*[class~=" + DocProperties.documentBaseClass + "]"); - Ext.each(documents, function(doc, index) { - metaResults.push(Ext.Object.merge(this.processMeta(doc, params), {docDom: doc})); - }, this); - - this.processNotes(extdom); + if(documents.length) { + Ext.each(documents, function(doc, index) { + metaResults.push(Ext.Object.merge(this.processMeta(doc, params), {docDom: doc})); + }, this); + } else { + metaResults.push(this.processMeta(null, params)); + } + this.preProcessNotes(params.docDom); + // Set the properties of main document which is the first docuemnt found - if (metaResults[0]) { - // params object contains properties inserted by user, - // metaResults contains properties founded in the document - metaResults[0].docLang = metaResults[0].docLang || params.docLang; - metaResults[0].docLocale = metaResults[0].docLocale || params.docLocale; - metaResults[0].docType = metaResults[0].docType || params.docType; - params.docLang = metaResults[0].docLang; - params.docLocale = metaResults[0].docLocale; - params.docType = metaResults[0].docType; - params.metaDom = metaResults[0].metaDom; - } + // params object contains properties inserted by user, + // metaResults contains properties founded in the document + metaResults[0].docLang = metaResults[0].docLang || params.docLang; + metaResults[0].docLocale = metaResults[0].docLocale || params.docLocale; + metaResults[0].docType = metaResults[0].docType || params.docType; + params.docLang = metaResults[0].docLang; + params.docLocale = metaResults[0].docLocale; + params.docType = metaResults[0].docType; + params.metaDom = metaResults[0].metaDom; + } else { + metaResults.push(this.processMeta(null, params)); + metaResults[0].docType = params.docType; + params.metaDom = metaResults[0].metaDom; } params.treeData = treeData; params.metaResults = metaResults; @@ -90,64 +96,113 @@ Ext.define('LIME.ux.LoadPlugin', { }, afterLoad : function(params, app) { + var me = this, + schemaUrl = Config.getLanguageSchemaPath(), + langId = Language.getAttributePrefix()+Language.getElementIdAttribute(); + Ext.Ajax.request({ + url : schemaUrl, + method : 'GET', + scope : this, + success : function(result, request) { + var doc = DomUtils.parseFromString(result.responseText); + if(doc) { + me.langSchema = doc; + me.getMetaDataStructure(doc); + } + } + }); + //TODO: remove all existent language id + /*var elementsWithId = params.docDom.querySelectorAll("["+langId+"]"); + Ext.each(elementsWithId, function(element) { + var id = element.getAttribute(langId); + console.log(id); + });*/ + }, + + + getMetaDataStructure: function(schemaDoc) { + var me = this; + var elements = me.getSchemaElements(schemaDoc, "meta"); + if(elements) { + Language.setMetadataStructure(elements); + } + }, + + + getSchemaElements: function(schema, elementName) { + var me = this, + element = schema.querySelector("element[name = '"+elementName+"']"), + children = [], + obj = {}; + if(element) { + obj.name = elementName; + Ext.each(element.querySelectorAll("element"), function(child) { + var name = child.getAttribute("ref"), + chObj = me.getSchemaElements(schema, name); + if(chObj) { + children.push(chObj); + } + }); + obj.children = children; + } else { + return null; + } + return obj; }, processMeta: function(doc, params) { - var extdom = new Ext.Element(doc), - meta = extdom.down("*[class=" + this.metadataClass + "]"), - result = {}; - - result.docType = DomUtils.getDocTypeByNode(doc); + var extdom, meta, result = {}, ownDoc; + result.docMarkingLanguage = params.docMarkingLanguage; - if (meta && meta.dom.parentNode) { - var language = meta.down("*[class=FRBRlanguage]", true), - country = meta.down("*[class=FRBRcountry]", true); - - if (language) { - result.docLang = language.getAttribute('language'); - } - if (country) { - result.docLocale = country.getAttribute('value'); + + if(!doc || !doc.querySelector("*[class="+this.getMetadataClass()+"]")) { + result.metaDom = this.createBlankMeta(); + } else { + extdom = new Ext.Element(doc); + meta = extdom.down("*[class=" + this.getMetadataClass() + "]"); + result = {}, ownDoc = doc.ownerDocument; + result.docType = DomUtils.getDocTypeByNode(doc); + if (meta && meta.dom.parentNode) { + var language = meta.down("*[class=FRBRlanguage]", true), + country = meta.down("*[class=FRBRcountry]", true); + + if (language) { + result.docLang = language.getAttribute('language'); + } + if (country) { + result.docLocale = country.getAttribute('value'); + } + result.metaDom = meta.dom.parentNode.removeChild(meta.dom); } - result.metaDom = meta.dom.parentNode.removeChild(meta.dom); - } + } + return result; }, - processNotes : function(extdom) { - var athNotes = extdom.query("*[class~=" + this.authorialNoteClass + "]"), - linkTemplate = this.supLinkTemplate, - authCounter = 0; + createBlankMeta: function() { + var meta = Utilities.jsonToHtml(Config.getLanguageConfig().metaTemplate); + if(meta) { + meta.setAttribute('class', this.getMetadataClass()); + return meta; + } + }, + + /* + * Is important to call this function before loading the document in the editor. + * */ + preProcessNotes : function(dom) { + var athNotes = dom.querySelectorAll("*[class~=" + this.getAuthorialNoteClass() + "]"), + markerTemplate = new Ext.Template(''); Ext.each(athNotes, function(element, index) { - var parent = element.parentNode, - markerNumber = element.getAttribute('akn_marker'), - elId = 'athNote_' + index, - tmpElement, link, tmpExtEl; - - while(!markerNumber) { - var newMarker = 'note'+(++authCounter); - if (extdom.query("*[akn_marker=" + newMarker + "]").length == 0) { - markerNumber = newMarker; - } - } - tmpElement = Ext.DomHelper.createDom({ - tag : 'span', - cls: 'posTmpSpan', - html : linkTemplate.apply({ - 'markerNumber' : markerNumber - }) - }); - tmpElement.querySelector('a').setAttribute(this.refToAttribute, elId); - //TODO: move to constants - tmpElement.setAttribute(this.changePosAttr, elId); - element.setAttribute(this.changePosTargetAttr, elId); - element = parent.replaceChild(tmpElement, element); - //TODO: imporve this - if (parent.nextSibling) { - parent.parentNode.insertBefore(element, parent.nextSibling); - } else { - parent.parentNode.appendChild(element); + var noteTmpId = "note_"+index; + Ext.DomHelper.insertHtml("beforeBegin", element, markerTemplate.apply({ + 'ref' : noteTmpId + })); + element.setAttribute(this.getNoteTmpId(), noteTmpId); + // Move the element to the end of parent to prevent split in parent + if(element.nextSibling) { + element.parentNode.appendChild(element); } }, this); } diff --git a/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js b/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js index dab91d34..cc03ec72 100644 --- a/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js +++ b/languagesPlugins/akoma3.0/client/aknPreview/AknPreviewController.js @@ -62,10 +62,15 @@ Ext.define('LIME.controller.AknPreviewController', { }, doTranslate: function() { - var me = this; - me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { - me.updateContent(xml); - }, this.getXml()); + if(this.getXml()) { + var me = this, + activeTab = this.getXml().up("main").getActiveTab(); + if (activeTab == this.getXml()) { + me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { + me.updateContent(xml); + }, this.getXml()); + } + } }, /** @@ -79,6 +84,16 @@ Ext.define('LIME.controller.AknPreviewController', { } }, + onRemoveController: function() { + var me = this; + me.application.removeListener(Statics.eventsNames.afterLoad, me.doTranslate, me); + }, + + onInitPlugin: function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.doTranslate, me); + }, + init : function() { var me = this; this.control({ diff --git a/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js b/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js index 75efbf5b..f6cad383 100644 --- a/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js +++ b/languagesPlugins/akoma3.0/client/documentCollection/DocumentCollectionController.js @@ -61,7 +61,9 @@ Ext.define('LIME.controller.DocumentCollectionController', { }], config: { - pluginName: "documentCollection" + pluginName: "documentCollection", + colModSuffix: "-mod", + docColAlternateType: "documentCollectionContent" }, onDocumentLoaded : function(docConfig) { @@ -88,24 +90,24 @@ Ext.define('LIME.controller.DocumentCollectionController', { if (docConfig.docType != "documentCollection") { tabPanel.setActiveTab(0); tabPanel.getTabBar().items.items[1].disable(); + } else { + // Wrap beforeTrasnalte for customizate it + TranslatePlugin.beforeTranslate = function(params) { + var newParams = Ext.Function.bind(beforeTranslate, TranslatePlugin, [params])() || params; + return me.docCollectionBeforeTranslate(newParams); + }; } } - if (docConfig.docType == "documentCollection") { + if (docConfig.docType == "documentCollection" && !docConfig.colectionMod) { tabPanel.setActiveTab(collTab); tabPanel.getTabBar().items.items[0].disable(); app.fireEvent(Statics.eventsNames.disableEditing); } else { app.fireEvent(Statics.eventsNames.enableEditing); } - + me.selectActiveDocument(docConfig.treeDocId, true); - - // Wrap beforeTrasnalte for customizate it - TranslatePlugin.beforeTranslate = function(params) { - var newParams = Ext.Function.bind(beforeTranslate, TranslatePlugin, [params])() || params; - return me.docCollectionBeforeTranslate(newParams); - }; }, newDocumentCollection : function(modify) { @@ -177,18 +179,16 @@ Ext.define('LIME.controller.DocumentCollectionController', { var me = this, editor = me.getController('Editor'), newSnapshot = me.createEditorSnapshot(), snapshotDoc, newSnapshot, editorDoc, editorDocId; - if (newSnapshot.dom) { editorDoc = newSnapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"]"); if (editorDoc) { editorDocId = editorDoc.getAttribute(DocProperties.docIdAttribute); - if (editorDocId === 0) { - snapshot.dom = newSnapshot.dom; + if(me.isDocColMod(editorDoc)) { + snapshot.dom = me.docColModToSnapshot(editorDoc, editorDocId, snapshot); + } else if (parseInt(editorDocId) === 0) { + snapshot.dom = newSnapshot.dom; } else { - snapshotDoc = snapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"='" + editorDocId + "']"); - if (snapshotDoc && snapshotDoc.parentNode) { - snapshotDoc.parentNode.replaceChild(editorDoc, snapshotDoc); - } + Utilities.replaceChildByQuery(snapshot.dom, "["+DocProperties.docIdAttribute+"='" + editorDocId + "']", editorDoc); } snapshot.content = DomUtils.serializeToString(snapshot.dom); } @@ -196,31 +196,48 @@ Ext.define('LIME.controller.DocumentCollectionController', { return Ext.merge(snapshot, {editorDocId: editorDocId}); }, + isDocColMod: function(doc) { + var colMod = parseInt(doc.getAttribute("colmod")); + if(isNaN(colMod)) { + return false; + } + return (colMod) ? true : false; + }, + docToTreeData: function(doc, dom, textSufix, qtip) { var res = {}, collBody, children, docChildren = [], languageController = this.getController("Language"), langPrefix = languageController.getLanguagePrefix(), chDoc, cmpDoc; if (doc) { + if(Ext.DomQuery.is(doc, "[class~=documentCollection]")) { + docChildren.push({text: doc.getAttribute(langPrefix+"name") || "collection", + leaf: true, + id: doc.getAttribute("docid")+this.getColModSuffix(), + qtip: "collection"}); + } collBody = doc.querySelector("*[class*=collectionBody]"); - children = (collBody) ? collBody.childNodes : []; + children = (collBody) ? DomUtils.filterMarkedNodes(collBody.childNodes) : []; for (var i = 0; i < children.length; i++) { cmpDoc = children[i]; if (cmpDoc.getAttribute("class").indexOf("component") != -1) { - cmpDoc = cmpDoc.firstChild; + cmpDoc = DomUtils.filterMarkedNodes(cmpDoc.childNodes)[0]; } - if (cmpDoc.getAttribute("class").indexOf("documentRef") != -1) { - var docRef = cmpDoc.getAttribute(langPrefix+"href"); - docRef = (docRef) ? docRef.substr(1) : ""; //Removing the '#' - if (docRef) { - chDoc = dom.querySelector("*["+langPrefix+"currentId="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]") - || dom.querySelector("*["+langPrefix+"currentid="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]"); - if (chDoc) { - docChildren.push(this.docToTreeData(chDoc, dom, '#'+docRef, cmpDoc.getAttribute(langPrefix+"showAs"))); + if(cmpDoc) { + if (DomUtils.getElementNameByNode(cmpDoc) == "documentRef") { + var docRef = cmpDoc.getAttribute(langPrefix+"href"); + docRef = (docRef) ? docRef.substr(1) : ""; //Removing the '#' + if (docRef) { + chDoc = dom.querySelector("*[class~='components'] *["+langPrefix+Language.getElementIdAttribute()+"="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]") + || dom.querySelector("*[class~='components'] *["+langPrefix+Language.getElementIdAttribute().toLowerCase()+"="+docRef+"] *[class*="+DocProperties.documentBaseClass+"]"); + if (chDoc) { + docChildren.push(this.docToTreeData(chDoc, dom, '#'+docRef, cmpDoc.getAttribute(langPrefix+"showAs"))); + } } + } else if(cmpDoc.getAttribute("class").indexOf(DocProperties.documentBaseClass) != -1) { + docChildren.push(this.docToTreeData(cmpDoc, dom)); } - } else if(cmpDoc.getAttribute("class").indexOf(DocProperties.documentBaseClass) != -1) { - docChildren.push(this.docToTreeData(cmpDoc, dom)); } + } res = {text:DomUtils.getDocTypeByNode(doc) + ((textSufix) ? " "+ textSufix : ""), children: docChildren, @@ -342,9 +359,11 @@ Ext.define('LIME.controller.DocumentCollectionController', { switchDoc: function(config) { var me = this, app = me.application, editor = me.getController('Editor'), - docId = config.id, + docId = Ext.isString(config.id) ? parseInt(config.id) : config.id, docMeta = DocProperties.docsMeta[docId], - snapshot = me.completeEditorSnapshot; + colMod = Ext.isString(config.id) ? (config.id.indexOf(me.getColModSuffix()) != -1) : false; + snapshot = me.completeEditorSnapshot, prevColMod = 0; + if (snapshot && snapshot.dom) { /* Before loading a new document we need to update * the snapshot with new content from the editor @@ -352,11 +371,58 @@ Ext.define('LIME.controller.DocumentCollectionController', { newSnapshot = me.updateEditorSnapshot(snapshot); // Select the document in the snapshot and load it doc = (docId === 0) ? snapshot.dom : snapshot.dom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"); - if (doc && parseInt(docId) != parseInt(newSnapshot.editorDocId)) { - app.fireEvent(Statics.eventsNames.loadDocument, - Ext.Object.merge(docMeta, {docText: DomUtils.serializeToString(doc), lightLoad: true, treeDocId: docId})); + prevColMod = doc.querySelector("[colmod]"); + prevColMod = (prevColMod) ? parseInt(prevColMod.getAttribute("colmod")) : 0; + if (doc && ((docId != parseInt(newSnapshot.editorDocId)) || colMod || prevColMod)) { + if(colMod) { + doc = me.snapshotToDocColMod(snapshot, docId); + docTypeAlternateName = ""; + } + var docEl = doc.querySelector("["+DocProperties.docIdAttribute+"]"); + if(docEl) { + docEl.setAttribute("colmod", (colMod) ? 1 : 0); + } + app.fireEvent(Statics.eventsNames.loadDocument, Ext.Object.merge(docMeta, { + docMarkingLanguage: Config.getLanguage(), + docText : DomUtils.serializeToString(doc), + alternateDocType: (colMod) ? me.getDocColAlternateType() : null, + lightLoad : true, + treeDocId : config.id, + colectionMod : colMod + })); + } + } + }, + + snapshotToDocColMod: function(snapshot, docId) { + // Create a temporary copy of the snapshot, don't modify it directly! + var breakingElement, completeSnapshotDom = DomUtils.parseFromString(snapshot.content), + doc = (docId === 0) ? completeSnapshotDom : completeSnapshotDom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"), + docCol = completeSnapshotDom.querySelector("*["+DocProperties.docIdAttribute+"='" + docId + "']"), + colBody; + Utilities.removeNodeByQuery(doc, "[class=components]"); + if(docCol) { + colBody = docCol.querySelector("[class*=collectionBody]"); + //Utilities.removeNodeByQuery(docCol, "[class*=collectionBody]"); + if(colBody) { + // Add breaking element to be able to insert text + Ext.DomHelper.insertHtml('beforeBegin', colBody, "

      "); } } + return doc; + }, + + docColModToSnapshot: function(doc, docId, snapshot) { + var completeSnapshotDom = DomUtils.parseFromString(snapshot.content), oldDoc, collectionBody; + if (completeSnapshotDom) { + /*oldDoc = completeSnapshotDom.querySelector("["+DocProperties.docIdAttribute+"='" + docId + "']"); + if (oldDoc) { + collectionBody = oldDoc.querySelector("[class*=collectionBody]"); + doc.appendChild(collectionBody); + }*/ + Utilities.replaceChildByQuery(completeSnapshotDom, "["+DocProperties.docIdAttribute+"='" + docId + "']", doc); + } + return completeSnapshotDom; }, getDocumentsFromSnapshot: function(snapshot) { diff --git a/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js b/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js new file mode 100644 index 00000000..5569c698 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/metadataManager/MetaGrid.js @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +Ext.define('LIME.ux.metadataManager.MetaGrid', { + + extend : 'Ext.grid.Panel', + + requires : ['Ext.grid.plugin.CellEditing'], + + alias : 'widget.metaGrid', + + config : { + pluginName : "metadataManager", + genericColumn: { + resizable : false, + hideable : false, + menuDisabled : true, + editor : { + selectOnFocus : true, + allowBlank : false + } + } + }, + columns : [], + plugins : [{ + ptype : "cellediting", + pluginId : 'cellediting', + clicksToEdit : 1 + }], + tools : [{ + type : 'plusUri', + tooltip : Locale.getString("addUri", "uriManager"), + listeners : { + afterrender : function(cmp) { + this.up("metaGrid").setAddIcon(cmp); + } + } + }], + setAddIcon : function(cmp) { + cmp.toolEl.removeCls("x-tool-plus"); + cmp.toolEl.setStyle("backgroundImage", 'url("resources/images/icons/add.png")'); + }, + initComponent: function() { + var me = this, templateColumn = me.getGenericColumn(); + me.columns = []; + Ext.each(me.columnsNames, function(name) { + var column = Ext.merge(Ext.clone(templateColumn), { + text: Ext.String.capitalize(name.replace("akn_", "")), + dataIndex: name, + flex: 1 + }); + if(me.customColumns && Ext.isArray(me.customColumns[name])) { + column.editor.xtype = "combo"; + var store = Ext.create('Ext.data.Store', { + fields: ["type"], + data : me.customColumns[name].map(function(el) {return {"type": el};}) + }); + column.editor.store = store; + column.editor.queryMode = 'local'; + column.editor.displayField = 'type'; + column.editor.valueField = 'type'; + } + me.columns.push(column); + + }); + + me.columns.push({ + xtype : 'actioncolumn', + width : 30, + sortable : false, + menuDisabled : true, + items : [{ + icon : 'resources/images/icons/delete.png', + tooltip : Locale.getString("removeComponent", "uriManager"), + scope : me, + handler : function(grid, rowIndex) { + grid.getStore().removeAt(rowIndex); + } + }] + }); + + me.store.grid = me; + + me.callParent(arguments); + } +}); diff --git a/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js b/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js new file mode 100644 index 00000000..be9f9118 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerController.js @@ -0,0 +1,423 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.MetadataManagerController', { + extend : 'Ext.app.Controller', + + views : ["LIME.ux.metadataManager.MetaGrid", "LIME.ux.metadataManager.MetadataManagerTabPanel"], + + refs : [{ + selector : 'appViewport', + ref : 'appViewport' + }, { + selector : 'main toolbar', + ref : 'mainToolbar' + }, { + selector: 'metaManagerPanel', + ref: 'metaManagerPanel' + }, { + selector: 'contextPanel', + ref: 'contextPanel' + }], + + config : { + pluginName : "metadataManager", + btnCls : "openMetadataBtn" + }, + + tabMetaMap: {}, + + addMetadataButton : function() { + var me = this, toolbar = me.getMainToolbar(); + if (!toolbar.down("[cls=" + me.getBtnCls() + "]")) { + toolbar.add("->"); + toolbar.add({ + cls : me.getBtnCls(), + margin : "0 10 0 0", + text : Locale.getString("title", me.getPluginName()), + listeners : { + click : Ext.bind(me.openManager, me) + } + }); + } + }, + + removeMetadataButton : function() { + var me = this, toolbar = me.getMainToolbar(), + btn = toolbar.down("[cls=" + me.getBtnCls() + "]"); + if (btn) { + toolbar.remove(btn); + } + }, + + openManager: function() { + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + true, this.getPluginName()); + }, + + addTab: function(conf) { + conf = conf || {}; + var cmp = Ext.widget("metaManagerPanel", Ext.merge({ + name: "metaManagerPanel", + autoDestroy: false, + groupName: this.getPluginName() + }, conf)); + this.application.fireEvent(Statics.eventsNames.addContextPanelTab, cmp); + return cmp; + }, + + onInitPlugin : function() { + //this.application.on(Statics.eventsNames.afterLoad, this.onDocumentLoaded, this); + this.addMetadataButton(); + //this.addTab(); + }, + + onRemoveController : function() { + this.removeMetadataButton(); + }, + + addMetadataFields: function() { + var me = this, + metaTemplate = Config.getLanguageConfig().metaTemplate, + newTab; + + Ext.Object.each(metaTemplate, function(key, value) { + if(key == "identification") { + var frbrFieldsets = Ext.Object.getKeys(value).filter(function(name) { + return name.charAt(0) != "@"; + }); + Ext.each(frbrFieldsets, function(name) { + newTab = me.addMetaFRBRFieldset(name, value[name]); + me.tabMetaMap[name] = { + tab: newTab, + metaParent: key + }; + }); + } else { + newTab = me.addMetaFieldset(key, value); + me.tabMetaMap[key] = { + tab: newTab + }; + } + }); + }, + + storeGridChanged: function(store) { + var data = []; + store.each(function(record) { + var recordData = record.getData(), + filtredData = {}; + Ext.Object.each(recordData, function(key, val) { + if(val != undefined) { + filtredData[key] = val; + } + }); + data.push(filtredData); + }); + this.updateMetadata(store.grid, data, { + overwrite: false, + after: (store.grid.name == "FRBRuri") ? "FRBRthis" : "FRBRuri" + }); + }, + + getValuesFromObj: function(obj) { + return Ext.Object.getKeys(obj).filter(function(el) { + return (el.charAt(0) == "@"); + }).map(function(attr) { + return attr.substr(1); + }); + }, + + createMetaGrid: function(name, values, customColumns) { + var me = this; + return Ext.widget("metaGrid", { + title: name, + width: "98%", + margin: '5 0 0 5', + name: name, + columnsNames: values, + customColumns: customColumns, + store: Ext.create('Ext.data.Store', { + fields : values, + listeners: { + remove: Ext.bind(me.storeGridChanged, me), + update: Ext.bind(me.storeGridChanged, me) + } + }) + }); + }, + + addMetaFRBRFieldset: function(name, conf) { + var me = this, + items = []; + Ext.Object.each(conf, function(key) { + var values = me.getValuesFromObj(conf[key]); + if(key == "FRBRuri" || key == "FRBRalias") { + items.push(me.createMetaGrid(key, values)); + } else { + items.push(me.createFieldsetItem(key, values)); + } + }); + return me.addMetaFieldset(name, conf, items); + }, + + addMetaFieldset: function(name, conf, items) { + var me = this, + tab = me.getMetaManagerPanel(), + possibleChildren = conf["!possibleChildren"], + values; + + if(!Ext.isArray(items)) { + items = [me.createFieldsetItem(name, me.getValuesFromObj(conf))]; + } + + if(possibleChildren) { + values = Ext.Array.push("type", me.getValuesFromObj(possibleChildren.attributes)); + items.push(me.createMetaGrid("Children", values, { + "type": possibleChildren.names + })); + } + return me.addTab({ + name: name, + title: name, + items: items + }); + }, + + createFieldsetItem: function(name, values) { + return { + xtype: "form", + width: "98%", + name: name, + bodyPadding: 10, + margin: '5 0 0 5', + layout: { + type: (values.length > 3) ? 'anchor' : 'hbox', + padding:'5', + align:'right' + }, + title: name, + items: values.map(function(attr) { + return { + xtype: (attr == "date") ? "datefield" : "textfield", + format: (attr == "date") ? "Y-m-d" : "", + fieldLabel: Ext.String.capitalize(attr.replace("akn_", "")), + labelAlign : 'right', + anchor: '30%', + labelWidth: 50, + name: attr + }; + }) + }; + }, + + // TODO: update every time + fillMetadataFields: function(tab) { + var me = this, editor = me.getController("Editor"), + metadata = editor.getDocumentMetadata(), + tabMap = me.tabMetaMap[tab.name]; + + if(!tabMap || tabMap.filled ) return; + metadata = (metadata && metadata.obj && tabMap.metaParent) ? metadata.obj[tabMap.metaParent] : metadata.obj; + if(metadata && metadata[tab.name]) { + Ext.each(metadata[tab.name].children, function(el) { + var cmpToFill = tabMap.tab.down("*[name='"+el.attr.class+"']"); + + if(tabMap.tab.down("*[name='Children']")) { + cmpToFill = tabMap.tab.down("*[name='Children']"); + el.attr["type"] = el.attr["class"]; + } + + if(cmpToFill) { + if(cmpToFill.xtype == "metaGrid") { + me.fillGridFields(cmpToFill, el); + } else { + me.fillFormFields(cmpToFill, el); + } + } else { + //console.log(tab, el); + } + }); + } + + tabMap.filled = true; + }, + + fillGridFields: function(grid, data) { + this.addRecord(grid, data.attr, false, true); + }, + + fillFormFields: function(form, data) { + Ext.Object.each(data.attr, function(attr, val) { + var field = form.down("*[name='"+attr+"']"); + if(field) { + if(Ext.isEmpty(val)) { + field.reset(); + } else { + field.setValue(val); + } + } + }); + }, + + tabActivated: function(tab) { + this.fillMetadataFields(tab); + }, + + addRecord : function(grid, record, index, noEdit) { + var store = grid.getStore(), + plugin = grid.getPlugin("cellediting"), + index = index || store.getCount(); + store.insert(index, [record]); + if(!noEdit) { + plugin.startEdit(index, 0); + } + }, + + /*resetFields: function() { + var me = this; + Ext.Object.each(me.tabMetaMap, function(el, obj) { + obj.filled = false; + if(obj.tab) { + Ext.each(obj.tab.query("textfield"), function(cmp) { + cmp.reset(); + }); + Ext.each(obj.tab.query("metaGrid"), function(cmp) { + cmp.getStore().removeAll(true); + }); + } + }); + this.application.fireEvent(Statics.eventsNames.openCloseContextPanel, + false, this.getPluginName()); + }, + */ + + docLoaded: function() { + this.tabMetaMap = {}; + this.application.fireEvent(Statics.eventsNames.removeGroupContextPanel, this.getPluginName()); + Ext.defer(this.addMetadataFields, 200, this); + }, + + updateMetadata: function(cmp, data, conf) { + var me = this, editor = me.getController("Editor"), + tab = cmp.up("metaManagerPanel"), + tabMap = me.tabMetaMap[tab.name], + name = cmp.name, + path = ""; + conf = conf || {}; + + if(tabMap && cmp) { + path = (tabMap.metaParent) ? tabMap.metaParent + "/" : ""; + if(name == "Children") { + var groups = {}; + Ext.each(data, function(obj) { + var type = obj.type; + if(type != undefined) { + delete obj.type; + groups[type] = groups[type] || []; + groups[type].push(obj); + } + }); + Ext.Object.each(groups, function(group, gData) { + var result = DocProperties.updateMetadata(Ext.merge({ + metadata : editor.getDocumentMetadata(), + path : path+tab.name+"/"+group, + data : gData + })); + if (result) { + Ext.MessageBox.alert("Error", "Error " + result); + } else { + //remove this + editor.changed = true; + } + }); + } else { + path += (tab.name != name) ? tab.name + "/" + name : tab.name; + //move this to a controller + var result = DocProperties.updateMetadata(Ext.merge({ + metadata : editor.getDocumentMetadata(), + path : path, + data : data, + overwrite: true + }, conf)); + if (result) { + Ext.MessageBox.alert("Error", "Error " + result); + } else { + //remove this + editor.changed = true; + } + } + } + }, + + init : function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.docLoaded, me); + me.control({ + 'metaManagerPanel': { + activate: me.tabActivated + }, + 'metaManagerPanel textfield': { + change: function(cmp, newValue, oldValue) { + if(!cmp.up("metaGrid")) { + var form = cmp.up("form"); + me.updateMetadata(form, form.getValues()); + } + } + }, + 'metaGrid tool' : { + click : function(cmp) { + var grid = cmp.up("metaGrid"); + var records = {}; + Ext.each(grid.columnsNames, function(name) { + records[name] = name; + }); + me.addRecord(grid, records); + } + }, + }); + } +}); diff --git a/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js b/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js new file mode 100644 index 00000000..c5af7176 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/metadataManager/MetadataManagerTabPanel.js @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2014 - Copyright holders CIRSFID and Department of +* Computer Science and Engineering of the University of Bologna +* +* Authors: +* Monica Palmirani – CIRSFID of the University of Bologna +* Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +* Luca Cervone – CIRSFID of the University of Bologna +* +* Permission is hereby granted to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the +* rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The Software can be used by anyone for purposes without commercial gain, +* including scientific, individual, and charity purposes. If it is used +* for purposes having commercial gains, an agreement with the copyright +* holders is required. The above copyright notice and this permission +* notice shall be included in all copies or substantial portions of the +* Software. +* +* Except as contained in this notice, the name(s) of the above copyright +* holders and authors shall not be used in advertising or otherwise to +* promote the sale, use or other dealings in this Software without prior +* written authorization. +* +* The end-user documentation included with the redistribution, if any, +* must include the following acknowledgment: "This product includes +* software developed by University of Bologna (CIRSFID and Department of +* Computer Science and Engineering) and its authors (Monica Palmirani, +* Fabio Vitali, Luca Cervone)", in the same place and form as other +* third-party acknowledgments. Alternatively, this acknowledgment may +* appear in the software itself, in the same form and location as other +* such third-party acknowledgments. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +Ext.define('LIME.ux.metadataManager.MetadataManagerTabPanel', { + + extend : 'Ext.panel.Panel', + + alias : 'widget.metaManagerPanel', + + config : { + pluginName : "metadataManager" + }, + + autoScroll: true, + + initComponent: function() { + this.title = this.title || Locale.getString("title", this.getPluginName()); + this.callParent(arguments); + } +}); diff --git a/languagesPlugins/akoma3.0/client/metadataManager/strings.json b/languagesPlugins/akoma3.0/client/metadataManager/strings.json new file mode 100644 index 00000000..e91239f9 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/metadataManager/strings.json @@ -0,0 +1,8 @@ +{ + "en": { + "title": "Metadata editor" + }, + "it": { + "title": "Editor metadati" + } +} diff --git a/languagesPlugins/akoma3.0/client/metadataManager/structure.json b/languagesPlugins/akoma3.0/client/metadataManager/structure.json new file mode 100644 index 00000000..c7eb5af7 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/metadataManager/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["MetaGrid", "MetadataManagerTabPanel"], + "controllers": ["MetadataManagerController"] +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js b/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js new file mode 100644 index 00000000..d5621451 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerController.js @@ -0,0 +1,1827 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.ModsMarkerController', { + extend : 'Ext.app.Controller', + + views : ['LIME.ux.modsMarker.ModsMarkerWindow'], + + refs : [{ + ref : 'contextMenu', + selector : 'contextMenu' + },{ + selector : 'appViewport', + ref : 'appViewport' + },{ + selector: 'modsMarkerWindow', + ref: 'modsWindow' + },{ + selector: 'modsMarkerWindow textfield[name=selection]', + ref: 'selectionField' + }], + + config: { + pluginName: "modsMarker", + renumberingAttr: "renumbering", + joinAttr: "joined", + splitAttr: "splitted", + externalConnectedElements: ["quotedStructure", "quotedText", "ref", "rref", "mref"] + }, + + onDocumentLoaded : function(docConfig) { + var me = this, modPosChecked = Ext.bind(this.modPosChecked, this); + this.addModificationButtons(); + + this.posMenu = { + items : [{ + type: "start" + },{ + type: "before" + },{ + type: "inside" + },{ + type: "after" + },{ + type: "end" + },{ + type: "unspecified" + }] + }; + + Ext.each(this.posMenu.items, function(item) { + item.text = Locale.getString(item.type, me.getPluginName()); + item.checkHandler = modPosChecked; + item.group = "modPos"; + item.checked = false; + }); + + try { + this.detectExistingMods(); + } catch(e) { + Ext.log({level: "error"}, e); + } + __ME = this; + }, + + modPosChecked: function(cmp, checked) { + var me = this, language = me.getController("Language"), + typesMenu = cmp.up("*[name=types]"), + pos, destination; + if(checked && typesMenu && typesMenu.textMod) { + destination = typesMenu.textMod.querySelector('*[class="destination"]'); + if(destination) { + pos = language.nodeGetLanguageAttribute(destination, "pos"); + destination.setAttribute(pos.name, cmp.type); + } + } + }, + + detectExistingMods: function(noEffect) { + var me = this, editor = me.getController("Editor"), + editorBody = editor.getBody(), + docMeta = me.getDocumentMetadata(), + langPrefix = docMeta.langPrefix, + language = me.getController("Language"), + markingMenu = me.getController("MarkingMenu"), + metaDom = docMeta.metadata.originalMetadata.metaDom, + button = markingMenu.getFirstButtonByName("mod"), + modsElements = editorBody.querySelectorAll("*[" + DomUtils.elementIdAttribute + "][class~='mod']"), + returnMods = [], + hrefAttr = langPrefix+"href"; + + Ext.each(modsElements, function(element) { + var elId = language.nodeGetLanguageAttribute(element, "eId"), + intId = element.getAttribute(DomUtils.elementIdAttribute), + metaMod, textMod, modType, buttonCfg; + if (elId.value) { + metaMod = metaDom.querySelector('*[class="source"]['+langPrefix+'href="'+elId.value+'"], *[class="source"]['+langPrefix+'href="#'+elId.value+'"]'); + } else { + metaMod = metaDom.querySelector('*[class="source"]['+langPrefix+'href="'+intId+'"], *[class="source"]['+langPrefix+'href="#'+intId+'"]'); + } + if(metaMod) { + textMod = metaMod.parentNode; + modType = textMod.getAttribute('type'); + if(!noEffect) { + metaMod.setAttribute(langPrefix+'href', "#"+intId); + element.removeAttribute(elId.name); + } + returnMods.push({ + node: element, + type: modType, + textMod: textMod + }); + if(modType) { + buttonCfg = Ext.Object.getValues(me.activeModButtons).filter(function(cfg) { + return cfg.modType == modType; + })[0]; + if(buttonCfg && !noEffect) { + me.setElementStyles([element], button, null, buttonCfg); + } + } + } + }); + + + modsElements = metaDom.querySelectorAll("[class=passiveModifications] [class=textualMod]"); + Ext.each(modsElements, function(element) { + var modEls = element.querySelectorAll("["+hrefAttr+"]"); + var modType = element.getAttribute('type'); + if(modType) { + var buttonCfg = Ext.Object.getValues(me.passiveModButtons).filter(function(cfg) { + return cfg.modType == modType; + })[0]; + if(buttonCfg) { + button = markingMenu.getFirstButtonByName(buttonCfg.markAsButton); + } + Ext.each(modEls, function(modEl) { + var href = modEl.getAttribute(hrefAttr); + if(!Ext.isEmpty(href.trim())) { + var id = (href.charAt(0) == "#") ? href.substring(1) : href; + var editorEl = editorBody.querySelector("*[" + langPrefix + "eid='"+id+"']"); + if(editorEl && !noEffect) { + var edElId = editorEl.getAttribute(DomUtils.elementIdAttribute); + modEl.setAttribute(hrefAttr, href.replace(id, edElId)); + editorEl.removeAttribute(hrefAttr); + if(buttonCfg && button && DomUtils.getButtonByElement(editorEl).name == button.name) { + me.setElementStyles([editorEl], button, null, buttonCfg); + } + } + } + }); + } + }); + + //TODO:passive mods + return returnMods; + }, + + beforeContextMenuShow: function(menu, node) { + var me = this, elementName = DomUtils.getElementNameByNode(node), + markedParent, language = me.getController("Language"); + if(!elementName) { + node = DomUtils.getFirstMarkedAncestor(node.parentNode); + elementName = DomUtils.getElementNameByNode(node); + } + if(node && elementName) { + markedParent = DomUtils.getFirstMarkedAncestor(node.parentNode); + if(markedParent && (elementName == "quotedStructure" + || elementName == "quotedText") && DomUtils.getElementNameByNode(markedParent) == "mod" ) { + + var textMod = me.detectModifications(markedParent, false, false, true); + textMod = (textMod) ? textMod.textMod : null; + if(textMod && textMod.getAttribute("type") == "substitution") { + var href = language.nodeGetLanguageAttribute(node, "href"), + elId = node.getAttribute(DomUtils.elementIdAttribute), + langId = language.nodeGetLanguageAttribute(node, "eid"), + modElement = textMod.querySelector("*[akn_href*="+elId+"], *[akn_href*="+langId.value+"]"), + modType = (modElement) ? modElement.getAttribute("class") : "", + destination = textMod.querySelector('*[class="destination"]'), pos, + posMenu = Ext.clone(me.posMenu), menuItem; + + if(destination) { + pos = language.nodeGetLanguageAttribute(destination, "pos"); + if(pos.value) { + menuItem = posMenu.items.filter(function(item) { + return item.type == pos.value; + })[0]; + if(menuItem) { + menuItem.checked = true; + } + } + } + + if(!menu.down("*[name=modType]")) { + menu.add(['-', { + text : 'Type', + name: "modType", + menu : { + name: "types", + textMod: textMod, + refNode: node, + modElement: modElement, + items : [{ + text : 'Old', + group : 'modType', + textMod: textMod, + modElement: modElement, + refNode: node, + type: "old", + checked: (modType == "old") ? true : false, + checkHandler : Ext.bind(me.onTypeSelected, me) + }, { + text : 'New', + group : 'modType', + checked: (modType == "new") ? true : false, + textMod: textMod, + refNode: node, + modElement: modElement, + type: "new", + checkHandler : Ext.bind(me.onTypeSelected, me) + }, { + text : 'Pos', + group : 'modType', + checked: (modType == "pos") ? true : false, + type: "pos", + checkHandler : Ext.bind(me.onTypeSelected, me), + menu: posMenu + }] + } + }]); + } + } + } else if(elementName == "mod") { + var meta = this.getAnalysisByNodeOrNodeId(node); + if(meta && !menu.down("*[name=modType]")) { + var modType = meta.type; + menu.add(['-', { + text : 'Type', + name: "modType", + menu : { + items : [{ + text : Locale.getString("insertion", me.getPluginName()), + modType: 'insertion', + group : 'modType', + refNode: node, + checked: (modType == "insertion") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }, { + text : Locale.getString("repeal", me.getPluginName()), + modType: 'repeal', + group : 'modType', + refNode: node, + checked: (modType == "repeal") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }, { + text : Locale.getString("substitution", me.getPluginName()), + modType: 'substitution', + group : 'modType', + refNode: node, + checked: (modType == "substitution") ? true : false, + checkHandler : Ext.bind(me.onModTypeSelected, me) + }] + } + }]); + } + } + + me.addPosMenuItems(menu, node, elementName, markedParent); + me.addExternalContextMenuItems(menu, node, elementName, markedParent); + } + }, + + + addPosMenuItems: function(menu, node, elementName, markedParent) { + var me = this, language = me.getController("Language"), cls, + mod = me.detectModifications(node, false, false, true); + + if(mod && mod.modElement) { + cls = mod.modElement.getAttribute("class"); + if(cls == "destination" || cls == "source") { + if(!menu.down("*[name=modPos]")) { + var posMenu = Ext.clone(me.posMenu); + var pos = language.nodeGetLanguageAttribute(mod.modElement, "pos"); + if(pos.value) { + menuItem = posMenu.items.filter(function(item) { + return item.type == pos.value; + })[0]; + if(menuItem) { + menuItem.checked = true; + } + } + posMenu.textMod = mod.textMod; + posMenu.name = "types"; + menu.add(['-', { + name: "modPos", + text : 'Pos', + type: "pos", + menu: posMenu + }]); + } + } + } + }, + + addExternalContextMenuItems: function(menu, node, elementName, markedParent) { + var me = this; + if(Ext.Array.contains(me.getExternalConnectedElements(), elementName)) { + if(!menu.down("*[name=connectExternal]")) { + var mods = me.detectExistingMods(true), + items = []; + Ext.each(mods, function(mod) { + items.push({ + text : Locale.getString(mod.type, me.getPluginName()), + modType: mod.type, + group : 'connectExternal', + refMod: mod, + checked: false, + checkHandler : Ext.bind(me.onExternalConnect, me), + listeners: { + focus: Ext.bind(me.onFocusExternalMenuItem, me) + } + }); + }); + + menu.add(['-', { + text : 'Set as external mod element', + name: "connectExternal", + menu : { + items : items + } + }]); + } + } + }, + + onFocusExternalMenuItem: function(cmp) { + this.application.fireEvent('nodeFocusedExternally', cmp.refMod.node, { + select : true, + scroll : true + }); + }, + + onExternalConnect: function(cmp, checked) { + console.log(cmp, checked); + }, + + onModTypeSelected: function(cmp, checked) { + var me = this, buttonCfg = Ext.Object.getValues(me.activeModButtons).filter(function(cfg) { + return cfg.modType == cmp.modType; + })[0]; + if(buttonCfg) { + if(checked && cmp.refNode) { + var meta = me.getAnalysisByNodeOrNodeId(cmp.refNode), + markingMenu = me.getController("MarkingMenu"), + button = markingMenu.getFirstButtonByName("mod"); + meta.analysis.setAttribute("type", cmp.modType); + me.setElementStyles([cmp.refNode], button, null, buttonCfg); + } else if(!checked) { + me.removeElementStyles(cmp.refNode, buttonCfg); + } + } + + }, + + onTypeSelected: function(cmp, checked) { + var me = this, sameType, oldType; + if(checked && cmp.textMod && cmp.modElement) { + oldType = cmp.modElement.getAttribute("class"); + sameType = cmp.textMod.querySelectorAll("*[class="+cmp.type+"]"); + if(sameType.length == 1) { + sameType[0].setAttribute("class", oldType); + } + cmp.modElement.setAttribute("class", cmp.type); + me.insertTextModChildInOrder(cmp.textMod, cmp.modElement); + } else if(checked && cmp.textMod) { + var languageController = me.getController("Language"), + langPrefix = languageController.getLanguagePrefix(), + elId = cmp.refNode.getAttribute(DomUtils.elementIdAttribute), + existedEl = cmp.textMod.querySelector("*[class='"+cmp.type+"']["+langPrefix+"href='#']"), + href = (elId) ? "#"+elId : "#"; + + if(existedEl) { + existedEl.setAttribute(langPrefix+"href", href); + } else { + var textModObj = { + name: cmp.type, + attributes: [{ + name: langPrefix+"href", + value: href + }] + }; + var modEl = me.objToDom(cmp.textMod.ownerDocument, textModObj); + me.insertTextModChildInOrder(cmp.textMod, modEl); + } + } + }, + + removeElementStyles: function(node, buttonCfg) { + if(node) { + node.removeAttribute(buttonCfg.modType); + } + }, + + addModificationButtons: function() { + this.addActiveMofigicationButtons(); + this.addPassiveModificationButtons(); + }, + + addPassiveModificationButtons: function() { + var me = this, app = me.application; + markerButtons = { + passiveModifications: { + label: Locale.getString("passiveModifications", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + insertionCustom: { + label: Locale.getString("insertion", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.insertionHandler, + markAsButton: "ins" + }, + repealCustom: { + label: Locale.getString("repeal", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.delHandler, + markAsButton: "del" + }, + substitutionCustom: { + label: Locale.getString("substitution", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.substitutionHandler, + markAsButton: "ins", + elementStyle: "background-color: #fcf8e3;border-color: #faebcc;", + labelStyle: "border-color: #faebcc;", + shortLabel: Locale.getString("substitution", me.getPluginName()), + modType: "substitution" + }, + splitCustom: { + label: Locale.getString("split", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.splitHandler + }, + joinCustom: { + label: Locale.getString("join", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.joinHandler + }, + renumberingCustom: { + label: Locale.getString("renumbering", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.renumberingHandler + }, + destintionText: { + label: Locale.getString("destinationText", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + action: { + label: Locale.getString("action", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + } + }, + rules = { + elements: { + passiveModifications: { + //children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + children: ["commonReference", "destintionText", "action"] + }, + destintionText: { + children: ["quotedStructure", "quotedText"] + }, + action: { + children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + } + } + }, + config = { + name : 'passiveModifications', + group: "commons", + after: "activeModifications", + buttons: markerButtons, + rules: rules, + scope: me + }; + app.fireEvent(Statics.eventsNames.addMarkingButton, config); + me.passiveModButtons = markerButtons; + }, + + addActiveMofigicationButtons: function() { + var me = this, app = me.application; + markerButtons = { + activeModifications: { + label: Locale.getString("activeModifications", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + insertionCustom: { + label: Locale.getString("insertion", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeInsertionHandler, + elementStyle: "background-color: #dff0d8; border-color: #d6e9c6;", + labelStyle: "border-color: #d6e9c6;", + markAsButton: "mod", + shortLabel: Locale.getString("insertion", me.getPluginName()), + modType: "insertion" + }, + repealCustom: { + label: Locale.getString("repeal", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeDelHandler, + elementStyle: "background-color: #f2dede;border-color: #ebccd1;", + labelStyle: "border-color: #ebccd1;", + markAsButton: "mod", + shortLabel: Locale.getString("repeal", me.getPluginName()), + modType: "repeal" + }, + substitutionCustom: { + label: Locale.getString("substitution", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeSubstitutionHandler, + elementStyle: "background-color: #fcf8e3;border-color: #faebcc;", + labelStyle: "border-color: #faebcc;", + markAsButton: "mod", + shortLabel: Locale.getString("substitution", me.getPluginName()), + modType: "substitution" + }, + splitCustom: { + label: Locale.getString("split", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeSplitHandler, + elementStyle: "background-color: #D4E7ED; border-color: #74A6BD;", + labelStyle: "border-color: #74A6BD", + markAsButton: "mod", + shortLabel: Locale.getString("split", me.getPluginName()), + modType: "split" + }, + joinCustom: { + label: Locale.getString("join", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeJoinHandler, + elementStyle: "background-color: #AB988B; border-color: #B06A3B;", + labelStyle: "border-color: #B06A3B;", + markAsButton: "mod", + shortLabel: Locale.getString("join", me.getPluginName()), + modType: "join" + }, + renumberingCustom: { + label: Locale.getString("renumbering", me.getPluginName()), + buttonStyle: "background-color:#DBEADC;border-radius:3px", + handler: me.activeRenumberingHandler, + elementStyle: "background-color: #EB8540; border-color: #AB988B;", + labelStyle: "border-color: #AB988B;", + markAsButton: "mod", + shortLabel: Locale.getString("renumbering", me.getPluginName()), + modType: "renumbering" + }, + destintionText: { + label: Locale.getString("destinationText", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + }, + action: { + label: Locale.getString("action", me.getPluginName()), + buttonStyle: "border-radius: 3px; background-color: #74BAAC;" + } + }, + rules = { + elements: { + activeModifications: { + children: ["commonReference", "destintionText", "action"] + }, + destintionText: { + children: ["quotedStructure", "quotedText"] + }, + action: { + children: ["insertionCustom", "repealCustom", "substitutionCustom", "splitCustom", "joinCustom", "renumberingCustom"] + } + } + }, + config = { + name : 'activeModifications', + group: "commons", + after: "commonReference", + buttons: markerButtons, + rules: rules, + scope: me + }; + app.fireEvent(Statics.eventsNames.addMarkingButton, config); + me.activeModButtons = markerButtons; + }, + + getOrCreatePath: function(dom, path) { + var me = this, elements = path.split("/"), node, + iterNode = dom, tmpNode; + + for(var i = 0; i', { + xtype : 'button', + icon : 'resources/images/icons/cancel.png', + text : "No", + handler: function() { + this.up("window").close(); + } + }, { + xtype : 'button', + icon : 'resources/images/icons/accept.png', + text : "Yes", + handler: function() { + this.up("window").close(); + me.addRenumberingAfterMod(modEl, textualMod); + } + }] + }] + }).show(); + /*Ext.Msg.confirm("Renumbering", "This modification has caused a renumbering?", function(response) { + if(response == "yes") { + console.log(modEl, textualMod); + } + }, this);*/ + }, + + addRenumberingAfterMod: function(modEl, textualMod) { + //TODO: + }, + + editorNodeFocused: function(node) { + var me = this; + if(me.openedForm) { + me.openedForm.close(); + me.openedForm = null; + } + if(node) { + try { + me.detectModifications(node); + } catch(e) { + Ext.log({level: "error"}, e); + } + } + }, + + nodesUnmarked: function(nodesIds) { + var me = this; + Ext.each(nodesIds, function(nodeId) { + try { + me.detectModifications(null, nodeId, true); + } catch(e) { + Ext.log({level: "error"}, e); + } + }); + }, + + onRemoveController: function() { + var me = this; + me.application.removeListener(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.removeListener(Statics.eventsNames.editorDomNodeFocused, me.editorNodeFocused, me); + me.application.removeListener(Statics.eventsNames.unmarkedNodes, me.nodesUnmarked, me); + }, + + onInitPlugin: function() { + var me = this; + me.application.on(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.on(Statics.eventsNames.editorDomNodeFocused, me.editorNodeFocused, me); + me.application.on(Statics.eventsNames.unmarkedNodes, me.nodesUnmarked, me); + me.application.fireEvent(Statics.eventsNames.registerContextMenuBeforeShow, Ext.bind(me.beforeContextMenuShow, me)); + } +}); diff --git a/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js b/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js new file mode 100644 index 00000000..6df46384 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/modsMarker/ModsMarkerWindow.js @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * This view is used as wizard window to creating document collections + */ + +Ext.define('LIME.ux.modsMarker.ModsMarkerWindow', { + + extend : 'Ext.window.Window', + + alias : 'widget.modsMarkerWindow', + + layout : 'card', + + draggable : true, + + border : false, + + modal : false, + + title : Locale.getString("windowTitle", "modsMarker"), + + width : 605, + + /** + * Return the data set in the view + * @return {Object} An object containing the key-value pairs in the form + */ + getData : function() { + var form = this.down('form[itemId=step1]').getForm(); + if (!form.isValid()) + return null; + return form.getValues(false, false, false, true); + }, + + setData: function(data) { + var form = this.down('form[itemId=step1]').getForm(); + form.setValues(data); + }, + + items : [{ + xtype : 'form', + frame : true, + padding : '10px', + layout : 'anchor', + defaults : { + anchor : '100%' + }, + + defaultType : 'textfield', + items : [{ + name: "selection", + fieldLabel: 'Selection' + }], + + dockedItems : [{ + xtype : 'toolbar', + dock : 'bottom', + ui : 'footer', + items : ['->', { + xtype : 'button', + cls: 'createDocumentCollection', + minWidth : 100, + text : Locale.getString("ok") + }] + }] + }] +}); diff --git a/languagesPlugins/akoma3.0/client/modsMarker/strings.json b/languagesPlugins/akoma3.0/client/modsMarker/strings.json new file mode 100644 index 00000000..787453e9 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/modsMarker/strings.json @@ -0,0 +1,43 @@ +{ + "en": { + "insertion": "Insertion", + "substitution": "Substitution", + "repeal": "Repeal", + "activeModifications": "Active modifications", + "passiveModifications": "Passive modifications", + "split": "Split", + "join": "Join", + "renumbering": "Renumbering", + "destinationText": "Destination Text", + "action": "Action", + "renumbered": "renumbered", + "joined": "joined", + "splitted": "splitted" + }, + "it": { + "insertion": "Inserimento", + "substitution": "Sostituzione", + "repeal": "Abrogazione", + "activeModifications": "Modifiche attive", + "passiveModifications": "Modifiche passive", + "split": "Divisione", + "join": "Unione", + "renumbering": "Rinumerazione", + "renumbered": "renumerato", + "joined": "unito", + "splitted": "diviso" + }, + "es": { + "insertion": "Insertion", + "substitution": "Sustitución", + "repeal": "Revocación", + "activeModifications": "Cambios Activos", + "passiveModifications": "Cambios Pasivos", + "split": "División", + "join": "Unirse", + "renumbering": "Renumeración", + "renumbered": "renumerado", + "joined": "unido", + "splitted": "diviso" + } +} diff --git a/languagesPlugins/akoma3.0/client/modsMarker/structure.json b/languagesPlugins/akoma3.0/client/modsMarker/structure.json new file mode 100644 index 00000000..5ecf2c34 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/modsMarker/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["ModsMarkerWindow"], + "controllers": ["ModsMarkerController"] +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js b/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js new file mode 100644 index 00000000..567162df --- /dev/null +++ b/languagesPlugins/akoma3.0/client/notesManager/NotesManagerController.js @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.NotesManagerController', { + extend : 'Ext.app.Controller', + + config : { + pluginName : "notesManager", + authorialNoteClass : 'authorialNote', + changePosAttr: 'chposid', + changePosTargetAttr: 'chpos_id', + refToAttribute: 'refto', + notesContainerCls: 'notesContainer' + }, + + processNotes : function(editorBody) { + var me = this, + athNotes = editorBody.querySelectorAll("*[class~='"+me.getAuthorialNoteClass()+"']"); + Ext.each(athNotes, function(element) { + me.processNote(element, editorBody); + }, me); + }, + + getNotesContainer: function(editorBody) { + var notesContainer = editorBody.querySelector("."+this.getNotesContainerCls()), + docNode = editorBody.querySelector("."+DocProperties.documentBaseClass); + if(!notesContainer && docNode) { + notesContainer = Ext.DomHelper.createDom({ + tag : 'div', + cls: this.getNotesContainerCls() + }); + docNode.appendChild(notesContainer); + } + + return notesContainer; + }, + + + setNotePosition: function(note, refNode, editorBody) { + var me = this, languageController = me.getController("Language"), + placement = languageController.nodeGetLanguageAttribute(note, "placement"), + allRefs = Array.prototype.slice.call(editorBody.querySelectorAll("*["+LoadPlugin.getRefToAttribute()+"]")), + notesContainer, changed = false, refIndex, siblingNote, refSibling, refSiblingIndex; + + if (placement.value == "bottom" && note.parentNode && + (!note.parentNode.getAttribute("class") || + note.parentNode.getAttribute("class").indexOf(me.getNotesContainerCls()) == -1)) { + notesContainer = me.getNotesContainer(editorBody); + if(!notesContainer.childNodes.length) { + notesContainer.appendChild(note); + } else { + // Insert the note in order + refIndex = allRefs.indexOf(refNode); + for(var i = 0; i < notesContainer.childNodes.length; i++) { + siblingNote = notesContainer.childNodes[i]; + refSibling = allRefs.filter(function(el) { + return el.getAttribute(LoadPlugin.getRefToAttribute()) == siblingNote.getAttribute(LoadPlugin.getNoteTmpId()); + })[0]; + if(refSibling) { + refSiblingIndex = allRefs.indexOf(refSibling); + if(refSiblingIndex > refIndex) { + break; + } + } + } + if(siblingNote && refSiblingIndex > refIndex) { + notesContainer.insertBefore(note, siblingNote); + } else { + notesContainer.appendChild(note); + } + } + changed = true; + } else if (placement.value == "inline" && note.parentNode && + (note.parentNode.getAttribute("class") && + note.parentNode.getAttribute("class").indexOf(me.getNotesContainerCls()) != -1)) { + if (refNode.nextSibling) { + refNode.parentNode.insertBefore(note, refNode.nextSibling); + } else { + refNode.parentNode.appendChild(note); + } + changed = true; + } + return changed; + }, + + + processNote: function(node, editorBody) { + var me = this, parent = node.parentNode, app = me.application, + languageController = me.getController("Language"), + elId, tmpElement, link, tmpExtEl, + marker = languageController.nodeGetLanguageAttribute(node, "marker"), + placement = languageController.nodeGetLanguageAttribute(node, "placement"), + supLinkTemplate = new Ext.Template('{markerNumber}'), + notTmpId = node.getAttribute(LoadPlugin.getNoteTmpId()), + tmpRef = editorBody.querySelector("*["+LoadPlugin.getRefToAttribute()+"="+notTmpId+"]"), + allRefs = Array.prototype.slice.call(editorBody.querySelectorAll("*["+LoadPlugin.getRefToAttribute()+"]")), + clickLinker = function() { + var marker = this.getAttribute(me.getRefToAttribute()), + note; + if (marker) { + note = editorBody.querySelector("*["+LoadPlugin.getNoteTmpId()+"="+marker+"]"); + if(note) { + app.fireEvent('nodeFocusedExternally', note, { + select : true, + scroll : true, + click : true + }); + } + } + }; + if (tmpRef) { + elId = allRefs.indexOf(tmpRef); + elId = (elId != -1) ? elId+1 : "note"; + marker.value = marker.value || elId; + placement.value = placement.value || "bottom"; + + if(!tmpRef.querySelector('a')) { + tmpElement = Ext.DomHelper.insertHtml("afterBegin", tmpRef, supLinkTemplate.apply({ + 'markerNumber' : marker.value + })); + tmpElement.querySelector('a').setAttribute(me.getRefToAttribute(), notTmpId); + tmpElement.querySelector('a').onclick = clickLinker; + } + + node.setAttribute(marker.name, marker.value); + node.setAttribute(placement.name, placement.value); + me.setNotePosition(node, tmpRef, editorBody); + } + }, + + updateNote: function(node, editorBody) { + var me = this, languageController = me.getController("Language"), + marker = languageController.nodeGetLanguageAttribute(node, "marker"), + eId = node.getAttribute(LoadPlugin.getNoteTmpId()), + ref = editorBody.querySelector("*["+LoadPlugin.getRefToAttribute()+"="+eId+"]"), + linker, result = {marker: false, placement: false}; + if(eId && ref) { + linker = ref.querySelector('a'); + if(marker.value.trim() != DomUtils.getTextOfNode(linker).trim()) { + result.marker = true; + linker.replaceChild(editorBody.ownerDocument.createTextNode(marker.value), linker.firstChild); + } + result.placement = me.setNotePosition(node, ref, editorBody); + } + return result; + }, + + beforeProcessNotes: function(config) { + this.processNotes(this.getController("Editor").getBody()); + }, + + nodeChangedAttributes: function(node) { + if(node.getAttribute("class").indexOf(this.getAuthorialNoteClass())!=-1) { + var result = this.updateNote(node, this.getController("Editor").getBody()); + if(result.placement) { + this.application.fireEvent('nodeFocusedExternally', node, { + select : true, + scroll : true, + click : true + }); + } + } + }, + + init : function() { + var me = this; + //Listening progress events + me.application.on(Statics.eventsNames.afterLoad, me.beforeProcessNotes, me); + me.application.on(Statics.eventsNames.nodeAttributesChanged, me.nodeChangedAttributes, me); + } +}); diff --git a/languagesPlugins/akoma3.0/client/notesManager/strings.json b/languagesPlugins/akoma3.0/client/notesManager/strings.json new file mode 100644 index 00000000..786c8eba --- /dev/null +++ b/languagesPlugins/akoma3.0/client/notesManager/strings.json @@ -0,0 +1,12 @@ +{ + "en": { + }, + "it": { + }, + "es": { + }, + "ro": { + }, + "ru": { + } +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/notesManager/structure.json b/languagesPlugins/akoma3.0/client/notesManager/structure.json new file mode 100644 index 00000000..56b118ac --- /dev/null +++ b/languagesPlugins/akoma3.0/client/notesManager/structure.json @@ -0,0 +1,3 @@ +{ + "controllers": ["NotesManagerController"] +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/parsers/ParsersController.js b/languagesPlugins/akoma3.0/client/parsers/ParsersController.js new file mode 100644 index 00000000..af9cfaec --- /dev/null +++ b/languagesPlugins/akoma3.0/client/parsers/ParsersController.js @@ -0,0 +1,998 @@ +/* + * Copyright (c) 2014 - Copyright holders CIRSFID and Department of + * Computer Science and Engineering of the University of Bologna + * + * Authors: + * Monica Palmirani – CIRSFID of the University of Bologna + * Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna + * Luca Cervone – CIRSFID of the University of Bologna + * + * Permission is hereby granted to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The Software can be used by anyone for purposes without commercial gain, + * including scientific, individual, and charity purposes. If it is used + * for purposes having commercial gains, an agreement with the copyright + * holders is required. The above copyright notice and this permission + * notice shall be included in all copies or substantial portions of the + * Software. + * + * Except as contained in this notice, the name(s) of the above copyright + * holders and authors shall not be used in advertising or otherwise to + * promote the sale, use or other dealings in this Software without prior + * written authorization. + * + * The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by University of Bologna (CIRSFID and Department of + * Computer Science and Engineering) and its authors (Monica Palmirani, + * Fabio Vitali, Luca Cervone)", in the same place and form as other + * third-party acknowledgments. Alternatively, this acknowledgment may + * appear in the software itself, in the same form and location as other + * such third-party acknowledgments. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +Ext.define('LIME.controller.ParsersController', { + extend : 'Ext.app.Controller', + + config : { + pluginName : "parsers" + }, + refs : [{ + selector : 'appViewport', + ref : 'appViewport' + }], + + /** + * @property {Number} parserAjaxTimeOut + */ + parserAjaxTimeOut : 4000, + + /** + * @property {Object} parsersConfig + * avaible parsers configuration + */ + parsersConfig : { + 'date' : { + 'url' : 'php/parsers/date/index.php', + 'method' : 'POST' + }, + 'docNum' : { + 'url' : 'php/parsers/docNum/index.php', + 'method' : 'POST' + }, + 'list' : { + 'url' : 'php/parsers/list/index.php', + 'method' : 'POST' + }, + 'docDate' : { + 'url' : 'php/parsers/date/index.php', + 'method' : 'POST' + }, + 'body' : { + 'url' : 'php/parsers/body/index.php', + 'method' : 'POST' + }, + 'structure' : { + 'url' : 'php/parsers/structure/index.php', + 'method' : 'POST' + }, + 'reference' : { + 'url' : 'php/parsers/reference/index.php', + 'method' : 'POST' + }, + 'quote' : { + 'url' : 'php/parsers/quote/index.php', + 'method' : 'POST' + }, + 'docType': { + 'url' : 'php/parsers/doctype/index.php', + 'method' : 'POST' + } + }, + + /** + * @property {Object} parsersListConfig + * temporary solution to list config + */ + parsersListConfig : { + 'blockList' : { + 'intro' : 'listIntroduction', + 'item' : 'item', + 'conclusion' : 'listConclusion' + }, + 'list' : { + 'intro' : 'intro', + 'item' : 'point', + 'conclusion' : 'wrap' + } + }, + + /** + * @property {String[]} docNumImpossibleParents + */ + docNumImpossibleParents : ["h1", "h2", "a"], + + onDocumentLoaded : function(docConfig) { + var me = this; + me.addParserMenuItem(); + }, + + addParserMenuItem : function() { + var me = this; + menu = { + text : Locale.getString("parseDocumentText", me.getPluginName()), + tooltip : Locale.getString("parseDocumentTooltip", me.getPluginName()), + icon : 'resources/images/icons/lightbulb.png', + name : 'parseDocument', + handler : Ext.bind(me.activateParsers, me) + }; + me.application.fireEvent("addMenuItem", me, { + menu : "editMenuButton" + }, menu); + }, + + /** + * This function call parsers for passed elements + * @param {HTMLElement[]} elements Elements to parse + * @param {Object} [config] + */ + parseElements : function(elements, config) { + var me = this; + if (config.silent) + return; + Ext.each(elements, function(markedNode) { + var elementId = markedNode.getAttribute(DomUtils.elementIdAttribute); + if (elementId) { + var button = DocProperties.markedElements[elementId].button, + widgetConfig = button.waweConfig.widgetConfig, markedWrapper = new Ext.dom.Element(markedNode), + contentToParse = markedWrapper.getHTML(), editor = this.getController("Editor"), + app = this.application, viewport = this.getAppViewport(); + //TODO: make an configuration file with all parsers avaible + if (widgetConfig && (button.waweConfig.name == 'docDate')) { + Ext.each(widgetConfig.list, function(widget) { + if (widget.xtype == 'datefield') { + var widgetComponent = button.queryById(elementId); + if (widgetComponent) { + widgetComponent.setLoading(true); + me.callParser("date", Ext.util.Format.stripTags(contentToParse), function(result) { + var jsonData = Ext.decode(result.responseText, true); + var dates; + if (jsonData.response.dates) { + dates = jsonData.response.dates; + } + for (var i in dates) { + widgetComponent.setContent(widgetComponent.id, dates[i].date); + break; + } + widgetComponent.setLoading(false); + }, function() { + widgetComponent.setLoading(false); + }); + } + } + }, this); + } else if (button.waweConfig.name == 'list' || button.waweConfig.name == 'blockList') { + viewport.setLoading(true); + me.callParser("list", Ext.util.Format.stripTags(contentToParse), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseLists(jsonData, markedNode, button); + } + viewport.setLoading(false); + }, function() { + viewport.setLoading(false); + }); + } else if (button.waweConfig.name == 'preface') { + if (viewport) { + viewport.setLoading(true); + } + + me.callParser("docNum", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseDocNum(jsonData, markedNode, button); + } + }, function() { + }); + me.callParser("docDate", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseDocDate(jsonData, markedNode, button); + } + if (viewport) { + viewport.setLoading(false); + } + }, function() { + if (viewport) { + viewport.setLoading(false); + } + }); + + } else if (button.waweConfig.name == 'body') { + //contentToParse = contentToParse.replace(/ /g,' '); + //markedWrapper.setHTML(contentToParse); + me.callParser("body", contentToParse, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + try { + me.parseBodyParts(jsonData, markedNode, button); + } catch(e) {}; + } + }, function() { + }); + } + + } + }, this); + }, + + /** + * This function marks the docDate + * @param {Object} data An object with date result from parser + * @param {HTMLELement} node + * @param {Object} editor An istance of the editor controller + * @param {Object} app A reference to the whole application object (to fire global events) + * @param {Object} button A reference to the button used for marking + */ + parseDocDate : function(data, node, button) { + var me = this, dates = data.response.dates, app = me.application, + editor = me.getController("Editor"), markButton = button.getChildByName("docDate"), + attributeName = markButton.waweConfig.rules.askFor.date1.insert.attribute.name; + config = { + app : app, + editor : editor, + markButton : markButton + }; + if (dates) { + Ext.Object.each(dates, function(item) { + var dateParsed = dates[item]; + config.marker = { + silent : true, + attribute : { + name : attributeName, + value : dateParsed.date + } + }; + me.searchInlinesToMark(node, dateParsed.match, config); + }, me); + } + }, + + /** + * This function marks all input parsed items + * @param {Object} data An object with some items + * @param {HTMLELement} node + * @param {Object} editor An istance of the editor controller + * @param {Object} app A reference to the whole application object (to fire global events) + * @param {Object} button A reference to the button used for marking + */ + parseLists : function(data, node, button) { + var me = this, intro = data.response.intro, items = data.response.items, + app = me.application, editor = me.getController("Editor"), + editorContent = editor.getContent(), listConfig = me.parsersListConfig[button.waweConfig.name]; + if (intro) { + var markNode = DomUtils.findNodeByText(intro, node), introButton = button.getChildByName(listConfig.intro); + if (markNode) { + editor.selectNode(markNode); + app.fireEvent('markingMenuClicked', introButton, { + silent : true + }); + } + } + if (items) { + var itemButton = button.getChildByName(listConfig.item), + numButton = itemButton.getChildByName("num"), config = { + silent : true + }; + Ext.each(items, function(item) { + var markNode = DomUtils.findNodeByText(item.match, node); + if (markNode) { + editor.selectNode(markNode); + app.fireEvent('markingMenuClicked', itemButton, config); + var extWrapper = new Ext.Element(markNode); + extWrapper.setHTML(extWrapper.getHTML().replace(item.match, me.getParsingTemplate(item.match))); + var elementToMark = extWrapper.query("." + DomUtils.tempParsingClass)[0]; + if (elementToMark) { + elementToMark.removeAttribute("class"); + editor.selectNode(elementToMark); + app.fireEvent('markingMenuClicked', numButton, config); + } + } + }, this); + } + + }, + + parseDocTypes : function(docTypes) { + var me = this, app = me.application, + editor = me.getController("Editor"), markingMenu = me.getController("MarkingMenu"), + markButton = button = markingMenu.getFirstButtonByName('docType'), + body = editor.getBody(); + config = { + app : app, + editor : editor, + markButton : markButton + }; + if (docTypes && docTypes.length) { + Ext.each(docTypes, function(docType) { + if(docType) { + var docString = docType.string; + config.marker = { + silent : true + }; + me.searchInlinesToMark(body, docString, config); + } + }, me); + } + }, + + parseDocNum : function(data, node, button) { + var me = this, response = data.response, markButton = button.getChildByName('docNumber'), + app = me.application, editor = me.getController("Editor"), config = { + app : app, + editor : editor, + markButton : markButton, + marker : { + silent : true + } + }; + if (response) { + Ext.each(response, function(item) { + var docNumImpossible = me.docNumImpossibleParents; + me.searchInlinesToMark(node, item.match.trim(), config, function(n) { + var extNode = new Ext.Element(n); + for (var i = 0; i < docNumImpossible.length; i++) { + if (extNode.up(docNumImpossible[i])) { + return false; + } + } + return true; + }); + }, me); + } + + }, + + /** + * This function all occurences of the matchStr in the node and fire mark event for + * those text nodes that passed the filter function. + * @param {HTMLElement} node Search in this node + * @param {String} matchStr The string to search + * @param {Object} config Configuration object that have the marker object inside + * example: { + * app:app, + * editor:editor, + * markButton: markButton, + * marker:{silent:true} + * } + * @param {function} [filter] The text node will be passed to this function + * if it returns false the node will be skipped + */ + searchInlinesToMark : function(node, matchStr, config, filter, beforeMarking) { + if (!node | !matchStr | !(config && config.app && config.editor && config.marker && config.markButton)) + return; + var textNodes = DomUtils.findTextNodes(matchStr, node); + Ext.each(textNodes, function(tNode) { + var index; + while ((!index | index != -1) && ( index = tNode.data.indexOf(matchStr)) != -1) { + var newNode = tNode; + if (Ext.isFunction(filter)) { + if (!filter(newNode)) + break; + } + if (index > 0) { + //TODO: fix bug, IndexSizeError: Index or size is negative or greater than the allowed amount + newNode = newNode.splitText(index); + } + if (newNode.data.length > matchStr.length) { + tNode = newNode.splitText(matchStr.length); + newNode = tNode.previousSibling; + } else { + index = -1; + } + var newWrapper = Ext.DomHelper.createDom({ + tag : 'span' + }); + newNode.parentNode.insertBefore(newWrapper, newNode); + newWrapper.appendChild(newNode); + if (Ext.isFunction(beforeMarking)) { + beforeMarking(newWrapper); + } + + config.editor.selectNode(newWrapper); + config.app.fireEvent('markingMenuClicked', config.markButton, config.marker); + }; + }, this); + }, + + searchTextToMark : function(node, matchStr, config, filter) { + var me = this; + if (!node | !matchStr | !(config && config.app && config.editor && config.marker && config.markButton)) + return; + var textNodes = DomUtils.findTextNodes(matchStr, node); + if(!textNodes.length) { + var tags = matchStr.match(DomUtils.tagRegex); + var re = new RegExp(tags.join("|"), "gi"); + var fragments = matchStr.split(re); + var firstFragment = fragments[0]; + var lastFragment = fragments[fragments.length-1]; + + if(firstFragment != lastFragment) { + var txNodes = DomUtils.findTextNodes(firstFragment, node); + if(txNodes.length == 1) { + //var span = me.textNodeToSpans(txNodes[0], firstFragment)[0]; + var span = txNodes[0]; + if(span) { + txNodes = DomUtils.findTextNodes(lastFragment, node); + //console.log(DomUtils.isNodeSiblingOfNode(span, txNodes[0])); + var objAsc = DomUtils.getCommonAscendant(span, txNodes[0]); + var newWrapper = Ext.DomHelper.createDom({ + tag : 'div', + cls : DomUtils.tempParsingClass + }); + if(objAsc.ascendant) { + //console.log(objAsc.firstParent, objAsc.ascendant, newWrapper); + objAsc.ascendant.insertBefore(newWrapper, objAsc.firstParent); + me.wrapPartNodeSibling(newWrapper, null, function(sibling) { + if(sibling == objAsc.secondParent) { + return true; + } + return false; + }); + me.application.fireEvent('markingRequest', config.markButton, { + nodes : [newWrapper] + }); + } + } + } + } + } + }, + + wrapPartNodeSibling : function(wrapNode, guardFunction, isLastNodeFunction) { + var sibling = wrapNode.nextSibling; + while (sibling) { + if (Ext.isFunction(guardFunction)) { + if (guardFunction(sibling)) { + break; + } + } + wrapNode.appendChild(sibling); + if (Ext.isFunction(isLastNodeFunction)) { + if (isLastNodeFunction(sibling)) { + break; + } + } + sibling = wrapNode.nextSibling; + } + }, + + wrapPartNode : function(partNode, delimiterNode) { + var newWrapper = Ext.DomHelper.createDom({ + tag : 'div', + cls : DomUtils.tempParsingClass + }); + while (partNode.parentNode && partNode.parentNode != delimiterNode) { + partNode = partNode.parentNode; + } + if(partNode.parentNode) { + partNode.parentNode.insertBefore(newWrapper, partNode); + } + newWrapper.appendChild(partNode); + return newWrapper; + }, + + wrapBodyParts : function(partName, parts, node, button) { + var me = this, app = me.application, editor = me.getController("Editor"), + markButton, numButton, nodesToMark = [], numsToMark = [], + markButton = button.getChildByName(partName), numButton = markButton.getChildByName("num"); + + Ext.each(parts, function(element) { + if(!element.value.trim()) return; + var textNodes = DomUtils.findTextNodes(element.value, node), + extNode = new Ext.Element(textNodes[0]), + extParent = extNode.parent("." + DomUtils.tempParsingClass, true), parent, + partNode; + if (extParent || textNodes.length == 0) { + return; + } else { + partNode = (extNode.dom.parentNode == node) ? extNode.dom : extNode.dom.parentNode; + var newWrapper = me.wrapPartNode(partNode, node); + element.wrapper = newWrapper; + nodesToMark.push(newWrapper); + } + numsToMark = Ext.Array.push(numsToMark, me.textNodeToSpans(textNodes[0], element.value)); + }, this); + Ext.each(nodesToMark, function(node) { + me.wrapPartNodeSibling(node, function(sibling) { + var extSib = new Ext.Element(sibling), elButton = DomUtils.getButtonByElement(sibling); + /* If sibling is marked with the same button or it is temp element then stop the loop */ + if ((elButton && (elButton.id === markButton.id)) || (extSib.is('.' + DomUtils.tempParsingClass))) { + return true; + } + return false; + }); + }, this); + if (numsToMark.length > 0) { + app.fireEvent('markingRequest', numButton, { + silent : true, + noEvent : true, + nodes : numsToMark + }); + } + if (nodesToMark.length > 0) { + app.fireEvent('markingRequest', markButton, { + silent : true, + noEvent : true, + nodes : nodesToMark + }); + } + // Do contains elements + Ext.each(parts, function(element) { + var contains = element.contains, containsPartName = Ext.Object.getKeys(contains)[0]; + if (containsPartName && contains[containsPartName]) { + try { + me.wrapBodyParts(containsPartName, contains[containsPartName], element.wrapper, button); + } catch (e) { + Ext.log({level: "error"}, e); + } + } + }, this); + }, + + parseBodyParts : function(data, node, button) { + var me = this, app = me.application, parts = data.response, partName; + if (parts) { + partName = Ext.Object.getKeys(parts)[0]; + if (partName) { + me.wrapBodyParts(partName, parts[partName], node, button); + app.fireEvent('nodeChangedExternally', node, { + change : true, + silent: true + }); + } + } + }, + + wrapStructurePart : function(name, delimiter, prevPartNode) { + var me = this, app = me.application, editor = me.getController("Editor"), + body = editor.getBody(), partNode, wrapNode, + iterNode = Ext.query('*[class='+DocProperties.getDocClassList()+']', body)[0]; + + if (!prevPartNode) { + while (iterNode && iterNode.childNodes.length == 1) { + iterNode = iterNode.firstChild; + } + partNode = iterNode.firstChild; + wrapNode = me.wrapPartNode(partNode, partNode.parentNode); + me.wrapPartNodeSibling(wrapNode, function(sibling) { + var textNodes = DomUtils.findTextNodes(delimiter.value, sibling); + if (textNodes.length > 0) { + return true; + } + return false; + }); + } else if (prevPartNode.nextSibling) { + partNode = prevPartNode.nextSibling; + wrapNode = me.wrapPartNode(partNode, partNode.parentNode); + + if (delimiter.value) { + me.wrapPartNodeSibling(wrapNode, function(sibling) { + if (delimiter.flags && delimiter.flags.indexOf("i") != -1) { + sibling = sibling.previousSibling; + } + var textNodes = DomUtils.findTextNodes(delimiter.value, sibling); + if (textNodes.length > 0) { + return true; + } + return false; + }); + + } else + me.wrapPartNodeSibling(wrapNode); + } + return wrapNode; + }, + + parseQuotes : function(data) { + var me = this, app = me.application, + editor = me.getController("Editor"), markingMenu = me.getController("MarkingMenu"), + markButton = markingMenu.getFirstButtonByName('quotedText'), + markButtonStructure = markingMenu.getFirstButtonByName('quotedStructure'), + body = editor.getBody(); + config = { + app : app, + editor : editor, + marker : { + silent : true + } + }; + if (data && data.length) { + Ext.each(data, function(quote) { + if(quote.start.string && quote.quoted.string && quote.end.string) { + //var string = quote.start.string+quote.quoted.string+quote.end.string; + var string = quote.quoted.string; + // If the string doesn't contains tags + if(!string.match(DomUtils.tagRegex)) { + config.markButton = markButton; + me.searchInlinesToMark(body, string, config, null, function(node) { + if(node.parentNode && node.parentNode.nodeName.toLowerCase() == "span" + && node.parentNode.childNodes.length == 3 && node.parentNode.parentNode) { + if(node.previousSibling) { + node.parentNode.parentNode.insertBefore(node.previousSibling, node.parentNode); + } + if(node.nextSibling) { + DomUtils.insertAfter(node.nextSibling, node.parentNode); + } + } + }); + } else { + config.markButton = markButtonStructure; + try { + me.searchTextToMark(body, string, config); + } catch(e) { + console.log(e); + } + + } + } + }, me); + } + }, + + parseStructure : function(data) { + var me = this, app = me.application, structure = data.structure, prevPartNode = null, + markingMenu = me.getController("MarkingMenu"), markButton, siblings; + if (structure && data.success) { + Ext.each(structure, function(name) { + siblings = DomUtils.getSiblingsFromNode(prevPartNode); + if(!DomUtils.allNodesHaveClass(siblings, DomUtils.breakingElementClass)) { + prevPartNode = me.wrapStructurePart(name, data[name], prevPartNode); + if (prevPartNode) { + markButton = markingMenu.getFirstButtonByName(name); + app.fireEvent('markingRequest', markButton, { + nodes : [prevPartNode] + }); + } + } + }); + } + }, + + parseReference: function(data) { + var me = this, editor = me.getController("Editor"), + body = editor.getBody(), nodesToMark = [], button = Ext.getCmp('ref0'); + + Ext.each(data, function(obj) { + var matchStr = obj.ref, + textNodes = DomUtils.findTextNodes(matchStr,body); + Ext.each(textNodes,function(tNode){ + if(!me.canPassNode(tNode,button.id,[DomUtils.tempParsingClass])){ + return; + } + me.textNodeToSpans(tNode, matchStr, function(node){ + nodesToMark.push(node); + }); + }, this); + }, this); + if (nodesToMark.length>0) { + me.application.fireEvent('markingRequest', button, {silent:true, nodes:nodesToMark}); + } + }, + + /* This function decides if a node can pass by parent class or id + * @param {HTMLElement} node + * @param {String} parentButtonId if this is equal to parent's button id the function returns false + * @param {String[]} [parentClasses] if parent has one of these classes the function returns false + * @returns boolean + */ + canPassNode : function(node,parentButtonId,parentClasses, parentButtonName){ + var parent = node.parentNode; + if(parent){ + var parentId = parent.getAttribute(DomUtils.elementIdAttribute); + if(DomUtils.getButtonIdByElementId(parentId) == parentButtonId){ + return false; + } + if(parentButtonName && parentId){ + var markedElement = DocProperties.getMarkedElement(parentId); + if(markedElement && markedElement.button.waweConfig.name == parentButtonName) + return false; + } + var classes = parent.getAttribute("class"); + if(classes && parentClasses){ + for(var i=0; i" + content + ""; + }, + + /* This function wrap part of textnode in span element(s) + * can apply the passed function to every new element + * Example of usage: + * the result of calling + * textNodeToSpans(, "textNode") + * will be: + * [textNode] + * + * and the result of calling + * textNodeToSpans(, "is") + * will be: + * [is, is] + * one span for every occurrence of "is". + * + * @param {TextNode} tNode The textnode containing str + * @param {String} str String to wrap in a span element, + * can have multiple occurrences in tNode, every occurrence + * will be wrapped in a span element + * @param {Function} [applyFn] Function that takes the new node as argument + * to apply to every new element + * @returns {HTMLElement[]} A list of span elements with "tempParsingClass" class + * */ + textNodeToSpans : function(tNode, str, applyFn) { + var index, spanElements = []; + // This is a while instead of if because in the tNode may be + // multiple occurrences of str, every occurrences will be a span + while ((!index | index != -1) && ( index = tNode.data.indexOf(str)) != -1) { + var newNode = tNode; + if (index > 0) { + newNode = newNode.splitText(index); + } + if (newNode.data.length > str.length) { + tNode = newNode.splitText(str.length); + newNode = tNode.previousSibling; + } else { + index = -1; + } + var newWrapper = Ext.DomHelper.createDom({ + tag : 'span', + cls : DomUtils.tempParsingClass + }); + if (newNode.parentNode) { + newNode.parentNode.insertBefore(newWrapper, newNode); + newWrapper.appendChild(newNode); + } + if (Ext.isFunction(applyFn)) { + applyFn(newWrapper); + } + spanElements.push(newWrapper); + }; + return spanElements; + }, + + restoreQuotes: function(node) { + var me = this, finalQuotes, markingMenu = me.getController("MarkingMenu"), + markButton = markingMenu.getFirstButtonByName('body') || markingMenu.getFirstButtonByName('mainBody'), + markStructureButton = markingMenu.getFirstButtonByName('quotedStructure'); + Ext.each(me.quotedElements, function(quote, index) { + var tmpEl = node.querySelector("[poslist='"+index+"']"); + if(tmpEl) { + tmpEl.parentNode.replaceChild(quote, tmpEl); + } + }); + + finalQuotes = node.querySelectorAll("[class~=quotedText], [class~=quotedStructure]"); + + Ext.each(finalQuotes, function(quote) { + me.callParser("body", Ext.fly(quote).getHTML(), function(result) { + var jsonData = Ext.decode(result.responseText, true), + nodeToParse = quote, elName = DomUtils.getElementNameByNode(quote); + if (jsonData) { + //TODO: else case + if(Ext.Object.getKeys(jsonData.response).length) { + if(elName == "quotedText") { + nodeToParse = Ext.DomHelper.createDom({ + tag : 'div' + }); + quote.parentNode.insertBefore(nodeToParse, quote); + DomUtils.moveChildrenNodes(quote, nodeToParse); + quote.parentNode.removeChild(quote); + me.application.fireEvent('markingRequest', markStructureButton, { + nodes : [nodeToParse], + onFinish: function(nodes) { + try { + me.parseBodyParts(jsonData, nodes[0], markButton); + } catch(e) {}; + } + }); + } else { + try { + me.parseBodyParts(jsonData, nodeToParse, markButton); + } catch(e) {}; + } + } + } + }); + }); + + me.quotedElements = []; + }, + + saveQuotes: function(node) { + var me = this; + me.quotedElements = node.querySelectorAll("[class~=quotedText], [class~=quotedStructure]"); + + Ext.each(me.quotedElements, function(quote, index) { + var tmpEl = Ext.DomHelper.createDom({ + tag : 'span', + cls : DomUtils.tempParsingClass + }); + tmpEl.setAttribute("poslist", index); + quote.parentNode.replaceChild(tmpEl, quote); + }); + }, + + activateParsers : function() { + var me = this, editor = me.getController("Editor"), + app = me.application, buttonName; + + if (!DocProperties.getLang()) { + Ext.MessageBox.alert(Locale.strings.parsersErrors.LANG_MISSING_ERROR_TITLE, Locale.strings.parsersErrors.langMissingError); + return; + } + + app.fireEvent(Statics.eventsNames.progressStart, null, { + value : 0.1, + text : Locale.getString("parsing", me.getPluginName()) + }); + Ext.defer(function() { + // Clean docuement, removing white spaces, before parsing + /*var extNode = new Ext.Element(editor.getBody()); + extNode.clean();*/ + app.fireEvent(Statics.eventsNames.progressUpdate, Locale.getString("parsing", me.getPluginName())); + + var callDocTypeParser = function() { + me.callParser("docType", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + me.parseDocTypes([jsonData.response[0]]); + } + app.fireEvent(Statics.eventsNames.progressEnd); + }, function() { + app.fireEvent(Statics.eventsNames.progressEnd); + }); + }; + var callQuoteParser = function() { + var content = editor.getContent(); + + content = content.replace(/<([a-z][a-z0-9]*)[^>]*?(\/?)>/gi, "<$1$2>"); + + me.callParser("quote", content, function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + me.parseQuotes(jsonData.response); + } + //callDocTypeParser(); + //callReferenceParser(); + callStrParser(); + }, function() { + //callDocTypeParser(); + //callReferenceParser(); + callStrParser(); + }); + }; + var callDateParser = function() { + callDocTypeParser(); + /*me.callParser("date", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + //me.parseReference(jsonData.response); + //me.parseDocDate(jsonData, editor.getBody(), editor); + //me.parseQuotes(jsonData.response); + } + callDocTypeParser(); + }, function() { + callDocTypeParser(); + });*/ + }; + var callStrParser = function() { + me.saveQuotes(editor.getBody()); + + me.callParser("structure", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseStructure(jsonData.response); + } + me.restoreQuotes(editor.getBody()); + callReferenceParser(); + }, function() { + me.restoreQuotes(editor.getBody()); + callReferenceParser(); + }); + }; + + var callReferenceParser = function() { + me.callParser("reference", editor.getContent(), function(result) { + var jsonData = Ext.decode(result.responseText, true); + if (jsonData) { + me.parseReference(jsonData.response); + } + callDateParser(); + }, function() { + callDateParser(); + }); + }; + + callQuoteParser(); + + }, 5, me); + }, + + /** + * This function call server side parser with different callbacks + * @param {String} name + * @param {String} sendString + * @param {Function} success + * @param {Function} failure + * @param {Function} callback Call anyway + */ + callParser : function(name, sendString, success, failure, callback) { + var me = this, contentLang = DocProperties.getLang(), config = me.parsersConfig[name]; + + if (!contentLang) { + return; + } + + if (config) { + Ext.Ajax.request({ + // the url of the web service + url : config.url, + timeout : me.parserAjaxTimeOut, + // set the method + method : config.method, + params : { + s : sendString, + f : 'json', + l : contentLang, + doctype : DocProperties.getDocType() + }, + success : success, + failure : failure, + callback : callback + }); + } else if (failure) { + failure(); + if (callback) { + callback(); + } + } + }, + + init : function() { + var me = this; + //Listening progress events + me.application.on(Statics.eventsNames.afterLoad, me.onDocumentLoaded, me); + me.application.on(Statics.eventsNames.nodeChangedExternally, me.parseElements, me); + } +}); diff --git a/languagesPlugins/akoma3.0/client/parsers/strings.json b/languagesPlugins/akoma3.0/client/parsers/strings.json new file mode 100644 index 00000000..b94cf234 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/parsers/strings.json @@ -0,0 +1,27 @@ +{ + "en": { + "parseDocumentText": "Automatic markup", + "parseDocumentTooltip": "Try to markup automatically this document", + "parsing": "Parsing" + }, + "it": { + "parseDocumentText": "Markup automatico", + "parseDocumentTooltip": "Prova a marcare il documento automaticamente", + "parsing": "Riconoscimento" + }, + "es": { + "parseDocumentText": "Marcado Autimático", + "parseDocumentTooltip": "Trate de analizar el documento automáticamente", + "parsing": "Análisis" + }, + "ro": { + "parseDocumentText": "Parser", + "parseDocumentTooltip": "Încercă să analizăzi documentul în mod automat", + "parsing": "Parsing" + }, + "ru": { + "parseDocumentText": "Парсер", + "parseDocumentTooltip": "Попробуйте анализировать этот документ автоматически", + "parsing": "Анализ" + } +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/client/parsers/structure.json b/languagesPlugins/akoma3.0/client/parsers/structure.json new file mode 100644 index 00000000..0454bfe3 --- /dev/null +++ b/languagesPlugins/akoma3.0/client/parsers/structure.json @@ -0,0 +1,3 @@ +{ + "controllers": ["ParsersController"] +} \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json b/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json index dc5a665c..82d10448 100644 --- a/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/act/ch/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json b/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json index ad761e90..8ab93669 100644 --- a/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/act/it/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, @@ -380,4 +386,5 @@ }, "commonReference": { } + } diff --git a/languagesPlugins/akoma3.0/interface/act/markupMenu.json b/languagesPlugins/akoma3.0/interface/act/markupMenu.json index 07f48637..f5f82e6d 100644 --- a/languagesPlugins/akoma3.0/interface/act/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/act/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -219,6 +222,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json index 31ca5c9f..bbd8b2ff 100644 --- a/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/act/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/languagesPlugins/akoma3.0/interface/act/viewConfigs.json b/languagesPlugins/akoma3.0/interface/act/viewConfigs.json deleted file mode 100644 index 86a78b62..00000000 --- a/languagesPlugins/akoma3.0/interface/act/viewConfigs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "allowedViews": ["xml","pdf"] -} diff --git a/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json b/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json index 8199a7c7..414b037d 100644 --- a/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/amendment/markupMenu.json @@ -95,6 +95,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -201,7 +204,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -224,6 +227,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json index 12ee68b6..7efcaf30 100644 --- a/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/amendment/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/languagesPlugins/akoma3.0/interface/bill/ch/content.css b/languagesPlugins/akoma3.0/interface/bill/ch/content.css new file mode 100644 index 00000000..4c196377 --- /dev/null +++ b/languagesPlugins/akoma3.0/interface/bill/ch/content.css @@ -0,0 +1,13 @@ +.docTitle { + font-size: 12pt; + font-weight: bold; +} + +.docProponent { + font-style: italic; +} + +.article > .num { + font-weight: bold; + margin-right: 40px; +} diff --git a/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json b/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json index ad761e90..f7fe261e 100644 --- a/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/bill/ch/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json b/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json index ad761e90..f7fe261e 100644 --- a/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/bill/it/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/bill/markupMenu.json b/languagesPlugins/akoma3.0/interface/bill/markupMenu.json index a24f92f2..a71ff23a 100644 --- a/languagesPlugins/akoma3.0/interface/bill/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/bill/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json index 2c11d1b4..1afff351 100644 --- a/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/bill/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json b/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json index 6ca8122d..21d11e58 100644 --- a/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu.json @@ -84,6 +84,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -190,7 +193,7 @@ "pattern": "inline" }, "mod": { - "pattern": "inline" + "pattern": "container" }, "mref": { "pattern": "inline" @@ -213,6 +216,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json index 5f3be380..3e4a8a85 100644 --- a/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/bill/uy/markupMenu_rules.json @@ -1,7 +1,7 @@ { "elements": { "preface": { - "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature", "autoridad"] + "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docAuthority", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature", "autoridad"] } } } diff --git a/languagesPlugins/akoma3.0/interface/default/content.css b/languagesPlugins/akoma3.0/interface/default/content.css new file mode 100644 index 00000000..68f3803b --- /dev/null +++ b/languagesPlugins/akoma3.0/interface/default/content.css @@ -0,0 +1,7 @@ +.ins { + font-weight: bold; +} + +.del { + text-decoration: line-through; +} diff --git a/languagesPlugins/akoma3.0/interface/default/custom_buttons.json b/languagesPlugins/akoma3.0/interface/default/custom_buttons.json index 47cb0946..bfd36fe3 100644 --- a/languagesPlugins/akoma3.0/interface/default/custom_buttons.json +++ b/languagesPlugins/akoma3.0/interface/default/custom_buttons.json @@ -1,4 +1,9 @@ { + "docType" : { + "wrapperStyle": { + "this": "font-weight: bold;" + } + }, "annex": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { @@ -11,7 +16,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border:1px solid #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, @@ -19,7 +24,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color: #8C489F;" } }, @@ -27,10 +32,10 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color:#FF6600;" } }, - + "coverPage": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { @@ -38,33 +43,33 @@ "this": "border:1px solid #74BAAC;" } }, - + "mainBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color:#2385A0;" } }, "amendmentBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, "debateBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#29A2C6;" } }, "fragmentBody": { "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#29A2C6;" } }, "attachments": { @@ -85,7 +90,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border-color: #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC;color:#2385A0;" } }, @@ -93,7 +98,7 @@ "buttonStyle": "background-color: #74BAAC;", "wrapperStyle": { "before": "background-color: #74BAAC; border:1px solid #74BAAC;", - "this": "border:1px solid #74BAAC;" + "this": "border:1px solid #74BAAC; color: #66A15E;" } }, "item": { @@ -102,6 +107,16 @@ }, "wrapperElement": "

      &content;

      " }, + "p": { + "wrapperElement": "

      &content;

      ", + "remove": { + "wrapperStyle": ["after", "before", "this"] + }, + "wrapperStyle" : { + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" + } + }, "recitals": { "remove": { "wrapperRules": ["addWrapperElement"] @@ -134,12 +149,21 @@ } } }, + "ref": { + "wrapperStyle": { + "this": "background-color: #DBEADC;text-decoration:underline;" + } + }, "quotedStructure": { "wrapperRules": { "addWrapperElement": { "type" : "mod" } + }, + "wrapperStyle": { + "this": "border-radius: 3px; border:1px solid #C0E0DA; border-left: 10px solid #CCC; padding:3px; margin:3px 0px 3px 0px;" } + }, "quotedText": { "wrapperRules": { @@ -160,7 +184,7 @@ } } }, - + "subdivision":{ "wrapperClass":"patternName patternName", "wrapperRules": { @@ -168,11 +192,11 @@ "values":{ "name": "subdivision" } - + } } }, - + "signature": { "wrapperStyle": "padding: 3px;" }, diff --git a/languagesPlugins/akoma3.0/interface/default/custom_patterns.json b/languagesPlugins/akoma3.0/interface/default/custom_patterns.json index e07e0329..b041ec9c 100644 --- a/languagesPlugins/akoma3.0/interface/default/custom_patterns.json +++ b/languagesPlugins/akoma3.0/interface/default/custom_patterns.json @@ -8,7 +8,7 @@ } }, "wrapperStyle" : { - "before":"border: 1px solid #A5D3CA; background-color: #A5D3CA; font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display:block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #A5D3CA; background-color: #A5D3CA; color: black; font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display:block;text-align:center; margin-bottom:5px; cursor:pointer;", "this": "border-radius: 3px; border:1px solid #A5D3CA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -16,7 +16,7 @@ "container":{ "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -24,7 +24,7 @@ "block":{ "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, @@ -32,9 +32,9 @@ "inline":{ "buttonStyle": "background-color:#DBEADC; border-radius: 3px;", "wrapperStyle" : { - "before": "background-color:#DBEADC; border-radius: 3px 0px 0px 3px; border:1px solid #6CA870; padding-left:2px; padding-right:2px; margin-right:2px; margin-left:2px; color:#6D6D6D;", - "after": "background-color:#DBEADC; border-radius: 0px 3px 3px 0px; border:1px solid #6CA870; padding-left:2px; padding-right:2px; margin-left:2px; margin-right:2px; color:#6D6D6D;", - "this": "border-radius: 3px; line-height:19px;" + "before": "background-color:#DBEADC; border-radius: 10px 0px 0px 10px; border:1px solid #6CA870; border-right:0px; padding-left:4px; padding-right:2px; margin-right:2px; color:#6D6D6D; ", + "after": "background-color:#DBEADC; border-radius: 0px 10px 10px 0px; border:1px solid #6CA870; border-left:0px; padding-left:2px; padding-right:4px; margin-left:2px; color:#6D6D6D;", + "this": "border-radius: 10px; line-height:19px; margin: 0 2px;" } }, "popup":{ @@ -42,7 +42,7 @@ "wrapperClass" : "patternName elementName", "buttonStyle": "background-color:#C0E0DA; border-radius: 3px;", "wrapperStyle" : { - "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;", + "before":"border: 1px solid #C0E0DA; background-color:#C0E0DA;color:#000000;font-size:8pt;position:relative;left:85%;margin:0px;padding:2px 4px 2px 4px;border-radius: 3px;width:90px;display: block;text-align:center; margin-bottom:5px;cursor:pointer;", "this": "border-radius: 3px; border:1px solid #C0E0DA; padding:3px; margin:3px 0px 3px 0px;" } }, diff --git a/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json b/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json index a8181161..5299513f 100644 --- a/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/default/en/markupMenu.json @@ -493,7 +493,7 @@ }, "quotedStructure": { "label": "Set quoted structure", - "shortLabel": "quotedStructure" + "shortLabel": "quoted structure" }, "quotedText": { "label": "Set quoted text", diff --git a/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json b/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json index 034c26b0..0f7b1303 100644 --- a/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/default/es/markupMenu.json @@ -140,8 +140,8 @@ "shortLabel": "tapa" }, "date": { - "label": "fFecha", - "shortLabel": "data" + "label": "Fecha", + "shortLabel": "Fecha" }, "debateBody": { "label": "Cuerpo", @@ -181,7 +181,7 @@ }, "docDate": { "label": "Fecha del documento", - "shortLabel": "data-doc" + "shortLabel": "Fecha-Doc" }, "docIntroducer": { "label": "Introductor", @@ -217,7 +217,7 @@ }, "docTitle": { "label": "Título de documento", - "shortLabel": "titolo-doc" + "shortLabel": "Título-doc" }, "docType": { "label": "Tipo de documento", @@ -228,8 +228,8 @@ "shortLabel": "link-doc" }, "entity": { - "label": "Entidad'", - "shortLabel": "entita" + "label": "Entidad", + "shortLabel": "Entidad" }, "eol": { "label": "Final de la línea", @@ -237,7 +237,7 @@ }, "eop": { "label": "Final de la pagina", - "shortLabel": "fine-pagina" + "shortLabel": "Final-pagina" }, "event": { "label": "Evento", @@ -269,7 +269,7 @@ }, "from": { "label": "De", - "shortLabel": "da" + "shortLabel": "De" }, "hcontainer": { "label": "Contenedor jerárquico genérico", @@ -280,12 +280,12 @@ "shortLabel": "Encabezado-juicio" }, "heading": { - "label": "Rúbrica", - "shortLabel": "Rúbrica" + "label": "Nomen juris", + "shortLabel": "Nomen-juris" }, "indent": { - "label": "Inciso", - "shortLabel": "Inciso" + "label": "Indentación", + "shortLabel": "Indentación" }, "inline": { "label": "Inline", @@ -341,7 +341,7 @@ }, "mainBody": { "label": "cuerpo de documento", - "shortLabel": "corpo-doc" + "shortLabel": "cuerpo-doc" }, "marker": { "label": "marcador", @@ -357,7 +357,7 @@ }, "mod": { "label": "Modificación", - "shortLabel": "modifica" + "shortLabel": "Modificación" }, "motivation": { "label": "Motivación", @@ -365,7 +365,7 @@ }, "mref": { "label": "Referencias múltiples", - "shortLabel": "rif-multipli" + "shortLabel": "Ref-Multiple" }, "narrative": { "label": "Narración", @@ -425,7 +425,7 @@ }, "paragraph": { "label": "Inciso", - "shortLabel": "comma" + "shortLabel": "Inciso" }, "part": { "label": "Parte", @@ -480,8 +480,8 @@ "shortLabel": "disposizione" }, "quantity": { - "label": "Cantidad'", - "shortLabel": "quantita" + "label": "Cantidad", + "shortLabel": "Cantidad" }, "question": { "label": "Pregunta", @@ -493,11 +493,11 @@ }, "quotedStructure": { "label": "Novella estructurada", - "shortLabel": "novella-strutturata" + "shortLabel": "novella strutturata" }, "quotedText": { "label": "Novella textual", - "shortLabel": "novella-testo" + "shortLabel": "novella testo" }, "recital": { "label": "Justificación", @@ -509,7 +509,7 @@ }, "ref": { "label": "Referencia", - "shortLabel": "riferimento" + "shortLabel": "Referencia" }, "relatedDocument": { "label": "Documento relacionado", @@ -528,16 +528,16 @@ "shortLabel": "intervallo-mod" }, "role": { - "label": "Ruolo", - "shortLabel": "ruolo" + "label": "Rol", + "shortLabel": "Rol" }, "rollCall": { "label": "Acta de Votación", "shortLabel": "atto-votazione" }, "rref": { - "label": "Intervallo di riferimenti", - "shortLabel": "intervallo-rif" + "label": "Intervalo de la Referencia", + "shortLabel": "Intervalo-ref" }, "rule": { "label": "Regla", @@ -588,8 +588,8 @@ "shortLabel": "subFlow" }, "subheading": { - "label": "Subrúbrica", - "shortLabel": "subrúbrica" + "label": "SubNomen", + "shortLabel": "subnomen" }, "sublist": { "label": "Sub-list", diff --git a/languagesPlugins/akoma3.0/interface/default/markupMenu.json b/languagesPlugins/akoma3.0/interface/default/markupMenu.json index 51bc1a13..a3c2a9c2 100644 --- a/languagesPlugins/akoma3.0/interface/default/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/default/markupMenu.json @@ -81,7 +81,7 @@ "pattern": "container" }, "component": { - "pattern": "patternless" + "pattern": "container" }, "componentRef": { "pattern": "patternless" @@ -131,6 +131,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -168,7 +171,7 @@ "pattern": "inline" }, "documentRef": { - "pattern": "patternless" + "pattern": "inline" }, "entity": { "pattern": "inline" @@ -314,6 +317,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "papers": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json index de9bf9a4..f044b28e 100644 --- a/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/default/markupMenu_rules.json @@ -1,6 +1,6 @@ { "rootElements": ["coverPage", "preface", "preamble", "body", "mainBody", "amendmentBody", "debateBody", "fragmentBody", "collectionBody", "conclusions", "attachments", "components"], - "commonElements": ["commonElement", "hierarchicalStructure", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "commonJudgement", "commonReport", "argument", "header", "declarationOfVote", "writtenStatements", "speech", "speechGroup", "remark", "rollCall", "resolutions", "questions", "pointOfOrder", "proceduralMotions", "personalStatements", "petitions", "party", "ministerialStatements", "judge", "change", "narrative", "nationalInterest", "neutralCitation", "papers", "opinion", "oralStatements", "scene", "noticesOfMotion", "foreign", "address", "administrationOfOath"], + "commonElements": ["commonElement", "hierarchicalStructure", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "commonJudgement", "commonReport", "argument", "header", "declarationOfVote", "writtenStatements", "speech", "speechGroup", "remark", "rollCall", "resolutions", "questions", "pointOfOrder", "proceduralMotions", "personalStatements", "petitions", "party", "ministerialStatements", "judge", "change", "narrative", "nationalInterest", "neutralCitation", "papers", "opinion", "oralStatements", "scene", "noticesOfMotion", "foreign", "address", "administrationOfOath"], "defaults": { "leaveExpanded": false, @@ -13,7 +13,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] @@ -22,10 +22,10 @@ "children": ["def", "decoration", "docPurpose"] }, "contentInline": { - "children": ["del", "omissis", "outcome", "ins", "eop", "noteRef", "authorialNote"] + "children": ["omissis", "outcome", "eop", "noteRef", "authorialNote"] }, "commonElement": { - "children": ["process", "location", "concept", "quantity", "organization", "object", "date", "term", "time", "event", "person", "role", "entity"] + "children": ["process", "location", "concept", "quantity", "organization", "object", "date", "term", "time", "event", "person", "role", "entity", "component"] }, "commonReference": { "children": ["ref", "rref", "mref"] @@ -37,7 +37,7 @@ "children": ["vote", "question", "answer"] }, "article": { - "children": ["num", "heading", "subheading", "paragraph", "subparagraph", "blockList"] + "children": ["num", "heading", "subheading", "paragraph", "subparagraph", "blockList", "p"] }, "blockList": { @@ -51,7 +51,7 @@ "children": ["num", "heading", "subheading"] }, "section" : { - "children": ["num", "heading", "subheading", "subsection"] + "children": ["num", "heading", "subheading", "subsection", "p"] }, "body": { "children": ["title", "chapter", "section", "article", "clause", "subclause", "list", "point", "paragraph", "mod"] @@ -76,7 +76,7 @@ }, "clause": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "questions": { "children": ["question"] @@ -88,14 +88,14 @@ "children": ["subrule"] }, "chapter": { - "children": ["num", "heading", "subheading", "subchapter"] + "children": ["num", "heading", "subheading", "subchapter", "p"] }, "speech": { "children": ["from"] }, "paragraph": { - "children": ["num", "heading", "subparagraph"] + "children": ["num", "heading", "subparagraph", "p"] }, "conclusions": { "children": ["date", "location", "blockContainer", "signature"] @@ -148,11 +148,11 @@ }, "list": { - "children": ["intro", "num", "heading", "subheading", "point", "wrap"] + "children": ["intro", "num", "heading", "subheading", "point", "wrap", "p"] }, "point": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "preamble": { @@ -160,7 +160,7 @@ }, "preface": { - "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature"] + "children": ["toc", "docType", "docNumber", "docDate", "docTitle", "docAuthority", "docProponent", "docStage", "docStatus", "docCommittee", "docIntroducer", "docJurisdiction", "docketNumber","shortTitle", "longTitle", "citations", "legislature"] }, "attachments": { @@ -174,10 +174,10 @@ }, "subclause": { - "children": ["num", "heading", "subheading"] + "children": ["num", "heading", "subheading", "p"] }, "title": { - "children": ["num", "heading", "subheading", "subtitle"] + "children": ["num", "heading", "subheading", "subtitle", "p"] }, "ref": { "askFor": { @@ -235,7 +235,8 @@ }, "placement": { "label": "Placement", - "type": "text", + "type": "list", + "values": ["inline", "bottom"], "insert": { "attribute": { "name": "placement" diff --git a/languagesPlugins/akoma3.0/interface/default/viewConfigs.json b/languagesPlugins/akoma3.0/interface/default/viewConfigs.json index 47f6bb70..0923cb75 100644 --- a/languagesPlugins/akoma3.0/interface/default/viewConfigs.json +++ b/languagesPlugins/akoma3.0/interface/default/viewConfigs.json @@ -1,3 +1,3 @@ { - "allowedViews": ["xml","pdf", "at4am"] + "allowedViews": ["xml","pdf", "at4am", "xmlDiff", "newPdf"] } diff --git a/languagesPlugins/akoma3.0/interface/doc/markupMenu.json b/languagesPlugins/akoma3.0/interface/doc/markupMenu.json index 31f78a42..6b6a5396 100644 --- a/languagesPlugins/akoma3.0/interface/doc/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/doc/markupMenu.json @@ -87,6 +87,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -222,6 +225,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json index 428c2dd8..7f0776f6 100644 --- a/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/doc/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json new file mode 100644 index 00000000..6649c309 --- /dev/null +++ b/languagesPlugins/akoma3.0/interface/documentCollectionContent/markupMenu_rules.json @@ -0,0 +1,4 @@ +{ + "rootElements": ["coverPage", "preface", "preamble", "collectionBody", "conclusions"], + "commonElements": ["commonElement", "genericElement", "externalFragment", "commonsInline", "contentInline", "commonReference", "remark", "foreign"] +} diff --git a/languagesPlugins/akoma3.0/interface/statment/markupMenu.json b/languagesPlugins/akoma3.0/interface/statment/markupMenu.json index 8d66256b..e136195d 100644 --- a/languagesPlugins/akoma3.0/interface/statment/markupMenu.json +++ b/languagesPlugins/akoma3.0/interface/statment/markupMenu.json @@ -81,6 +81,9 @@ "division": { "pattern": "hcontainer" }, + "docAuthority": { + "pattern": "inline" + }, "docCommittee": { "pattern": "inline" }, @@ -210,6 +213,9 @@ "outcome": { "pattern": "inline" }, + "p": { + "pattern": "inline" + }, "paragraph": { "pattern": "hcontainer" }, diff --git a/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json b/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json index 5d0ee47e..4b8d517e 100644 --- a/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json +++ b/languagesPlugins/akoma3.0/interface/statment/markupMenu_rules.json @@ -7,7 +7,7 @@ "children": ["sublist", "indent", "division", "part", "proviso", "book", "rule", "tome", "blockList", "transitional", "subdivision", "fillIn", "alinea"] }, "genericElement": { - "children": ["hcontainer", "inline", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] + "children": ["hcontainer", "inline", "p", "placeholder", "blockContainer", "block", "tblock", "container", "marker"] }, "externalFragment": { "children": ["extractText", "rmod", "mmod", "mod", "quotedText", "extractStructure", "quotedStructure"] diff --git a/languagesPlugins/akoma3.0/licence.txt b/languagesPlugins/akoma3.0/licence.txt new file mode 100644 index 00000000..0475a094 --- /dev/null +++ b/languagesPlugins/akoma3.0/licence.txt @@ -0,0 +1,43 @@ +Copyright (c) 2014 - Copyright holders CIRSFID and Department of +Computer Science and Engineering of the University of Bologna + +Authors: +Monica Palmirani – CIRSFID of the University of Bologna +Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +Luca Cervone – CIRSFID of the University of Bologna + +Permission is hereby granted to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The Software can be used by anyone for purposes without commercial gain, +including scientific, individual, and charity purposes. If it is used +for purposes having commercial gains, an agreement with the copyright +holders is required. The above copyright notice and this permission +notice shall be included in all copies or substantial portions of the +Software. + +Except as contained in this notice, the name(s) of the above copyright +holders and authors shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without prior +written authorization. + +The end-user documentation included with the redistribution, if any, +must include the following acknowledgment: "This product includes +software developed by University of Bologna (CIRSFID and Department of +Computer Science and Engineering) and its authors (Monica Palmirani, +Fabio Vitali, Luca Cervone)", in the same place and form as other +third-party acknowledgments. Alternatively, this acknowledgment may +appear in the software itself, in the same form and location as other +such third-party acknowledgments. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/languagesPlugins/akoma3.0/schema.xsd b/languagesPlugins/akoma3.0/schema.xsd index 3d66126d..22bfa130 100644 --- a/languagesPlugins/akoma3.0/schema.xsd +++ b/languagesPlugins/akoma3.0/schema.xsd @@ -1,7 +1,7 @@ - @@ -11,12 +11,8 @@ ===================================================================== Akoma Ntoso main schema - supported by Africa i-Parliaments, a project sponsored by United - Nations Department of Economic and Social Affairs - Copyright (C) Africa i-Parliaments - - Release 16/01/2014 - Akoma Ntoso 3.0 CSD08 + Release 16/04/2014 - Akoma Ntoso 3.0 CSD10 Complete version. @@ -51,9 +47,9 @@ - Group - ANhier - + Group + ANhier + The group ANhier lists the elements that belong to the Akoma Ntoso legislative hierarchy @@ -91,9 +87,9 @@ The group ANhier lists the elements that belong to the Akoma Ntoso legislative h - Group - ANcontainers - + Group + ANcontainers + The group ANcontainers lists the elements that are containers and are specific to the Akoma Ntoso debate vocabulary @@ -113,9 +109,9 @@ The group ANcontainers lists the elements that are containers and are specific t - Group - basicContainers - + Group + basicContainers + The group basicContainers lists the elements that are containers and are specific to vocabulary of preambles, prefaces, conclusions and coverPages @@ -130,9 +126,9 @@ The group basicContainers lists the elements that are containers and are specifi - Group - preambleContainers - + Group + preambleContainers + The group preambleContainers lists the elements that are containers and are specific to the Akoma Ntoso preamble vocabulary @@ -148,9 +144,9 @@ The group preambleContainers lists the elements that are containers and are spec - Group - prefaceContainers - + Group + prefaceContainers + The group prefaceContainers lists the elements that are containers and are specific to the Akoma Ntoso preface vocabulary @@ -165,9 +161,9 @@ The group prefaceContainers lists the elements that are containers and are speci - Group - ANblock - + Group + ANblock + The group ANblock lists the elements that are blocks and are specific to the Akoma Ntoso vocabulary @@ -183,9 +179,9 @@ The group ANblock lists the elements that are blocks and are specific to the Ako - Group - ANinline - + Group + ANinline + The group ANinline lists the elements that are inline and are specific to the Akoma Ntoso vocabulary @@ -215,9 +211,9 @@ The group ANinline lists the elements that are inline and are specific to the Ak - Group - ANtitleInline - + Group + ANtitleInline + The group ANtitleInline lists the elements that are inline, are specific to the Akoma Ntoso vocabulary, and should only be used within the title element @@ -245,9 +241,9 @@ The group ANtitleInline lists the elements that are inline, are specific to the - Group - ANheaderInline - + Group + ANheaderInline + The group ANheaderInline lists the elements that are inline, are specific to the Akoma Ntoso vocabulary, and should only be used within the header element @@ -267,9 +263,9 @@ The group ANheaderInline lists the elements that are inline, are specific to the - Group - ANsemanticInline - + Group + ANsemanticInline + The group ANsemanticInline lists additional elements that are inline, and are specific to the Akoma Ntoso vocabulary @@ -295,9 +291,9 @@ The group ANsemanticInline lists additional elements that are inline, and are sp - Group - ANmarker - + Group + ANmarker + The group ANmarker lists the elements that are markers and are specific to the Akoma Ntoso vocabulary @@ -312,9 +308,9 @@ The group ANmarker lists the elements that are markers and are specific to the A - Group - ANsubFlow - + Group + ANsubFlow + The group ANsubFlow lists the elements that are subFlows and are specific to the Akoma Ntoso vocabulary @@ -327,9 +323,9 @@ The group ANsubFlow lists the elements that are subFlows and are specific to the - Group - HTMLcontainers - + Group + HTMLcontainers + The group HTMLcontainers lists the elements that are containers and were inherited from the HTML vocabulary @@ -342,9 +338,9 @@ The group HTMLcontainers lists the elements that are containers and were inherit - Group - HTMLblock - + Group + HTMLblock + The group HTMLblock lists the elements that are blocks and were inherited from the HTML vocabulary @@ -360,9 +356,9 @@ The group HTMLblock lists the elements that are blocks and were inherited from t - Group - HTMLinline - + Group + HTMLinline + The group HTMLinline lists the elements that are inline and were inherited from the HTML vocabulary @@ -382,9 +378,9 @@ The group HTMLinline lists the elements that are inline and were inherited from - Group - HTMLmarker - + Group + HTMLmarker + The group HTMLmarker lists the elements that are marker and were inherited from the HTML vocabulary @@ -398,9 +394,9 @@ The group HTMLmarker lists the elements that are marker and were inherited from - Group - judgmentBlock - + Group + judgmentBlock + The group judgmentBlock lists the structures that should be found in a judgment @@ -418,9 +414,9 @@ The group judgmentBlock lists the structures that should be found in a judgment< - Group - amendmentBlock - + Group + amendmentBlock + The group amendmentBlock lists the structures that should be found in an amendment @@ -436,9 +432,9 @@ The group amendmentBlock lists the structures that should be found in an amendme - Group - amendmentInline - + Group + amendmentInline + The group amendmentInline lists the inline elements that should be found in the preface of an amendment @@ -453,9 +449,9 @@ The group amendmentInline lists the inline elements that should be found in the - Group - speechSection - + Group + speechSection + The group speechSection lists the structures that should contain speeches @@ -487,9 +483,9 @@ The group speechSection lists the structures that should contain speeches - Group - hierElements - + Group + hierElements + The group hierElements lists all the elements that are hierarchical @@ -503,9 +499,9 @@ The group hierElements lists all the elements that are hierarchical - Group - containerElements - + Group + containerElements + The group containerElements lists all the elements that are containers @@ -520,9 +516,9 @@ The group containerElements lists all the elements that are containers - Group - blockElements - + Group + blockElements + The group blockElements lists all the elements that are blocks @@ -538,9 +534,9 @@ The group blockElements lists all the elements that are blocks - Group - inlineElements - + Group + inlineElements + The group inlineElements lists all the elements that are inline @@ -559,9 +555,9 @@ The group inlineElements lists all the elements that are inline - Group - subFlowElements - + Group + subFlowElements + The group subFlowElements lists all the elements that are subFlows @@ -575,9 +571,9 @@ The group subFlowElements lists all the elements that are subFlows - Group - markerElements - + Group + markerElements + The group markerElements lists all the elements that are markers @@ -592,9 +588,9 @@ The group markerElements lists all the elements that are markers - Group - inlineCM - + Group + inlineCM + The group inlineCM is the content model of blocks and inlines, and is composed of all the inlines and all the markers @@ -619,10 +615,10 @@ The group inlineCM is the content model of blocks and inlines, and is composed o - Attlist - alt - -The attribute alternativeTo is used to specify, when the element contains an alternative version of some content, the currentId of the main element which this element is an alternative copy of + Attlist + alt + +The attribute alternativeTo is used to specify, when the element contains an alternative version of some content, the eId of the main element which this element is an alternative copy of @@ -632,9 +628,9 @@ The attribute alternativeTo is used to specify, when the element contains an alt - Attlist - name - + Attlist + name + The attribute name is used to give a name to all generic elements @@ -645,9 +641,9 @@ The attribute name is used to give a name to all generic elements - Attlist - number - + Attlist + number + The attribute number is used to specify a number in the publication of the document @@ -658,9 +654,9 @@ The attribute number is used to specify a number in the publication of the docum - Attlist - source - + Attlist + source + The attribute source links to the agent (person, organization) providing the specific annotation or markup @@ -671,9 +667,9 @@ The attribute source links to the agent (person, organization) providing the spe - Attlist - date - + Attlist + date + The attribute date is used to give a normalized value for a date according to the XSD syntax YYYY-MM-DD or a normalized value for a dateTime according to the XSD syntax YYYY-MM-DDThh:mm:ss(zzzz) @@ -695,22 +691,33 @@ The attribute date is used to give a normalized value for a date according to th - Attlist - time - + Attlist + time + The attribute time is used to give a normalized value for a time according to the XSD syntax HH:MM:SS - + + + + + + + + + + + + - Attlist - link - + Attlist + link + The attribute href is used to specify an internal or external destination for a reference, a citation, an access to the ontology or a hypertext link. In elements using this attribute definition the href attribute is required @@ -721,9 +728,9 @@ The attribute href is used to specify an internal or external destination for a - Attlist - linkopt - + Attlist + linkopt + The attribute href is used to specify an internal or external destination for a reference, a citation, an access to the ontology or a hypertext link. In elements using this attribute definition the href attribute is optional @@ -734,9 +741,9 @@ The attribute href is used to specify an internal or external destination for a - Attlist - value - + Attlist + value + The attribute value is used to specify a value for metadata elements. In elements using this attribute definition the value attribute is required @@ -747,9 +754,9 @@ The attribute value is used to specify a value for metadata elements. In element - Attlist - optvalue - + Attlist + optvalue + The attribute value is used to specify a value for metadata elements. In elements using this attribute definition the value attribute is optional @@ -760,9 +767,9 @@ The attribute value is used to specify a value for metadata elements. In element - Attlist - booleanvalue - + Attlist + booleanvalue + The attribute value is used here to specify a boolean value for metadata elements. In elements using this attribute definition the value attribute is required @@ -773,9 +780,9 @@ The attribute value is used here to specify a boolean value for metadata element - Attlist - speechAtts - + Attlist + speechAtts + The attributes in speechAtts are used in speeches to identify actors and roles of speeches. In particular, attribute 'by' identifies the speaker, optional attribute 'as' identifies the role under which the speaker is speaking, optional attribute startTime specifies the absolute date and time where the individual speech item started, optional attribute endTime specifies the absolute date and time where the individual speech item ended, and optional attribute to identifies the addressee of the speech. All of them are references to person or organization elements in the references section @@ -790,9 +797,9 @@ The attributes in speechAtts are used in speeches to identify actors and roles o - Attlist - voteAtts - + Attlist + voteAtts + The attributes in voteAtts are used in votes to identify actors and choices in votes. In particular, attribute 'by' identifies the voter, optional attribute 'as' identifies the role under which the voter is acting, optional attribute 'choice' specifies the voe that was casted. @@ -805,9 +812,9 @@ The attributes in voteAtts are used in votes to identify actors and choices in v - Attlist - show - + Attlist + show + These attributes are used in metadata to propose visible representations of the metadata itself. Both a full visualization (attribute showAs) and an abbreviated one (attribute shortForm) can be specified @@ -826,9 +833,9 @@ These attributes are used in metadata to propose visible representations of the - Attlist - src - + Attlist + src + These attributes are used in manifestation-level references to specify external manifestation-level resources to be loaded in place. The src attribute holds the manifestation-level IRI of the resource, whule the alt attribute holds the text to be displayed in case the loading of the external resource is not possible for any reason. @@ -840,9 +847,9 @@ These attributes are used in manifestation-level references to specify external - Attlist - period - + Attlist + period + The period attribute is used in versioned content and metadata elements to indicate a time interval in which they were in force, in efficacy, or in any other type of interval as specified in the corresponding temporalGroup. @@ -853,9 +860,9 @@ The period attribute is used in versioned content and metadata elements to indic - Attlist - enactment - + Attlist + enactment + These attributes are those already defined in attribute list "period", plus the attribute status, that allows to specify the status of the piece of text it wraps. @@ -867,9 +874,9 @@ These attributes are those already defined in attribute list "period", plus the - Attlist - notes - + Attlist + notes + These attributes are used by notes, both authorial and editorial @@ -882,9 +889,9 @@ These attributes are used by notes, both authorial and editorial - Attlist - modifiers - + Attlist + modifiers + These attributes are used in the analysis to allow manifestation editors to specify whether the analysis is complete and/or ignored in the text @@ -896,9 +903,9 @@ These attributes are used in the analysis to allow manifestation editors to spec - Attlist - role - + Attlist + role + The attribute role is used to identify the role of an individual mentioned in the text. It is a reference to a TLCRole element in the references section @@ -909,9 +916,9 @@ The attribute role is used to identify the role of an individual mentioned in th - Attlist - actor - + Attlist + actor + The attribute actor is used to identify the actor of a step of a workflow of the document. It is a reference to a TLCPerson or TLCOrganization element in the references section @@ -922,9 +929,9 @@ The attribute actor is used to identify the actor of a step of a workflow of the - Attlist - outcome - + Attlist + outcome + The attribute outcome is used to identify the outcome of a step in a workflow. It is a reference to a TLCConcept element in the references section @@ -935,9 +942,9 @@ The attribute outcome is used to identify the outcome of a step in a workflow. I - Attlist - quote - + Attlist + quote + The attributes startQuote and endQuote are used in quotedText, quotedStructure, embeddedText and embeddedStructure to specify the start and quote character delimiting the quoted or embedded part. If the characters are the same, one can use only startQuote. @@ -949,9 +956,9 @@ The attributes startQuote and endQuote are used in quotedText, quotedStructure, - Attlist - cellattrs - + Attlist + cellattrs + These attributes are used to specify that table cells span more than one row or one column, exactly as in HTML @@ -963,9 +970,9 @@ These attributes are used to specify that table cells span more than one row or - Attlist - HTMLattrs - + Attlist + HTMLattrs + These attributes are used to specify class, style and title of the element, exactly as in HTML @@ -978,54 +985,52 @@ These attributes are used to specify class, style and title of the element, exac - Attlist - core - + Attlist + core + This attribute list are used to specify the fact that any attribute can be specified for this element if it belongs to a different namespace. - + - Attlist - idreq - -These attributes identify the element in an absolute manner. In elements using this attribute definition the currentId attribute is required. The originalId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. + Attlist + idreq + +These attributes identify the element in an absolute manner. In elements using this attribute definition the eId attribute is required. The wId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. - - - + + + - Attlist - idopt - -These attributes identify the element in an absolute manner. In elements using this attribute definition the currentId attribute is optional. The originalId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. + Attlist + idopt + +These attributes identify the element in an absolute manner. In elements using this attribute definition the eId attribute is optional. The wId is used to mark the identifier that the structure used to have in the original version, and is only needed when a renumbering occurred. - - - + + + - Attlist - refersreq - + Attlist + refersreq + This attribute creates a connection between the element and an element of the Akoma Ntoso ontology to which it refers. In elements using this attribute definition the refersTo attribute is required @@ -1044,9 +1049,9 @@ This attribute creates a connection between the element and an element of the Ak - Attlist - refers - + Attlist + refers + This attribute creates a connection between the element and an element of the Akoma Ntoso ontology to which it refers. In elements using this attribute definition the refersTo attribute is optional @@ -1065,9 +1070,9 @@ This attribute creates a connection between the element and an element of the Ak - Attlist - xmllang - + Attlist + xmllang + These attribute specify the human language in which the content of the element is expressed as well as the rules for whitespace management in the element. Values for xml:lang are taken from the RFC 4646. Both xml:lang and xml:space are reserved attributes of the XML language, and cannot be used for any other purpose than these ones. @@ -1079,10 +1084,10 @@ These attribute specify the human language in which the content of the element i - Attlist - corereq - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition the refersTo attribute is optional but the currentId attribute is required + Attlist + corereq + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition the refersTo attribute is optional but the eId attribute is required @@ -1098,10 +1103,10 @@ This is the list of the core attributes that all elements in the content part of - Attlist - corereqreq - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the currentId attribute are required + Attlist + corereqreq + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the eId attribute are required @@ -1117,10 +1122,10 @@ This is the list of the core attributes that all elements in the content part of - Attlist - coreopt - -This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the currentId attribute are optional + Attlist + coreopt + +This is the list of the core attributes that all elements in the content part of the document must have. In elements using this attribute definition both the refersTo attribute and the eId attribute are optional @@ -1143,12 +1148,27 @@ This is the list of the core attributes that all elements in the content part of + + + + Simple + noWhiteSpace + +This attribute the values of ids such as eId, wId and GUID as a collection of any printable character except whitespaces. + + + + + + + + - Simple - language - + Simple + language + This attribute specifies the human language in which the document the element refers to is expressed. Values are taken from the RFC 4646. @@ -1159,9 +1179,9 @@ This attribute specifies the human language in which the document the element re - Simple - versionType - + Simple + versionType + This is the list of allowed values for the contains attribute @@ -1176,9 +1196,9 @@ This is the list of allowed values for the contains attribute - Simple - placementType - + Simple + placementType + This is the list of allowed values for the placement attribute of notes @@ -1195,9 +1215,9 @@ This is the list of allowed values for the placement attribute of notes - Simple - eventType - + Simple + eventType + This is the list of allowed values for the type attribute of the event and action elements @@ -1212,9 +1232,9 @@ This is the list of allowed values for the type attribute of the event and actio - Simple - statusType - + Simple + statusType + This is the list of allowed values for the status attribute. This is the list of possible reasons for a dscrepancy between the manifestation as it should be (e.g., a faithful representation of the content of an expression), and the manifestation as it actually is. Values should be interpreted as follows: - removed: the content of the element is present in the markup (manifestation) but is not present in the real content of the document (expression level) because it has been definitely removed (either ex tunc, as in annullments, or ex nunc, as in abrogations). - temporarily removed: the content of the element is present in the markup (manifestation) but is not present in the real content of the document (expression level) because it has been temporarily removed (e.g., for a temporary suspension or limitation of efficacy). @@ -1246,9 +1266,9 @@ This is the list of allowed values for the status attribute. This is the list of - Simple - remarkType - + Simple + remarkType + This is the list of allowed values for the type attribute of the remark element @@ -1264,9 +1284,9 @@ This is the list of allowed values for the type attribute of the remark element< - Simple - timeType - + Simple + timeType + This is the list of allowed values for the type attribute of the recordedTime element @@ -1280,9 +1300,9 @@ This is the list of allowed values for the type attribute of the recordedTime el - Simple - opinionType - + Simple + opinionType + This is the list of allowed values for the type attribute of the opinion element @@ -1297,9 +1317,9 @@ This is the list of allowed values for the type attribute of the opinion element - Simple - resultType - + Simple + resultType + This is the list of allowed values for the type attribute of the result element @@ -1319,9 +1339,9 @@ This is the list of allowed values for the type attribute of the result element< - Simple - posType - + Simple + posType + This is the list of possible positions of the text being analyzed by the element in the analysis section @@ -1339,9 +1359,9 @@ This is the list of possible positions of the text being analyzed by the element - Simple - restrictionType - + Simple + restrictionType + This is the list of allowed values for the restriction type attribute @@ -1364,9 +1384,9 @@ This is the list of allowed values for the restriction type attribute - Complex - basehierarchy - + Complex + basehierarchy + The complex type basehierarchy is not used by any element, but is derived by other types to contain the basic structure of hierarchical elements @@ -1381,9 +1401,9 @@ The complex type basehierarchy is not used by any element, but is derived by oth - Complex - hierarchy - + Complex + hierarchy + The complex type hierarchy is used by most or all the hierarchical elements of act-like documents. @@ -1397,7 +1417,7 @@ The complex type hierarchy is used by most or all the hierarchical elements of a - + @@ -1409,9 +1429,9 @@ The complex type hierarchy is used by most or all the hierarchical elements of a - Complex - althierarchy - + Complex + althierarchy + The complex type althierarchy is used by most or all the hierarchical elements of documents that are not act-like. @@ -1432,10 +1452,10 @@ The complex type althierarchy is used by most or all the hierarchical elements o - Complex - blocksreq - -the complex type blocksreq defines the content model and attributes shared by all containers. Here the currentId attribute is required + Complex + blocksreq + +the complex type blocksreq defines the content model and attributes shared by all containers. Here the eId attribute is required @@ -1448,10 +1468,10 @@ the complex type blocksreq defines the content model and attributes shared by al - Complex - blocksopt - -the complex type blocksopt defines the content model and attributes shared by all containers. Here the currentId attribute is optional + Complex + blocksopt + +the complex type blocksopt defines the content model and attributes shared by all containers. Here the eId attribute is optional @@ -1464,10 +1484,10 @@ the complex type blocksopt defines the content model and attributes shared by al - Complex - inline - -the complex type inline defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is optional + Complex + inline + +the complex type inline defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is optional @@ -1480,10 +1500,10 @@ the complex type inline defines the content model and attributes shared by all b - Complex - inlinereq - -the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is required + Complex + inlinereq + +the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is required @@ -1496,10 +1516,10 @@ the complex type inlinereq defines the content model and attributes shared by al - Complex - inlinereqreq - -the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the currentId attribute is required and also the refersTo is required + Complex + inlinereqreq + +the complex type inlinereq defines the content model and attributes shared by all blocks and inlines. Here the eId attribute is required and also the refersTo is required @@ -1512,10 +1532,10 @@ the complex type inlinereq defines the content model and attributes shared by al - Complex - markerreq - -the complex type markerreq defines the content model and attributes shared by all marker elements. Here the currentId attribute is required + Complex + markerreq + +the complex type markerreq defines the content model and attributes shared by all marker elements. Here the eId attribute is required @@ -1525,10 +1545,10 @@ the complex type markerreq defines the content model and attributes shared by al - Complex - markeropt - -the complex type markeropt defines the content model and attributes shared by all marker elements. Here the currentId attribute is optional + Complex + markeropt + +the complex type markeropt defines the content model and attributes shared by all marker elements. Here the eId attribute is optional @@ -1538,10 +1558,10 @@ the complex type markeropt defines the content model and attributes shared by al - Complex - metareq - -the complex type metareq defines the content model and attributes shared by all metadata elements. Here the currentId attribute is required + Complex + metareq + +the complex type metareq defines the content model and attributes shared by all metadata elements. Here the eId attribute is required @@ -1552,10 +1572,10 @@ the complex type metareq defines the content model and attributes shared by all - Complex - metaopt - -the complex type metaopt defines the content model and attributes shared by all metadata elements. Here the currentId attribute is optional + Complex + metaopt + +the complex type metaopt defines the content model and attributes shared by all metadata elements. Here the eId attribute is optional @@ -1566,9 +1586,9 @@ the complex type metaopt defines the content model and attributes shared by all - Complex - maincontent - + Complex + maincontent + the complex type maincontent is used by container elements that can contain basically any other Akoma Ntoso structure @@ -1585,10 +1605,10 @@ the complex type maincontent is used by container elements that can contain basi - Complex - speechType - -the complex type speechType defines the content model and attributes shared by all speech elements. Here the currentId attribute is optional + Complex + speechType + +the complex type speechType defines the content model and attributes shared by all speech elements. Here the eId attribute is optional @@ -1609,9 +1629,9 @@ the complex type speechType defines the content model and attributes shared by a - Complex - itemType - + Complex + itemType + The complex type itemType is similar to a hierarchical element, but is isolated and does not belong to a full hierarchy. @@ -1629,9 +1649,9 @@ The complex type itemType is similar to a hierarchical element, but is isolated - Complex - referenceType - + Complex + referenceType + the complex type referenceType defines the empty content model and the list of attributes for metadata elements in the references section @@ -1645,9 +1665,9 @@ the complex type referenceType defines the empty content model and the list of a - Complex - srcType - + Complex + srcType + the complex type srcType defines the empty content model and the list of attributes for manifestation-level references to external resources @@ -1661,9 +1681,9 @@ the complex type srcType defines the empty content model and the list of attribu - Complex - linkType - + Complex + linkType + the complex type linkType defines the empty content model and the list of attributes for Work- or Expression-level references to external resources @@ -1677,9 +1697,9 @@ the complex type linkType defines the empty content model and the list of attrib - Complex - anyOtherType - + Complex + anyOtherType + the complex type anyOtherType defines an open content model for elements that may use elements from other namespaces. @@ -1695,20 +1715,24 @@ the complex type anyOtherType defines an open content model for elements that ma - Complex - docContainerType - + Complex + docContainerType + the complex type docContainerType defines a shared content model for elements that contain whole documents, namely attachment, collectionItem, component. - - - - - - - + + + + + + + + + + + @@ -1727,9 +1751,9 @@ the complex type docContainerType defines a shared content model for elements th - Group - documentType - + Group + documentType + the type documentType lists all the document types that are managed by Akoma Ntoso @@ -1766,9 +1790,9 @@ the type documentType lists all the document types that are managed by Akoma Nto - Complex - akomaNtosoType - + Complex + akomaNtosoType + the complex type akomaNtosoType is the type for the root element in Akoma Ntoso. @@ -1784,9 +1808,9 @@ the complex type akomaNtosoType is the type for the root element in Akoma Ntoso. - Element (root) - akomaNtoso - + Element (root) + akomaNtoso + NAME akomaNtoso the element akomaNtoso is the root element of all document types in Akoma Ntoso. It follows the pattern Universal Root (http://www.xmlpatterns.com/UniversalRootMain.shtml) @@ -1799,9 +1823,9 @@ the element akomaNtoso is the root element of all document types in Akoma Ntoso. - Complex - openStructure - + Complex + openStructure + the type openStructure specifies the overall content model of all the document types that do not have a specific and peculiar structure @@ -1820,13 +1844,12 @@ the type openStructure specifies the overall content model of all the document t - - + + - Element - doc - + Element + doc + Element doc is used for describing the structure and content of any other document that is not included in the list of document explicitly managed by Akoma Ntoso @@ -1843,9 +1866,9 @@ Element doc is used for describing the structure and content of any other docume - Element - mainBody - + Element + mainBody + the element mainBody is the container of the main part of all other document types @@ -1853,13 +1876,12 @@ the element mainBody is the container of the main part of all other document typ - - + + - Element - statement - + Element + statement + Element statement is used for describing the structure and content of a official documents of a legislative assembly that are not normative in structure (e.g., statements, non-normative resolutions, etc.). @@ -1884,9 +1906,9 @@ Element statement is used for describing the structure and content of a official - Element - component - + Element + component + The element component is a container of a subdocument specified in a composite document @@ -1897,9 +1919,9 @@ The element component is a container of a subdocument specified in a composite d - Complex - collectionStructure - + Complex + collectionStructure + the type collectionStructure specifies the overall content model of the document types that are collections of other documents @@ -1921,9 +1943,9 @@ the type collectionStructure specifies the overall content model of the document - Element - amendmentList - + Element + amendmentList + Element amendmentList is used for describing the structure and content of a collection of amendments @@ -1934,9 +1956,9 @@ Element amendmentList is used for describing the structure and content of a coll - Element - officialGazette - + Element + officialGazette + Element officialGazette is used for describing the structure and content of an issue of an official gazette @@ -1947,9 +1969,9 @@ Element officialGazette is used for describing the structure and content of an i - Element - documentCollection - + Element + documentCollection + Element documentCollection is used for describing the structure and content of a collection of other documents chosen and combined for any reason whatsoever @@ -1960,9 +1982,9 @@ Element documentCollection is used for describing the structure and content of a - Complex - collectionBodyType - + Complex + collectionBodyType + the type collectionBodyType specifies a content model of a container of a list of other documents (e.g, acts, bills, amendments, etc.) possibly interspersed with interstitial elements with content that does not form an individual document @@ -1975,9 +1997,9 @@ the type collectionBodyType specifies a content model of a container of a list o - Element - collectionBody - + Element + collectionBody + the element collectionBody is the container of a list of other documents (e.g, acts, bills, amendments, etc.) possibly interspersed with interstitial elements with content that does not form an individual document @@ -1988,9 +2010,9 @@ the element collectionBody is the container of a list of other documents (e.g, a - Complex - fragmentStructure - + Complex + fragmentStructure + the type fragmentStructure specifies the overall content model of the document type that is a fragment of another document @@ -2002,13 +2024,12 @@ the type fragmentStructure specifies the overall content model of the document t - - + + - Element - fragment - + Element + fragment + Element fragment is used for describing the structure and content of an independent fragment of a document @@ -2025,9 +2046,9 @@ Element fragment is used for describing the structure and content of an independ - Complex - fragmentBodyType - + Complex + fragmentBodyType + the type fragmentBodyType specifies a content model of a container of a fragment of another document @@ -2045,9 +2066,9 @@ the type fragmentBodyType specifies a content model of a container of a fragment - Element - fragmentBody - + Element + fragmentBody + the element fragmentBody is the container of a fragment of another document @@ -2058,9 +2079,9 @@ the element fragmentBody is the container of a fragment of another document - Complex - hierarchicalStructure - + Complex + hierarchicalStructure + the type hierarchicalStructure specifies the overall content model of the document types that are hierarchical in nature, especially acts and bills @@ -2079,13 +2100,12 @@ the type hierarchicalStructure specifies the overall content model of the docume - - + + - Element - act - + Element + act + Element act is used for describing the structure and content of an act @@ -2099,13 +2119,12 @@ Element act is used for describing the structure and content of an act - - + + - Element - bill - + Element + bill + Element bill is used for describing the structure and content of a bill @@ -2122,9 +2141,9 @@ Element bill is used for describing the structure and content of a bill - Complex - bodyType - + Complex + bodyType + the type bodyType specifies a content model of the main hierarchy of a hierarchical document (e.g, an act or a bill) @@ -2139,9 +2158,9 @@ the type bodyType specifies a content model of the main hierarchy of a hierarchi - Element - body - + Element + body + the element body is the container of the main hierarchy of a hierarchical document (e.g, an act or a bill) @@ -2152,9 +2171,9 @@ the element body is the container of the main hierarchy of a hierarchical docume - Complex - debateStructure - + Complex + debateStructure + the type debateStructure specifies the overall content model of the document types that describe debates @@ -2172,14 +2191,12 @@ the type debateStructure specifies the overall content model of the document typ - - + + - Element - debateReport - + Element + debateReport + Element debateReport is used for describing the structure and content of a report @@ -2193,13 +2210,12 @@ Element debateReport is used for describing the structure and content of a repor - - + + - Element - debate - + Element + debate + Element debate is used for describing the structure and content of a debate record @@ -2216,9 +2232,9 @@ Element debate is used for describing the structure and content of a debate reco - Complex - debateBodyType - + Complex + debateBodyType + the type debateBodyType specifies a content model of the main hierarchy of a debate @@ -2232,9 +2248,9 @@ the type debateBodyType specifies a content model of the main hierarchy of a deb - Element - debateBody - + Element + debateBody + the element debateBody is the container of the main hierarchy of a debate @@ -2245,9 +2261,9 @@ the element debateBody is the container of the main hierarchy of a debate - Complex - judgmentStructure - + Complex + judgmentStructure + the type judgmentStructure specifies the overall content model of the document types that describe judgments @@ -2265,13 +2281,12 @@ the type judgmentStructure specifies the overall content model of the document t - - + + - Element - judgment - + Element + judgment + Element judgment is used for describing the structure and content of a judgment @@ -2288,9 +2303,9 @@ Element judgment is used for describing the structure and content of a judgment< - Complex - judgmentBodyType - + Complex + judgmentBodyType + the type judgmentBodyType specifies a content model of the main hierarchy of a judgment document @@ -2304,9 +2319,9 @@ the type judgmentBodyType specifies a content model of the main hierarchy of a j - Element - judgmentBody - + Element + judgmentBody + the element judgmentBody is the container of the main hierarchy of a judgment document @@ -2317,9 +2332,9 @@ the element judgmentBody is the container of the main hierarchy of a judgment do - Complex - amendmentStructure - + Complex + amendmentStructure + the type amendmentStructure specifies the overall content model of the document types that describe amendments @@ -2337,13 +2352,12 @@ the type amendmentStructure specifies the overall content model of the document - - + + - Element - amendment - + Element + amendment + Element amendment is used for describing the structure and content of an amendment @@ -2360,9 +2374,9 @@ Element amendment is used for describing the structure and content of an amendme - Complex - amendmentBodyType - + Complex + amendmentBodyType + the type amendmentBodyType specifies a content model of the main hierarchy of a amendment document @@ -2376,9 +2390,9 @@ the type amendmentBodyType specifies a content model of the main hierarchy of a - Element - amendmentBody - + Element + amendmentBody + the element amendmentBody is the container of the main hierarchy of a amendment document @@ -2397,7 +2411,7 @@ the element amendmentBody is the container of the main hierarchy of a amendment - + @@ -2407,9 +2421,9 @@ the element amendmentBody is the container of the main hierarchy of a amendment - Element - recitals - + Element + recitals + the element recitals is the section of the preface that contains recitals @@ -2420,9 +2434,9 @@ the element recitals is the section of the preface that contains recitals - Element - recital - + Element + recital + the element recital is the individual element of the preface that is called recital @@ -2441,7 +2455,7 @@ the element recital is the individual element of the preface that is called reci - + @@ -2451,9 +2465,9 @@ the element recital is the individual element of the preface that is called reci - Element - citations - + Element + citations + the element citations is the section of the preface that contains citations @@ -2464,9 +2478,9 @@ the element citations is the section of the preface that contains citations - Element - citation - + Element + citation + the element citation is the individual element of the preface that is called citation @@ -2477,9 +2491,9 @@ the element citation is the individual element of the preface that is called cit - Element - longTitle - + Element + longTitle + the element longTitle is the section of the preface or preamble that is called long title @@ -2490,9 +2504,9 @@ the element longTitle is the section of the preface or preamble that is called l - Element - formula - + Element + formula + the element formula is a section of the preface or preamble that contains a formulaic expression that is systematically or frequently present in a preface or a preamble and has e precise legal meaning (e.g. an enacting formula). Use the refersTo attribute for the specification of the actual type of formula. @@ -2509,10 +2523,10 @@ the element formula is a section of the preface or preamble that contains a form - Complex - basicopt - -the complex type basicopt defines the content model and attributes used by basic containers such as coverPage and conclusions. Here the currentId attribute is optional + Complex + basicopt + +the complex type basicopt defines the content model and attributes used by basic containers such as coverPage and conclusions. Here the eId attribute is optional @@ -2526,9 +2540,9 @@ the complex type basicopt defines the content model and attributes used by basic - Element - coverPage - + Element + coverPage + the element coverPage is used as a container of the text that acts as a cover page @@ -2539,10 +2553,10 @@ the element coverPage is used as a container of the text that acts as a cover pa - Complex - preambleopt - -the complex type preambleopt defines the content model and attributes used by preambles. Here the currentId attribute is optional + Complex + preambleopt + +the complex type preambleopt defines the content model and attributes used by preambles. Here the eId attribute is optional @@ -2556,9 +2570,9 @@ the complex type preambleopt defines the content model and attributes used by pr - Element - preamble - + Element + preamble + the element preamble is used as a container of the text that opens the main body of the document as a preamble @@ -2569,10 +2583,10 @@ the element preamble is used as a container of the text that opens the main body - Complex - prefaceopt - -the complex type prefaceopt defines the content model and attributes used by preface. Here the currentId attribute is optional + Complex + prefaceopt + +the complex type prefaceopt defines the content model and attributes used by preface. Here the eId attribute is optional @@ -2586,9 +2600,9 @@ the complex type prefaceopt defines the content model and attributes used by pre - Element - preface - + Element + preface + the element preface is used as a container of all prefacing material (e.g. headers, formulas, etc.) @@ -2599,9 +2613,9 @@ the element preface is used as a container of all prefacing material (e.g. heade - Element - conclusions - + Element + conclusions + the element conclusion is used as a container of all concluding material (e.g. dates, signatures, formulas, etc.) @@ -2612,9 +2626,9 @@ the element conclusion is used as a container of all concluding material (e.g. d - Element - header - + Element + header + the element header is used as a container of all prefacing material of judgments (e.g. headers, formulas, etc.) @@ -2633,9 +2647,9 @@ the element header is used as a container of all prefacing material of judgments - Element - attachment - + Element + attachment + the element attachment is used as a container of individual attachment elements @@ -2646,9 +2660,9 @@ the element attachment is used as a container of individual attachment elements< - Element - interstitial - + Element + interstitial + the element interstitial is used as a container of text elements and blocks that are placed for any reason between individual documents in a collection of documents @@ -2659,9 +2673,9 @@ the element interstitial is used as a container of text elements and blocks that - Element - componentRef - + Element + componentRef + the element componentRef is a reference to a separate manifestation-level resource that holds the content of the component of the document not physically placed at the position specified. Actual resources can either be external (e.g. in the package or even in a different position) or internal (within the components element) @@ -2672,9 +2686,9 @@ the element componentRef is a reference to a separate manifestation-level resour - Element - documentRef - + Element + documentRef + the element documentRef is a reference to a separate work- or expression-level resource that should be placed in this position. Actual resources are external (e.g. in the package or even in a different position) and are (an expression or any expression of) a separate Work. @@ -2695,9 +2709,9 @@ the element documentRef is a reference to a separate work- or expression-level r - Element - clause - + Element + clause + this element is a hierarchical container called "clause" either explicitly or due to the local tradition @@ -2708,9 +2722,9 @@ this element is a hierarchical container called "clause" either explicitly or du - Element - section - + Element + section + this element is a hierarchical container called "section" either explicitly or due to the local tradition @@ -2721,9 +2735,9 @@ this element is a hierarchical container called "section" either explicitly or d - Element - part - + Element + part + this element is a hierarchical container called "part" either explicitly or due to the local tradition @@ -2734,9 +2748,9 @@ this element is a hierarchical container called "part" either explicitly or due - Element - paragraph - + Element + paragraph + this element is a hierarchical container called "paragraph" either explicitly or due to the local tradition @@ -2747,9 +2761,9 @@ this element is a hierarchical container called "paragraph" either explicitly or - Element - chapter - + Element + chapter + this element is a hierarchical container called "chapter" either explicitly or due to the local tradition @@ -2760,9 +2774,9 @@ this element is a hierarchical container called "chapter" either explicitly or d - Element - title - + Element + title + this element is a hierarchical container called "title" either explicitly or due to the local tradition @@ -2773,9 +2787,9 @@ this element is a hierarchical container called "title" either explicitly or due - Element - book - + Element + book + this element is a hierarchical container called "book" either explicitly or due to the local tradition @@ -2786,9 +2800,9 @@ this element is a hierarchical container called "book" either explicitly or due - Element - tome - + Element + tome + this element is a hierarchical container called "tome" either explicitly or due to the local tradition @@ -2799,9 +2813,9 @@ this element is a hierarchical container called "tome" either explicitly or due - Element - article - + Element + article + this element is a hierarchical container called "article" either explicitly or due to the local tradition @@ -2812,9 +2826,9 @@ this element is a hierarchical container called "article" either explicitly or d - Element - division - + Element + division + this element is a hierarchical container called "division" either explicitly or due to the local tradition @@ -2825,9 +2839,9 @@ this element is a hierarchical container called "division" either explicitly or - Element - list - + Element + list + this element is a hierarchical container called "list" either explicitly or due to the local tradition @@ -2838,9 +2852,9 @@ this element is a hierarchical container called "list" either explicitly or due - Element - point - + Element + point + this element is a hierarchical container called "point" either explicitly or due to the local tradition @@ -2851,9 +2865,9 @@ this element is a hierarchical container called "point" either explicitly or due - Element - indent - + Element + indent + this element is a hierarchical container called "indent" either explicitly or due to the local tradition @@ -2864,9 +2878,9 @@ this element is a hierarchical container called "indent" either explicitly or du - Element - alinea - + Element + alinea + this element is a hierarchical container called "alinea" either explicitly or due to the local tradition @@ -2877,9 +2891,9 @@ this element is a hierarchical container called "alinea" either explicitly or du - Element - rule - + Element + rule + this element is a hierarchical container called "rule" either explicitly or due to the local tradition @@ -2890,9 +2904,9 @@ this element is a hierarchical container called "rule" either explicitly or due - Element - subrule - + Element + subrule + this element is a hierarchical container called "subrule" either explicitly or due to the local tradition @@ -2903,9 +2917,9 @@ this element is a hierarchical container called "subrule" either explicitly or d - Element - proviso - + Element + proviso + this element is a hierarchical container called "proviso" either explicitly or due to the local tradition @@ -2916,9 +2930,9 @@ this element is a hierarchical container called "proviso" either explicitly or d - Element - subsection - + Element + subsection + this element is a hierarchical container called "subsection" either explicitly or due to the local tradition @@ -2929,9 +2943,9 @@ this element is a hierarchical container called "subsection" either explicitly o - Element - subpart - + Element + subpart + this element is a hierarchical container called "subpart" either explicitly or due to the local tradition @@ -2942,9 +2956,9 @@ this element is a hierarchical container called "subpart" either explicitly or d - Element - subparagraph - + Element + subparagraph + this element is a hierarchical container called "subparagraph" either explicitly or due to the local tradition @@ -2955,9 +2969,9 @@ this element is a hierarchical container called "subparagraph" either explicitly - Element - subchapter - + Element + subchapter + this element is a hierarchical container called "subchapter" either explicitly or due to the local tradition @@ -2968,9 +2982,9 @@ this element is a hierarchical container called "subchapter" either explicitly o - Element - subtitle - + Element + subtitle + this element is a hierarchical container called "subtitle" either explicitly or due to the local tradition @@ -2981,9 +2995,9 @@ this element is a hierarchical container called "subtitle" either explicitly or - Element - subdivision - + Element + subdivision + this element is a hierarchical container called "subdivision" either explicitly or due to the local tradition @@ -2994,9 +3008,9 @@ this element is a hierarchical container called "subdivision" either explicitly - Element - subclause - + Element + subclause + this element is a hierarchical container called "subclause" either explicitly or due to the local tradition @@ -3007,9 +3021,9 @@ this element is a hierarchical container called "subclause" either explicitly or - Element - sublist - + Element + sublist + this element is a hierarchical container called "sublist" either explicitly or due to the local tradition @@ -3020,9 +3034,9 @@ this element is a hierarchical container called "sublist" either explicitly or d - Element - transitional - + Element + transitional + this element is a hierarchical container called "transitional" either explicitly or due to the local tradition @@ -3033,9 +3047,9 @@ this element is a hierarchical container called "transitional" either explicitly - Element - content - + Element + content + the element content is the final container in a hierarchy, and is where the blocks of text of the content of the structure are finally specified @@ -3046,9 +3060,9 @@ the element content is the final container in a hierarchy, and is where the bloc - Element - num - + Element + num + the element num is a heading element in a hierarchy that contains a number or any other ordered mechanism to identify the structure. @@ -3059,9 +3073,9 @@ the element num is a heading element in a hierarchy that contains a number or an - Element - heading - + Element + heading + the element heading is a heading element in a hierarchy that contains a title or any other textual content to describe the structure. @@ -3069,12 +3083,12 @@ the element heading is a heading element in a hierarchy that contains a title or - + - Element - subheading - + Element + subheading + the element subheading is a heading element in a hierarchy that contains a subtitle or any other textual content to further describe the structure. @@ -3085,9 +3099,9 @@ the element subheading is a heading element in a hierarchy that contains a subti - Element - intro - + Element + intro + the element intro is a heading element in a hierarchy that contains paragraphs introducing one or more lower hierarchical elements. @@ -3095,13 +3109,13 @@ the element intro is a heading element in a hierarchy that contains paragraphs i - + - Element - wrap - -the element wrap is a concluding element in a hierarchy that contains paragraphs wrapping up the preceding lower hierarchical elements. + Element + wrapUp + +the element wrapUp is a concluding element in a hierarchy that contains paragraphs wrapping up the preceding lower hierarchical elements. @@ -3121,9 +3135,9 @@ the element wrap is a concluding element in a hierarchy that contains paragraphs - Element - administrationOfOath - + Element + administrationOfOath + this element is a structural container for parts of a debates that contain the administration of an oath @@ -3134,9 +3148,9 @@ this element is a structural container for parts of a debates that contain the a - Element - rollCall - + Element + rollCall + this element is a structural container for parts of a debates that contain a roll call of individuals @@ -3147,9 +3161,9 @@ this element is a structural container for parts of a debates that contain a rol - Element - prayers - + Element + prayers + this element is a structural container for parts of a debates that contain prayers @@ -3160,9 +3174,9 @@ this element is a structural container for parts of a debates that contain praye - Element - oralStatements - + Element + oralStatements + this element is a structural container for parts of a debates that contain oral statements by participants @@ -3173,9 +3187,9 @@ this element is a structural container for parts of a debates that contain oral - Element - writtenStatements - + Element + writtenStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3186,9 +3200,9 @@ this element is a structural container for parts of a debates that contain writt - Element - personalStatements - + Element + personalStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3199,9 +3213,9 @@ this element is a structural container for parts of a debates that contain writt - Element - ministerialStatements - + Element + ministerialStatements + this element is a structural container for parts of a debates that contain written statements by participants @@ -3212,9 +3226,9 @@ this element is a structural container for parts of a debates that contain writt - Element - resolutions - + Element + resolutions + this element is a structural container for parts of a debates that contain resolutions @@ -3225,9 +3239,9 @@ this element is a structural container for parts of a debates that contain resol - Element - nationalInterest - + Element + nationalInterest + this element is a structural container for parts of a debates that contain resolutions @@ -3238,9 +3252,9 @@ this element is a structural container for parts of a debates that contain resol - Element - declarationOfVote - + Element + declarationOfVote + this element is a structural container for parts of a debates that are relevant to the declaration of votes @@ -3251,9 +3265,9 @@ this element is a structural container for parts of a debates that are relevant - Element - communication - + Element + communication + this element is a structural container for parts of a debates that contain communications from the house @@ -3264,9 +3278,9 @@ this element is a structural container for parts of a debates that contain commu - Element - petitions - + Element + petitions + this element is a structural container for parts of a debates that are relevant to petitions @@ -3277,9 +3291,9 @@ this element is a structural container for parts of a debates that are relevant - Element - papers - + Element + papers + this element is a structural container for parts of a debates that are relevant to the display of papers @@ -3290,9 +3304,9 @@ this element is a structural container for parts of a debates that are relevant - Element - noticesOfMotion - + Element + noticesOfMotion + this element is a structural container for parts of a debates that are relevant to the notices of motions @@ -3303,9 +3317,9 @@ this element is a structural container for parts of a debates that are relevant - Element - questions - + Element + questions + this element is a structural container for parts of a debates that are relevant to questions @@ -3316,9 +3330,9 @@ this element is a structural container for parts of a debates that are relevant - Element - address - + Element + address + this element is a structural container for parts of a debates that are relevant to addresses @@ -3329,9 +3343,9 @@ this element is a structural container for parts of a debates that are relevant - Element - proceduralMotions - + Element + proceduralMotions + this element is a structural container for parts of a debates that are relevant to procedural motions @@ -3342,9 +3356,9 @@ this element is a structural container for parts of a debates that are relevant - Element - pointOfOrder - + Element + pointOfOrder + this element is a structural container for parts of a debates that are relevant to points of order @@ -3355,9 +3369,9 @@ this element is a structural container for parts of a debates that are relevant - Element - adjournment - + Element + adjournment + this element is a structural container for parts of a debates that contain adjournment notices @@ -3368,9 +3382,9 @@ this element is a structural container for parts of a debates that contain adjou - Element - debateSection - + Element + debateSection + this element is a generic structural container for all other parts of a debates that are not explicitly supported with a named element @@ -3387,9 +3401,9 @@ this element is a generic structural container for all other parts of a debates - Element - speechGroup - + Element + speechGroup + the element speechGroup is a container of speech elements. This element is meant to pooint out, in a complex sequence of individual speech elements, the main contributor, i.e., the individual speech who was introducedand expected and that is causing the complex sequence that follows. Attributes by, as and to are those of the main speech. @@ -3406,9 +3420,9 @@ the element speechGroup is a container of speech elements. This element is meant - Element - speech - + Element + speech + the element speech is a container of a single speech utterance in a debate. Dialogs between speakers need a speech element each @@ -3419,9 +3433,9 @@ the element speech is a container of a single speech utterance in a debate. Dial - Element - question - + Element + question + the element question is a container of a single official question as proposed by an MP to a person holding an official position @@ -3432,9 +3446,9 @@ the element question is a container of a single official question as proposed by - Element - answer - + Element + answer + the element answer is a container of a single official answer to a question @@ -3445,9 +3459,9 @@ the element answer is a container of a single official answer to a question - Element - other - + Element + other + the element other is a container of parts of a debate that are not speeches, nor scene comments (e.g., lists of papers, etc.) @@ -3458,9 +3472,9 @@ the element other is a container of parts of a debate that are not speeches, nor - Element - scene - + Element + scene + the element scene is a container of descriptions of the scene elements happening in a given moment during a debate (e.g., applauses) @@ -3471,9 +3485,9 @@ the element scene is a container of descriptions of the scene elements happening - Element - narrative - + Element + narrative + the element narrative is a block element in a debate to mark description in the third person of events taking place in the meeting, e.g. "Mr X. takes the Chair" @@ -3484,9 +3498,9 @@ the element narrative is a block element in a debate to mark description in the - Element - summary - + Element + summary + the element summary is a block element in a debate to mark summaries of speeches that are individually not interesting (e.g.: "Question put and agreed to") @@ -3497,9 +3511,9 @@ the element summary is a block element in a debate to mark summaries of speeches - Element - from - + Element + from + the element from is a heading element in a debate that contains the name or role or a reference to the person doing the speech @@ -3510,9 +3524,9 @@ the element from is a heading element in a debate that contains the name or role - Element - vote - + Element + vote + the element vote is an inline that wraps either the name of the voter (when organized by choice) or the vote (when organized by name) in a voting report. @@ -3529,9 +3543,9 @@ the element vote is an inline that wraps either the name of the voter (when orga - Element - outcome - + Element + outcome + the element outcome is an inline that wraps the outcome of a vote @@ -3542,9 +3556,9 @@ the element outcome is an inline that wraps the outcome of a vote - Element - introduction - + Element + introduction + this element is a structural container for the section of a judgment containing introductory material @@ -3555,9 +3569,9 @@ this element is a structural container for the section of a judgment containing - Element - background - + Element + background + this element is a structural container for the section of a judgment containing the background @@ -3568,9 +3582,9 @@ this element is a structural container for the section of a judgment containing - Element - arguments - + Element + arguments + this element is a structural container for the section of a judgment containing the arguments @@ -3581,9 +3595,9 @@ this element is a structural container for the section of a judgment containing - Element - remedies - + Element + remedies + this element is a structural container for the section of a judgment containing the remedies @@ -3594,9 +3608,9 @@ this element is a structural container for the section of a judgment containing - Element - motivation - + Element + motivation + this element is a structural container for the section of a judgment containing the motivation @@ -3607,9 +3621,9 @@ this element is a structural container for the section of a judgment containing - Element - decision - + Element + decision + this element is a structural container for the section of a judgment containing the decision @@ -3620,9 +3634,9 @@ this element is a structural container for the section of a judgment containing - Element - affectedDocument - + Element + affectedDocument + the element affectedDocument is an inline element within preamble to identify the document that this amendment affects @@ -3639,9 +3653,9 @@ the element affectedDocument is an inline element within preamble to identify th - Element - relatedDocument - + Element + relatedDocument + the element relatedDocument is an inline element to identify the document for which this document is a report of @@ -3658,9 +3672,9 @@ the element relatedDocument is an inline element to identify the document for wh - Element - change - + Element + change + the element change is an inline element that identifies the changes expressed in the two columns of an amendment document @@ -3671,9 +3685,9 @@ the element change is an inline element that identifies the changes expressed in - Element - amendmentHeading - + Element + amendmentHeading + this element is a structural container for the section of an amendment containing the heading @@ -3684,9 +3698,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentContent - + Element + amendmentContent + this element is a structural container for the section of an amendment containing the actual amendment text @@ -3697,9 +3711,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentReference - + Element + amendmentReference + this element is a structural container for the section of an amendment containing the reference @@ -3710,9 +3724,9 @@ this element is a structural container for the section of an amendment containin - Element - amendmentJustification - + Element + amendmentJustification + this element is a structural container for the section of an amendment containing the justification @@ -3736,9 +3750,9 @@ this element is a structural container for the section of an amendment containin - Complex - blockContainerType - + Complex + blockContainerType + the element blockContainer is used as a container of many individual block elements in a block context @@ -3751,7 +3765,7 @@ the element blockContainer is used as a container of many individual block eleme - + @@ -3772,7 +3786,7 @@ the element blockContainer is used as a container of many individual block eleme - + @@ -3787,9 +3801,9 @@ the element blockContainer is used as a container of many individual block eleme - Element - listIntroduction - + Element + listIntroduction + the element listIntroduction is an optional element of list before any item of the list itself. @@ -3797,13 +3811,13 @@ the element listIntroduction is an optional element of list before any item of t - + - Element - listConclusion - -the element listConclusion is an optional element of list after all items of the list itself. + Element + listWrapUp + +the element listWrapUp is an optional element of list after all items of the list itself. @@ -3813,9 +3827,9 @@ the element listConclusion is an optional element of list after all items of the - Element - tblock - + Element + tblock + The element tblock (titled block) is used to specify a container for blocks introduced by heading elements, similarly to a hierarchical structure @@ -3835,9 +3849,9 @@ The element tblock (titled block) is used to specify a container for blocks intr - Element - tocItem - + Element + tocItem + the element tocItem is a component of the table of content and contains header information about sections or parts of the rest of the document @@ -3857,9 +3871,9 @@ the element tocItem is a component of the table of content and contains header i - Element - docType - + Element + docType + the element docType is an inline element within preface to identify the string used by the document for its own type @@ -3870,9 +3884,9 @@ the element docType is an inline element within preface to identify the string u - Element - docTitle - + Element + docTitle + the element docTitle is an inline element within preface to identify the string used by the document for its own title @@ -3883,9 +3897,9 @@ the element docTitle is an inline element within preface to identify the string - Element - docNumber - + Element + docNumber + the element docNumber is an inline element within preface to identify the string used by the document for its own number @@ -3896,9 +3910,9 @@ the element docNumber is an inline element within preface to identify the string - Element - docProponent - + Element + docProponent + the element docProponent is an inline element within preface to identify the string used by the document for its proponent @@ -3915,9 +3929,9 @@ the element docProponent is an inline element within preface to identify the str - Element - docDate - + Element + docDate + the element docDate is an inline element within preface to identify the string used by the document for its own date(s). Documents with multiple dates may use multiple docDate elements. @@ -3934,9 +3948,9 @@ the element docDate is an inline element within preface to identify the string u - Element - legislature - + Element + legislature + the element legislature is an inline element within preface to identify the string used by the document for the legislature relative to the document. Use #refersTo to a TLCEvent to refer to the event of the specific legislature. @@ -3953,9 +3967,9 @@ the element legislature is an inline element within preface to identify the stri - Element - session - + Element + session + the element session is an inline element within preface to identify the string used by the document for the session of the legislature relative to the document. Use #refersTo to a TLCEvent to refer to the event of the specific session. @@ -3972,9 +3986,9 @@ the element session is an inline element within preface to identify the string u - Element - shortTitle - + Element + shortTitle + the element shortTitle is an inline element within preface to identify the string used by the document for the short title of the document. @@ -3985,9 +3999,9 @@ the element shortTitle is an inline element within preface to identify the strin - Element - docAuthority - + Element + docAuthority + the element docAuthority is an inline element within preface to identify the string used by the document detailing the Auhtority to which the document was submitted @@ -3998,9 +4012,9 @@ the element docAuthority is an inline element within preface to identify the str - Element - docPurpose - + Element + docPurpose + the element docPurpose is an inline element within preface to identify the string used by the document detailing its own purpose @@ -4011,9 +4025,9 @@ the element docPurpose is an inline element within preface to identify the strin - Element - docCommittee - + Element + docCommittee + the element docCommittee is an inline element within preface to identify the string used by the document detailing the committee within which the document originated @@ -4030,9 +4044,9 @@ the element docCommittee is an inline element within preface to identify the str - Element - docIntroducer - + Element + docIntroducer + the element docIntroducer is an inline element within preface to identify the string used by the document detailing the individual introducing of the document @@ -4043,9 +4057,9 @@ the element docIntroducer is an inline element within preface to identify the st - Element - docStage - + Element + docStage + the element docStage is an inline element within preface to identify the string used by the document detailing the stage in which the document sits @@ -4056,9 +4070,9 @@ the element docStage is an inline element within preface to identify the string - Element - docStatus - + Element + docStatus + the element docStatus is an inline element within preface to identify the string used by the document detailing the status of the document @@ -4069,9 +4083,9 @@ the element docStatus is an inline element within preface to identify the string - Element - docJurisdiction - + Element + docJurisdiction + the element docJurisdiction is an inline element within preface to identify the string used by the document detailing the jurisdiction of the document @@ -4082,9 +4096,9 @@ the element docJurisdiction is an inline element within preface to identify the - Element - docketNumber - + Element + docketNumber + the element docketNumber is an inline element within preface to identify the string used by the document for the number of the docket, case, file, etc which the document belongs to @@ -4095,9 +4109,9 @@ the element docketNumber is an inline element within preface to identify the str - Element - courtType - + Element + courtType + the element courtType is an inline element within judgments to identify the string used by the document for the type of the court doing the judgment @@ -4108,9 +4122,9 @@ the element courtType is an inline element within judgments to identify the stri - Element - neutralCitation - + Element + neutralCitation + the element neutralCitation is an inline element within judgments to identify the string declared by the document as being the neutral citation for the judgment @@ -4121,9 +4135,9 @@ the element neutralCitation is an inline element within judgments to identify th - Element - party - + Element + party + the element party is an inline element within judgments to identify where the document defines one of the parties @@ -4140,9 +4154,9 @@ the element party is an inline element within judgments to identify where the do - Element - judge - + Element + judge + the element judge is an inline element within judgments to identify where the document defines one of the judges, and his/her role @@ -4159,9 +4173,9 @@ the element judge is an inline element within judgments to identify where the do - Element - lawyer - + Element + lawyer + the element lawyer is an inline element within judgments to identify where the document defines one of the lawyers, his/her role, which party it represents, and the other lawyer, if any, this lawyer received the power delegation of power in some role @@ -4180,9 +4194,9 @@ the element lawyer is an inline element within judgments to identify where the d - Element - opinion - + Element + opinion + the element opinion is an inline element within judgments to identify where the document defines the opinion of one of the judges @@ -4199,9 +4213,9 @@ the element opinion is an inline element within judgments to identify where the - Element - argument - + Element + argument + the element argument is an inline element within judgments for classifying the arguments in the motivation part of the judgment @@ -4212,9 +4226,9 @@ the element argument is an inline element within judgments for classifying the a - Element - signature - + Element + signature + the element signature is an inline element within conclusions to identify where the document defines one of the signatures @@ -4225,9 +4239,9 @@ the element signature is an inline element within conclusions to identify where - Element - date - + Element + date + the element date is an inline element to identify a date expressed in the text and to propose a normalized representation in the date attribute. @@ -4244,9 +4258,9 @@ the element date is an inline element to identify a date expressed in the text a - Element - time - + Element + time + the element time is an inline element to identify a time expressed in the text and to propose a normalized representation in the time attribute. @@ -4263,9 +4277,9 @@ the element time is an inline element to identify a time expressed in the text a - Element - entity - + Element + entity + the element entity is a generic inline element to identify a text fragment introducing or referring to a concept in the ontology @@ -4282,9 +4296,9 @@ the element entity is a generic inline element to identify a text fragment intro - Element - person - + Element + person + the element person is an inline element to identify a text fragment introducing or referring to a person in the ontology. Attribute as allows to specify a TLCrole the person is holding in the context of the document's mention @@ -4301,9 +4315,9 @@ the element person is an inline element to identify a text fragment introducing - Element - organization - + Element + organization + The element organization is an inline element to identify a text fragment introducing or referring to an organization in the ontology @@ -4314,9 +4328,9 @@ The element organization is an inline element to identify a text fragment introd - Element - concept - + Element + concept + The element concept is is an inline element to identify a text fragment introducing or referring to a concept in the ontology @@ -4327,9 +4341,9 @@ The element concept is is an inline element to identify a text fragment introduc - Element - object - + Element + object + The element object is is an inline element to identify a text fragment introducing or referring to an object in the ontology @@ -4340,9 +4354,9 @@ The element object is is an inline element to identify a text fragment introduci - Element - event - + Element + event + The element event is an inline element to identify a text fragment introducing or referring to an event in the ontology @@ -4353,9 +4367,9 @@ The element event is an inline element to identify a text fragment introducing o - Element - location - + Element + location + The element location is an inline element to identify a text fragment introducing or referring to a location in the ontology @@ -4366,9 +4380,9 @@ The element location is an inline element to identify a text fragment introducin - Element - process - + Element + process + The element process is an inline element to identify a text fragment introducing or referring to a process in the ontology @@ -4379,9 +4393,9 @@ The element process is an inline element to identify a text fragment introducing - Element - role - + Element + role + The element role is an inline element to identify a text fragment introducing or referring to a role in the ontology @@ -4392,9 +4406,9 @@ The element role is an inline element to identify a text fragment introducing or - Element - term - + Element + term + The element term is an inline element to identify a text fragment introducing or referring to a term in the ontology @@ -4405,9 +4419,9 @@ The element term is an inline element to identify a text fragment introducing or - Element - quantity - + Element + quantity + The element quantity is an inline element to identify a text fragment introducing or referring to a quantity. This could be a dimensionless number, or a number referring to a length, weight, duration, etc. or even a sum of money. The attribute normalized contains the value normalized in a number, if appropriate. @@ -4424,9 +4438,9 @@ The element quantity is an inline element to identify a text fragment introducin - Element - def - + Element + def + the element def is an inline element used for the definition of a term used in the rest of the document @@ -4437,9 +4451,9 @@ the element def is an inline element used for the definition of a term used in t - Element - ref - + Element + ref + the element ref is an inline element containing a legal references (i.e. a reference to a document with legal status and for which an Akoma Ntoso IRI exists) @@ -4456,9 +4470,9 @@ the element ref is an inline element containing a legal references (i.e. a refer - Element - mref - + Element + mref + the element mref is an inline element containing multiple references (each in turn represented by a ref element) @@ -4469,9 +4483,9 @@ the element mref is an inline element containing multiple references (each in tu - Element - rref - + Element + rref + the element rref is an inline element containing a range of references between the IRI specified in the href attribute and the one specified in the upTo attribute. @@ -4489,9 +4503,9 @@ the element rref is an inline element containing a range of references between t - Complex - modType - + Complex + modType + the complex type modType specifies the content that is allowed within mod, mmod and rmod elements, i.e. it adds quotedText and quotedStructure to the normal list of inline elements @@ -4507,9 +4521,9 @@ the complex type modType specifies the content that is allowed within mod, mmod - Element - mod - + Element + mod + the element mod is an inline element containing the specification of a modification on another document @@ -4520,9 +4534,9 @@ the element mod is an inline element containing the specification of a modificat - Element - mmod - + Element + mmod + the element mmod is an inline element containing multiple specifications of modifications on another document @@ -4533,9 +4547,9 @@ the element mmod is an inline element containing multiple specifications of modi - Element - rmod - + Element + rmod + the element rmod is an inline element containing the specification of a range of modifications on another document @@ -4553,10 +4567,10 @@ the element rmod is an inline element containing the specification of a range of - Element - quotedText - -the element quotedText is an inline element containing a small string that is used either as the text being replaced, or the replacement, or the positioning at which some modification should take place. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + quotedText + +the element quotedText is an inline element containing a small string that is used either as the text being replaced, or the replacement, or the positioning at which some modification should take place. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4573,9 +4587,9 @@ the element quotedText is an inline element containing a small string that is us - Element - remark - + Element + remark + the element remark is an inline element for the specification of editorial remarks (e.g., applauses, laughters, etc.) especially within debate records @@ -4592,9 +4606,9 @@ the element remark is an inline element for the specification of editorial remar - Element - recordedTime - + Element + recordedTime + the element recordedTime is an inline element for the specification of an explicit mention of a time (e.g., in a debate) @@ -4612,9 +4626,9 @@ the element recordedTime is an inline element for the specification of an explic - Element - ins - + Element + ins + the element ins is an inline element for the specification of editorial insertions @@ -4625,9 +4639,9 @@ the element ins is an inline element for the specification of editorial insertio - Element - del - + Element + del + the element del is an inline element for the specification of editorial deletions @@ -4638,9 +4652,9 @@ the element del is an inline element for the specification of editorial deletion - Element - omissis - + Element + omissis + the element omissis is an inline element for the specification of a text that substitutes a textual omission (e.g., dots, spaces, the word "omissis", etc. @@ -4651,9 +4665,9 @@ the element omissis is an inline element for the specification of a text that su - Element - placeholder - + Element + placeholder + the element placeholder is an inline element containing the text of a computable expression (e.g., '30 days after the publication of this act') that can be replaced editorially with an actual value @@ -4670,9 +4684,9 @@ the element placeholder is an inline element containing the text of a computable - Element - fillIn - + Element + fillIn + the element fillIn is an inline element shown as a dotted line or any other typoaphical characteristics to represent a fill-in element in a printed form, that is as ane example of an actual form. It is NOT meant to be used for form elements as in HTML, i.e. as a way to collect input from the reader and deliver to some server-side process. @@ -4689,9 +4703,9 @@ the element fillIn is an inline element shown as a dotted line or any other typo - Element - decoration - + Element + decoration + the element decoration is an inline element to represent a decorative aspect that is present in the orignal text and that is meant as additional information to the text (e.g., the annotation 'new' on the side of a freshly inserted structure. @@ -4715,9 +4729,9 @@ the element decoration is an inline element to represent a decorative aspect tha - Element - noteRef - + Element + noteRef + the element noteRef is a reference to a editorial note placed in the notes metadata section @@ -4735,9 +4749,9 @@ the element noteRef is a reference to a editorial note placed in the notes metad - Complex - eolType - + Complex + eolType + the complex type eolType is shared by eol and eop elements as being able to specify a position within the next word in which the break can happen, and the number if any, associated to the page or line at issue @@ -4753,9 +4767,9 @@ the complex type eolType is shared by eol and eop elements as being able to spec - Element - eol - + Element + eol + the element eol (end of line) is a marker for where in the original text the line breaks. If the line breaks within a word, place the element BEFORE the word and place the number of characters before the break in the attribute breakat @@ -4766,9 +4780,9 @@ the element eol (end of line) is a marker for where in the original text the lin - Element - eop - + Element + eop + the element eop (end of page) is a marker for where in the original text the page breaks. Do NOT use a eol element, too. If the page breaks within a word, place the element BEFORE the word and place the number of characters before the break in the attribute breakat @@ -4792,9 +4806,9 @@ the element eop (end of page) is a marker for where in the original text the pag - Complex - subFlowStructure - + Complex + subFlowStructure + the type subFlowStructure specifies the overall content model of the elements that are subFlows @@ -4819,7 +4833,7 @@ the type subFlowStructure specifies the overall content model of the elements th - + @@ -4831,10 +4845,10 @@ the type subFlowStructure specifies the overall content model of the elements th - Element - quotedStructure - -the element quotedStructure is a subFlow element containing a full structure proposed as an insertion or a replacement. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + quotedStructure + +the element quotedStructure is a subFlow element containing a full structure proposed as an insertion or a replacement. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4851,9 +4865,9 @@ the element quotedStructure is a subFlow element containing a full structure pro - Element - embeddedText - + Element + embeddedText + the element embeddedText is an inline element containing a string used as an extract from another document. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. @@ -4871,10 +4885,10 @@ the element embeddedText is an inline element containing a string used as an ext - Element - embeddedStructure - -the element embeddedStructure is a subFlow element containing a full structure used as an extract from another document or position. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the currentId of the corresponding ref element. + Element + embeddedStructure + +the element embeddedStructure is a subFlow element containing a full structure used as an extract from another document or position. Attribute quote is used to specify the quote character used in the original; no quote attribute implies that the quote is left in the text; quote="" implies that there is no quote character. Attribute for is used in a mmod or rmod to point to the eId of the corresponding ref element. @@ -4891,9 +4905,9 @@ the element embeddedStructure is a subFlow element containing a full structure u - Element - authorialNote - + Element + authorialNote + the element authorialNote is a subFlow element containing an authorial (non-editorial) note in the main flow of the text. @@ -4914,9 +4928,9 @@ the element authorialNote is a subFlow element containing an authorial (non-edit - Element - foreign - + Element + foreign + the element foreign is a generic container for elements not belonging to the Akoma Ntoso namespace (e.g., mathematical formulas). It is a block element and thus can be placed in a container. @@ -4952,9 +4966,9 @@ the element foreign is a generic container for elements not belonging to the Ako - Element - hcontainer - + Element + hcontainer + the element hcontainer is a generic element for a hierarchical container. It can be placed in a hierarchy instead of any of the other hierarchical containers. The attribute name is required and gives a name to the element. @@ -4971,9 +4985,9 @@ the element hcontainer is a generic element for a hierarchical container. It can - Complex - containerType - + Complex + containerType + the complex type containerType is the content model for the generic element for a container. It can be placed in a container instead of any of the other containers. The attribute name is required and gives a name to the element. @@ -4989,9 +5003,9 @@ the complex type containerType is the content model for the generic element for - Element - container - + Element + container + the element container is a generic element for a container. @@ -5002,9 +5016,9 @@ the element container is a generic element for a container. - Element - block - + Element + block + the element block is a generic element for a container. It can be placed in a container instead of any of the other blocks. The attribute name is required and gives a name to the element. @@ -5021,9 +5035,9 @@ the element block is a generic element for a container. It can be placed in a co - Element - inline - + Element + inline + the element inline is a generic element for an inline. It can be placed inside a block instead of any of the other inlines. The attribute name is required and gives a name to the element. @@ -5040,9 +5054,9 @@ the element inline is a generic element for an inline. It can be placed inside a - Element - marker - + Element + marker + the element marker is a generic element for a marker. It can be placed in a block instead of any of the other markers. The attribute name is required and gives a name to the element. @@ -5061,9 +5075,9 @@ the element marker is a generic element for a marker. It can be placed in a bloc - Element - div - + Element + div + The element div is an HTML element, but is NOT used in Akoma Ntoso as in HTML. Instead of being used as a generic block, Akoma Ntoso uses div as a generic container (as in common practice) @@ -5074,9 +5088,9 @@ The element div is an HTML element, but is NOT used in Akoma Ntoso as in HTML. I - Element - p - + Element + p + The element p is an HTML element and is used in Akoma Ntoso as in HTML, for the generic paragraph of text (a block) @@ -5087,9 +5101,9 @@ The element p is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - span - + Element + span + The element span is an HTML element and is used in Akoma Ntoso as in HTML, for the generic inline @@ -5100,9 +5114,9 @@ The element span is an HTML element and is used in Akoma Ntoso as in HTML, for t - Element - br - + Element + br + The element br is an HTML element and is used in Akoma Ntoso as in HTML, for the breaking of a line @@ -5113,9 +5127,9 @@ The element br is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - b - + Element + b + The element b is an HTML element and is used in Akoma Ntoso as in HTML, for the bold style (an inline) @@ -5126,9 +5140,9 @@ The element b is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - i - + Element + i + The element i is an HTML element and is used in Akoma Ntoso as in HTML, for the italic style (an inline) @@ -5139,9 +5153,9 @@ The element i is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - u - + Element + u + The element u is an HTML element and is used in Akoma Ntoso as in HTML, for the underline style (an inline) @@ -5152,9 +5166,9 @@ The element u is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - sup - + Element + sup + The element sup is an HTML element and is used in Akoma Ntoso as in HTML, for the superscript style (an inline) @@ -5165,9 +5179,9 @@ The element sup is an HTML element and is used in Akoma Ntoso as in HTML, for th - Element - sub - + Element + sub + The element sub is an HTML element and is used in Akoma Ntoso as in HTML, for the subscript style (an inline) @@ -5178,9 +5192,9 @@ The element sub is an HTML element and is used in Akoma Ntoso as in HTML, for th - Element - abbr - + Element + abbr + The element abbr is an HTML element and is used in Akoma Ntoso as in HTML, for the specification of an abbreviation or an acronym (an inline). As in HTML, use attribute title to specify the full expansion of the abbreviation or acronym. @@ -5191,9 +5205,9 @@ The element abbr is an HTML element and is used in Akoma Ntoso as in HTML, for t - Element - a - + Element + a + The element a is an HTML element and is used in Akoma Ntoso as in HTML, for the generic link to a web resource (NOT to an Akoma Ntoso document: use ref for that). It is an inline. @@ -5211,9 +5225,9 @@ The element a is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - img - + Element + img + The element img is an HTML element and is used in Akoma Ntoso as in HTML, for including an image. It is a marker. @@ -5232,9 +5246,9 @@ The element img is an HTML element and is used in Akoma Ntoso as in HTML, for in - Complex - listItems - + Complex + listItems + the complex type listItems specifies the content model of elements ul and ol, and specifies just a sequence of list items (elements li). @@ -5248,9 +5262,9 @@ the complex type listItems specifies the content model of elements ul and ol, an - Element - ul - + Element + ul + The element ul is an HTML element and is used in Akoma Ntoso as in HTML, for an unordered list of list item (elements li) @@ -5261,9 +5275,9 @@ The element ul is an HTML element and is used in Akoma Ntoso as in HTML, for an - Element - ol - + Element + ol + The element ol is an HTML element and is used in Akoma Ntoso as in HTML, for an ordered list of list item (elements li) @@ -5274,9 +5288,9 @@ The element ol is an HTML element and is used in Akoma Ntoso as in HTML, for an - Element - li - + Element + li + TYPE Element NAME @@ -5314,9 +5328,9 @@ The element li is an HTML element and is used in Akoma Ntoso as in HTML, for the - Element - caption - + Element + caption + The element caption is an HTML element and is used in Akoma Ntoso as in HTML, for the caption of a table (a block) @@ -5337,9 +5351,9 @@ The element caption is an HTML element and is used in Akoma Ntoso as in HTML, fo - Element - th - + Element + th + The element th is an HTML element and is used in Akoma Ntoso as in HTML, for a header cell of a table @@ -5356,9 +5370,9 @@ The element th is an HTML element and is used in Akoma Ntoso as in HTML, for a h - Element - td - + Element + td + The element td is an HTML element and is used in Akoma Ntoso as in HTML, for a data cell of a table @@ -5407,9 +5421,9 @@ The element td is an HTML element and is used in Akoma Ntoso as in HTML, for a d - Complex - coreProperties - + Complex + coreProperties + The complexType coreProperties lists the identifying properties available at any of the FRBR hierarchy levels. @@ -5428,9 +5442,9 @@ The complexType coreProperties lists the identifying properties available at any - Group - workProperties - + Group + workProperties + The group workProperties lists the properties that are characteristics of the FRBR Work level. @@ -5448,15 +5462,16 @@ The group workProperties lists the properties that are characteristics of the FR - Group - exprProperties - + Group + exprProperties + The group exprProperties lists the properties that are characteristics of the FRBR Expression level. + @@ -5465,9 +5480,9 @@ The group exprProperties lists the properties that are characteristics of the FR - Group - manifProperties - + Group + manifProperties + The group manifProperties lists the properties that are characteristics of the FRBR Expression level. @@ -5480,9 +5495,9 @@ The group manifProperties lists the properties that are characteristics of the F - Element - FRBRWork - + Element + FRBRWork + The element FRBRWork is the metadata container of identifying properties related to the Work level according to the FRBR hierarchy @@ -5501,9 +5516,9 @@ The element FRBRWork is the metadata container of identifying properties related - Element - FRBRExpression - + Element + FRBRExpression + The element FRBRExpression is the metadata container of identifying properties related to the Expression level according to the FRBR hierarchy @@ -5522,9 +5537,9 @@ The element FRBRExpression is the metadata container of identifying properties r - Element - FRBRManifestation - + Element + FRBRManifestation + The element FRBRManifestation is the metadata container of identifying properties related to the Manifestation level according to the FRBR hierarchy @@ -5543,9 +5558,9 @@ The element FRBRManifestation is the metadata container of identifying propertie - Element - FRBRItem - + Element + FRBRItem + The element FRBRItem is the metadata container of identifying properties related to the Item level according to the FRBR hierarchy. @@ -5556,9 +5571,9 @@ The element FRBRItem is the metadata container of identifying properties related - Complex - valueType - + Complex + valueType + The type valueType specifies a value attribute to FRBR elements. @@ -5575,9 +5590,9 @@ The type valueType specifies a value attribute to FRBR elements. - Complex - booleanValueType - + Complex + booleanValueType + The type booleanValueType specifies a boolean value attribute to FRBR elements. @@ -5592,9 +5607,9 @@ The type booleanValueType specifies a boolean value attribute to FRBR elements.< - Element - FRBRthis - + Element + FRBRthis + The element FRBRthis is the metadata property containing the IRI of the specific component of the document in the respective level of the FRBR hierarchy @@ -5605,9 +5620,9 @@ The element FRBRthis is the metadata property containing the IRI of the specific - Element - FRBRuri - + Element + FRBRuri + The element FRBRuri is the metadata property containing the IRI of the whole document in the respective level of the FRBR hierarchy @@ -5618,9 +5633,9 @@ The element FRBRuri is the metadata property containing the IRI of the whole doc - Element - FRBRalias - + Element + FRBRalias + The element FRBRalias is the metadata property containing additional well-known names of the document in the respective level of the FRBR hierarchy @@ -5637,9 +5652,9 @@ The element FRBRalias is the metadata property containing additional well-known - Element - FRBRdate - + Element + FRBRdate + The element FRBRdate is the metadata property containing a relevant date of the document in the respective level of the FRBR hierarchy. Attribute name specifies which actual date is contained here. @@ -5657,9 +5672,9 @@ The element FRBRdate is the metadata property containing a relevant date of the - Element - FRBRauthor - + Element + FRBRauthor + The element FRBRauthor is the metadata property containing a relevant author of the document in the respective level of the FRBR hierarchy. Attribute as specifies the role of the author. @@ -5677,9 +5692,9 @@ The element FRBRauthor is the metadata property containing a relevant author of - Element - FRBRlanguage - + Element + FRBRlanguage + The element FRBRlanguage is the metadata property containing a RFC4646 (three-letter code) of the main human language used in the content of this expression @@ -5696,9 +5711,9 @@ The element FRBRlanguage is the metadata property containing a RFC4646 (three-le - Element - FRBRtranslation - + Element + FRBRtranslation + The element FRBRtranslation is the metadata property specifying the source of which this expression is a translation of. @@ -5719,9 +5734,9 @@ The element FRBRtranslation is the metadata property specifying the source of wh - Element - FRBRsubtype - + Element + FRBRsubtype + The element FRBRsubtype is the metadata property containing a string for the specific subtype of the document to be used in the work-level IRI of this document @@ -5732,9 +5747,9 @@ The element FRBRsubtype is the metadata property containing a string for the spe - Element - FRBRcountry - + Element + FRBRcountry + The element FRBRcountry is the metadata property containing a ISO 3166-1 Alpha-2 code for the country or jurisdiction to be used in the work-level IRI of this document @@ -5745,9 +5760,9 @@ The element FRBRcountry is the metadata property containing a ISO 3166-1 Alpha-2 - Element - FRBRnumber - + Element + FRBRnumber + The element FRBRnumber is the metadata property containing a string or number for the number to be used in the work-level IRI of this document @@ -5758,9 +5773,9 @@ The element FRBRnumber is the metadata property containing a string or number fo - Element - FRBRname - + Element + FRBRname + The element FRBRname is the metadata property containing a string for the title to be used in the work-level IRI of this document @@ -5771,9 +5786,9 @@ The element FRBRname is the metadata property containing a string for the title - Element - FRBRformat - + Element + FRBRformat + The element FRBRformat is the metadata property containing a string for the data format to be used in the manifestation-level IRI of this document @@ -5784,9 +5799,9 @@ The element FRBRformat is the metadata property containing a string for the data - Element - FRBRprescriptive - + Element + FRBRprescriptive + The element FRBRprescriptive is the metadata property containing a boolean value to determine whether the document contains prescriptive text (i.e., text that is or might become prescriptive, such as an act or a bill) or not (such as, for instance, a non-normative resolution from an assembly. @@ -5797,9 +5812,9 @@ The element FRBRprescriptive is the metadata property containing a boolean value - Element - FRBRauthoritative - + Element + FRBRauthoritative + The element FRBRauthoritative is the metadata property containing a boolean value to determine whether the document contains authoritative text (i.e., content that is the official, authoritative product of an official workflow from an entity that is entrusted with generating an official, authoriative version of the document. @@ -5807,6 +5822,19 @@ The element FRBRauthoritative is the metadata property containing a boolean valu + + + + Element + FRBRmasterExpression + +The element FRBRmasterExpression is the metadata property identifying the master expression, i.e., the expression whose ids are used as permanent ids in the wId attributes. An expression without the FRBRmasterExpression element is considered a master expression itself, i.e., the first version, or the most important version, of a document expressed in the only language, or in the most important language. Any other situation (subsequent versions, or language variants, or content variants) must have the FRBRmasterExpression element pointing to the URI of the master expression. If the FRBRmasterEpression is specified, but without a href pointing to the masterExpression, it is assumed that NO master expression exist in reality, but an UR-Expression exist, whose ids are used in this expression as wIds. In this case, the refersTo attribute must be used to point to an TLCConcept specifying facts about the UR-Expression. + + + + + + @@ -5831,9 +5859,9 @@ The element FRBRauthoritative is the metadata property containing a boolean valu - Element - preservation - + Element + preservation + The element preservation is the metadata property containing an arbitrary list of elements detailing the preservation actions taken for the document is the respective level of the FRBR hierarchy.. @@ -5844,9 +5872,9 @@ The element preservation is the metadata property containing an arbitrary list o - Element - publication - + Element + publication + The element publication is the metadata container specifying a publication event for the FRBR expression of the document. @@ -5876,9 +5904,9 @@ The element publication is the metadata container specifying a publication event - Element - keyword - + Element + keyword + The element keyword is a metadata element specifying a keyword associated to the FRBR expression of the document. Attribute dictionary (required) specifies the thesaurus out of which the keyword has been taken. Attribute href points to the fragment of text this keyword is associated to. Keywords without href attribute refer to the content as a whole. @@ -5907,9 +5935,9 @@ The element keyword is a metadata element specifying a keyword associated to th - Element - eventRef - + Element + eventRef + The element eventInfo is a metadata element specifying facts about an event that had an effect on the document. For each event, a date, a type and a document that generated the event must be referenced. @@ -5939,9 +5967,9 @@ The element eventInfo is a metadata element specifying facts about an event that - Element - step - + Element + step + The element step is a metadata element specifying facts about a workflow step occurred to the document. For each event, a date, a type, an actor (and the corresponding role) that generated the action must be referenced. The outcome, too, can be specified. @@ -5967,6 +5995,7 @@ The element step is a metadata element specifying facts about a workflow step oc + @@ -5976,9 +6005,9 @@ The element step is a metadata element specifying facts about a workflow step oc - Complex - Amendments - + Complex + Amendments + The complex type Amendments is a list of all the amendment elements that can be used on a document analysis @@ -5996,9 +6025,9 @@ The complex type Amendments is a list of all the amendment elements that can be - Complex - modificationType - + Complex + modificationType + The complex type modificationType lists all the properties associated to modification elements. @@ -6022,9 +6051,9 @@ The complex type modificationType lists all the properties associated to modific - Simple - TextualMods - + Simple + TextualMods + The simple type TextualMods lists all the types of textual modifications as values for the type attribute of the textualMod element. @@ -6043,9 +6072,9 @@ The simple type TextualMods lists all the types of textual modifications as valu - Simple - MeaningMods - + Simple + MeaningMods + The simple type MeaningMods lists all the types of modifications in meaning as values for the type attribute of the meaningMod element. @@ -6060,9 +6089,9 @@ The simple type MeaningMods lists all the types of modifications in meaning as v - Simple - ScopeMods - + Simple + ScopeMods + The simple type ScopeMods lists all the types of modifications in scope as values for the type attribute of the scopeMod element. @@ -6076,9 +6105,9 @@ The simple type ScopeMods lists all the types of modifications in scope as value - Simple - ForceMods - + Simple + ForceMods + The simple type ForceMods lists all the types of modifications in force as values for the type attribute of the forceMod element. @@ -6096,9 +6125,9 @@ The simple type ForceMods lists all the types of modifications in force as value - Simple - EfficacyMods - + Simple + EfficacyMods + The simple type EfficacyMods lists all the types of modifications in efficacy as values for the type attribute of the efficacyMod element. @@ -6117,9 +6146,9 @@ The simple type EfficacyMods lists all the types of modifications in efficacy as - Simple - LegalSystemMods - + Simple + LegalSystemMods + The simple type LegalSystemMods lists all the types of modifications in the legal system as values for the type attribute of the LegalSystemMod element. @@ -6143,9 +6172,9 @@ The simple type LegalSystemMods lists all the types of modifications in the lega - Element - activeModifications - + Element + activeModifications + The element activeModifications is a metadata container of the active modifications generated by the document. @@ -6156,9 +6185,9 @@ The element activeModifications is a metadata container of the active modificati - Element - passiveModifications - + Element + passiveModifications + The element passiveModifications is a metadata container of the passive modifications affecting the document. @@ -6169,9 +6198,9 @@ The element passiveModifications is a metadata container of the passive modifica - Element - textualMod - + Element + textualMod + The element textualMod is a metadata element specifying an (active or passive) textual modification for the document. @@ -6180,6 +6209,7 @@ The element textualMod is a metadata element specifying an (active or passive) t + @@ -6192,9 +6222,9 @@ The element textualMod is a metadata element specifying an (active or passive) t - Element - meaningMod - + Element + meaningMod + The element meaningMod is a metadata element specifying an (active or passive) modification in meaning for the document. @@ -6214,9 +6244,9 @@ The element meaningMod is a metadata element specifying an (active or passive) m - Element - scopeMod - + Element + scopeMod + The element scopeMod is a metadata element specifying an (active or passive) modification in scope for the document. @@ -6236,9 +6266,9 @@ The element scopeMod is a metadata element specifying an (active or passive) mod - Element - forceMod - + Element + forceMod + The element forceMod is a metadata element specifying an (active or passive) modification in force for the document. @@ -6255,9 +6285,9 @@ The element forceMod is a metadata element specifying an (active or passive) mod - Element - efficacyMod - + Element + efficacyMod + The element efficacyMod is a metadata element specifying an (active or passive) modification in efficacy for the document. @@ -6274,9 +6304,9 @@ The element efficacyMod is a metadata element specifying an (active or passive) - Element - legalSystemMod - + Element + legalSystemMod + The element legalSystemMod is a metadata element specifying an (active or passive) modification in the legal system for the document. @@ -6293,9 +6323,9 @@ The element legalSystemMod is a metadata element specifying an (active or passiv - Complex - judicialArguments - + Complex + judicialArguments + The complex type judicialArguments is a list of all the judicial analysis elements that can be used on the analysis of a judgment @@ -6321,9 +6351,9 @@ The complex type judicialArguments is a list of all the judicial analysis elemen - Complex - judicialArgumentType - + Complex + judicialArgumentType + The complex type judicialArgumentType lists all the properties associated to judicial elements. @@ -6343,9 +6373,9 @@ The complex type judicialArgumentType lists all the properties associated to jud - Element - judicial - + Element + judicial + The element judicial is a metadata container of the analysis of the judicial arguments of a judgment. @@ -6356,9 +6386,9 @@ The element judicial is a metadata container of the analysis of the judicial arg - Element - result - + Element + result + The element result is a metadata element specifying the overall result of the judgment. @@ -6375,9 +6405,9 @@ The element result is a metadata element specifying the overall result of the ju - Element - supports - + Element + supports + The element supports is a metadata element specifying a reference to a source supported by the argument being described. @@ -6388,9 +6418,9 @@ The element supports is a metadata element specifying a reference to a source su - Element - isAnalogTo - + Element + isAnalogTo + The element isAnalogTo is a metadata element specifying a reference to a source analog to the argument being described. @@ -6401,9 +6431,9 @@ The element isAnalogTo is a metadata element specifying a reference to a source - Element - applies - + Element + applies + The element applies is a metadata element specifying a reference to a source applyed by the argument being described. @@ -6414,9 +6444,9 @@ The element applies is a metadata element specifying a reference to a source app - Element - extends - + Element + extends + The element extends is a metadata element specifying a reference to a source extended by the argument being described. @@ -6427,9 +6457,9 @@ The element extends is a metadata element specifying a reference to a source ext - Element - restricts - + Element + restricts + The element restricts is a metadata element specifying a reference to a source restricted by the argument being described. @@ -6440,9 +6470,9 @@ The element restricts is a metadata element specifying a reference to a source r - Element - derogates - + Element + derogates + The element derogates is a metadata element specifying a reference to a source derogated by the argument being described. @@ -6453,9 +6483,9 @@ The element derogates is a metadata element specifying a reference to a source d - Element - contrasts - + Element + contrasts + The element contrasts is a metadata element specifying a reference to a source contrasted by the argument being described. @@ -6466,9 +6496,9 @@ The element contrasts is a metadata element specifying a reference to a source c - Element - overrules - + Element + overrules + The element overrules is a metadata element specifying a reference to a source overruled by the argument being described. @@ -6479,9 +6509,9 @@ The element overrules is a metadata element specifying a reference to a source o - Element - dissentsFrom - + Element + dissentsFrom + The element dissentsFrom is a metadata element specifying a reference to a source dissented from the argument being described. @@ -6492,9 +6522,9 @@ The element dissentsFrom is a metadata element specifying a reference to a sourc - Element - putsInQuestion - + Element + putsInQuestion + The element putsInQuestions is a metadata element specifying a reference to a source questioned by the argument being described. @@ -6505,9 +6535,9 @@ The element putsInQuestions is a metadata element specifying a reference to a so - Element - distinguishes - + Element + distinguishes + The element distinguishes is a metadata element specifying a reference to a source being distinguished by the argument being described. @@ -6527,9 +6557,9 @@ The element distinguishes is a metadata element specifying a reference to a sour - Element - restriction - + Element + restriction + The element restriction specifies information about a restriction (such as a jurisdiction specification) by pointing to a specific legislative, geographic or temporal events through the @@ -6547,9 +6577,9 @@ The element restriction specifies information about a restriction (such as a jur - Complex - parliamentaryAnalysis - + Complex + parliamentaryAnalysis + The complex type parliamentaryAnalysis is a list of all the parliamentary analysis elements that can be used on the analysis of a debate @@ -6564,9 +6594,9 @@ The complex type parliamentaryAnalysis is a list of all the parliamentary analys - Element - parliamentary - + Element + parliamentary + The element parliamentary is a metadata container of the analysis of the events of a debate. @@ -6577,9 +6607,9 @@ The element parliamentary is a metadata container of the analysis of the events - Complex - parliamentaryAnalysisType - + Complex + parliamentaryAnalysisType + The complex type parliamentaryAnalysisType lists all the properties associated to elements in the parliamentary analysis. @@ -6598,9 +6628,9 @@ The complex type parliamentaryAnalysisType lists all the properties associated t - Element - quorumVerification - + Element + quorumVerification + The element quorumVerification is a metadata container containing information about an event of quorum verification happened within a debate. @@ -6611,9 +6641,9 @@ The element quorumVerification is a metadata container containing information ab - Element - voting - + Element + voting + The element voting is a metadata container containing information about an event of a vote happened within a debate. @@ -6624,9 +6654,9 @@ The element voting is a metadata container containing information about an event - Element - recount - + Element + recount + The element recount is a metadata container containing information about an event of a recount happened within a debate. @@ -6637,9 +6667,9 @@ The element recount is a metadata container containing information about an even - Complex - countType - + Complex + countType + The complex type countType lists all the properties associated to elements of parliamentary count. @@ -6657,9 +6687,9 @@ The complex type countType lists all the properties associated to elements of pa - Element - quorum - + Element + quorum + The element quorum is a metadata container containing the value of a quorum in a vote or a quorum verification. @@ -6670,9 +6700,9 @@ The element quorum is a metadata container containing the value of a quorum in a - Element - count - + Element + count + The element count is a metadata container containing the value of a count in a vote or a quorum verification. @@ -6680,12 +6710,43 @@ The element count is a metadata container containing the value of a count in a v + + + + The element mapping contains a reference to the permanent wId (attribute original) of a structure, and to the eId (attribute current) such structure had during the time interval included between an initial temporalGroup and a final temporalGroup. This is useful for tracking the evolving ids of documents frequently renumbered (e,g., bills). Every single element whose wId does not match its eId needs to be represented here. + + + + + + + + + + + + + + + + + + + + + + + + + + + - Element - otherAnalysis - + Element + otherAnalysis + The element otherAnalysis is a metadata container of any additional metadata analysis element that does not belong to the specific categories provided before. Anything can be placed in this element.. @@ -6702,11 +6763,11 @@ The element otherAnalysis is a metadata container of any additional metadata ana - Attlist - pos - + Attlist + pos + The attribute pos is used to identify the specific position of the reference (e.g., in source or destination) -with respect to the element being identified with the relative currentId. +with respect to the element being identified with the relative eId. @@ -6716,9 +6777,9 @@ with respect to the element being identified with the relative currentId. - Complex - argumentType - + Complex + argumentType + the complex type argumentType defines the empty content model and the list of attributes for metadata elements in the analysis section @@ -6734,9 +6795,9 @@ the complex type argumentType defines the empty content model and the list of at - Complex - periodType - + Complex + periodType + the complex type periodType defines the empty content model and the list of attributes for metadata elements in the analysis section using periods @@ -6749,9 +6810,9 @@ the complex type periodType defines the empty content model and the list of attr - Element - source - + Element + source + The element source is a metadata element specifying the IRI of the source of the modification. @@ -6762,9 +6823,9 @@ The element source is a metadata element specifying the IRI of the source of the - Element - destination - + Element + destination + The element destination is a metadata element specifying the IRI of the destination of the modification. @@ -6775,9 +6836,9 @@ The element destination is a metadata element specifying the IRI of the destinat - Element - force - + Element + force + The element force is a metadata element specifying the period of the force modification. @@ -6788,9 +6849,9 @@ The element force is a metadata element specifying the period of the force modif - Element - efficacy - + Element + efficacy + The element efficacy is a metadata element specifying the period of the efficacy modification. @@ -6801,9 +6862,9 @@ The element efficacy is a metadata element specifying the period of the efficacy - Element - application - + Element + application + The element efficacy is a metadata element specifying the period of the efficacy modification. @@ -6814,9 +6875,9 @@ The element efficacy is a metadata element specifying the period of the efficacy - Element - duration - + Element + duration + The element duration is a metadata element specifying the period of the duration modification. @@ -6827,9 +6888,9 @@ The element duration is a metadata element specifying the period of the duration - Element - condition - + Element + condition + The element condition is a metadata element specifying an open set (non managed by Akoma Ntoso) of conditions on the modification @@ -6843,13 +6904,26 @@ The element condition is a metadata element specifying an open set (non managed + + + + Element + previous + +The element previous is a metadata element referring to the element (rather than the text) of the modification in the previous version of the document. This is especially useful when renumbering occurs, so as to specify the eId of the instance that was modified in the previous version. Attribute href points to the eId of the element being modified in the old version, using a full expression-level URI. + + + + + + - Element - old - -The element old is a metadata element containing (in some non-managed form) the old text of the modification. Attribute href points to the currentId of the element new it is being substituted by. + Element + old + +The element old is a metadata element containing (in some non-managed form) the old text of the modification. Attribute href points to the eId of the element new it is being substituted by. @@ -6859,10 +6933,10 @@ The element old is a metadata element containing (in some non-managed form) the - Element - new - -The element new is a metadata element containing (in some non-managed form) the new text of the modification. Attribute href points to the currentId of the element old it is substituting. + Element + new + +The element new is a metadata element containing (in some non-managed form) the new text of the modification. Attribute href points to the eId of the element old it is substituting. @@ -6872,9 +6946,9 @@ The element new is a metadata element containing (in some non-managed form) the - Element - domain - + Element + domain + The element domain is a metadata element containing (in some non-managed form) the domain to which the modification applies. @@ -6891,7 +6965,6 @@ The element domain is a metadata element containing (in some non-managed form) t - @@ -6931,29 +7004,12 @@ The element domain is a metadata element containing (in some non-managed form) t - - - - - - - - - - - - - - - - - - Group - docRefs - + Group + docRefs + The group docrefs is a list of types of legal references to documents. @@ -6971,9 +7027,9 @@ The group docrefs is a list of types of legal references to documents. - Group - TLCs - + Group + TLCs + The group TLCs is a list of types of Top Level classes of the Akoma Ntoso ontology. @@ -6995,9 +7051,9 @@ The group TLCs is a list of types of Top Level classes of the Akoma Ntoso ontolo - Complex - refItems - + Complex + refItems + The complex type refItems is a list of types of references used in the references section. @@ -7012,9 +7068,9 @@ The complex type refItems is a list of types of references used in the reference - Element - references - + Element + references + The element references is a metadata container of all the references to entities external to the document mentioned in the document. They include references to legal documents of any form,a s well as references to people, organizations, events, roles, concepts, and anything else is managed by the Akoma Ntoso ontology. @@ -7025,9 +7081,9 @@ The element references is a metadata container of all the references to entities - Element - original - + Element + original + The element original is a metadata reference to the Akoma Ntoso IRI of the original version of this document (i.e., the first expression) @@ -7038,9 +7094,9 @@ The element original is a metadata reference to the Akoma Ntoso IRI of the origi - Element - passiveRef - + Element + passiveRef + The element passiveRef is a metadata reference to the Akoma Ntoso IRI of a document providing modifications on this document (i.e., a passive references) @@ -7051,9 +7107,9 @@ The element passiveRef is a metadata reference to the Akoma Ntoso IRI of a docum - Element - activeRef - + Element + activeRef + The element activeRef is a metadata reference to the Akoma Ntoso IRI of a document that is modified by this document (i.e., an active references) @@ -7064,9 +7120,9 @@ The element activeRef is a metadata reference to the Akoma Ntoso IRI of a docume - Element - jurisprudence - + Element + jurisprudence + The element jurisprudence is a metadata reference to the Akoma Ntoso IRI of a document providing jurisprudence on this document @@ -7077,9 +7133,9 @@ The element jurisprudence is a metadata reference to the Akoma Ntoso IRI of a do - Element - hasAttachment - + Element + hasAttachment + The element hasAttachment is a metadata reference to the Akoma Ntoso IRI of an attachment of this document @@ -7096,9 +7152,9 @@ The element hasAttachment is a metadata reference to the Akoma Ntoso IRI of an a - Element - attachmentOf - + Element + attachmentOf + The element attachmentOf is a metadata reference to the Akoma Ntoso IRI of a document of which this document is an attachment @@ -7115,9 +7171,9 @@ The element attachmentOf is a metadata reference to the Akoma Ntoso IRI of a doc - Element - TLCPerson - + Element + TLCPerson + The element TLCPerson is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Person @@ -7128,9 +7184,9 @@ The element TLCPerson is a metadata reference to the Akoma Ntoso IRI of an ontol - Element - TLCOrganization - + Element + TLCOrganization + The element TLCOrganization is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Organization @@ -7141,9 +7197,9 @@ The element TLCOrganization is a metadata reference to the Akoma Ntoso IRI of an - Element - TLCConcept - + Element + TLCConcept + The element TLCConcept is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Concept @@ -7154,9 +7210,9 @@ The element TLCConcept is a metadata reference to the Akoma Ntoso IRI of an onto - Element - TLCObject - + Element + TLCObject + The element TLCObject is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Object @@ -7167,9 +7223,9 @@ The element TLCObject is a metadata reference to the Akoma Ntoso IRI of an ontol - Element - TLCEvent - + Element + TLCEvent + The element TLCEvent is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Event @@ -7180,9 +7236,9 @@ The element TLCEvent is a metadata reference to the Akoma Ntoso IRI of an ontolo - Element - TLCLocation - + Element + TLCLocation + The element TLCLocation is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Location @@ -7193,9 +7249,9 @@ The element TLCLocation is a metadata reference to the Akoma Ntoso IRI of an ont - Element - TLCProcess - + Element + TLCProcess + The element TLCProcess is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Process @@ -7206,9 +7262,9 @@ The element TLCProcess is a metadata reference to the Akoma Ntoso IRI of an onto - Element - TLCRole - + Element + TLCRole + The element TLCRole is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Role @@ -7219,9 +7275,9 @@ The element TLCRole is a metadata reference to the Akoma Ntoso IRI of an ontolog - Element - TLCTerm - + Element + TLCTerm + The element TLCTerm is a metadata reference to the Akoma Ntoso IRI of an ontology instance of the class Term @@ -7232,9 +7288,9 @@ The element TLCTerm is a metadata reference to the Akoma Ntoso IRI of an ontolog - Element - TLCReference - + Element + TLCReference + The element TLCreference is a generic metadata reference to the Akoma Ntoso IRI of an ontology instance of a class specified through the name attribute @@ -7257,12 +7313,12 @@ The element TLCreference is a generic metadata reference to the Akoma Ntoso IRI - + - Element - note - + Element + note + The element note is a metadata element containing the text of the footnote and endnote specified. @@ -7273,9 +7329,9 @@ The element note is a metadata element containing the text of the footnote and e - Element - proprietary - + Element + proprietary + The element proprietary is a metadata container of any additional metadata property that does not belong to the Akoma Ntoso properties. Anything can be placed in this element. @@ -7292,9 +7348,9 @@ The element proprietary is a metadata container of any additional metadata prope - Element - presentation - + Element + presentation + The element presentation is a metadata container of any presentation specification for the visual rendering of Akoam Ntoso elements. Anything can be placed in this element. diff --git a/languagesPlugins/akoma3.0/structure.json b/languagesPlugins/akoma3.0/structure.json index 269dea3f..f13cb418 100644 --- a/languagesPlugins/akoma3.0/structure.json +++ b/languagesPlugins/akoma3.0/structure.json @@ -11,6 +11,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -24,6 +32,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -37,6 +53,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -50,6 +74,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -63,6 +95,14 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] }, { @@ -76,11 +116,114 @@ "name": "ch" }, { "name": "it" + }, { + "name": "cl" + }, { + "name": "eu" + }, { + "name": "uk" + }, { + "name": "us" } ] } ], "customViews": ["MarkingMenu"], - "plugins": ["aknPreview", "documentCollection", "at4am"] + "plugins": ["aknPreview", + "documentCollection", + "parsers", + "modsMarker", + "notesManager", + "metadataManager"], + "transformationFiles": { + "languageToLIME": "AknToXhtml.xsl", + "LIMEtoLanguage": "HtmlToAkn.xsl" + }, + "metaTemplate": { + "identification": { + "@source": "", + "FRBRWork": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRalias": { + "@value": "", + "@name": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRcountry": { + "@value": "" + }, + "FRBRnumber": { + "@value": "" + } + }, + "FRBRExpression": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRlanguage": { + "@language": "" + } + }, + "FRBRManifestation": { + "FRBRthis": { + "@value": "" + }, + "FRBRuri": { + "@value": "" + }, + "FRBRdate": { + "@date": "", + "@name": "" + }, + "FRBRauthor": { + "@akn_href": "", + "@as": "" + }, + "FRBRformat": { + "@value": "" + } + } + }, + "publication": { + "@name": "", + "@date": "", + "@number": "", + "@showAs": "" + }, + "references": { + "@source": "", + "!possibleChildren": { + "names": ["original", "TLCPerson", "TLCOrganization", "TLCConcept", "TLCObject", "TLCEvent", "TLCLocation", "TLCProcess", "TLCRole", "TLCTerm", "TLCReference"], + "attributes": { + "@eId": "", + "@akn_href": "", + "@akn_showAs": "" + } + } + } + } } diff --git a/languagesPlugins/config.json b/languagesPlugins/config.json index cbaa44e3..970e31c3 100644 --- a/languagesPlugins/config.json +++ b/languagesPlugins/config.json @@ -1,3 +1,3 @@ { - "languages": [{name:'akoma3.0'}, {name:'akoma2.0'}] + "languages": [{"name":"akoma3.0"}] } diff --git a/languagesPlugins/default/client/importDocument/ImportController.js b/languagesPlugins/default/client/importDocument/ImportController.js index 0461996a..06f03f1d 100644 --- a/languagesPlugins/default/client/importDocument/ImportController.js +++ b/languagesPlugins/default/client/importDocument/ImportController.js @@ -79,22 +79,26 @@ Ext.define('LIME.controller.ImportController', { }, uploadFinished: function(content, request) { - var app = this.application, docMLang; + var app = this.application, docMLang, docLang; if(request.response && request.response[DocProperties.markingLanguageAttribute]) { docMLang = request.response[DocProperties.markingLanguageAttribute]; } - + if(request.response && request.response[DocProperties.languageAttribute]) { + docLang = request.response[DocProperties.languageAttribute] || ""; + } // Upload the editor's content app.fireEvent(Statics.eventsNames.loadDocument, { docText: content, docId: new Date().getTime(), - docMarkingLanguage: docMLang + docMarkingLanguage: docMLang, + docLang: docLang }); }, importDocument : function() { // Create a window with a form where the user can select a file var me = this, + transformFile = Config.getLanguageTransformationFile("languageToLIME", Config.getLanguage()), uploaderView = Ext.widget('uploader', { buttonSelectLabel : Locale.getString("selectDocument", me.getPluginName()), buttonSubmitLabel : Locale.getString("importDocument", me.getPluginName()), @@ -104,7 +108,8 @@ Ext.define('LIME.controller.ImportController', { callbackScope: me, uploadUrl : Utilities.getAjaxUrl(), uploadParams : { - requestedService: Statics.services.fileToHtml + requestedService: Statics.services.fileToHtml, + transformFile: (transformFile) ? transformFile : "" } }); uploaderView.show(); diff --git a/build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewController.js b/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js similarity index 83% rename from build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewController.js rename to languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js index bb9ce8a3..4f599556 100644 --- a/build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewController.js +++ b/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewController.js @@ -44,27 +44,34 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -Ext.define('LIME.controller.PdfPreviewController', { +Ext.define('LIME.controller.NewPdfPreviewController', { extend : 'Ext.app.Controller', - views: ["LIME.ux.pdfPreview.PdfPreviewPanel"], + views: ["LIME.ux.newPdfPreview.NewPdfPreviewPanel"], refs : [{ selector : 'appViewport', ref : 'appViewport' }, { - selector: 'pdf', + selector: 'newPdf', ref: 'pdf' }], config : { - pluginName : "pdfPreview" + pluginName : "newPdfPreview" }, - callPdfService: function() { - var me = this, pdfTab = me.getPdf(), editor = me.getController("Editor"), - html = editor.getDocHtml(), viewport = me.getAppViewport(); - + initPdf: function() { + var me = this; + me.application.fireEvent(Statics.eventsNames.translateRequest, function(xml) { + me.callPdfService(xml); + }); + }, + + callPdfService: function(akn) { + var me = this, pdfTab = me.getPdf(), viewport = me.getAppViewport(), + ulrs = Config.getPluginUrl(me.getPluginName()), + cssPath = ulrs.absolute+me.getCssFile(); viewport.setLoading(true); Ext.Ajax.request({ // the url of the web service @@ -75,8 +82,9 @@ Ext.define('LIME.controller.PdfPreviewController', { // send the content in html format params : { - requestedService: Statics.services.htmlToPdf, - source: html + requestedService: "AKN_TO_PDF_FOP", + start_page: 0, + source: akn }, // the scope of the ajax request scope : me, @@ -106,8 +114,8 @@ Ext.define('LIME.controller.PdfPreviewController', { init : function() { var me = this; this.control({ - 'pdf' : { - activate : me.callPdfService + 'newPdf' : { + activate : me.initPdf } }); } diff --git a/build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js b/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js similarity index 94% rename from build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js rename to languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js index ec0638e5..b1279c78 100644 --- a/build/production/LIME/languagesPlugins/default/client/pdfPreview/PdfPreviewPanel.js +++ b/languagesPlugins/default/client/newPdfPreview/NewPdfPreviewPanel.js @@ -48,17 +48,17 @@ * Pdf viewer tab, this tab uses two plugins one for converting content * to pdf and the other to show the pdf in the tab */ -Ext.define('LIME.ux.pdfPreview.PdfPreviewPanel', { +Ext.define('LIME.ux.newPdfPreview.NewPdfPreviewPanel', { extend : 'Ext.panel.Panel', requires : ['Ext.ux.Iframe'], config : { - pluginName : "pdfPreview" + pluginName : "newPdfPreview" }, // set the alias - alias : 'widget.pdf', + alias : 'widget.newPdf', cls : 'editorTab', @@ -81,6 +81,10 @@ Ext.define('LIME.ux.pdfPreview.PdfPreviewPanel', { var plugin = this.getPlugin('pdfplugin'); plugin.setSrc(url); }, + + getIframePlugin : function() { + return this.getPlugin('pdfplugin'); + }, initComponent : function() { this.plugins = [{ diff --git a/languagesPlugins/default/client/pdfPreview/strings.json b/languagesPlugins/default/client/newPdfPreview/strings.json similarity index 100% rename from languagesPlugins/default/client/pdfPreview/strings.json rename to languagesPlugins/default/client/newPdfPreview/strings.json diff --git a/languagesPlugins/default/client/newPdfPreview/structure.json b/languagesPlugins/default/client/newPdfPreview/structure.json new file mode 100644 index 00000000..5f0803be --- /dev/null +++ b/languagesPlugins/default/client/newPdfPreview/structure.json @@ -0,0 +1,4 @@ +{ + "views": ["NewPdfPreviewPanel"], + "controllers": ["NewPdfPreviewController"] +} \ No newline at end of file diff --git a/languagesPlugins/default/client/pdfPreview/structure.json b/languagesPlugins/default/client/pdfPreview/structure.json deleted file mode 100644 index d14481f4..00000000 --- a/languagesPlugins/default/client/pdfPreview/structure.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "views": ["PdfPreviewPanel"], - "controllers": ["PdfPreviewController"] -} \ No newline at end of file diff --git a/languagesPlugins/default/licence.txt b/languagesPlugins/default/licence.txt new file mode 100644 index 00000000..0475a094 --- /dev/null +++ b/languagesPlugins/default/licence.txt @@ -0,0 +1,43 @@ +Copyright (c) 2014 - Copyright holders CIRSFID and Department of +Computer Science and Engineering of the University of Bologna + +Authors: +Monica Palmirani – CIRSFID of the University of Bologna +Fabio Vitali – Department of Computer Science and Engineering of the University of Bologna +Luca Cervone – CIRSFID of the University of Bologna + +Permission is hereby granted to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The Software can be used by anyone for purposes without commercial gain, +including scientific, individual, and charity purposes. If it is used +for purposes having commercial gains, an agreement with the copyright +holders is required. The above copyright notice and this permission +notice shall be included in all copies or substantial portions of the +Software. + +Except as contained in this notice, the name(s) of the above copyright +holders and authors shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without prior +written authorization. + +The end-user documentation included with the redistribution, if any, +must include the following acknowledgment: "This product includes +software developed by University of Bologna (CIRSFID and Department of +Computer Science and Engineering) and its authors (Monica Palmirani, +Fabio Vitali, Luca Cervone)", in the same place and form as other +third-party acknowledgments. Alternatively, this acknowledgment may +appear in the software itself, in the same form and location as other +such third-party acknowledgments. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/languagesPlugins/default/structure.json b/languagesPlugins/default/structure.json index c4a30197..473458c3 100644 --- a/languagesPlugins/default/structure.json +++ b/languagesPlugins/default/structure.json @@ -1,3 +1,3 @@ { - "plugins": ["xmlValidation", "importDocument", "exportDocument", "pdfPreview"] + "plugins": ["xmlValidation", "importDocument", "exportDocument", "newPdfPreview"] } diff --git a/php/Proxies/Proxies.php b/php/Proxies/Proxies.php index 45996068..883f0e1f 100644 --- a/php/Proxies/Proxies.php +++ b/php/Proxies/Proxies.php @@ -136,10 +136,6 @@ public function __construct($requestedService, $params) header("Content-Type: application/json"); $this->_service = new Proxies_Services_AknToXml($this->_params, true); break; - case 'FILE_TO_STRING': - header("Content-Type: text/html"); // TODO if set to any other type the result is wrapped into a
       tag
      -					$this->_service = new Proxies_Services_FileToString($this->_params);
      -					break;
       				case 'FILE_TO_HTML':
       					header("Content-Type: application/json"); // TODO if set to any other type the result is wrapped into a 
       tag
       					$this->_service = new Proxies_Services_FileToHtml($this->_params);
      @@ -162,7 +158,7 @@ public function __construct($requestedService, $params)
       					break;
       				case 'XML_VALIDATION':
       					header("Content-Type: application/json");
      -					$this->_service = new Proxies_Services_AknValidation($this->_params);
      +					$this->_service = new Proxies_Services_XmlValidation($this->_params);
       					break;
       				case 'EXPORT_FILES':
       					header("Content-Type: application/json");
      @@ -172,6 +168,10 @@ public function __construct($requestedService, $params)
       					header("Content-Type: application/json");
       					$this->_service = new Proxies_Services_FilterUrls($this->_params);
       					break;
      +				case 'AKN_TO_PDF_FOP':
      +					header("Content-Type: application/json");
      +					$this->_service = new Proxies_Services_AknToPdfFop($this->_params);
      +					break;
       			}
       			
       		}
      diff --git a/php/Proxies/Services/Proxies_Services_AknToPdfFop.php b/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
      index 8eccd52c..40efc29b 100644
      --- a/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
      +++ b/php/Proxies/Services/Proxies_Services_AknToPdfFop.php
      @@ -67,6 +67,7 @@ public function __construct($params, $isDownload=false)
       		$this->_submittedSourceXML = $params['source'];
       		
       		$this->_isDownload = $isDownload;
      +		$this->_cssFile = (isset($params['css'])) ? $params['css'] : FALSE;
       	}
       	
       	/**
      @@ -74,7 +75,7 @@ public function __construct($params, $isDownload=false)
       	 * @return The result that the service computed
       	 */ 
       	public function getResults()
      -	{	
      +	{
       		//$fop_command = $currentDirFullpath."isafop/fop ";
       		
       		$currentDirFullpath = dirname(__FILE__)."/";
      @@ -91,8 +92,7 @@ public function getResults()
       		$sourceXML = trim($this->_submittedSourceXML);
       		if (get_magic_quotes_gpc()) 
       		            $sourceXML = stripcslashes($sourceXML);
      -		
      -		
      +			
       		$doc = new DOMDocument();
       		$output = array();
       
      @@ -112,8 +112,26 @@ public function getResults()
       		
       						if (file_exists($xmlFullPathFilename))
       						{
      +							
       							$xsl = new DOMDocument;
       							$xsl->load(AKN_TO_PDF);
      +							
      +							if($this->_cssFile) {
      +								$cssRules = cssFileToArray($this->_cssFile);
      +								foreach($cssRules as $selector => $rules) {
      +									$attributeSet = createAttributeSet($xsl, $selector, $rules);
      +									$xsl->documentElement->appendChild($attributeSet);
      +								}
      +							}
      +							
      +							$uriNamespace = $doc ->documentElement ->lookupnamespaceURI(NULL);
      +							
      +							// set namespace uri of the correct AKN3.0 revision
      +							$xsl->documentElement->setAttributeNS(
      +						        'http://www.w3.org/2000/xmlns/',
      +						        'xmlns:akn',
      +						        $uriNamespace
      +							);
       			
       							// Configure the transformer
       							$proc = new XSLTProcessor;
      @@ -131,14 +149,14 @@ public function getResults()
       								/*** FONT-ISSUE ***/
       														
       								$fo->save($currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".XSLFOFILENAME);
      -								
      -								$foFullPath = $currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".XSLFOFILENAME;
      -								$pdfFullPath = $currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".PDFFILENAME;				
      -								
      -								//$fop_conf = " -c ".$currentDirFullpath."isafop/conf/fop.xconf ";
      +							
      +								$fullPath = realpath($currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/");	
      +								$foFullPath = $fullPath."/".XSLFOFILENAME;
      +								$pdfFullPath = $fullPath."/".PDFFILENAME;
      +									
      +								//$fop_conf = " -c ".$currentDirFullpath."isafop/conf/fop.xconf";
       								$fop_conf = "";
      -							    $final_command = FOP_COMMAND." $fop_conf -fo ".$foFullPath." -pdf ".$currentDirFullpath.TMPSUBDIRLOCALPATH.$token."/".PDFFILENAME;
      -
      +							    $final_command = '"'.realpath(FOP_COMMAND).'"'." $fop_conf -fo ".'"'.$foFullPath.'"'." -pdf ".'"'.$pdfFullPath.'"';
       							    exec($final_command);
       
       							    if (file_exists($pdfFullPath)){
      diff --git a/php/Proxies/Services/Proxies_Services_FileToHtml.php b/php/Proxies/Services/Proxies_Services_FileToHtml.php
      index 969a00bb..ba89addb 100644
      --- a/php/Proxies/Services/Proxies_Services_FileToHtml.php
      +++ b/php/Proxies/Services/Proxies_Services_FileToHtml.php
      @@ -45,6 +45,9 @@
        * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
        * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
        */
      + 
      +require_once('utils.php'); 
      + 
       class Proxies_Services_FileToHtml implements Proxies_Services_Interface
       {
       	private $_filePath;
      @@ -52,8 +55,6 @@ class Proxies_Services_FileToHtml implements Proxies_Services_Interface
       	private $_fileName;
           
           private $cleaningXsl = CLEAN_CONVERTED_HTML;
      -	private $xmlToHtmlXsl20 = AKN20_TO_XHTML;
      -	private $xmlToHtmlXsl30 = AKN30_TO_XHTML;
           private $cleaningXslDom;
       	private $xmlMime = "application/xml";
       	private $akn20Namespace = "http://www.akomantoso.org/2.0";
      @@ -74,6 +75,7 @@ public function __construct($params)
                       $this->cleaningXslDom = new DOMDocument();
                       $this->cleaningXslDom->load($this->cleaningXsl);
       		}
      +		$this->_transformFile = (isset($params['transformFile']) && $params['transformFile']) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
       	}
       	
       	/**
      @@ -89,7 +91,7 @@ public function getResults()
                   if ($fileType === $this->xmlMime) {
                   	$doc = new DOMDocument();
       				if ($doc->load($this->_filePath)) {
      -					$result = aknToHtml($doc, FALSE, FALSE, TRUE);
      +					$result = aknToHtml($doc, $this->_transformFile, FALSE, TRUE);
       					$output['markinglanguage'] = $result["markinglanguage"];
       					$resultXml = $result["xml"];
       					if ($resultXml) {
      @@ -112,8 +114,6 @@ public function getResults()
       				exec($cmd);
       				$htmlSource = file_get_contents($filePath);
       				$output['html'] = $this->cleanHtml($htmlSource);
      -				//$output['html'] = $this->htmlToAkn($htmlSource);
      -				//$output['html'] = aknToHtml($aknDoc);
       				if ($this->_fileSize && (strlen($output['html']) == 0)) {
       					$output['success'] = false;
       				} else {
      @@ -130,6 +130,13 @@ public function getResults()
       			$output['fileName'] = $this->_fileName;
       		}
       		
      +		if(array_key_exists('html', $output) && strlen($output['html'])) {
      +			$lang = detectLanguage($output['html'], 3);
      +			if($lang) {
      +				$output['language'] = $lang;
      +			}	
      +		}
      +		
       		return str_replace('\/','/',json_encode($output));
       	}
           
      @@ -151,22 +158,9 @@ private function cleanHtml($htmlSource){
               return $result;
           }
       	
      -	private function htmlToAkn($htmlSource) {
      -        $xslt = new DOMDocument();
      -		$xslt->load(HTML_TO_AKN3_0);
      -		$xml = new DOMDocument();
      -		$xml->loadXML($htmlSource);
      -		// create the processor 
      -		$xslProcessor = new XSLTProcessor();
      -		// add the stylesheet
      -		$xslProcessor->importStylesheet($xslt);
      -		// transform the input
      -		$result = $xslProcessor->transformToXML($xml);
      -        return $result;
      -    }
      -	
       	private function isTypeAllowed($mime) {
      -		$allowedTypes = array("text/html", "application/msword", "application/pdf", "application/vnd.oasis.opendocument.text", "text/plain");
      +		$allowedTypes = array("text/html", "application/msword", "application/pdf", "application/vnd.oasis.opendocument.text", "text/plain",
      +							   "application/rtf","text/rtf");
       		$docxExtension = ".docx";
       		$fileExtension = (false === $pos = strrpos($this->_fileName, '.')) ? '' : substr($this->_fileName, $pos);
       		
      diff --git a/php/Proxies/Services/Proxies_Services_FilterUrls.php b/php/Proxies/Services/Proxies_Services_FilterUrls.php
      index 1f9f204e..9adad33c 100644
      --- a/php/Proxies/Services/Proxies_Services_FilterUrls.php
      +++ b/php/Proxies/Services/Proxies_Services_FilterUrls.php
      @@ -69,7 +69,7 @@ public function __construct($params) {
       	 */
       	public function getResults() {
       		$output = Array();
      -		$rootDirPath = dirname(__FILE__)."/../../../";
      +		$rootDirPath = LIMEROOT;
       		foreach ($this -> _urls as &$value) {
       			$internalPath = realpath($rootDirPath.'/'.$value["url"]);
       			if ($internalPath) {
      diff --git a/php/Proxies/Services/Proxies_Services_GetFileContent.php b/php/Proxies/Services/Proxies_Services_GetFileContent.php
      index 45cd47a4..c04f95fb 100644
      --- a/php/Proxies/Services/Proxies_Services_GetFileContent.php
      +++ b/php/Proxies/Services/Proxies_Services_GetFileContent.php
      @@ -57,6 +57,7 @@ class Proxies_Services_GetFileContent implements Proxies_Services_Interface
       		 */
       		public function __construct($params) {
       			$this->_params = $params;
      +			$this->_transformFile = (isset($params['transformFile']) && $params['transformFile']) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
       		}
       		
       		/**
      @@ -74,7 +75,7 @@ public function getResults() {
       			if ($doc->loadXML($xmlResult)) {
       				// Checking if the document is marked
       				if($doc->documentElement->tagName == $this->markedRootName) {
      -					$xmlResult = aknToHtml($doc);
      +					$xmlResult = aknToHtml($doc, $this->_transformFile);
       				}
       			}
       			
      diff --git a/php/Proxies/Services/Proxies_Services_SaveFile.php b/php/Proxies/Services/Proxies_Services_SaveFile.php
      index 7a8483e9..4dec314c 100644
      --- a/php/Proxies/Services/Proxies_Services_SaveFile.php
      +++ b/php/Proxies/Services/Proxies_Services_SaveFile.php
      @@ -80,6 +80,11 @@ public function getResults() {
                       'metadata' => $this->_metadata,
                   );
       			
      +			// TODO: remove this, is temporary trick
      +			if(strpos($this->_params['file'], "/diff/") || strpos($this->_params['file'], "wawe_users_documents/firstDoc.xml")) {
      +				$this->_params['file'] = "";
      +			}
      +			
       			$credential = EXIST_ADMIN_USER .':'. EXIST_ADMIN_PASSWORD;
       			require_once(dirname(__FILE__) . './../../dbInterface/class.dbInterface.php');
       			$DBInterface = new DBInterface(EXIST_URL,$credential);
      diff --git a/php/Proxies/Services/Proxies_Services_XSLTTransform.php b/php/Proxies/Services/Proxies_Services_XSLTTransform.php
      index 98dab554..f9d8042b 100644
      --- a/php/Proxies/Services/Proxies_Services_XSLTTransform.php
      +++ b/php/Proxies/Services/Proxies_Services_XSLTTransform.php
      @@ -67,6 +67,8 @@ public function __construct($params)
       			
       			// save the document marking language
       			$this->_markingLanguage = $params['markingLanguage'];
      +			
      +			$this->_transformFile = (isset($params['transformFile'])) ? realpath(LIMEROOT."/".$params['transformFile']) : FALSE;
       		}
       		
       		/**
      @@ -81,44 +83,44 @@ public function getResults()
       			// create the processor 
       			$xslProcessor = new XSLTProcessor();
       			
      -			switch($this->_output)
      -			{
      -				case 'akn':
      -				// create the xml file
      -				$xml = new DOMDocument();
      -				$xml->loadXML('' . stripcslashes($this->_input));
      -				
      -				if ($this->_markingLanguage == 'akoma2.0') {
      -					$xslt->load(HTML_TO_AKN2_0);		
      -				} else {
      -					$xslt->load(HTML_TO_AKN3_0);
      -				}
      -				
      -				$xpath = new DOMXPath($xml);
      -				// The element which has an attribute 'language' which contains 'akoma' has the akn namespace  
      -				$elements = $xpath->evaluate("//*[@markinglanguage]");
      -				// Loocking for the namespace
      -				if (!is_null($elements) && $elements->length) {
      -					foreach( $xpath->query('namespace::*', $elements->item(0)) as $node ) {
      -						$name = ($node->nodeName == 'xmlns:akn') ? 'xmlns' : $node->nodeName;
      -						$xslt->documentElement->setAttributeNS('http://www.w3.org/2000/xmlns/',$name,$node->nodeValue);
      +			if($this->_transformFile) {
      +				switch($this->_output)
      +				{
      +					case 'akn':
      +					// create the xml file
      +					$xml = new DOMDocument();
      +					$xml->loadXML('' . stripcslashes($this->_input));
      +					
      +					$xslt->load($this->_transformFile);
      +					
      +					$xpath = new DOMXPath($xml);
      +					// The element which has an attribute 'language' which contains 'akoma' has the akn namespace  
      +					$elements = $xpath->evaluate("//*[@markinglanguage]");
      +					// Loocking for the namespace
      +					if (!is_null($elements) && $elements->length) {
      +						foreach( $xpath->query('namespace::*', $elements->item(0)) as $node ) {
      +							$name = ($node->nodeName == 'xmlns:akn') ? 'xmlns' : $node->nodeName;
      +							$xslt->documentElement->setAttributeNS('http://www.w3.org/2000/xmlns/',$name,$node->nodeValue);
      +						}
       					}
      +					break;
       				}
      -				break;
      -			}
      -	
      -			// add the stylesheet
      -			$xslProcessor->importStylesheet($xslt);
      -	
      -			// transform the input
      -			$xml = $xslProcessor->transformToDoc($xml);
      -			
      -			// Normalize attributes
      -			$xslt->load(ATTRIBUTES_NORMALIZER);
      -			$xslProcessor->importStylesheet($xslt);
      -			$result = $xslProcessor->transformToXML($xml);
       		
      -			// return the translated document
      -			return $result; 		
      +				// add the stylesheet
      +				$xslProcessor->importStylesheet($xslt);
      +		
      +				// transform the input
      +				$xml = $xslProcessor->transformToDoc($xml);
      +				
      +				// Normalize attributes
      +				$xslt->load(ATTRIBUTES_NORMALIZER);
      +				$xslProcessor->importStylesheet($xslt);
      +				$result = $xslProcessor->transformToXML($xml);
      +			
      +				// return the translated document
      +				return $result;
      +			} else {
      +				return "XSL transform file not found";	
      +			}		 		
       		}
       	}
      \ No newline at end of file
      diff --git a/build/production/LIME/php/Proxies/Services/Proxies_Services_AknValidation.php b/php/Proxies/Services/Proxies_Services_XmlValidation.php
      similarity index 92%
      rename from build/production/LIME/php/Proxies/Services/Proxies_Services_AknValidation.php
      rename to php/Proxies/Services/Proxies_Services_XmlValidation.php
      index 1a22d6b1..2f94de6d 100644
      --- a/build/production/LIME/php/Proxies/Services/Proxies_Services_AknValidation.php
      +++ b/php/Proxies/Services/Proxies_Services_XmlValidation.php
      @@ -44,7 +44,7 @@
        * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
        * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
        */
      -class Proxies_Services_AknValidation implements Proxies_Services_Interface {
      +class Proxies_Services_XmlValidation implements Proxies_Services_Interface {
       	// the XML source
       	private $_source;
       	private $_schema;
      @@ -67,13 +67,9 @@ public function __construct($params) {
       	public function getResults() {
       		libxml_use_internal_errors(true);
       		$result = Array();
      -		$rootDirPath = dirname(__FILE__) . "/../../../";
      -		$internalSchemaPath = ($this -> _schema) ? realpath($rootDirPath . '/' . $this -> _schema) : NULL;
      +		$internalSchemaPath = ($this -> _schema) ? realpath(LIMEROOT . '/' . $this -> _schema) : NULL;
       		// creates the URL of the curl with the address and the parameters
      -		/*
      -		 * Using the Free Akoma Ntoso Validator: http://legixinfo.wordpress.com/2013/08/22/free-akoma-ntoso-validator/
      -		 * */
      -		//$url = "http://legisproweb.com/validation/Validator.aspx";
      +
       		$dom = new DOMDocument();
       		/* Trick to get the right line numbers by validator
       		 * save the xml in pritty formatting and load it again in the dom
      @@ -98,8 +94,7 @@ public function getResults() {
       			$result["started"] = false;
       			$result["msg"] = "Cannot load xml source";
       		}
      -		/*$result["fatal_error"] = Array(Array("message"=> "ciao"));
      -		$result["warning"] = Array(Array("message"=> "ciao"));*/
      +
       		// return the results
       		return str_replace('\/', '/', json_encode($result));
       	}
      diff --git a/php/Services.php b/php/Services.php
      index 155ab463..8f756d03 100644
      --- a/php/Services.php
      +++ b/php/Services.php
      @@ -64,15 +64,15 @@
       	require('./Proxies/Services/Proxies_Services_AknToEpub.php');
       	require('./Proxies/Services/Proxies_Services_AknToXml.php');
       	require('./Proxies/Services/Proxies_Services_AknToHtml.php');
      -	require('./Proxies/Services/Proxies_Services_FileToString.php');
       	require('./Proxies/Services/Proxies_Services_FileToHtml.php');
       	require('./Proxies/Services/Proxies_Services_Upload.php');
       	require('./Proxies/Services/Proxies_Services_HtmlToPdf.php');
       	require('./Proxies/Services/Proxies_Services_CreateDocumentCollection.php');
      -	require('./Proxies/Services/Proxies_Services_AknValidation.php');
      +	require('./Proxies/Services/Proxies_Services_XmlValidation.php');
       	require('./Proxies/Services/Proxies_Services_ExportFiles.php');
       	require('./Proxies/Services/Proxies_Services_FilterUrls.php');
       	require('./Proxies/Proxies.php');
      +	require('./Proxies/Services/Proxies_Services_AknToPdfFop.php');
       	
       	// the method of the request
       	$type = $_SERVER['REQUEST_METHOD'];
      diff --git a/php/config.php b/php/config.php
      index 2794a41b..819c160f 100644
      --- a/php/config.php
      +++ b/php/config.php
      @@ -106,7 +106,7 @@
       	define('HTML_TO_AKN3_0', XSLT_BASE_DIR . 'HtmlToAkn3.0.xsl');
       	
       	// the xslt that translates akomantoso to pdf
      -	define('AKN_TO_PDF', XSLT_BASE_DIR . 'AknToPdf.xsl');
      +	define('AKN_TO_PDF', XSLT_BASE_DIR . 'AknToPdfGeneric.xsl');
       	
       	// the xslt that translates akomantoso2 to xhtml
       	define('AKN2_TO_HTML', XSLT_BASE_DIR . 'Akn20ToXhtml.xsl');
      @@ -117,8 +117,6 @@
       	// the xslt that translates akomantoso2 to a package for ebook
       	define('AKN30_TO_XHTML', XSLT_BASE_DIR . 'AknToXhtml30.xsl');
       	
      -	define('AKNToXHTMLDiff', XSLT_BASE_DIR . 'AKNToXHTMLDiff.xsl');
      -	
       	// the xslt that translates akomantoso3 to xhtml
       	define('AKN3_TO_HTML', XSLT_BASE_DIR . 'Akn30ToXhtml.xsl');
       	
      @@ -143,6 +141,9 @@
       	// relative path to temp directory
       	define('TMPSUBDIRLOCALPATH', '../../tmp/');
       	
      +	// path to root of LIME
      +	define('LIMEROOT', realpath(dirname(__FILE__)."/../"));
      +	
       	// web relative path to temp directory
       	define('TMPSUBDIRWEBPATH', 'tmp/');
       	
      @@ -150,7 +151,7 @@
       	define('SOURCEXMLFILENAME', 'source.xml');
       
       	// the name of fo xsl files
      -	define('XSLFOFILENAME', 'intermediate.fo');	
      +	define('XSLFOFILENAME', 'intermediate.xml');	
       	
       	// the name of pdf files
       	define('PDFFILENAME', 'final.pdf');
      diff --git a/php/lib/Text_LanguageDetect/Text/LanguageDetect.php b/php/lib/Text_LanguageDetect/Text/LanguageDetect.php
      new file mode 100644
      index 00000000..9ba9542d
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/Text/LanguageDetect.php
      @@ -0,0 +1,1708 @@
      +
      + * @copyright 2005-2006 Nicholas Pisarro
      + * @license   http://www.debian.org/misc/bsd.license BSD
      + * @version   SVN: $Id: LanguageDetect.php 322353 2012-01-16 08:41:43Z cweiske $
      + * @link      http://pear.php.net/package/Text_LanguageDetect/
      + * @link      http://langdetect.blogspot.com/
      + */
      +
      +require_once dirname(__FILE__).'/LanguageDetect/Exception.php';
      +require_once dirname(__FILE__).'/LanguageDetect/Parser.php';
      +require_once dirname(__FILE__).'/LanguageDetect/ISO639.php';
      +
      +/**
      + * Language detection class
      + *
      + * Requires the langauge model database (lang.dat) that should have
      + * accompanied this class definition in order to be instantiated.
      + *
      + * Example usage:
      + *
      + * 
      + * require_once 'Text/LanguageDetect.php';
      + *
      + * $l = new Text_LanguageDetect;
      + *
      + * $stdin = fopen('php://stdin', 'r');
      + *
      + * echo "Supported languages:\n";
      + *
      + * try {
      + *     $langs = $l->getLanguages();
      + * } catch (Text_LanguageDetect_Exception $e) {
      + *     die($e->getMessage());
      + * }
      + *
      + * sort($langs);
      + * echo join(', ', $langs);
      + *
      + * while ($line = fgets($stdin)) {
      + *     print_r($l->detect($line, 4));
      + * }
      + * 
      + *
      + * @category  Text
      + * @package   Text_LanguageDetect
      + * @author    Nicholas Pisarro 
      + * @copyright 2005 Nicholas Pisarro
      + * @license   http://www.debian.org/misc/bsd.license BSD
      + * @version   Release: @package_version@
      + * @link      http://pear.php.net/package/Text_LanguageDetect/
      + * @todo      allow users to generate their own language models
      + */
      +class Text_LanguageDetect
      +{
      +    /**
      +     * The filename that stores the trigram data for the detector
      +     *
      +     * If this value starts with a slash (/) or a dot (.) the value of
      +     * $this->_data_dir will be ignored
      +     *
      +     * @var      string
      +     * @access   private
      +     */
      +    var $_db_filename = 'lang.dat';
      +
      +    /**
      +     * The filename that stores the unicode block definitions
      +     *
      +     * If this value starts with a slash (/) or a dot (.) the value of
      +     * $this->_data_dir will be ignored
      +     *
      +     * @var string
      +     * @access private
      +     */
      +    var $_unicode_db_filename = 'unicode_blocks.dat';
      +
      +    /**
      +     * The data directory
      +     *
      +     * Should be set by PEAR installer
      +     *
      +     * @var      string
      +     * @access   private
      +     */
      +    var $_data_dir = '@data_dir@';
      +
      +    /**
      +     * The trigram data for comparison
      +     *
      +     * Will be loaded on start from $this->_db_filename
      +     *
      +     * @var      array
      +     * @access   private
      +     */
      +    var $_lang_db = array();
      +
      +    /**
      +     * stores the map of the trigram data to unicode characters
      +     *
      +     * @access private
      +     * @var array
      +     */
      +    var $_unicode_map;
      +
      +    /**
      +     * The size of the trigram data arrays
      +     *
      +     * @var      int
      +     * @access   private
      +     */
      +    var $_threshold = 300;
      +
      +    /**
      +     * the maximum possible score.
      +     *
      +     * needed for score normalization. Different depending on the
      +     * perl compatibility setting
      +     *
      +     * @access  private
      +     * @var     int
      +     * @see     setPerlCompatible()
      +     */
      +    var $_max_score = 0;
      +
      +    /**
      +     * Whether or not to simulate perl's Language::Guess exactly
      +     *
      +     * @access  private
      +     * @var     bool
      +     * @see     setPerlCompatible()
      +     */
      +    var $_perl_compatible = false;
      +
      +    /**
      +     * Whether to use the unicode block detection to speed up processing
      +     *
      +     * @access private
      +     * @var bool
      +     */
      +    var $_use_unicode_narrowing = true;
      +
      +    /**
      +     * stores the result of the clustering operation
      +     *
      +     * @access  private
      +     * @var     array
      +     * @see     clusterLanguages()
      +     */
      +    var $_clusters;
      +
      +    /**
      +     * Which type of "language names" are accepted and returned:
      +     *
      +     * 0 - language name ("english")
      +     * 2 - 2-letter ISO 639-1 code ("en")
      +     * 3 - 3-letter ISO 639-2 code ("eng")
      +     */
      +    var $_name_mode = 0;
      +
      +    /**
      +     * Constructor
      +     *
      +     * Will attempt to load the language database. If it fails, you will get
      +     * an exception.
      +     */
      +    function __construct()
      +    {
      +        $data = $this->_readdb($this->_db_filename);
      +        $this->_checkTrigram($data['trigram']);
      +        $this->_lang_db = $data['trigram'];
      +
      +        if (isset($data['trigram-unicodemap'])) {
      +            $this->_unicode_map = $data['trigram-unicodemap'];
      +        }
      +
      +        // Not yet implemented:
      +        if (isset($data['trigram-clusters'])) {
      +            $this->_clusters = $data['trigram-clusters'];
      +        }
      +    }
      +
      +    /**
      +     * Returns the path to the location of the database
      +     *
      +     * @param string $fname File name to load
      +     *
      +     * @return string expected path to the language model database
      +     * @access private
      +     */
      +    function _get_data_loc($fname)
      +    {
      +        if ($fname{0} == '/' || $fname{0} == '.') {
      +            // if filename starts with a slash, assume it's an absolute pathname
      +            // and skip whatever is in $this->_data_dir
      +            return $fname;
      +
      +        } elseif ($this->_data_dir != '@' . 'data_dir' . '@') {
      +            // if the data dir was set by the PEAR installer, use that
      +            return $this->_data_dir . '/Text_LanguageDetect/' . $fname;
      +
      +        } else {
      +            // assume this was just unpacked somewhere
      +            // try the local working directory if otherwise
      +            return __DIR__ . '/../data/' . $fname;
      +        }
      +    }
      +
      +    /**
      +     * Loads the language trigram database from filename
      +     *
      +     * Trigram datbase should be a serialize()'d array
      +     *
      +     * @param string $fname the filename where the data is stored
      +     *
      +     * @return array the language model data
      +     * @throws Text_LanguageDetect_Exception
      +     * @access private
      +     */
      +    function _readdb($fname)
      +    {
      +        // finds the correct data dir
      +        $fname = $this->_get_data_loc($fname);
      +
      +        // input check
      +        if (!file_exists($fname)) {
      +            throw new Text_LanguageDetect_Exception(
      +                'Language database does not exist: ' . $fname,
      +                Text_LanguageDetect_Exception::DB_NOT_FOUND
      +            );
      +        } elseif (!is_readable($fname)) {
      +            throw new Text_LanguageDetect_Exception(
      +                'Language database is not readable: ' . $fname,
      +                Text_LanguageDetect_Exception::DB_NOT_READABLE
      +            );
      +        }
      +
      +        return unserialize(file_get_contents($fname));
      +    }
      +
      +
      +    /**
      +     * Checks if this object is ready to detect languages
      +     *
      +     * @param array $trigram Trigram data from database
      +     *
      +     * @return void
      +     * @access private
      +     */
      +    function _checkTrigram($trigram)
      +    {
      +        if (!is_array($trigram)) {
      +            if (ini_get('magic_quotes_runtime')) {
      +                throw new Text_LanguageDetect_Exception(
      +                    'Error loading database. Try turning magic_quotes_runtime off.',
      +                    Text_LanguageDetect_Exception::MAGIC_QUOTES
      +                );
      +            }
      +            throw new Text_LanguageDetect_Exception(
      +                'Language database is not an array.',
      +                Text_LanguageDetect_Exception::DB_NOT_ARRAY
      +            );
      +        } elseif (empty($trigram)) {
      +            throw new Text_LanguageDetect_Exception(
      +                'Language database has no elements.',
      +                Text_LanguageDetect_Exception::DB_EMPTY
      +            );
      +        }
      +    }
      +
      +    /**
      +     * Omits languages
      +     *
      +     * Pass this function the name of or an array of names of
      +     * languages that you don't want considered
      +     *
      +     * If you're only expecting a limited set of languages, this can greatly
      +     * speed up processing
      +     *
      +     * @param mixed $omit_list    language name or array of names to omit
      +     * @param bool  $include_only if true will include (rather than
      +     *                            exclude) only those in the list
      +     *
      +     * @return int number of languages successfully deleted
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function omitLanguages($omit_list, $include_only = false)
      +    {
      +        $deleted = 0;
      +
      +        $omit_list = $this->_convertFromNameMode($omit_list);
      +
      +        if (!$include_only) {
      +            // deleting the given languages
      +            if (!is_array($omit_list)) {
      +                $omit_list = strtolower($omit_list); // case desensitize
      +                if (isset($this->_lang_db[$omit_list])) {
      +                    unset($this->_lang_db[$omit_list]);
      +                    $deleted++;
      +                }
      +            } else {
      +                foreach ($omit_list as $omit_lang) {
      +                    if (isset($this->_lang_db[$omit_lang])) {
      +                        unset($this->_lang_db[$omit_lang]);
      +                        $deleted++;
      +                    }
      +                }
      +            }
      +
      +        } else {
      +            // deleting all except the given languages
      +            if (!is_array($omit_list)) {
      +                $omit_list = array($omit_list);
      +            }
      +
      +            // case desensitize
      +            foreach ($omit_list as $key => $omit_lang) {
      +                $omit_list[$key] = strtolower($omit_lang);
      +            }
      +
      +            foreach (array_keys($this->_lang_db) as $lang) {
      +                if (!in_array($lang, $omit_list)) {
      +                    unset($this->_lang_db[$lang]);
      +                    $deleted++;
      +                }
      +            }
      +        }
      +
      +        // reset the cluster cache if the number of languages changes
      +        // this will then have to be recalculated
      +        if (isset($this->_clusters) && $deleted > 0) {
      +            $this->_clusters = null;
      +        }
      +
      +        return $deleted;
      +    }
      +
      +
      +    /**
      +     * Returns the number of languages that this object can detect
      +     *
      +     * @access public
      +     * @return int            the number of languages
      +     * @throws   Text_LanguageDetect_Exception
      +     */
      +    function getLanguageCount()
      +    {
      +        return count($this->_lang_db);
      +    }
      +
      +    /**
      +     * Checks if the language with the given name exists in the database
      +     *
      +     * @param mixed $lang Language name or array of language names
      +     *
      +     * @return bool true if language model exists
      +     */
      +    public function languageExists($lang)
      +    {
      +        $lang = $this->_convertFromNameMode($lang);
      +
      +        if (is_string($lang)) {
      +            return isset($this->_lang_db[strtolower($lang)]);
      +
      +        } elseif (is_array($lang)) {
      +            foreach ($lang as $test_lang) {
      +                if (!isset($this->_lang_db[strtolower($test_lang)])) {
      +                    return false;
      +                }
      +            }
      +            return true;
      +
      +        } else {
      +            throw new Text_LanguageDetect_Exception(
      +                'Unsupported parameter type passed to languageExists()',
      +                Text_LanguageDetect_Exception::PARAM_TYPE
      +            );
      +        }
      +    }
      +
      +    /**
      +     * Returns the list of detectable languages
      +     *
      +     * @access public
      +     * @return array        the names of the languages known to this object<<<<<<<
      +     * @throws   Text_LanguageDetect_Exception
      +     */
      +    function getLanguages()
      +    {
      +        return $this->_convertToNameMode(
      +            array_keys($this->_lang_db)
      +        );
      +    }
      +
      +    /**
      +     * Make this object behave like Language::Guess
      +     *
      +     * @param bool $setting false to turn off perl compatibility
      +     *
      +     * @return void
      +     */
      +    public function setPerlCompatible($setting = true)
      +    {
      +        if (is_bool($setting)) { // input check
      +            $this->_perl_compatible = $setting;
      +
      +            if ($setting == true) {
      +                $this->_max_score = $this->_threshold;
      +            } else {
      +                $this->_max_score = 0;
      +            }
      +        }
      +
      +    }
      +
      +    /**
      +     * Sets the way how language names are accepted and returned.
      +     *
      +     * @param integer $name_mode One of the following modes:
      +     *                           0 - language name ("english")
      +     *                           2 - 2-letter ISO 639-1 code ("en")
      +     *                           3 - 3-letter ISO 639-2 code ("eng")
      +     *
      +     * @return void
      +     */
      +    function setNameMode($name_mode)
      +    {
      +        $this->_name_mode = $name_mode;
      +    }
      +
      +    /**
      +     * Whether to use unicode block ranges in detection
      +     *
      +     * Should speed up most detections if turned on (detault is on). In some
      +     * circumstances it may be slower, such as for large text samples (> 10K)
      +     * in languages that use latin scripts. In other cases it should speed up
      +     * detection noticeably.
      +     *
      +     * @param bool $setting false to turn off
      +     *
      +     * @return void
      +     */
      +    public function useUnicodeBlocks($setting = true)
      +    {
      +        if (is_bool($setting)) {
      +            $this->_use_unicode_narrowing = $setting;
      +        }
      +    }
      +
      +    /**
      +     * Converts a piece of text into trigrams
      +     *
      +     * @param string $text text to convert
      +     *
      +     * @return     array array of trigram frequencies
      +     * @access     private
      +     * @deprecated Superceded by the Text_LanguageDetect_Parser class
      +     */
      +    function _trigram($text)
      +    {
      +        $s = new Text_LanguageDetect_Parser($text);
      +        $s->prepareTrigram();
      +        $s->prepareUnicode(false);
      +        $s->setPadStart(!$this->_perl_compatible);
      +        $s->analyze();
      +        return $s->getTrigramFreqs();
      +    }
      +
      +    /**
      +     * Converts a set of trigrams from frequencies to ranks
      +     *
      +     * Thresholds (cuts off) the list at $this->_threshold
      +     *
      +     * @param array $arr array of trigram
      +     *
      +     * @return array ranks of trigrams
      +     * @access protected
      +     */
      +    function _arr_rank($arr)
      +    {
      +
      +        // sorts alphabetically first as a standard way of breaking rank ties
      +        $this->_bub_sort($arr);
      +
      +        // below might also work, but seemed to introduce errors in testing
      +        //ksort($arr);
      +        //asort($arr);
      +
      +        $rank = array();
      +
      +        $i = 0;
      +        foreach ($arr as $key => $value) {
      +            $rank[$key] = $i++;
      +
      +            // cut off at a standard threshold
      +            if ($i >= $this->_threshold) {
      +                break;
      +            }
      +        }
      +
      +        return $rank;
      +    }
      +
      +    /**
      +     * Sorts an array by value breaking ties alphabetically
      +     *
      +     * @param array &$arr the array to sort
      +     *
      +     * @return void
      +     * @access private
      +     */
      +    function _bub_sort(&$arr)
      +    {
      +        // should do the same as this perl statement:
      +        // sort { $trigrams{$b} == $trigrams{$a}
      +        //   ?  $a cmp $b : $trigrams{$b} <=> $trigrams{$a} }
      +
      +        // needs to sort by both key and value at once
      +        // using the key to break ties for the value
      +
      +        // converts array into an array of arrays of each key and value
      +        // may be a better way of doing this
      +        $combined = array();
      +
      +        foreach ($arr as $key => $value) {
      +            $combined[] = array($key, $value);
      +        }
      +
      +        usort($combined, array($this, '_sort_func'));
      +
      +        $replacement = array();
      +        foreach ($combined as $key => $value) {
      +            list($new_key, $new_value) = $value;
      +            $replacement[$new_key] = $new_value;
      +        }
      +
      +        $arr = $replacement;
      +    }
      +
      +    /**
      +     * Sort function used by bubble sort
      +     *
      +     * Callback function for usort().
      +     *
      +     * @param array $a first param passed by usort()
      +     * @param array $b second param passed by usort()
      +     *
      +     * @return int 1 if $a is greater, -1 if not
      +     * @see    _bub_sort()
      +     * @access private
      +     */
      +    function _sort_func($a, $b)
      +    {
      +        // each is actually a key/value pair, so that it can compare using both
      +        list($a_key, $a_value) = $a;
      +        list($b_key, $b_value) = $b;
      +
      +        if ($a_value == $b_value) {
      +            // if the values are the same, break ties using the key
      +            return strcmp($a_key, $b_key);
      +
      +        } else {
      +            // if not, just sort normally
      +            if ($a_value > $b_value) {
      +                return -1;
      +            } else {
      +                return 1;
      +            }
      +        }
      +
      +        // 0 should not be possible because keys must be unique
      +    }
      +
      +    /**
      +     * Calculates a linear rank-order distance statistic between two sets of
      +     * ranked trigrams
      +     *
      +     * Sums the differences in rank for each trigram. If the trigram does not
      +     * appear in both, consider it a difference of $this->_threshold.
      +     *
      +     * This distance measure was proposed by Cavnar & Trenkle (1994). Despite
      +     * its simplicity it has been shown to be highly accurate for language
      +     * identification tasks.
      +     *
      +     * @param array $arr1 the reference set of trigram ranks
      +     * @param array $arr2 the target set of trigram ranks
      +     *
      +     * @return int the sum of the differences between the ranks of
      +     *             the two trigram sets
      +     * @access private
      +     */
      +    function _distance($arr1, $arr2)
      +    {
      +        $sumdist = 0;
      +
      +        foreach ($arr2 as $key => $value) {
      +            if (isset($arr1[$key])) {
      +                $distance = abs($value - $arr1[$key]);
      +            } else {
      +                // $this->_threshold sets the maximum possible distance value
      +                // for any one pair of trigrams
      +                $distance = $this->_threshold;
      +            }
      +            $sumdist += $distance;
      +        }
      +
      +        return $sumdist;
      +
      +        // todo: there are other distance statistics to try, e.g. relative
      +        //       entropy, but they're probably more costly to compute
      +    }
      +
      +    /**
      +     * Normalizes the score returned by _distance()
      +     *
      +     * Different if perl compatible or not
      +     *
      +     * @param int $score      the score from _distance()
      +     * @param int $base_count the number of trigrams being considered
      +     *
      +     * @return float the normalized score
      +     * @see    _distance()
      +     * @access private
      +     */
      +    function _normalize_score($score, $base_count = null)
      +    {
      +        if ($base_count === null) {
      +            $base_count = $this->_threshold;
      +        }
      +
      +        if (!$this->_perl_compatible) {
      +            return 1 - ($score / $base_count / $this->_threshold);
      +        } else {
      +            return floor($score / $base_count);
      +        }
      +    }
      +
      +
      +    /**
      +     * Detects the closeness of a sample of text to the known languages
      +     *
      +     * Calculates the statistical difference between the text and
      +     * the trigrams for each language, normalizes the score then
      +     * returns results for all languages in sorted order
      +     *
      +     * If perl compatible, the score is 300-0, 0 being most similar.
      +     * Otherwise, it's 0-1 with 1 being most similar.
      +     *
      +     * The $sample text should be at least a few sentences in length;
      +     * should be ascii-7 or utf8 encoded, if another and the mbstring extension
      +     * is present it will try to detect and convert. However, experience has
      +     * shown that mb_detect_encoding() *does not work very well* with at least
      +     * some types of encoding.
      +     *
      +     * @param string $sample a sample of text to compare.
      +     * @param int    $limit  if specified, return an array of the most likely
      +     *                       $limit languages and their scores.
      +     *
      +     * @return mixed sorted array of language scores, blank array if no
      +     *               useable text was found
      +     * @see    _distance()
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function detect($sample, $limit = 0)
      +    {
      +        // input check
      +        if (!Text_LanguageDetect_Parser::validateString($sample)) {
      +            return array();
      +        }
      +
      +        // check char encoding
      +        // (only if mbstring extension is compiled and PHP > 4.0.6)
      +        if (function_exists('mb_detect_encoding')
      +            && function_exists('mb_convert_encoding')
      +        ) {
      +            // mb_detect_encoding isn't very reliable, to say the least
      +            // detection should still work with a sufficient sample
      +            //  of ascii characters
      +            $encoding = mb_detect_encoding($sample);
      +
      +            // mb_detect_encoding() will return FALSE if detection fails
      +            // don't attempt conversion if that's the case
      +            if ($encoding != 'ASCII' && $encoding != 'UTF-8'
      +                && $encoding !== false
      +            ) {
      +                // verify the encoding exists in mb_list_encodings
      +                if (in_array($encoding, mb_list_encodings())) {
      +                    $sample = mb_convert_encoding($sample, 'UTF-8', $encoding);
      +                }
      +            }
      +        }
      +
      +        $sample_obj = new Text_LanguageDetect_Parser($sample);
      +        $sample_obj->prepareTrigram();
      +        if ($this->_use_unicode_narrowing) {
      +            $sample_obj->prepareUnicode();
      +        }
      +        $sample_obj->setPadStart(!$this->_perl_compatible);
      +        $sample_obj->analyze();
      +
      +        $trigram_freqs =& $sample_obj->getTrigramRanks();
      +        $trigram_count = count($trigram_freqs);
      +
      +        if ($trigram_count == 0) {
      +            return array();
      +        }
      +
      +        $scores = array();
      +
      +        // use unicode block detection to narrow down the possibilities
      +        if ($this->_use_unicode_narrowing) {
      +            $blocks =& $sample_obj->getUnicodeBlocks();
      +
      +            if (is_array($blocks)) {
      +                $present_blocks = array_keys($blocks);
      +            } else {
      +                throw new Text_LanguageDetect_Exception(
      +                    'Error during block detection',
      +                    Text_LanguageDetect_Exception::BLOCK_DETECTION
      +                );
      +            }
      +
      +            $possible_langs = array();
      +
      +            foreach ($present_blocks as $blockname) {
      +                if (isset($this->_unicode_map[$blockname])) {
      +
      +                    $possible_langs = array_merge(
      +                        $possible_langs,
      +                        array_keys($this->_unicode_map[$blockname])
      +                    );
      +
      +                    // todo: faster way to do this?
      +                }
      +            }
      +
      +            // could also try an intersect operation rather than a union
      +            // in other words, choose languages whose trigrams contain
      +            // ALL of the unicode blocks found in this sample
      +            // would improve speed but would be completely thrown off by an
      +            // unexpected character, like an umlaut appearing in english text
      +
      +            $possible_langs = array_intersect(
      +                array_keys($this->_lang_db),
      +                array_unique($possible_langs)
      +            );
      +
      +            // needs to intersect it with the keys of _lang_db in case
      +            // languages have been omitted
      +
      +        } else {
      +            // or just try 'em all
      +            $possible_langs = array_keys($this->_lang_db);
      +        }
      +
      +
      +        foreach ($possible_langs as $lang) {
      +            $scores[$lang] = $this->_normalize_score(
      +                $this->_distance($this->_lang_db[$lang], $trigram_freqs),
      +                $trigram_count
      +            );
      +        }
      +
      +        unset($sample_obj);
      +
      +        if ($this->_perl_compatible) {
      +            asort($scores);
      +        } else {
      +            arsort($scores);
      +        }
      +
      +        // todo: drop languages with a score of $this->_max_score?
      +
      +        // limit the number of returned scores
      +        if ($limit && is_numeric($limit)) {
      +            $limited_scores = array();
      +
      +            $i = 0;
      +            foreach ($scores as $key => $value) {
      +                if ($i++ >= $limit) {
      +                    break;
      +                }
      +
      +                $limited_scores[$key] = $value;
      +            }
      +
      +            return $this->_convertToNameMode($limited_scores, true);
      +        } else {
      +            return $this->_convertToNameMode($scores, true);
      +        }
      +    }
      +
      +    /**
      +     * Returns only the most similar language to the text sample
      +     *
      +     * Calls $this->detect() and returns only the top result
      +     *
      +     * @param string $sample text to detect the language of
      +     *
      +     * @return string the name of the most likely language
      +     *                or null if no language is similar
      +     * @see    detect()
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function detectSimple($sample)
      +    {
      +        $scores = $this->detect($sample, 1);
      +
      +        // if top language has the maximum possible score,
      +        // then the top score will have been picked at random
      +        if (!is_array($scores) || empty($scores)
      +            || current($scores) == $this->_max_score
      +        ) {
      +            return null;
      +        } else {
      +            return key($scores);
      +        }
      +    }
      +
      +    /**
      +     * Returns an array containing the most similar language and a confidence
      +     * rating
      +     *
      +     * Confidence is a simple measure calculated from the similarity score
      +     * minus the similarity score from the next most similar language
      +     * divided by the highest possible score. Languages that have closely
      +     * related cousins (e.g. Norwegian and Danish) should generally have lower
      +     * confidence scores.
      +     *
      +     * The similarity score answers the question "How likely is the text the
      +     * returned language regardless of the other languages considered?" The
      +     * confidence score is one way of answering the question "how likely is the
      +     * text the detected language relative to the rest of the language model
      +     * set?"
      +     *
      +     * To see how similar languages are a priori, see languageSimilarity()
      +     *
      +     * @param string $sample text for which language will be detected
      +     *
      +     * @return array most similar language, score and confidence rating
      +     *               or null if no language is similar
      +     * @see    detect()
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function detectConfidence($sample)
      +    {
      +        $scores = $this->detect($sample, 2);
      +
      +        // if most similar language has the max score, it
      +        // will have been picked at random
      +        if (!is_array($scores) || empty($scores)
      +            || current($scores) == $this->_max_score
      +        ) {
      +            return null;
      +        }
      +
      +        $arr['language'] = key($scores);
      +        $arr['similarity'] = current($scores);
      +        if (next($scores) !== false) { // if false then no next element
      +            // the goal is to return a higher value if the distance between
      +            // the similarity of the first score and the second score is high
      +
      +            if ($this->_perl_compatible) {
      +                $arr['confidence'] = (current($scores) - $arr['similarity'])
      +                    / $this->_max_score;
      +
      +            } else {
      +                $arr['confidence'] = $arr['similarity'] - current($scores);
      +
      +            }
      +
      +        } else {
      +            $arr['confidence'] = null;
      +        }
      +
      +        return $arr;
      +    }
      +
      +    /**
      +     * Returns the distribution of unicode blocks in a given utf8 string
      +     *
      +     * For the block name of a single char, use unicodeBlockName()
      +     *
      +     * @param string $str          input string. Must be ascii or utf8
      +     * @param bool   $skip_symbols if true, skip ascii digits, symbols and
      +     *                             non-printing characters. Includes spaces,
      +     *                             newlines and common punctutation characters.
      +     *
      +     * @return array
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function detectUnicodeBlocks($str, $skip_symbols)
      +    {
      +        $skip_symbols = (bool)$skip_symbols;
      +        $str          = (string)$str;
      +
      +        $sample_obj = new Text_LanguageDetect_Parser($str);
      +        $sample_obj->prepareUnicode();
      +        $sample_obj->prepareTrigram(false);
      +        $sample_obj->setUnicodeSkipSymbols($skip_symbols);
      +        $sample_obj->analyze();
      +        $blocks = $sample_obj->getUnicodeBlocks();
      +        unset($sample_obj);
      +        return $blocks;
      +    }
      +
      +    /**
      +     * Returns the block name for a given unicode value
      +     *
      +     * If passed a string, will assume it is being passed a UTF8-formatted
      +     * character and will automatically convert. Otherwise it will assume it
      +     * is being passed a numeric unicode value.
      +     *
      +     * Make sure input is of the correct type!
      +     *
      +     * @param mixed $unicode unicode value or utf8 char
      +     *
      +     * @return mixed the block name string or false if not found
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function unicodeBlockName($unicode)
      +    {
      +        if (is_string($unicode)) {
      +            // assume it is being passed a utf8 char, so convert it
      +            if (self::utf8strlen($unicode) > 1) {
      +                throw new Text_LanguageDetect_Exception(
      +                    'Pass a single char only to this method',
      +                    Text_LanguageDetect_Exception::PARAM_TYPE
      +                );
      +            }
      +            $unicode = $this->_utf8char2unicode($unicode);
      +
      +        } elseif (!is_int($unicode)) {
      +            throw new Text_LanguageDetect_Exception(
      +                'Input must be of type string or int.',
      +                Text_LanguageDetect_Exception::PARAM_TYPE
      +            );
      +        }
      +
      +        $blocks = $this->_read_unicode_block_db();
      +
      +        $result = $this->_unicode_block_name($unicode, $blocks);
      +
      +        if ($result == -1) {
      +            return false;
      +        } else {
      +            return $result[2];
      +        }
      +    }
      +
      +    /**
      +     * Searches the unicode block database
      +     *
      +     * Returns the block name for a given unicode value. unicodeBlockName() is
      +     * the public interface for this function, which does input checks which
      +     * this function omits for speed.
      +     *
      +     * @param int   $unicode     the unicode value
      +     * @param array $blocks      the block database
      +     * @param int   $block_count the number of defined blocks in the database
      +     *
      +     * @return mixed Block name, -1 if it failed
      +     * @see    unicodeBlockName()
      +     * @access protected
      +     */
      +    function _unicode_block_name($unicode, $blocks, $block_count = -1)
      +    {
      +        // for a reference, see
      +        // http://www.unicode.org/Public/UNIDATA/Blocks.txt
      +
      +        // assume that ascii characters are the most common
      +        // so try it first for efficiency
      +        if ($unicode <= $blocks[0][1]) {
      +            return $blocks[0];
      +        }
      +
      +        // the optional $block_count param is for efficiency
      +        // so we this function doesn't have to run count() every time
      +        if ($block_count != -1) {
      +            $high = $block_count - 1;
      +        } else {
      +            $high = count($blocks) - 1;
      +        }
      +
      +        $low = 1; // start with 1 because ascii was 0
      +
      +        // your average binary search algorithm
      +        while ($low <= $high) {
      +            $mid = floor(($low + $high) / 2);
      +
      +            if ($unicode < $blocks[$mid][0]) {
      +                // if it's lower than the lower bound
      +                $high = $mid - 1;
      +
      +            } elseif ($unicode > $blocks[$mid][1]) {
      +                // if it's higher than the upper bound
      +                $low = $mid + 1;
      +
      +            } else {
      +                // found it
      +                return $blocks[$mid];
      +            }
      +        }
      +
      +        // failed to find the block
      +        return -1;
      +
      +        // todo: differentiate when it's out of range or when it falls
      +        //       into an unassigned range?
      +    }
      +
      +    /**
      +     * Brings up the unicode block database
      +     *
      +     * @return array the database of unicode block definitions
      +     * @throws Text_LanguageDetect_Exception
      +     * @access protected
      +     */
      +    function _read_unicode_block_db()
      +    {
      +        // since the unicode definitions are always going to be the same,
      +        // might as well share the memory for the db with all other instances
      +        // of this class
      +        static $data;
      +
      +        if (!isset($data)) {
      +            $data = $this->_readdb($this->_unicode_db_filename);
      +        }
      +
      +        return $data;
      +    }
      +
      +    /**
      +     * Calculate the similarities between the language models
      +     *
      +     * Use this function to see how similar languages are to each other.
      +     *
      +     * If passed 2 language names, will return just those languages compared.
      +     * If passed 1 language name, will return that language compared to
      +     * all others.
      +     * If passed none, will return an array of every language model compared
      +     * to every other one.
      +     *
      +     * @param string $lang1 the name of the first language to be compared
      +     * @param string $lang2 the name of the second language to be compared
      +     *
      +     * @return array scores of every language compared
      +     *               or the score of just the provided languages
      +     *               or null if one of the supplied languages does not exist
      +     * @throws Text_LanguageDetect_Exception
      +     */
      +    public function languageSimilarity($lang1 = null, $lang2 = null)
      +    {
      +        $lang1 = $this->_convertFromNameMode($lang1);
      +        $lang2 = $this->_convertFromNameMode($lang2);
      +        if ($lang1 != null) {
      +            $lang1 = strtolower($lang1);
      +
      +            // check if language model exists
      +            if (!isset($this->_lang_db[$lang1])) {
      +                return null;
      +            }
      +
      +            if ($lang2 != null) {
      +                if (!isset($this->_lang_db[$lang2])) {
      +                    // check if language model exists
      +                    return null;
      +                }
      +
      +                $lang2 = strtolower($lang2);
      +
      +                // compare just these two languages
      +                return $this->_normalize_score(
      +                    $this->_distance(
      +                        $this->_lang_db[$lang1],
      +                        $this->_lang_db[$lang2]
      +                    )
      +                );
      +
      +            } else {
      +                // compare just $lang1 to all languages
      +                $return_arr = array();
      +                foreach ($this->_lang_db as $key => $value) {
      +                    if ($key != $lang1) {
      +                        // don't compare a language to itself
      +                        $return_arr[$key] = $this->_normalize_score(
      +                            $this->_distance($this->_lang_db[$lang1], $value)
      +                        );
      +                    }
      +                }
      +                asort($return_arr);
      +
      +                return $return_arr;
      +            }
      +
      +
      +        } else {
      +            // compare all languages to each other
      +            $return_arr = array();
      +            foreach (array_keys($this->_lang_db) as $lang1) {
      +                foreach (array_keys($this->_lang_db) as $lang2) {
      +                    // skip comparing languages to themselves
      +                    if ($lang1 != $lang2) {
      +
      +                        if (isset($return_arr[$lang2][$lang1])) {
      +                            // don't re-calculate what's already been done
      +                            $return_arr[$lang1][$lang2]
      +                                = $return_arr[$lang2][$lang1];
      +
      +                        } else {
      +                            // calculate
      +                            $return_arr[$lang1][$lang2]
      +                                = $this->_normalize_score(
      +                                    $this->_distance(
      +                                        $this->_lang_db[$lang1],
      +                                        $this->_lang_db[$lang2]
      +                                    )
      +                                );
      +
      +                        }
      +                    }
      +                }
      +            }
      +            return $return_arr;
      +        }
      +    }
      +
      +    /**
      +     * Cluster known languages according to languageSimilarity()
      +     *
      +     * WARNING: this method is EXPERIMENTAL. It is not recommended for common
      +     * use, and it may disappear or its functionality may change in future
      +     * releases without notice.
      +     *
      +     * Uses a nearest neighbor technique to generate the maximum possible
      +     * number of dendograms from the similarity data.
      +     *
      +     * @access      public
      +     * @return      array language cluster data
      +     * @throws      Text_LanguageDetect_Exception
      +     * @see         languageSimilarity()
      +     * @deprecated  this function will eventually be removed and placed into
      +     *              the model generation class
      +     */
      +    function clusterLanguages()
      +    {
      +        // todo: set the maximum number of clusters
      +        // return cached result, if any
      +        if (isset($this->_clusters)) {
      +            return $this->_clusters;
      +        }
      +
      +        $langs = array_keys($this->_lang_db);
      +
      +        $arr = $this->languageSimilarity();
      +
      +        sort($langs);
      +
      +        foreach ($langs as $lang) {
      +            if (!isset($this->_lang_db[$lang])) {
      +                throw new Text_LanguageDetect_Exception(
      +                    "missing $lang!",
      +                    Text_LanguageDetect_Exception::UNKNOWN_LANGUAGE
      +                );
      +            }
      +        }
      +
      +        // http://www.psychstat.missouristate.edu/multibook/mlt04m.html
      +        foreach ($langs as $old_key => $lang1) {
      +            $langs[$lang1] = $lang1;
      +            unset($langs[$old_key]);
      +        }
      +
      +        $result_data = $really_map = array();
      +
      +        $i = 0;
      +        while (count($langs) > 2 && $i++ < 200) {
      +            $highest_score = -1;
      +            $highest_key1 = '';
      +            $highest_key2 = '';
      +            foreach ($langs as $lang1) {
      +                foreach ($langs as $lang2) {
      +                    if ($lang1 != $lang2
      +                        && $arr[$lang1][$lang2] > $highest_score
      +                    ) {
      +                        $highest_score = $arr[$lang1][$lang2];
      +                        $highest_key1 = $lang1;
      +                        $highest_key2 = $lang2;
      +                    }
      +                }
      +            }
      +
      +            if (!$highest_key1) {
      +                // should not ever happen
      +                throw new Text_LanguageDetect_Exception(
      +                    "no highest key? (step: $i)",
      +                    Text_LanguageDetect_Exception::NO_HIGHEST_KEY
      +                );
      +            }
      +
      +            if ($highest_score == 0) {
      +                // languages are perfectly dissimilar
      +                break;
      +            }
      +
      +            // $highest_key1 and $highest_key2 are most similar
      +            $sum1 = array_sum($arr[$highest_key1]);
      +            $sum2 = array_sum($arr[$highest_key2]);
      +
      +            // use the score for the one that is most similar to the rest of
      +            // the field as the score for the group
      +            // todo: could try averaging or "centroid" method instead
      +            // seems like that might make more sense
      +            // actually nearest neighbor may be better for binary searching
      +
      +
      +            // for "Complete Linkage"/"furthest neighbor"
      +            // sign should be <
      +            // for "Single Linkage"/"nearest neighbor" method
      +            // should should be >
      +            // results seem to be pretty much the same with either method
      +
      +            // figure out which to delete and which to replace
      +            if ($sum1 > $sum2) {
      +                $replaceme = $highest_key1;
      +                $deleteme = $highest_key2;
      +            } else {
      +                $replaceme = $highest_key2;
      +                $deleteme = $highest_key1;
      +            }
      +
      +            $newkey = $replaceme . ':' . $deleteme;
      +
      +            // $replaceme is most similar to remaining languages
      +            // replace $replaceme with '$newkey', deleting $deleteme
      +
      +            // keep a record of which fork is really which language
      +            $really_lang = $replaceme;
      +            while (isset($really_map[$really_lang])) {
      +                $really_lang = $really_map[$really_lang];
      +            }
      +            $really_map[$newkey] = $really_lang;
      +
      +
      +            // replace the best fitting key, delete the other
      +            foreach ($arr as $key1 => $arr2) {
      +                foreach ($arr2 as $key2 => $value2) {
      +                    if ($key2 == $replaceme) {
      +                        $arr[$key1][$newkey] = $arr[$key1][$key2];
      +                        unset($arr[$key1][$key2]);
      +                        // replacing $arr[$key1][$key2] with $arr[$key1][$newkey]
      +                    }
      +
      +                    if ($key1 == $replaceme) {
      +                        $arr[$newkey][$key2] = $arr[$key1][$key2];
      +                        unset($arr[$key1][$key2]);
      +                        // replacing $arr[$key1][$key2] with $arr[$newkey][$key2]
      +                    }
      +
      +                    if ($key1 == $deleteme || $key2 == $deleteme) {
      +                        // deleting $arr[$key1][$key2]
      +                        unset($arr[$key1][$key2]);
      +                    }
      +                }
      +            }
      +
      +
      +            unset($langs[$highest_key1]);
      +            unset($langs[$highest_key2]);
      +            $langs[$newkey] = $newkey;
      +
      +
      +            // some of these may be overkill
      +            $result_data[$newkey] = array(
      +                                'newkey' => $newkey,
      +                                'count' => $i,
      +                                'diff' => abs($sum1 - $sum2),
      +                                'score' => $highest_score,
      +                                'bestfit' => $replaceme,
      +                                'otherfit' => $deleteme,
      +                                'really' => $really_lang,
      +                            );
      +        }
      +
      +        $return_val = array(
      +                'open_forks' => $langs,
      +                        // the top level of clusters
      +                        // clusters that are mutually exclusive
      +                        // or specified by a specific maximum
      +
      +                'fork_data' => $result_data,
      +                        // data for each split
      +
      +                'name_map' => $really_map,
      +                        // which cluster is really which language
      +                        // using the nearest neighbor technique, the cluster
      +                        // inherits all of the properties of its most-similar member
      +                        // this keeps track
      +            );
      +
      +
      +        // saves the result in the object
      +        $this->_clusters = $return_val;
      +
      +        return $return_val;
      +    }
      +
      +
      +    /**
      +     * Perform an intelligent detection based on clusterLanguages()
      +     *
      +     * WARNING: this method is EXPERIMENTAL. It is not recommended for common
      +     * use, and it may disappear or its functionality may change in future
      +     * releases without notice.
      +     *
      +     * This compares the sample text to top the top level of clusters. If the
      +     * sample is similar to the cluster it will drop down and compare it to the
      +     * languages in the cluster, and so on until it hits a leaf node.
      +     *
      +     * this should find the language in considerably fewer compares
      +     * (the equivalent of a binary search), however clusterLanguages() is costly
      +     * and the loss of accuracy from this technique is significant.
      +     *
      +     * This method may need to be 'fuzzier' in order to become more accurate.
      +     *
      +     * This function could be more useful if the universe of possible languages
      +     * was very large, however in such cases some method of Bayesian inference
      +     * might be more helpful.
      +     *
      +     * @param string $str input string
      +     *
      +     * @return array language scores (only those compared)
      +     * @throws Text_LanguageDetect_Exception
      +     * @see    clusterLanguages()
      +     */
      +    public function clusteredSearch($str)
      +    {
      +        // input check
      +        if (!Text_LanguageDetect_Parser::validateString($str)) {
      +            return array();
      +        }
      +
      +        // clusterLanguages() will return a cached result if possible
      +        // so it's safe to call it every time
      +        $result = $this->clusterLanguages();
      +
      +        $dendogram_start = $result['open_forks'];
      +        $dendogram_data  = $result['fork_data'];
      +        $dendogram_alias = $result['name_map'];
      +
      +        $sample_obj = new Text_LanguageDetect_Parser($str);
      +        $sample_obj->prepareTrigram();
      +        $sample_obj->setPadStart(!$this->_perl_compatible);
      +        $sample_obj->analyze();
      +        $sample_result = $sample_obj->getTrigramRanks();
      +        $sample_count  = count($sample_result);
      +
      +        // input check
      +        if ($sample_count == 0) {
      +            return array();
      +        }
      +
      +        $i = 0; // counts the number of steps
      +
      +        foreach ($dendogram_start as $lang) {
      +            if (isset($dendogram_alias[$lang])) {
      +                $lang_key = $dendogram_alias[$lang];
      +            } else {
      +                $lang_key = $lang;
      +            }
      +
      +            $scores[$lang] = $this->_normalize_score(
      +                $this->_distance($this->_lang_db[$lang_key], $sample_result),
      +                $sample_count
      +            );
      +
      +            $i++;
      +        }
      +
      +        if ($this->_perl_compatible) {
      +            asort($scores);
      +        } else {
      +            arsort($scores);
      +        }
      +
      +        $top_score = current($scores);
      +        $top_key = key($scores);
      +
      +        // of starting forks, $top_key is the most similar to the sample
      +
      +        $cur_key = $top_key;
      +        while (isset($dendogram_data[$cur_key])) {
      +            $lang1 = $dendogram_data[$cur_key]['bestfit'];
      +            $lang2 = $dendogram_data[$cur_key]['otherfit'];
      +            foreach (array($lang1, $lang2) as $lang) {
      +                if (isset($dendogram_alias[$lang])) {
      +                    $lang_key = $dendogram_alias[$lang];
      +                } else {
      +                    $lang_key = $lang;
      +                }
      +
      +                $scores[$lang] = $this->_normalize_score(
      +                    $this->_distance($this->_lang_db[$lang_key], $sample_result),
      +                    $sample_count
      +                );
      +
      +                //todo: does not need to do same comparison again
      +            }
      +
      +            $i++;
      +
      +            if ($scores[$lang1] > $scores[$lang2]) {
      +                $cur_key = $lang1;
      +                $loser_key = $lang2;
      +            } else {
      +                $cur_key = $lang2;
      +                $loser_key = $lang1;
      +            }
      +
      +            $diff = $scores[$cur_key] - $scores[$loser_key];
      +
      +            // $cur_key ({$dendogram_alias[$cur_key]}) wins
      +            // over $loser_key ({$dendogram_alias[$loser_key]})
      +            // with a difference of $diff
      +        }
      +
      +        // found result in $i compares
      +
      +        // rather than sorting the result, preserve it so that you can see
      +        // which paths the algorithm decided to take along the tree
      +
      +        // but sometimes the last item is only the second highest
      +        if (($this->_perl_compatible  && (end($scores) > prev($scores)))
      +            || (!$this->_perl_compatible && (end($scores) < prev($scores)))
      +        ) {
      +            $real_last_score = current($scores);
      +            $real_last_key = key($scores);
      +
      +            // swaps the 2nd-to-last item for the last item
      +            unset($scores[$real_last_key]);
      +            $scores[$real_last_key] = $real_last_score;
      +        }
      +
      +
      +        if (!$this->_perl_compatible) {
      +            $scores = array_reverse($scores, true);
      +            // second param requires php > 4.0.3
      +        }
      +
      +        return $scores;
      +    }
      +
      +    /**
      +     * ut8-safe strlen()
      +     *
      +     * Returns the numbers of characters (not bytes) in a utf8 string
      +     *
      +     * @param string $str string to get the length of
      +     *
      +     * @return int number of chars
      +     */
      +    public static function utf8strlen($str)
      +    {
      +        // utf8_decode() will convert unknown chars to '?', which is actually
      +        // ideal for counting.
      +
      +        return strlen(utf8_decode($str));
      +
      +        // idea stolen from dokuwiki
      +    }
      +
      +    /**
      +     * Returns the unicode value of a utf8 char
      +     *
      +     * @param string $char a utf8 (possibly multi-byte) char
      +     *
      +     * @return int unicode value
      +     * @access protected
      +     * @link   http://en.wikipedia.org/wiki/UTF-8
      +     */
      +    function _utf8char2unicode($char)
      +    {
      +        // strlen() here will actually get the binary length of a single char
      +        switch (strlen($char)) {
      +        case 1:
      +            // normal ASCII-7 byte
      +            // 0xxxxxxx -->  0xxxxxxx
      +            return ord($char{0});
      +
      +        case 2:
      +            // 2 byte unicode
      +            // 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx
      +            $z = (ord($char{0}) & 0x000001F) << 6;
      +            $x = (ord($char{1}) & 0x0000003F);
      +            return ($z | $x);
      +
      +        case 3:
      +            // 3 byte unicode
      +            // 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx
      +            $z =  (ord($char{0}) & 0x0000000F) << 12;
      +            $x1 = (ord($char{1}) & 0x0000003F) << 6;
      +            $x2 = (ord($char{2}) & 0x0000003F);
      +            return ($z | $x1 | $x2);
      +
      +        case 4:
      +            // 4 byte unicode
      +            // 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx -->
      +            // 000zzzzz xxxxxxxx xxxxxxxx
      +            $z1 = (ord($char{0}) & 0x00000007) << 18;
      +            $z2 = (ord($char{1}) & 0x0000003F) << 12;
      +            $x1 = (ord($char{2}) & 0x0000003F) << 6;
      +            $x2 = (ord($char{3}) & 0x0000003F);
      +            return ($z1 | $z2 | $x1 | $x2);
      +        }
      +    }
      +
      +    /**
      +     * utf8-safe fast character iterator
      +     *
      +     * Will get the next character starting from $counter, which will then be
      +     * incremented. If a multi-byte char the bytes will be concatenated and
      +     * $counter will be incremeted by the number of bytes in the char.
      +     *
      +     * @param string $str             the string being iterated over
      +     * @param int    &$counter        the iterator, will increment by reference
      +     * @param bool   $special_convert whether to do special conversions
      +     *
      +     * @return char the next (possibly multi-byte) char from $counter
      +     * @access private
      +     */
      +    static function _next_char($str, &$counter, $special_convert = false)
      +    {
      +        $char = $str{$counter++};
      +        $ord = ord($char);
      +
      +        // for a description of the utf8 system see
      +        // http://www.phpclasses.org/browse/file/5131.html
      +
      +        // normal ascii one byte char
      +        if ($ord <= 127) {
      +            // special conversions needed for this package
      +            // (that only apply to regular ascii characters)
      +            // lower case, and convert all non-alphanumeric characters
      +            // other than "'" to space
      +            if ($special_convert && $char != ' ' && $char != "'") {
      +                if ($ord >= 65 && $ord <= 90) { // A-Z
      +                    $char = chr($ord + 32); // lower case
      +                } elseif ($ord < 97 || $ord > 122) { // NOT a-z
      +                    $char = ' '; // convert to space
      +                }
      +            }
      +
      +            return $char;
      +
      +        } elseif ($ord >> 5 == 6) { // two-byte char
      +            // multi-byte chars
      +            $nextchar = $str{$counter++}; // get next byte
      +
      +            // lower-casing of non-ascii characters is still incomplete
      +
      +            if ($special_convert) {
      +                // lower case latin accented characters
      +                if ($ord == 195) {
      +                    $nextord = ord($nextchar);
      +                    $nextord_adj = $nextord + 64;
      +                    // for a reference, see
      +                    // http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
      +
      +                    // À - Þ but not ×
      +                    if ($nextord_adj >= 192
      +                        && $nextord_adj <= 222
      +                        && $nextord_adj != 215
      +                    ) {
      +                        $nextchar = chr($nextord + 32);
      +                    }
      +
      +                } elseif ($ord == 208) {
      +                    // lower case cyrillic alphabet
      +                    $nextord = ord($nextchar);
      +                    // if A - Pe
      +                    if ($nextord >= 144 && $nextord <= 159) {
      +                        // lower case
      +                        $nextchar = chr($nextord + 32);
      +
      +                    } elseif ($nextord >= 160 && $nextord <= 175) {
      +                        // if Er - Ya
      +                        // lower case
      +                        $char = chr(209); // == $ord++
      +                        $nextchar = chr($nextord - 32);
      +                    }
      +                }
      +            }
      +
      +            // tag on next byte
      +            return $char . $nextchar;
      +        } elseif ($ord >> 4  == 14) { // three-byte char
      +
      +            // tag on next 2 bytes
      +            return $char . $str{$counter++} . $str{$counter++};
      +
      +        } elseif ($ord >> 3 == 30) { // four-byte char
      +
      +            // tag on next 3 bytes
      +            return $char . $str{$counter++} . $str{$counter++} . $str{$counter++};
      +
      +        } else {
      +            // error?
      +        }
      +    }
      +
      +    /**
      +     * Converts an $language input parameter from the configured mode
      +     * to the language name that is used internally.
      +     *
      +     * Works for strings and arrays.
      +     *
      +     * @param string|array $lang       A language description ("english"/"en"/"eng")
      +     * @param boolean      $convertKey If $lang is an array, setting $key
      +     *                                 converts the keys to the language name.
      +     *
      +     * @return string|array Language name
      +     */
      +    function _convertFromNameMode($lang, $convertKey = false)
      +    {
      +        if ($this->_name_mode == 0) {
      +            return $lang;
      +        }
      +
      +        if ($this->_name_mode == 2) {
      +            $method = 'code2ToName';
      +        } else {
      +            $method = 'code3ToName';
      +        }
      +
      +        if (is_string($lang)) {
      +            return (string)Text_LanguageDetect_ISO639::$method($lang);
      +        }
      +
      +        $newlang = array();
      +        foreach ($lang as $key => $val) {
      +            if ($convertKey) {
      +                $newkey = (string)Text_LanguageDetect_ISO639::$method($key);
      +                $newlang[$newkey] = $val;
      +            } else {
      +                $newlang[$key] = (string)Text_LanguageDetect_ISO639::$method($val);
      +            }
      +        }
      +        return $newlang;
      +    }
      +
      +    /**
      +     * Converts an $language output parameter from the language name that is
      +     * used internally to the configured mode.
      +     *
      +     * Works for strings and arrays.
      +     *
      +     * @param string|array $lang       A language description ("english"/"en"/"eng")
      +     * @param boolean      $convertKey If $lang is an array, setting $key
      +     *                                 converts the keys to the language name.
      +     *
      +     * @return string|array Language name
      +     */
      +    function _convertToNameMode($lang, $convertKey = false)
      +    {
      +        if ($this->_name_mode == 0) {
      +            return $lang;
      +        }
      +
      +        if ($this->_name_mode == 2) {
      +            $method = 'nameToCode2';
      +        } else {
      +            $method = 'nameToCode3';
      +        }
      +
      +        if (is_string($lang)) {
      +            return Text_LanguageDetect_ISO639::$method($lang);
      +        }
      +
      +        $newlang = array();
      +        foreach ($lang as $key => $val) {
      +            if ($convertKey) {
      +                $newkey = Text_LanguageDetect_ISO639::$method($key);
      +                $newlang[$newkey] = $val;
      +            } else {
      +                $newlang[$key] = Text_LanguageDetect_ISO639::$method($val);
      +            }
      +        }
      +        return $newlang;
      +    }
      +}
      +
      +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
      +
      +?>
      diff --git a/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php b/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php
      new file mode 100644
      index 00000000..196d994f
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/Text/LanguageDetect/Exception.php
      @@ -0,0 +1,57 @@
      +
      + * @copyright 2011 Christian Weiske 
      + * @license   http://www.debian.org/misc/bsd.license BSD
      + * @version   SVN: $Id$
      + * @link      http://pear.php.net/package/Text_LanguageDetect/
      + */
      +
      +/**
      + * Provides a mapping between the languages from lang.dat and the
      + * ISO 639-1 and ISO-639-2 codes.
      + *
      + * Note that this class contains only languages that exist in lang.dat.
      + *
      + * @category  Text
      + * @package   Text_LanguageDetect
      + * @author    Christian Weiske 
      + * @copyright 2011 Christian Weiske 
      + * @license   http://www.debian.org/misc/bsd.license BSD
      + * @link      http://www.loc.gov/standards/iso639-2/php/code_list.php
      + */
      +class Text_LanguageDetect_ISO639
      +{
      +    /**
      +     * Maps all language names from the language database to the
      +     * ISO 639-1 2-letter language code.
      +     *
      +     * NULL indicates that there is no 2-letter code.
      +     *
      +     * @var array
      +     */
      +    public static $nameToCode2 = array(
      +        'albanian'   => 'sq',
      +        'arabic'     => 'ar',
      +        'azeri'      => 'az',
      +        'bengali'    => 'bn',
      +        'bulgarian'  => 'bg',
      +        'cebuano'    => null,
      +        'croatian'   => 'hr',
      +        'czech'      => 'cs',
      +        'danish'     => 'da',
      +        'dutch'      => 'nl',
      +        'english'    => 'en',
      +        'estonian'   => 'et',
      +        'farsi'      => 'fa',
      +        'finnish'    => 'fi',
      +        'french'     => 'fr',
      +        'german'     => 'de',
      +        'hausa'      => 'ha',
      +        'hawaiian'   => null,
      +        'hindi'      => 'hi',
      +        'hungarian'  => 'hu',
      +        'icelandic'  => 'is',
      +        'indonesian' => 'id',
      +        'italian'    => 'it',
      +        'kazakh'     => 'kk',
      +        'kyrgyz'     => 'ky',
      +        'latin'      => 'la',
      +        'latvian'    => 'lv',
      +        'lithuanian' => 'lt',
      +        'macedonian' => 'mk',
      +        'mongolian'  => 'mn',
      +        'nepali'     => 'ne',
      +        'norwegian'  => 'no',
      +        'pashto'     => 'ps',
      +        'pidgin'     => null,
      +        'polish'     => 'pl',
      +        'portuguese' => 'pt',
      +        'romanian'   => 'ro',
      +        'russian'    => 'ru',
      +        'serbian'    => 'sr',
      +        'slovak'     => 'sk',
      +        'slovene'    => 'sl',
      +        'somali'     => 'so',
      +        'spanish'    => 'es',
      +        'swahili'    => 'sw',
      +        'swedish'    => 'sv',
      +        'tagalog'    => 'tl',
      +        'turkish'    => 'tr',
      +        'ukrainian'  => 'uk',
      +        'urdu'       => 'ur',
      +        'uzbek'      => 'uz',
      +        'vietnamese' => 'vi',
      +        'welsh'      => 'cy',
      +    );
      +
      +    /**
      +     * Maps all language names from the language database to the
      +     * ISO 639-2 3-letter language code.
      +     *
      +     * @var array
      +     */
      +    public static $nameToCode3 = array(
      +        'albanian'   => 'sqi',
      +        'arabic'     => 'ara',
      +        'azeri'      => 'aze',
      +        'bengali'    => 'ben',
      +        'bulgarian'  => 'bul',
      +        'cebuano'    => 'ceb',
      +        'croatian'   => 'hrv',
      +        'czech'      => 'ces',
      +        'danish'     => 'dan',
      +        'dutch'      => 'nld',
      +        'english'    => 'eng',
      +        'estonian'   => 'est',
      +        'farsi'      => 'fas',
      +        'finnish'    => 'fin',
      +        'french'     => 'fra',
      +        'german'     => 'deu',
      +        'hausa'      => 'hau',
      +        'hawaiian'   => 'haw',
      +        'hindi'      => 'hin',
      +        'hungarian'  => 'hun',
      +        'icelandic'  => 'isl',
      +        'indonesian' => 'ind',
      +        'italian'    => 'ita',
      +        'kazakh'     => 'kaz',
      +        'kyrgyz'     => 'kir',
      +        'latin'      => 'lat',
      +        'latvian'    => 'lav',
      +        'lithuanian' => 'lit',
      +        'macedonian' => 'mkd',
      +        'mongolian'  => 'mon',
      +        'nepali'     => 'nep',
      +        'norwegian'  => 'nor',
      +        'pashto'     => 'pus',
      +        'pidgin'     => 'crp',
      +        'polish'     => 'pol',
      +        'portuguese' => 'por',
      +        'romanian'   => 'ron',
      +        'russian'    => 'rus',
      +        'serbian'    => 'srp',
      +        'slovak'     => 'slk',
      +        'slovene'    => 'slv',
      +        'somali'     => 'som',
      +        'spanish'    => 'spa',
      +        'swahili'    => 'swa',
      +        'swedish'    => 'swe',
      +        'tagalog'    => 'tgl',
      +        'turkish'    => 'tur',
      +        'ukrainian'  => 'ukr',
      +        'urdu'       => 'urd',
      +        'uzbek'      => 'uzb',
      +        'vietnamese' => 'vie',
      +        'welsh'      => 'cym',
      +    );
      +
      +    /**
      +     * Maps ISO 639-1 2-letter language codes to the language names
      +     * in the language database
      +     *
      +     * Not all languages have a 2 letter code, so some are missing
      +     *
      +     * @var array
      +     */
      +    public static $code2ToName = array(
      +        'ar' => 'arabic',
      +        'az' => 'azeri',
      +        'bg' => 'bulgarian',
      +        'bn' => 'bengali',
      +        'cs' => 'czech',
      +        'cy' => 'welsh',
      +        'da' => 'danish',
      +        'de' => 'german',
      +        'en' => 'english',
      +        'es' => 'spanish',
      +        'et' => 'estonian',
      +        'fa' => 'farsi',
      +        'fi' => 'finnish',
      +        'fr' => 'french',
      +        'ha' => 'hausa',
      +        'hi' => 'hindi',
      +        'hr' => 'croatian',
      +        'hu' => 'hungarian',
      +        'id' => 'indonesian',
      +        'is' => 'icelandic',
      +        'it' => 'italian',
      +        'kk' => 'kazakh',
      +        'ky' => 'kyrgyz',
      +        'la' => 'latin',
      +        'lt' => 'lithuanian',
      +        'lv' => 'latvian',
      +        'mk' => 'macedonian',
      +        'mn' => 'mongolian',
      +        'ne' => 'nepali',
      +        'nl' => 'dutch',
      +        'no' => 'norwegian',
      +        'pl' => 'polish',
      +        'ps' => 'pashto',
      +        'pt' => 'portuguese',
      +        'ro' => 'romanian',
      +        'ru' => 'russian',
      +        'sk' => 'slovak',
      +        'sl' => 'slovene',
      +        'so' => 'somali',
      +        'sq' => 'albanian',
      +        'sr' => 'serbian',
      +        'sv' => 'swedish',
      +        'sw' => 'swahili',
      +        'tl' => 'tagalog',
      +        'tr' => 'turkish',
      +        'uk' => 'ukrainian',
      +        'ur' => 'urdu',
      +        'uz' => 'uzbek',
      +        'vi' => 'vietnamese',
      +    );
      +
      +    /**
      +     * Maps ISO 639-2 3-letter language codes to the language names
      +     * in the language database.
      +     *
      +     * @var array
      +     */
      +    public static $code3ToName = array(
      +        'ara' => 'arabic',
      +        'aze' => 'azeri',
      +        'ben' => 'bengali',
      +        'bul' => 'bulgarian',
      +        'ceb' => 'cebuano',
      +        'ces' => 'czech',
      +        'crp' => 'pidgin',
      +        'cym' => 'welsh',
      +        'dan' => 'danish',
      +        'deu' => 'german',
      +        'eng' => 'english',
      +        'est' => 'estonian',
      +        'fas' => 'farsi',
      +        'fin' => 'finnish',
      +        'fra' => 'french',
      +        'hau' => 'hausa',
      +        'haw' => 'hawaiian',
      +        'hin' => 'hindi',
      +        'hrv' => 'croatian',
      +        'hun' => 'hungarian',
      +        'ind' => 'indonesian',
      +        'isl' => 'icelandic',
      +        'ita' => 'italian',
      +        'kaz' => 'kazakh',
      +        'kir' => 'kyrgyz',
      +        'lat' => 'latin',
      +        'lav' => 'latvian',
      +        'lit' => 'lithuanian',
      +        'mkd' => 'macedonian',
      +        'mon' => 'mongolian',
      +        'nep' => 'nepali',
      +        'nld' => 'dutch',
      +        'nor' => 'norwegian',
      +        'pol' => 'polish',
      +        'por' => 'portuguese',
      +        'pus' => 'pashto',
      +        'rom' => 'romanian',
      +        'rus' => 'russian',
      +        'slk' => 'slovak',
      +        'slv' => 'slovene',
      +        'som' => 'somali',
      +        'spa' => 'spanish',
      +        'sqi' => 'albanian',
      +        'srp' => 'serbian',
      +        'swa' => 'swahili',
      +        'swe' => 'swedish',
      +        'tgl' => 'tagalog',
      +        'tur' => 'turkish',
      +        'ukr' => 'ukrainian',
      +        'urd' => 'urdu',
      +        'uzb' => 'uzbek',
      +        'vie' => 'vietnamese',
      +    );
      +
      +    /**
      +     * Returns the 2-letter ISO 639-1 code for the given language name.
      +     *
      +     * @param string $lang English language name like "swedish"
      +     *
      +     * @return string Two-letter language code (e.g. "sv") or NULL if not found
      +     */
      +    public static function nameToCode2($lang)
      +    {
      +        $lang = strtolower($lang);
      +        if (!isset(self::$nameToCode2[$lang])) {
      +            return null;
      +        }
      +        return self::$nameToCode2[$lang];
      +    }
      +
      +    /**
      +     * Returns the 3-letter ISO 639-2 code for the given language name.
      +     *
      +     * @param string $lang English language name like "swedish"
      +     *
      +     * @return string Three-letter language code (e.g. "swe") or NULL if not found
      +     */
      +    public static function nameToCode3($lang)
      +    {
      +        $lang = strtolower($lang);
      +        if (!isset(self::$nameToCode3[$lang])) {
      +            return null;
      +        }
      +        return self::$nameToCode3[$lang];
      +    }
      +
      +    /**
      +     * Returns the language name for the given 2-letter ISO 639-1 code.
      +     *
      +     * @param string $code Two-letter language code (e.g. "sv")
      +     *
      +     * @return string English language name like "swedish"
      +     */
      +    public static function code2ToName($code)
      +    {
      +        $lang = strtolower($code);
      +        if (!isset(self::$code2ToName[$code])) {
      +            return null;
      +        }
      +        return self::$code2ToName[$code];
      +    }
      +
      +    /**
      +     * Returns the language name for the given 3-letter ISO 639-2 code.
      +     *
      +     * @param string $code Three-letter language code (e.g. "swe")
      +     *
      +     * @return string English language name like "swedish"
      +     */
      +    public static function code3ToName($code)
      +    {
      +        $lang = strtolower($code);
      +        if (!isset(self::$code3ToName[$code])) {
      +            return null;
      +        }
      +        return self::$code3ToName[$code];
      +    }
      +}
      +
      +?>
      \ No newline at end of file
      diff --git a/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php b/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php
      new file mode 100644
      index 00000000..1c20c265
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/Text/LanguageDetect/Parser.php
      @@ -0,0 +1,349 @@
      +_string = $string;
      +    }
      +
      +    /**
      +     * Returns true if a string is suitable for parsing
      +     *
      +     * @param   string  $str    input string to test
      +     * @return  bool            true if acceptable, false if not
      +     */
      +    public static function validateString($str) {
      +        if (!empty($str) && strlen($str) > 3 && preg_match('/\S/', $str)) {
      +            return true;
      +        } else {
      +            return false;
      +        }
      +    }
      +
      +    /**
      +     * turn on/off trigram counting
      +     *
      +     * @access  public
      +     * @param   bool    $bool true for on, false for off
      +     */
      +    function prepareTrigram($bool = true)
      +    {
      +        $this->_compile_trigram = $bool;
      +    }
      +
      +    /**
      +     * turn on/off unicode block counting
      +     *
      +     * @access  public
      +     * @param   bool    $bool true for on, false for off
      +     */
      +    function prepareUnicode($bool = true)
      +    {
      +        $this->_compile_unicode = $bool;
      +    }
      +
      +    /**
      +     * turn on/off padding the beginning of the sample string
      +     *
      +     * @access  public
      +     * @param   bool    $bool true for on, false for off
      +     */
      +    function setPadStart($bool = true)
      +    {
      +        $this->_trigram_pad_start = $bool;
      +    }
      +
      +    /**
      +     * Should the unicode block counter skip non-alphabetical ascii chars?
      +     *
      +     * @access  public
      +     * @param   bool    $bool true for on, false for off
      +     */
      +    function setUnicodeSkipSymbols($bool = true)
      +    {
      +        $this->_unicode_skip_symbols = $bool;
      +    }
      +
      +    /**
      +     * Returns the trigram ranks for the text sample
      +     *
      +     * @access  public
      +     * @return  array    trigram ranks in the text sample
      +     */
      +    function &getTrigramRanks()
      +    {
      +        return $this->_trigram_ranks;
      +    }
      +
      +    /**
      +     * Return the trigram freqency table
      +     *
      +     * only used in testing to make sure the parser is working
      +     *
      +     * @access  public
      +     * @return  array    trigram freqencies in the text sample
      +     */
      +    function &getTrigramFreqs()
      +    {
      +        return $this->_trigram;
      +    }
      +
      +    /**
      +     * returns the array of unicode blocks
      +     *
      +     * @access  public
      +     * @return  array   unicode blocks in the text sample
      +     */
      +    function &getUnicodeBlocks()
      +    {
      +        return $this->_unicode_blocks;
      +    }
      +
      +    /**
      +     * Executes the parsing operation
      +     * 
      +     * Be sure to call the set*() functions to set options and the 
      +     * prepare*() functions first to tell it what kind of data to compute
      +     *
      +     * Afterwards the get*() functions can be used to access the compiled
      +     * information.
      +     *
      +     * @access public
      +     */
      +    function analyze()
      +    {
      +        $len = strlen($this->_string);
      +        $byte_counter = 0;
      +
      +
      +        // unicode startup
      +        if ($this->_compile_unicode) {
      +            $blocks = $this->_read_unicode_block_db();
      +            $block_count = count($blocks);
      +
      +            $skipped_count = 0;
      +            $unicode_chars = array();
      +        }
      +
      +        // trigram startup
      +        if ($this->_compile_trigram) {
      +            // initialize them as blank so the parser will skip the first two
      +            // (since it skips trigrams with more than  2 contiguous spaces)
      +            $a = ' ';
      +            $b = ' ';
      +
      +            // kludge
      +            // if it finds a valid trigram to start and the start pad option is
      +            // off, then set a variable that will be used to reduce this
      +            // trigram after parsing has finished
      +            if (!$this->_trigram_pad_start) {
      +                $a = $this->_next_char($this->_string, $byte_counter, true);
      +
      +                if ($a != ' ') {
      +                    $b = $this->_next_char($this->_string, $byte_counter, true);
      +                    $dropone = " $a$b";
      +                }
      +
      +                $byte_counter = 0;
      +                $a = ' ';
      +                $b = ' ';
      +            }
      +        }
      +
      +        while ($byte_counter < $len) {
      +            $char = $this->_next_char($this->_string, $byte_counter, true);
      +
      +
      +            // language trigram detection
      +            if ($this->_compile_trigram) {
      +                if (!($b == ' ' && ($a == ' ' || $char == ' '))) {
      +                    if (!isset($this->_trigram[$a . $b . $char])) {
      +                       $this->_trigram[$a . $b . $char] = 1;
      +                    } else {
      +                       $this->_trigram[$a . $b . $char]++;
      +                    }
      +                }
      +
      +                $a = $b;
      +                $b = $char;
      +            }
      +
      +            // unicode block detection
      +            if ($this->_compile_unicode) {
      +                if ($this->_unicode_skip_symbols
      +                        && strlen($char) == 1
      +                        && ($char < 'A' || $char > 'z'
      +                        || ($char > 'Z' && $char < 'a'))
      +                        && $char != "'") {  // does not skip the apostrophe
      +                                            // since it's included in the language
      +                                            // models
      +
      +                    $skipped_count++;
      +                    continue;
      +                }
      +
      +                // build an array of all the characters
      +                if (isset($unicode_chars[$char])) {
      +                    $unicode_chars[$char]++;
      +                } else {
      +                    $unicode_chars[$char] = 1;
      +                }
      +            }
      +
      +            // todo: add byte detection here
      +        }
      +
      +        // unicode cleanup
      +        if ($this->_compile_unicode) {
      +            foreach ($unicode_chars as $utf8_char => $count) {
      +                $search_result = $this->_unicode_block_name(
      +                        $this->_utf8char2unicode($utf8_char), $blocks, $block_count);
      +
      +                if ($search_result != -1) {
      +                    $block_name = $search_result[2];
      +                } else {
      +                    $block_name = '[Malformatted]';
      +                }
      +
      +                if (isset($this->_unicode_blocks[$block_name])) {
      +                    $this->_unicode_blocks[$block_name] += $count;
      +                } else {
      +                    $this->_unicode_blocks[$block_name] = $count;
      +                }
      +            }
      +        }
      +
      +
      +        // trigram cleanup
      +        if ($this->_compile_trigram) {
      +            // pad the end
      +            if ($b != ' ') {
      +                if (!isset($this->_trigram["$a$b "])) {
      +                    $this->_trigram["$a$b "] = 1;
      +                } else {
      +                    $this->_trigram["$a$b "]++;
      +                }
      +            }
      +
      +            // perl compatibility; Language::Guess does not pad the beginning
      +            // kludge
      +            if (isset($dropone)) {
      +                if ($this->_trigram[$dropone] == 1) {
      +                    unset($this->_trigram[$dropone]);
      +                } else {
      +                    $this->_trigram[$dropone]--;
      +                }
      +            }
      +
      +            if (!empty($this->_trigram)) {
      +                $this->_trigram_ranks = $this->_arr_rank($this->_trigram);
      +            } else {
      +                $this->_trigram_ranks = array();
      +            }
      +        }
      +    }
      +}
      +
      +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
      +
      +?>
      diff --git a/php/lib/Text_LanguageDetect/data/lang.dat b/php/lib/Text_LanguageDetect/data/lang.dat
      new file mode 100644
      index 00000000..c2a44f56
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/data/lang.dat
      @@ -0,0 +1 @@
      +a:2:{s:7:"trigram";a:52:{s:8:"albanian";a:300:{s:4:"të ";s:1:"0";s:4:" të";s:1:"1";s:4:"në ";s:1:"2";s:4:"për";s:1:"3";s:4:" pë";s:1:"4";s:3:" e ";s:1:"5";s:3:"sht";s:1:"6";s:4:" në";s:1:"7";s:3:" sh";s:1:"8";s:3:"se ";s:1:"9";s:3:"et ";s:2:"10";s:4:"ë s";s:2:"11";s:4:"ë t";s:2:"12";s:3:" se";s:2:"13";s:3:"he ";s:2:"14";s:4:"jë ";s:2:"15";s:4:"ër ";s:2:"16";s:3:"dhe";s:2:"17";s:3:" pa";s:2:"18";s:4:"ë n";s:2:"19";s:4:"ë p";s:2:"20";s:4:" që";s:2:"21";s:3:" dh";s:2:"22";s:4:"një";s:2:"23";s:4:"ë m";s:2:"24";s:3:" nj";s:2:"25";s:4:"ësh";s:2:"26";s:3:"in ";s:2:"27";s:3:" me";s:2:"28";s:4:"që ";s:2:"29";s:3:" po";s:2:"30";s:3:"e n";s:2:"31";s:3:"e t";s:2:"32";s:3:"ish";s:2:"33";s:4:"më ";s:2:"34";s:4:"së ";s:2:"35";s:3:"me ";s:2:"36";s:4:"htë";s:2:"37";s:3:" ka";s:2:"38";s:3:" si";s:2:"39";s:3:"e k";s:2:"40";s:3:"e p";s:2:"41";s:3:" i ";s:2:"42";s:4:"anë";s:2:"43";s:3:"ar ";s:2:"44";s:3:" nu";s:2:"45";s:3:"und";s:2:"46";s:3:"ve ";s:2:"47";s:4:" ës";s:2:"48";s:3:"e s";s:2:"49";s:4:" më";s:2:"50";s:3:"nuk";s:2:"51";s:3:"par";s:2:"52";s:3:"uar";s:2:"53";s:3:"uk ";s:2:"54";s:3:"jo ";s:2:"55";s:4:"rë ";s:2:"56";s:3:"ta ";s:2:"57";s:4:"ë f";s:2:"58";s:3:"en ";s:2:"59";s:3:"it ";s:2:"60";s:3:"min";s:2:"61";s:3:"het";s:2:"62";s:3:"n e";s:2:"63";s:3:"ri ";s:2:"64";s:3:"shq";s:2:"65";s:4:"ë d";s:2:"66";s:3:" do";s:2:"67";s:3:" nd";s:2:"68";s:3:"sh ";s:2:"69";s:4:"ën ";s:2:"70";s:4:"atë";s:2:"71";s:3:"hqi";s:2:"72";s:3:"ist";s:2:"73";s:4:"ë q";s:2:"74";s:3:" gj";s:2:"75";s:3:" ng";s:2:"76";s:3:" th";s:2:"77";s:3:"a n";s:2:"78";s:3:"do ";s:2:"79";s:3:"end";s:2:"80";s:3:"imi";s:2:"81";s:3:"ndi";s:2:"82";s:3:"r t";s:2:"83";s:3:"rat";s:2:"84";s:4:"ë b";s:2:"85";s:4:"ëri";s:2:"86";s:3:" mu";s:2:"87";s:3:"art";s:2:"88";s:3:"ash";s:2:"89";s:3:"qip";s:2:"90";s:3:" ko";s:2:"91";s:3:"e m";s:2:"92";s:3:"edh";s:2:"93";s:3:"eri";s:2:"94";s:3:"je ";s:2:"95";s:3:"ka ";s:2:"96";s:3:"nga";s:2:"97";s:3:"si ";s:2:"98";s:3:"te ";s:2:"99";s:4:"ë k";s:3:"100";s:4:"ësi";s:3:"101";s:3:" ma";s:3:"102";s:3:" ti";s:3:"103";s:3:"eve";s:3:"104";s:3:"hje";s:3:"105";s:3:"ira";s:3:"106";s:3:"mun";s:3:"107";s:3:"on ";s:3:"108";s:3:"po ";s:3:"109";s:3:"re ";s:3:"110";s:3:" pr";s:3:"111";s:3:"im ";s:3:"112";s:3:"lit";s:3:"113";s:3:"o t";s:3:"114";s:3:"ur ";s:3:"115";s:4:"ë e";s:3:"116";s:4:"ë v";s:3:"117";s:4:"ët ";s:3:"118";s:3:" ku";s:3:"119";s:4:" së";s:3:"120";s:3:"e d";s:3:"121";s:3:"es ";s:3:"122";s:3:"ga ";s:3:"123";s:3:"iti";s:3:"124";s:3:"jet";s:3:"125";s:4:"ndë";s:3:"126";s:3:"oli";s:3:"127";s:3:"shi";s:3:"128";s:3:"tje";s:3:"129";s:4:" bë";s:3:"130";s:3:" z ";s:3:"131";s:3:"gje";s:3:"132";s:3:"kan";s:3:"133";s:3:"shk";s:3:"134";s:4:"ënd";s:3:"135";s:4:"ës ";s:3:"136";s:3:" de";s:3:"137";s:3:" kj";s:3:"138";s:3:" ru";s:3:"139";s:3:" vi";s:3:"140";s:3:"ara";s:3:"141";s:3:"gov";s:3:"142";s:3:"kjo";s:3:"143";s:3:"or ";s:3:"144";s:3:"r p";s:3:"145";s:3:"rto";s:3:"146";s:3:"rug";s:3:"147";s:3:"tet";s:3:"148";s:3:"ugo";s:3:"149";s:3:"ali";s:3:"150";s:3:"arr";s:3:"151";s:3:"at ";s:3:"152";s:3:"d t";s:3:"153";s:3:"ht ";s:3:"154";s:3:"i p";s:3:"155";s:4:"ipë";s:3:"156";s:3:"izi";s:3:"157";s:4:"jnë";s:3:"158";s:3:"n n";s:3:"159";s:3:"ohe";s:3:"160";s:3:"shu";s:3:"161";s:4:"shë";s:3:"162";s:3:"t e";s:3:"163";s:3:"tik";s:3:"164";s:3:"a e";s:3:"165";s:4:"arë";s:3:"166";s:4:"etë";s:3:"167";s:3:"hum";s:3:"168";s:3:"nd ";s:3:"169";s:3:"ndr";s:3:"170";s:3:"osh";s:3:"171";s:3:"ova";s:3:"172";s:3:"rim";s:3:"173";s:3:"tos";s:3:"174";s:3:"va ";s:3:"175";s:3:" fa";s:3:"176";s:3:" fi";s:3:"177";s:3:"a s";s:3:"178";s:3:"hen";s:3:"179";s:3:"i n";s:3:"180";s:3:"mar";s:3:"181";s:3:"ndo";s:3:"182";s:3:"por";s:3:"183";s:3:"ris";s:3:"184";s:3:"sa ";s:3:"185";s:3:"sis";s:3:"186";s:4:"tës";s:3:"187";s:4:"umë";s:3:"188";s:3:"viz";s:3:"189";s:3:"zit";s:3:"190";s:3:" di";s:3:"191";s:3:" mb";s:3:"192";s:3:"aj ";s:3:"193";s:3:"ana";s:3:"194";s:3:"ata";s:3:"195";s:4:"dër";s:3:"196";s:3:"e a";s:3:"197";s:3:"esh";s:3:"198";s:3:"ime";s:3:"199";s:3:"jes";s:3:"200";s:3:"lar";s:3:"201";s:3:"n s";s:3:"202";s:3:"nte";s:3:"203";s:3:"pol";s:3:"204";s:3:"r n";s:3:"205";s:3:"ran";s:3:"206";s:3:"res";s:3:"207";s:4:"rrë";s:3:"208";s:3:"tar";s:3:"209";s:4:"ë a";s:3:"210";s:4:"ë i";s:3:"211";s:3:" at";s:3:"212";s:3:" jo";s:3:"213";s:4:" kë";s:3:"214";s:3:" re";s:3:"215";s:3:"a k";s:3:"216";s:3:"ai ";s:3:"217";s:3:"akt";s:3:"218";s:4:"hë ";s:3:"219";s:4:"hën";s:3:"220";s:3:"i i";s:3:"221";s:3:"i m";s:3:"222";s:3:"ia ";s:3:"223";s:3:"men";s:3:"224";s:3:"nis";s:3:"225";s:3:"shm";s:3:"226";s:3:"str";s:3:"227";s:3:"t k";s:3:"228";s:3:"t n";s:3:"229";s:3:"t s";s:3:"230";s:4:"ë g";s:3:"231";s:4:"ërk";s:3:"232";s:4:"ëve";s:3:"233";s:3:" ai";s:3:"234";s:3:" ci";s:3:"235";s:3:" ed";s:3:"236";s:3:" ja";s:3:"237";s:3:" kr";s:3:"238";s:3:" qe";s:3:"239";s:3:" ta";s:3:"240";s:3:" ve";s:3:"241";s:3:"a p";s:3:"242";s:3:"cil";s:3:"243";s:3:"el ";s:3:"244";s:4:"erë";s:3:"245";s:3:"gji";s:3:"246";s:3:"hte";s:3:"247";s:3:"i t";s:3:"248";s:3:"jen";s:3:"249";s:3:"jit";s:3:"250";s:3:"k d";s:3:"251";s:4:"mën";s:3:"252";s:3:"n t";s:3:"253";s:3:"nyr";s:3:"254";s:3:"ori";s:3:"255";s:3:"pas";s:3:"256";s:3:"ra ";s:3:"257";s:3:"rie";s:3:"258";s:4:"rës";s:3:"259";s:3:"tor";s:3:"260";s:3:"uaj";s:3:"261";s:3:"yre";s:3:"262";s:4:"ëm ";s:3:"263";s:4:"ëny";s:3:"264";s:3:" ar";s:3:"265";s:3:" du";s:3:"266";s:3:" ga";s:3:"267";s:3:" je";s:3:"268";s:4:"dës";s:3:"269";s:3:"e e";s:3:"270";s:3:"e z";s:3:"271";s:3:"ha ";s:3:"272";s:3:"hme";s:3:"273";s:3:"ika";s:3:"274";s:3:"ini";s:3:"275";s:3:"ite";s:3:"276";s:3:"ith";s:3:"277";s:3:"koh";s:3:"278";s:3:"kra";s:3:"279";s:3:"ku ";s:3:"280";s:3:"lim";s:3:"281";s:3:"lis";s:3:"282";s:4:"qën";s:3:"283";s:4:"rën";s:3:"284";s:3:"s s";s:3:"285";s:3:"t d";s:3:"286";s:3:"t t";s:3:"287";s:3:"tir";s:3:"288";s:4:"tën";s:3:"289";s:3:"ver";s:3:"290";s:4:"ë j";s:3:"291";s:3:" ba";s:3:"292";s:3:" in";s:3:"293";s:3:" tr";s:3:"294";s:3:" zg";s:3:"295";s:3:"a a";s:3:"296";s:3:"a m";s:3:"297";s:3:"a t";s:3:"298";s:3:"abr";s:3:"299";}s:6:"arabic";a:300:{s:5:" ال";s:1:"0";s:6:"الع";s:1:"1";s:6:"لعر";s:1:"2";s:6:"عرا";s:1:"3";s:6:"راق";s:1:"4";s:5:" في";s:1:"5";s:5:"في ";s:1:"6";s:5:"ين ";s:1:"7";s:5:"ية ";s:1:"8";s:5:"ن ا";s:1:"9";s:6:"الم";s:2:"10";s:5:"ات ";s:2:"11";s:5:"من ";s:2:"12";s:5:"ي ا";s:2:"13";s:5:" من";s:2:"14";s:6:"الأ";s:2:"15";s:5:"ة ا";s:2:"16";s:5:"اق ";s:2:"17";s:5:" وا";s:2:"18";s:5:"اء ";s:2:"19";s:6:"الإ";s:2:"20";s:5:" أن";s:2:"21";s:6:"وال";s:2:"22";s:5:"ما ";s:2:"23";s:5:" عل";s:2:"24";s:5:"لى ";s:2:"25";s:5:"ت ا";s:2:"26";s:5:"ون ";s:2:"27";s:5:"هم ";s:2:"28";s:6:"اقي";s:2:"29";s:5:"ام ";s:2:"30";s:5:"ل ا";s:2:"31";s:5:"أن ";s:2:"32";s:5:"م ا";s:2:"33";s:6:"الت";s:2:"34";s:5:"لا ";s:2:"35";s:6:"الا";s:2:"36";s:5:"ان ";s:2:"37";s:5:"ها ";s:2:"38";s:5:"ال ";s:2:"39";s:5:"ة و";s:2:"40";s:5:"ا ا";s:2:"41";s:6:"رها";s:2:"42";s:6:"لام";s:2:"43";s:6:"يين";s:2:"44";s:5:" ول";s:2:"45";s:6:"لأم";s:2:"46";s:5:"نا ";s:2:"47";s:6:"على";s:2:"48";s:5:"ن ي";s:2:"49";s:6:"الب";s:2:"50";s:5:"اد ";s:2:"51";s:6:"الق";s:2:"52";s:5:"د ا";s:2:"53";s:5:"ذا ";s:2:"54";s:5:"ه ا";s:2:"55";s:5:" با";s:2:"56";s:6:"الد";s:2:"57";s:5:"ب ا";s:2:"58";s:6:"مري";s:2:"59";s:5:"لم ";s:2:"60";s:5:" إن";s:2:"61";s:5:" لل";s:2:"62";s:6:"سلا";s:2:"63";s:6:"أمر";s:2:"64";s:6:"ريك";s:2:"65";s:5:"مة ";s:2:"66";s:5:"ى ا";s:2:"67";s:5:"ا ي";s:2:"68";s:5:" عن";s:2:"69";s:5:" هذ";s:2:"70";s:5:"ء ا";s:2:"71";s:5:"ر ا";s:2:"72";s:6:"كان";s:2:"73";s:6:"قتل";s:2:"74";s:6:"إسل";s:2:"75";s:6:"الح";s:2:"76";s:5:"وا ";s:2:"77";s:5:" إل";s:2:"78";s:5:"ا أ";s:2:"79";s:6:"بال";s:2:"80";s:5:"ن م";s:2:"81";s:6:"الس";s:2:"82";s:5:"رة ";s:2:"83";s:6:"لإس";s:2:"84";s:5:"ن و";s:2:"85";s:6:"هاب";s:2:"86";s:5:"ي و";s:2:"87";s:5:"ير ";s:2:"88";s:5:" كا";s:2:"89";s:5:"لة ";s:2:"90";s:6:"يات";s:2:"91";s:5:" لا";s:2:"92";s:6:"انت";s:2:"93";s:5:"ن أ";s:2:"94";s:6:"يكي";s:2:"95";s:6:"الر";s:2:"96";s:6:"الو";s:2:"97";s:5:"ة ف";s:2:"98";s:5:"دة ";s:2:"99";s:6:"الج";s:3:"100";s:5:"قي ";s:3:"101";s:5:"وي ";s:3:"102";s:6:"الذ";s:3:"103";s:6:"الش";s:3:"104";s:6:"امي";s:3:"105";s:6:"اني";s:3:"106";s:5:"ذه ";s:3:"107";s:5:"عن ";s:3:"108";s:6:"لما";s:3:"109";s:6:"هذه";s:3:"110";s:5:"ول ";s:3:"111";s:5:"اف ";s:3:"112";s:6:"اوي";s:3:"113";s:6:"بري";s:3:"114";s:5:"ة ل";s:3:"115";s:5:" أم";s:3:"116";s:5:" لم";s:3:"117";s:5:" ما";s:3:"118";s:5:"يد ";s:3:"119";s:5:" أي";s:3:"120";s:6:"إره";s:3:"121";s:5:"ع ا";s:3:"122";s:6:"عمل";s:3:"123";s:6:"ولا";s:3:"124";s:6:"إلى";s:3:"125";s:6:"ابي";s:3:"126";s:5:"ن ف";s:3:"127";s:6:"ختط";s:3:"128";s:5:"لك ";s:3:"129";s:5:"نه ";s:3:"130";s:5:"ني ";s:3:"131";s:5:"إن ";s:3:"132";s:6:"دين";s:3:"133";s:5:"ف ا";s:3:"134";s:6:"لذي";s:3:"135";s:5:"ي أ";s:3:"136";s:5:"ي ب";s:3:"137";s:5:" وأ";s:3:"138";s:5:"ا ع";s:3:"139";s:6:"الخ";s:3:"140";s:5:"تل ";s:3:"141";s:5:"تي ";s:3:"142";s:5:"قد ";s:3:"143";s:6:"لدي";s:3:"144";s:5:" كل";s:3:"145";s:5:" مع";s:3:"146";s:5:"اب ";s:3:"147";s:6:"اخت";s:3:"148";s:5:"ار ";s:3:"149";s:6:"الن";s:3:"150";s:6:"علا";s:3:"151";s:5:"م و";s:3:"152";s:5:"مع ";s:3:"153";s:5:"س ا";s:3:"154";s:5:"كل ";s:3:"155";s:6:"لاء";s:3:"156";s:5:"ن ب";s:3:"157";s:5:"ن ت";s:3:"158";s:5:"ي م";s:3:"159";s:6:"عرب";s:3:"160";s:5:"م ب";s:3:"161";s:5:" وق";s:3:"162";s:5:" يق";s:3:"163";s:5:"ا ل";s:3:"164";s:5:"ا م";s:3:"165";s:6:"الف";s:3:"166";s:6:"تطا";s:3:"167";s:6:"داد";s:3:"168";s:6:"لمس";s:3:"169";s:5:"له ";s:3:"170";s:6:"هذا";s:3:"171";s:5:" مح";s:3:"172";s:6:"ؤلا";s:3:"173";s:5:"بي ";s:3:"174";s:5:"ة م";s:3:"175";s:5:"ن ل";s:3:"176";s:6:"هؤل";s:3:"177";s:5:"كن ";s:3:"178";s:6:"لإر";s:3:"179";s:6:"لتي";s:3:"180";s:5:" أو";s:3:"181";s:5:" ان";s:3:"182";s:5:" عم";s:3:"183";s:5:"ا ف";s:3:"184";s:5:"ة أ";s:3:"185";s:6:"طاف";s:3:"186";s:5:"عب ";s:3:"187";s:5:"ل م";s:3:"188";s:5:"ن ع";s:3:"189";s:5:"ور ";s:3:"190";s:5:"يا ";s:3:"191";s:5:" يس";s:3:"192";s:5:"ا ت";s:3:"193";s:5:"ة ب";s:3:"194";s:6:"راء";s:3:"195";s:6:"عال";s:3:"196";s:6:"قوا";s:3:"197";s:6:"قية";s:3:"198";s:6:"لعا";s:3:"199";s:5:"م ي";s:3:"200";s:5:"مي ";s:3:"201";s:6:"مية";s:3:"202";s:6:"نية";s:3:"203";s:5:"أي ";s:3:"204";s:6:"ابا";s:3:"205";s:6:"بغد";s:3:"206";s:5:"بل ";s:3:"207";s:5:"رب ";s:3:"208";s:6:"عما";s:3:"209";s:6:"غدا";s:3:"210";s:6:"مال";s:3:"211";s:6:"ملي";s:3:"212";s:5:"يس ";s:3:"213";s:5:" بأ";s:3:"214";s:5:" بع";s:3:"215";s:5:" بغ";s:3:"216";s:5:" وم";s:3:"217";s:6:"بات";s:3:"218";s:6:"بية";s:3:"219";s:6:"ذلك";s:3:"220";s:5:"عة ";s:3:"221";s:6:"قاو";s:3:"222";s:6:"قيي";s:3:"223";s:5:"كي ";s:3:"224";s:5:"م م";s:3:"225";s:5:"ي ع";s:3:"226";s:5:" عر";s:3:"227";s:5:" قا";s:3:"228";s:5:"ا و";s:3:"229";s:5:"رى ";s:3:"230";s:5:"ق ا";s:3:"231";s:6:"وات";s:3:"232";s:5:"وم ";s:3:"233";s:5:" هؤ";s:3:"234";s:5:"ا ب";s:3:"235";s:6:"دام";s:3:"236";s:5:"دي ";s:3:"237";s:6:"رات";s:3:"238";s:6:"شعب";s:3:"239";s:6:"لان";s:3:"240";s:6:"لشع";s:3:"241";s:6:"لقو";s:3:"242";s:6:"ليا";s:3:"243";s:5:"ن ه";s:3:"244";s:5:"ي ت";s:3:"245";s:5:"ي ي";s:3:"246";s:5:" وه";s:3:"247";s:5:" يح";s:3:"248";s:6:"جرا";s:3:"249";s:6:"جما";s:3:"250";s:6:"حمد";s:3:"251";s:5:"دم ";s:3:"252";s:5:"كم ";s:3:"253";s:6:"لاو";s:3:"254";s:6:"لره";s:3:"255";s:6:"ماع";s:3:"256";s:5:"ن ق";s:3:"257";s:5:"نة ";s:3:"258";s:5:"هي ";s:3:"259";s:5:" بل";s:3:"260";s:5:" به";s:3:"261";s:5:" له";s:3:"262";s:5:" وي";s:3:"263";s:5:"ا ك";s:3:"264";s:6:"اذا";s:3:"265";s:5:"اع ";s:3:"266";s:5:"ت م";s:3:"267";s:6:"تخا";s:3:"268";s:6:"خاب";s:3:"269";s:5:"ر م";s:3:"270";s:6:"لمت";s:3:"271";s:6:"مسل";s:3:"272";s:5:"ى أ";s:3:"273";s:6:"يست";s:3:"274";s:6:"يطا";s:3:"275";s:5:" لأ";s:3:"276";s:5:" لي";s:3:"277";s:6:"أمن";s:3:"278";s:6:"است";s:3:"279";s:6:"بعض";s:3:"280";s:5:"ة ت";s:3:"281";s:5:"ري ";s:3:"282";s:6:"صدا";s:3:"283";s:5:"ق و";s:3:"284";s:6:"قول";s:3:"285";s:5:"مد ";s:3:"286";s:6:"نتخ";s:3:"287";s:6:"نفس";s:3:"288";s:6:"نها";s:3:"289";s:6:"هنا";s:3:"290";s:6:"أعم";s:3:"291";s:6:"أنه";s:3:"292";s:6:"ائن";s:3:"293";s:6:"الآ";s:3:"294";s:6:"الك";s:3:"295";s:5:"حة ";s:3:"296";s:5:"د م";s:3:"297";s:5:"ر ع";s:3:"298";s:6:"ربي";s:3:"299";}s:5:"azeri";a:300:{s:4:"lər";s:1:"0";s:3:"in ";s:1:"1";s:4:"ın ";s:1:"2";s:3:"lar";s:1:"3";s:3:"da ";s:1:"4";s:3:"an ";s:1:"5";s:3:"ir ";s:1:"6";s:4:"də ";s:1:"7";s:3:"ki ";s:1:"8";s:3:" bi";s:1:"9";s:4:"ən ";s:2:"10";s:4:"əri";s:2:"11";s:4:"arı";s:2:"12";s:4:"ər ";s:2:"13";s:3:"dir";s:2:"14";s:3:"nda";s:2:"15";s:3:" ki";s:2:"16";s:3:"rin";s:2:"17";s:4:"nın";s:2:"18";s:4:"əsi";s:2:"19";s:3:"ini";s:2:"20";s:3:" ed";s:2:"21";s:3:" qa";s:2:"22";s:4:" tə";s:2:"23";s:3:" ba";s:2:"24";s:3:" ol";s:2:"25";s:4:"ası";s:2:"26";s:4:"ilə";s:2:"27";s:4:"rın";s:2:"28";s:3:" ya";s:2:"29";s:4:"anı";s:2:"30";s:4:" və";s:2:"31";s:4:"ndə";s:2:"32";s:3:"ni ";s:2:"33";s:3:"ara";s:2:"34";s:5:"ını";s:2:"35";s:4:"ınd";s:2:"36";s:3:" bu";s:2:"37";s:3:"si ";s:2:"38";s:3:"ib ";s:2:"39";s:3:"aq ";s:2:"40";s:4:"dən";s:2:"41";s:3:"iya";s:2:"42";s:4:"nə ";s:2:"43";s:4:"rə ";s:2:"44";s:3:"n b";s:2:"45";s:4:"sın";s:2:"46";s:4:"və ";s:2:"47";s:3:"iri";s:2:"48";s:4:"lə ";s:2:"49";s:3:"nin";s:2:"50";s:4:"əli";s:2:"51";s:3:" de";s:2:"52";s:4:" mü";s:2:"53";s:3:"bir";s:2:"54";s:3:"n s";s:2:"55";s:3:"ri ";s:2:"56";s:4:"ək ";s:2:"57";s:3:" az";s:2:"58";s:4:" sə";s:2:"59";s:3:"ar ";s:2:"60";s:3:"bil";s:2:"61";s:4:"zər";s:2:"62";s:3:"bu ";s:2:"63";s:3:"dan";s:2:"64";s:3:"edi";s:2:"65";s:3:"ind";s:2:"66";s:3:"man";s:2:"67";s:3:"un ";s:2:"68";s:5:"ərə";s:2:"69";s:3:" ha";s:2:"70";s:3:"lan";s:2:"71";s:4:"yyə";s:2:"72";s:3:"iyy";s:2:"73";s:3:" il";s:2:"74";s:3:" ne";s:2:"75";s:3:"r k";s:2:"76";s:4:"ə b";s:2:"77";s:3:" is";s:2:"78";s:3:"na ";s:2:"79";s:3:"nun";s:2:"80";s:4:"ır ";s:2:"81";s:3:" da";s:2:"82";s:4:" hə";s:2:"83";s:3:"a b";s:2:"84";s:4:"inə";s:2:"85";s:3:"sin";s:2:"86";s:3:"yan";s:2:"87";s:4:"ərb";s:2:"88";s:4:" də";s:2:"89";s:4:" mə";s:2:"90";s:4:" qə";s:2:"91";s:4:"dır";s:2:"92";s:3:"li ";s:2:"93";s:3:"ola";s:2:"94";s:3:"rba";s:2:"95";s:4:"azə";s:2:"96";s:3:"can";s:2:"97";s:4:"lı ";s:2:"98";s:3:"nla";s:2:"99";s:3:" et";s:3:"100";s:4:" gö";s:3:"101";s:4:"alı";s:3:"102";s:3:"ayc";s:3:"103";s:3:"bay";s:3:"104";s:3:"eft";s:3:"105";s:3:"ist";s:3:"106";s:3:"n i";s:3:"107";s:3:"nef";s:3:"108";s:4:"tlə";s:3:"109";s:3:"yca";s:3:"110";s:4:"yət";s:3:"111";s:5:"əcə";s:3:"112";s:3:" la";s:3:"113";s:3:"ild";s:3:"114";s:4:"nı ";s:3:"115";s:3:"tin";s:3:"116";s:3:"ldi";s:3:"117";s:3:"lik";s:3:"118";s:3:"n h";s:3:"119";s:3:"n m";s:3:"120";s:3:"oyu";s:3:"121";s:3:"raq";s:3:"122";s:3:"ya ";s:3:"123";s:4:"əti";s:3:"124";s:3:" ar";s:3:"125";s:3:"ada";s:3:"126";s:4:"edə";s:3:"127";s:3:"mas";s:3:"128";s:4:"sı ";s:3:"129";s:4:"ına";s:3:"130";s:4:"ə d";s:3:"131";s:5:"ələ";s:3:"132";s:4:"ayı";s:3:"133";s:3:"iyi";s:3:"134";s:3:"lma";s:3:"135";s:4:"mək";s:3:"136";s:3:"n d";s:3:"137";s:3:"ti ";s:3:"138";s:3:"yin";s:3:"139";s:3:"yun";s:3:"140";s:4:"ət ";s:3:"141";s:4:"azı";s:3:"142";s:3:"ft ";s:3:"143";s:3:"i t";s:3:"144";s:3:"lli";s:3:"145";s:3:"n a";s:3:"146";s:3:"ra ";s:3:"147";s:4:" cə";s:3:"148";s:4:" gə";s:3:"149";s:3:" ko";s:3:"150";s:4:" nə";s:3:"151";s:3:" oy";s:3:"152";s:3:"a d";s:3:"153";s:3:"ana";s:3:"154";s:4:"cək";s:3:"155";s:3:"eyi";s:3:"156";s:3:"ilm";s:3:"157";s:3:"irl";s:3:"158";s:3:"lay";s:3:"159";s:3:"liy";s:3:"160";s:3:"lub";s:3:"161";s:4:"n ə";s:3:"162";s:3:"ril";s:3:"163";s:4:"rlə";s:3:"164";s:3:"unu";s:3:"165";s:3:"ver";s:3:"166";s:4:"ün ";s:3:"167";s:4:"ə o";s:3:"168";s:4:"əni";s:3:"169";s:3:" he";s:3:"170";s:3:" ma";s:3:"171";s:3:" on";s:3:"172";s:3:" pa";s:3:"173";s:3:"ala";s:3:"174";s:3:"dey";s:3:"175";s:3:"i m";s:3:"176";s:3:"ima";s:3:"177";s:4:"lmə";s:3:"178";s:4:"mət";s:3:"179";s:3:"par";s:3:"180";s:4:"yə ";s:3:"181";s:4:"ətl";s:3:"182";s:3:" al";s:3:"183";s:3:" mi";s:3:"184";s:3:" sa";s:3:"185";s:4:" əl";s:3:"186";s:4:"adı";s:3:"187";s:4:"akı";s:3:"188";s:3:"and";s:3:"189";s:3:"ard";s:3:"190";s:3:"art";s:3:"191";s:3:"ayi";s:3:"192";s:3:"i a";s:3:"193";s:3:"i q";s:3:"194";s:3:"i y";s:3:"195";s:3:"ili";s:3:"196";s:3:"ill";s:3:"197";s:4:"isə";s:3:"198";s:3:"n o";s:3:"199";s:3:"n q";s:3:"200";s:3:"olu";s:3:"201";s:3:"rla";s:3:"202";s:4:"stə";s:3:"203";s:4:"sə ";s:3:"204";s:3:"tan";s:3:"205";s:3:"tel";s:3:"206";s:3:"yar";s:3:"207";s:5:"ədə";s:3:"208";s:3:" me";s:3:"209";s:4:" rə";s:3:"210";s:3:" ve";s:3:"211";s:3:" ye";s:3:"212";s:3:"a k";s:3:"213";s:3:"at ";s:3:"214";s:4:"baş";s:3:"215";s:3:"diy";s:3:"216";s:3:"ent";s:3:"217";s:3:"eti";s:3:"218";s:4:"həs";s:3:"219";s:3:"i i";s:3:"220";s:3:"ik ";s:3:"221";s:3:"la ";s:3:"222";s:4:"miş";s:3:"223";s:3:"n n";s:3:"224";s:3:"nu ";s:3:"225";s:3:"qar";s:3:"226";s:3:"ran";s:3:"227";s:4:"tər";s:3:"228";s:3:"xan";s:3:"229";s:4:"ə a";s:3:"230";s:4:"ə g";s:3:"231";s:4:"ə t";s:3:"232";s:4:" dü";s:3:"233";s:3:"ama";s:3:"234";s:3:"b k";s:3:"235";s:3:"dil";s:3:"236";s:3:"era";s:3:"237";s:3:"etm";s:3:"238";s:3:"i b";s:3:"239";s:3:"kil";s:3:"240";s:3:"mil";s:3:"241";s:3:"n r";s:3:"242";s:3:"qla";s:3:"243";s:3:"r s";s:3:"244";s:3:"ras";s:3:"245";s:3:"siy";s:3:"246";s:3:"son";s:3:"247";s:3:"tim";s:3:"248";s:3:"yer";s:3:"249";s:4:"ə k";s:3:"250";s:4:" gü";s:3:"251";s:3:" so";s:3:"252";s:4:" sö";s:3:"253";s:3:" te";s:3:"254";s:3:" xa";s:3:"255";s:3:"ai ";s:3:"256";s:3:"bar";s:3:"257";s:3:"cti";s:3:"258";s:3:"di ";s:3:"259";s:3:"eri";s:3:"260";s:4:"gör";s:3:"261";s:4:"gün";s:3:"262";s:4:"gəl";s:3:"263";s:4:"hbə";s:3:"264";s:4:"ihə";s:3:"265";s:3:"iki";s:3:"266";s:3:"isi";s:3:"267";s:3:"lin";s:3:"268";s:3:"mai";s:3:"269";s:3:"maq";s:3:"270";s:3:"n k";s:3:"271";s:3:"n t";s:3:"272";s:3:"n v";s:3:"273";s:3:"onu";s:3:"274";s:3:"qan";s:3:"275";s:4:"qəz";s:3:"276";s:4:"tə ";s:3:"277";s:3:"xal";s:3:"278";s:3:"yib";s:3:"279";s:3:"yih";s:3:"280";s:3:"zet";s:3:"281";s:4:"zır";s:3:"282";s:4:"ıb ";s:3:"283";s:4:"ə m";s:3:"284";s:4:"əze";s:3:"285";s:3:" br";s:3:"286";s:3:" in";s:3:"287";s:4:" i̇";s:3:"288";s:3:" pr";s:3:"289";s:3:" ta";s:3:"290";s:3:" to";s:3:"291";s:5:" üç";s:3:"292";s:3:"a o";s:3:"293";s:3:"ali";s:3:"294";s:3:"ani";s:3:"295";s:3:"anl";s:3:"296";s:3:"aql";s:3:"297";s:3:"azi";s:3:"298";s:3:"bri";s:3:"299";}s:7:"bengali";a:300:{s:7:"ার ";s:1:"0";s:7:"য় ";s:1:"1";s:9:"েয়";s:1:"2";s:9:"য়া";s:1:"3";s:7:" কর";s:1:"4";s:7:"েত ";s:1:"5";s:7:" কা";s:1:"6";s:7:" পা";s:1:"7";s:7:" তা";s:1:"8";s:7:"না ";s:1:"9";s:9:"ায়";s:2:"10";s:7:"ের ";s:2:"11";s:9:"য়ে";s:2:"12";s:7:" বা";s:2:"13";s:7:"েব ";s:2:"14";s:7:" যা";s:2:"15";s:7:" হে";s:2:"16";s:7:" সা";s:2:"17";s:7:"ান ";s:2:"18";s:7:"েছ ";s:2:"19";s:7:" িন";s:2:"20";s:7:"েল ";s:2:"21";s:7:" িদ";s:2:"22";s:7:" না";s:2:"23";s:7:" িব";s:2:"24";s:7:"েক ";s:2:"25";s:7:"লা ";s:2:"26";s:7:"তা ";s:2:"27";s:7:" বઘ";s:2:"28";s:7:" িক";s:2:"29";s:9:"করে";s:2:"30";s:7:" পચ";s:2:"31";s:9:"াের";s:2:"32";s:9:"িনে";s:2:"33";s:7:"রা ";s:2:"34";s:7:" োব";s:2:"35";s:7:"কা ";s:2:"36";s:7:" কে";s:2:"37";s:7:" টা";s:2:"38";s:7:"র ক";s:2:"39";s:9:"েলা";s:2:"40";s:7:" োক";s:2:"41";s:7:" মা";s:2:"42";s:7:" োদ";s:2:"43";s:7:" োম";s:2:"44";s:7:"দর ";s:2:"45";s:7:"়া ";s:2:"46";s:9:"িদে";s:2:"47";s:9:"াকা";s:2:"48";s:9:"়েছ";s:2:"49";s:9:"েদর";s:2:"50";s:7:" আে";s:2:"51";s:5:" ও ";s:2:"52";s:7:"াল ";s:2:"53";s:7:"িট ";s:2:"54";s:7:" মু";s:2:"55";s:9:"কের";s:2:"56";s:9:"হয়";s:2:"57";s:9:"করা";s:2:"58";s:7:"পর ";s:2:"59";s:9:"পাে";s:2:"60";s:7:" এক";s:2:"61";s:7:" পদ";s:2:"62";s:9:"টাক";s:2:"63";s:7:"ড় ";s:2:"64";s:9:"কান";s:2:"65";s:7:"টা ";s:2:"66";s:9:"দગা";s:2:"67";s:9:"পদગ";s:2:"68";s:9:"াড়";s:2:"69";s:9:"োকা";s:2:"70";s:9:"ওয়";s:2:"71";s:9:"কাপ";s:2:"72";s:9:"হেয";s:2:"73";s:9:"েনর";s:2:"74";s:7:" হয";s:2:"75";s:9:"দেয";s:2:"76";s:7:"নর ";s:2:"77";s:9:"ানা";s:2:"78";s:9:"ােল";s:2:"79";s:7:" আর";s:2:"80";s:5:" ় ";s:2:"81";s:9:"বઘব";s:2:"82";s:9:"িয়";s:2:"83";s:7:" দা";s:2:"84";s:7:" সম";s:2:"85";s:9:"কার";s:2:"86";s:9:"হার";s:2:"87";s:7:"াই ";s:2:"88";s:9:"ড়া";s:2:"89";s:9:"িবি";s:2:"90";s:7:" রা";s:2:"91";s:7:" লা";s:2:"92";s:9:"নার";s:2:"93";s:9:"বহা";s:2:"94";s:7:"বা ";s:2:"95";s:9:"যায";s:2:"96";s:7:"েন ";s:2:"97";s:9:"ઘবহ";s:2:"98";s:7:" ভা";s:2:"99";s:7:" সে";s:3:"100";s:7:" োয";s:3:"101";s:7:"রর ";s:3:"102";s:9:"়ার";s:3:"103";s:9:"়াল";s:3:"104";s:7:"ગা ";s:3:"105";s:9:"থেক";s:3:"106";s:9:"ভাে";s:3:"107";s:7:"়ে ";s:3:"108";s:9:"েরর";s:3:"109";s:7:" ধর";s:3:"110";s:7:" হা";s:3:"111";s:7:"নઘ ";s:3:"112";s:9:"রেন";s:3:"113";s:9:"ােব";s:3:"114";s:9:"িড়";s:3:"115";s:7:"ির ";s:3:"116";s:7:" োথ";s:3:"117";s:9:"তার";s:3:"118";s:9:"বিভ";s:3:"119";s:9:"রেত";s:3:"120";s:9:"সাে";s:3:"121";s:9:"াকে";s:3:"122";s:9:"ােত";s:3:"123";s:9:"িভਭ";s:3:"124";s:7:"ে ব";s:3:"125";s:9:"োথে";s:3:"126";s:7:" োপ";s:3:"127";s:7:" োস";s:3:"128";s:9:"বার";s:3:"129";s:7:"ভਭ ";s:3:"130";s:7:"রন ";s:3:"131";s:7:"াম ";s:3:"132";s:7:" এখ";s:3:"133";s:7:"আর ";s:3:"134";s:9:"কাে";s:3:"135";s:7:"দন ";s:3:"136";s:9:"সাজ";s:3:"137";s:9:"ােক";s:3:"138";s:9:"ােন";s:3:"139";s:9:"েনা";s:3:"140";s:7:" ঘে";s:3:"141";s:7:" তে";s:3:"142";s:7:" রে";s:3:"143";s:9:"তেব";s:3:"144";s:7:"বন ";s:3:"145";s:9:"বઘা";s:3:"146";s:9:"েড়";s:3:"147";s:9:"েবন";s:3:"148";s:7:" খু";s:3:"149";s:7:" চা";s:3:"150";s:7:" সু";s:3:"151";s:7:"কে ";s:3:"152";s:9:"ধরে";s:3:"153";s:7:"র ো";s:3:"154";s:7:"় ি";s:3:"155";s:7:"া ি";s:3:"156";s:9:"ােথ";s:3:"157";s:9:"াਠা";s:3:"158";s:7:"িদ ";s:3:"159";s:7:"িন ";s:3:"160";s:7:" অন";s:3:"161";s:7:" আপ";s:3:"162";s:7:" আম";s:3:"163";s:7:" থা";s:3:"164";s:7:" বચ";s:3:"165";s:7:" োফ";s:3:"166";s:7:" ৌত";s:3:"167";s:9:"ঘের";s:3:"168";s:7:"তে ";s:3:"169";s:9:"ময়";s:3:"170";s:9:"যাਠ";s:3:"171";s:7:"র স";s:3:"172";s:9:"রাখ";s:3:"173";s:7:"া ব";s:3:"174";s:7:"া ো";s:3:"175";s:9:"ালা";s:3:"176";s:7:"িক ";s:3:"177";s:7:"িশ ";s:3:"178";s:7:"েখ ";s:3:"179";s:7:" এর";s:3:"180";s:7:" চઓ";s:3:"181";s:7:" িড";s:3:"182";s:7:"খন ";s:3:"183";s:9:"ড়ে";s:3:"184";s:7:"র ব";s:3:"185";s:7:"়র ";s:3:"186";s:9:"াইে";s:3:"187";s:9:"ােদ";s:3:"188";s:9:"িদন";s:3:"189";s:9:"েরন";s:3:"190";s:7:" তੴ";s:3:"191";s:9:"ছাড";s:3:"192";s:9:"জনઘ";s:3:"193";s:9:"তাই";s:3:"194";s:7:"মা ";s:3:"195";s:9:"মাে";s:3:"196";s:9:"লার";s:3:"197";s:7:"াজ ";s:3:"198";s:9:"াতা";s:3:"199";s:9:"ামা";s:3:"200";s:9:"ਊেল";s:3:"201";s:9:"ગার";s:3:"202";s:7:" সব";s:3:"203";s:9:"আপন";s:3:"204";s:9:"একট";s:3:"205";s:9:"কাি";s:3:"206";s:9:"জাই";s:3:"207";s:7:"টর ";s:3:"208";s:9:"ডজা";s:3:"209";s:9:"দেখ";s:3:"210";s:9:"পনা";s:3:"211";s:7:"রও ";s:3:"212";s:7:"লে ";s:3:"213";s:9:"হেব";s:3:"214";s:9:"াজা";s:3:"215";s:9:"ািট";s:3:"216";s:9:"িডজ";s:3:"217";s:7:"েথ ";s:3:"218";s:7:" এব";s:3:"219";s:7:" জন";s:3:"220";s:7:" জা";s:3:"221";s:9:"আমা";s:3:"222";s:9:"গেল";s:3:"223";s:9:"জান";s:3:"224";s:9:"নেত";s:3:"225";s:9:"বিশ";s:3:"226";s:9:"মুে";s:3:"227";s:9:"মেয";s:3:"228";s:7:"র প";s:3:"229";s:7:"সে ";s:3:"230";s:9:"হেল";s:3:"231";s:7:"় ো";s:3:"232";s:7:"া হ";s:3:"233";s:9:"াওয";s:3:"234";s:9:"োমক";s:3:"235";s:9:"ઘাি";s:3:"236";s:7:" অে";s:3:"237";s:5:" ট ";s:3:"238";s:7:" োগ";s:3:"239";s:7:" োন";s:3:"240";s:7:"জর ";s:3:"241";s:9:"তির";s:3:"242";s:9:"দাম";s:3:"243";s:9:"পড়";s:3:"244";s:9:"পার";s:3:"245";s:9:"বাঘ";s:3:"246";s:9:"মকা";s:3:"247";s:9:"মাম";s:3:"248";s:9:"য়র";s:3:"249";s:9:"যাে";s:3:"250";s:7:"র ম";s:3:"251";s:7:"রে ";s:3:"252";s:7:"লর ";s:3:"253";s:7:"া ক";s:3:"254";s:7:"াগ ";s:3:"255";s:9:"াবা";s:3:"256";s:9:"ারা";s:3:"257";s:9:"ািন";s:3:"258";s:7:"ে গ";s:3:"259";s:7:"েগ ";s:3:"260";s:9:"েলর";s:3:"261";s:9:"োদখ";s:3:"262";s:9:"োবি";s:3:"263";s:7:"ઓল ";s:3:"264";s:7:" দে";s:3:"265";s:7:" পু";s:3:"266";s:7:" বে";s:3:"267";s:9:"অেন";s:3:"268";s:9:"এখন";s:3:"269";s:9:"কছু";s:3:"270";s:9:"কাল";s:3:"271";s:9:"গেয";s:3:"272";s:7:"ছন ";s:3:"273";s:7:"ত প";s:3:"274";s:9:"নেয";s:3:"275";s:9:"পাি";s:3:"276";s:7:"মন ";s:3:"277";s:7:"র আ";s:3:"278";s:9:"রার";s:3:"279";s:7:"াও ";s:3:"280";s:7:"াপ ";s:3:"281";s:9:"িকছ";s:3:"282";s:9:"িগে";s:3:"283";s:9:"েছন";s:3:"284";s:9:"েজর";s:3:"285";s:9:"োমা";s:3:"286";s:9:"োমে";s:3:"287";s:9:"ৌতি";s:3:"288";s:9:"ઘাে";s:3:"289";s:3:" ' ";s:3:"290";s:7:" এছ";s:3:"291";s:7:" ছা";s:3:"292";s:7:" বল";s:3:"293";s:7:" যি";s:3:"294";s:7:" শি";s:3:"295";s:7:" িম";s:3:"296";s:7:" োল";s:3:"297";s:9:"এছা";s:3:"298";s:7:"খা ";s:3:"299";}s:9:"bulgarian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"то ";s:1:"2";s:5:" пр";s:1:"3";s:5:" за";s:1:"4";s:5:"та ";s:1:"5";s:5:" по";s:1:"6";s:6:"ите";s:1:"7";s:5:"те ";s:1:"8";s:5:"а п";s:1:"9";s:5:"а с";s:2:"10";s:5:" от";s:2:"11";s:5:"за ";s:2:"12";s:6:"ата";s:2:"13";s:5:"ия ";s:2:"14";s:4:" в ";s:2:"15";s:5:"е н";s:2:"16";s:5:" да";s:2:"17";s:5:"а н";s:2:"18";s:5:" се";s:2:"19";s:5:" ко";s:2:"20";s:5:"да ";s:2:"21";s:5:"от ";s:2:"22";s:6:"ани";s:2:"23";s:6:"пре";s:2:"24";s:5:"не ";s:2:"25";s:6:"ени";s:2:"26";s:5:"о н";s:2:"27";s:5:"ни ";s:2:"28";s:5:"се ";s:2:"29";s:4:" и ";s:2:"30";s:5:"но ";s:2:"31";s:6:"ане";s:2:"32";s:6:"ето";s:2:"33";s:5:"а в";s:2:"34";s:5:"ва ";s:2:"35";s:6:"ван";s:2:"36";s:5:"е п";s:2:"37";s:5:"а о";s:2:"38";s:6:"ото";s:2:"39";s:6:"ран";s:2:"40";s:5:"ат ";s:2:"41";s:6:"ред";s:2:"42";s:5:" не";s:2:"43";s:5:"а д";s:2:"44";s:5:"и п";s:2:"45";s:5:" до";s:2:"46";s:6:"про";s:2:"47";s:5:" съ";s:2:"48";s:5:"ли ";s:2:"49";s:6:"при";s:2:"50";s:6:"ния";s:2:"51";s:6:"ски";s:2:"52";s:6:"тел";s:2:"53";s:5:"а и";s:2:"54";s:5:"по ";s:2:"55";s:5:"ри ";s:2:"56";s:4:" е ";s:2:"57";s:5:" ка";s:2:"58";s:6:"ира";s:2:"59";s:6:"кат";s:2:"60";s:6:"ние";s:2:"61";s:6:"нит";s:2:"62";s:5:"е з";s:2:"63";s:5:"и с";s:2:"64";s:5:"о с";s:2:"65";s:6:"ост";s:2:"66";s:5:"че ";s:2:"67";s:5:" ра";s:2:"68";s:6:"ист";s:2:"69";s:5:"о п";s:2:"70";s:5:" из";s:2:"71";s:5:" са";s:2:"72";s:5:"е д";s:2:"73";s:6:"ини";s:2:"74";s:5:"ки ";s:2:"75";s:6:"мин";s:2:"76";s:5:" ми";s:2:"77";s:5:"а б";s:2:"78";s:6:"ава";s:2:"79";s:5:"е в";s:2:"80";s:5:"ие ";s:2:"81";s:6:"пол";s:2:"82";s:6:"ств";s:2:"83";s:5:"т н";s:2:"84";s:5:" въ";s:2:"85";s:5:" ст";s:2:"86";s:5:" то";s:2:"87";s:6:"аза";s:2:"88";s:5:"е о";s:2:"89";s:5:"ов ";s:2:"90";s:5:"ст ";s:2:"91";s:5:"ът ";s:2:"92";s:5:"и н";s:2:"93";s:6:"ият";s:2:"94";s:6:"нат";s:2:"95";s:5:"ра ";s:2:"96";s:5:" бъ";s:2:"97";s:5:" че";s:2:"98";s:6:"алн";s:2:"99";s:5:"е с";s:3:"100";s:5:"ен ";s:3:"101";s:6:"ест";s:3:"102";s:5:"и д";s:3:"103";s:6:"лен";s:3:"104";s:6:"нис";s:3:"105";s:5:"о о";s:3:"106";s:6:"ови";s:3:"107";s:5:" об";s:3:"108";s:5:" сл";s:3:"109";s:5:"а р";s:3:"110";s:6:"ато";s:3:"111";s:6:"кон";s:3:"112";s:6:"нос";s:3:"113";s:6:"ров";s:3:"114";s:5:"ще ";s:3:"115";s:5:" ре";s:3:"116";s:4:" с ";s:3:"117";s:5:" сп";s:3:"118";s:6:"ват";s:3:"119";s:6:"еше";s:3:"120";s:5:"и в";s:3:"121";s:6:"иет";s:3:"122";s:5:"о в";s:3:"123";s:6:"ове";s:3:"124";s:6:"ста";s:3:"125";s:5:"а к";s:3:"126";s:5:"а т";s:3:"127";s:6:"дат";s:3:"128";s:6:"ент";s:3:"129";s:5:"ка ";s:3:"130";s:6:"лед";s:3:"131";s:6:"нет";s:3:"132";s:6:"ори";s:3:"133";s:6:"стр";s:3:"134";s:6:"стъ";s:3:"135";s:5:"ти ";s:3:"136";s:6:"тър";s:3:"137";s:5:" те";s:3:"138";s:5:"а з";s:3:"139";s:5:"а м";s:3:"140";s:5:"ад ";s:3:"141";s:6:"ана";s:3:"142";s:6:"ено";s:3:"143";s:5:"и о";s:3:"144";s:6:"ина";s:3:"145";s:6:"ити";s:3:"146";s:5:"ма ";s:3:"147";s:6:"ска";s:3:"148";s:6:"сле";s:3:"149";s:6:"тво";s:3:"150";s:6:"тер";s:3:"151";s:6:"ция";s:3:"152";s:5:"ят ";s:3:"153";s:5:" бе";s:3:"154";s:5:" де";s:3:"155";s:5:" па";s:3:"156";s:6:"ате";s:3:"157";s:6:"вен";s:3:"158";s:5:"ви ";s:3:"159";s:6:"вит";s:3:"160";s:5:"и з";s:3:"161";s:5:"и и";s:3:"162";s:6:"нар";s:3:"163";s:6:"нов";s:3:"164";s:6:"ова";s:3:"165";s:6:"пов";s:3:"166";s:6:"рез";s:3:"167";s:6:"рит";s:3:"168";s:5:"са ";s:3:"169";s:6:"ята";s:3:"170";s:5:" го";s:3:"171";s:5:" ще";s:3:"172";s:6:"али";s:3:"173";s:5:"в п";s:3:"174";s:6:"гра";s:3:"175";s:5:"е и";s:3:"176";s:6:"еди";s:3:"177";s:6:"ели";s:3:"178";s:6:"или";s:3:"179";s:6:"каз";s:3:"180";s:6:"кит";s:3:"181";s:6:"лно";s:3:"182";s:6:"мен";s:3:"183";s:6:"оли";s:3:"184";s:6:"раз";s:3:"185";s:5:" ве";s:3:"186";s:5:" гр";s:3:"187";s:5:" им";s:3:"188";s:5:" ме";s:3:"189";s:5:" пъ";s:3:"190";s:6:"ави";s:3:"191";s:6:"ако";s:3:"192";s:6:"ача";s:3:"193";s:6:"вин";s:3:"194";s:5:"во ";s:3:"195";s:6:"гов";s:3:"196";s:6:"дан";s:3:"197";s:5:"ди ";s:3:"198";s:5:"до ";s:3:"199";s:5:"ед ";s:3:"200";s:6:"ери";s:3:"201";s:6:"еро";s:3:"202";s:6:"жда";s:3:"203";s:6:"ито";s:3:"204";s:6:"ков";s:3:"205";s:6:"кол";s:3:"206";s:6:"лни";s:3:"207";s:6:"мер";s:3:"208";s:6:"нач";s:3:"209";s:5:"о з";s:3:"210";s:6:"ола";s:3:"211";s:5:"он ";s:3:"212";s:6:"она";s:3:"213";s:6:"пра";s:3:"214";s:6:"рав";s:3:"215";s:6:"рем";s:3:"216";s:6:"сия";s:3:"217";s:6:"сти";s:3:"218";s:5:"т п";s:3:"219";s:6:"тан";s:3:"220";s:5:"ха ";s:3:"221";s:5:"ше ";s:3:"222";s:6:"шен";s:3:"223";s:6:"ълг";s:3:"224";s:5:" ба";s:3:"225";s:5:" си";s:3:"226";s:6:"аро";s:3:"227";s:6:"бъл";s:3:"228";s:5:"в р";s:3:"229";s:6:"гар";s:3:"230";s:5:"е е";s:3:"231";s:6:"елн";s:3:"232";s:6:"еме";s:3:"233";s:6:"ико";s:3:"234";s:6:"има";s:3:"235";s:5:"ко ";s:3:"236";s:6:"кои";s:3:"237";s:5:"ла ";s:3:"238";s:6:"лга";s:3:"239";s:5:"о д";s:3:"240";s:6:"ози";s:3:"241";s:6:"оит";s:3:"242";s:6:"под";s:3:"243";s:6:"рес";s:3:"244";s:6:"рие";s:3:"245";s:6:"сто";s:3:"246";s:5:"т к";s:3:"247";s:5:"т м";s:3:"248";s:5:"т с";s:3:"249";s:6:"уст";s:3:"250";s:5:" би";s:3:"251";s:5:" дв";s:3:"252";s:5:" дъ";s:3:"253";s:5:" ма";s:3:"254";s:5:" мо";s:3:"255";s:5:" ни";s:3:"256";s:5:" ос";s:3:"257";s:6:"ала";s:3:"258";s:6:"анс";s:3:"259";s:6:"ара";s:3:"260";s:6:"ати";s:3:"261";s:6:"аци";s:3:"262";s:6:"беш";s:3:"263";s:6:"вър";s:3:"264";s:5:"е р";s:3:"265";s:6:"едв";s:3:"266";s:6:"ема";s:3:"267";s:6:"жав";s:3:"268";s:5:"и к";s:3:"269";s:6:"иал";s:3:"270";s:6:"ица";s:3:"271";s:6:"иче";s:3:"272";s:6:"кия";s:3:"273";s:6:"лит";s:3:"274";s:5:"о б";s:3:"275";s:6:"ово";s:3:"276";s:6:"оди";s:3:"277";s:6:"ока";s:3:"278";s:6:"пос";s:3:"279";s:6:"род";s:3:"280";s:6:"сед";s:3:"281";s:6:"слу";s:3:"282";s:5:"т и";s:3:"283";s:6:"тов";s:3:"284";s:6:"ува";s:3:"285";s:6:"циа";s:3:"286";s:6:"чес";s:3:"287";s:5:"я з";s:3:"288";s:5:" во";s:3:"289";s:5:" ил";s:3:"290";s:5:" ск";s:3:"291";s:5:" тр";s:3:"292";s:5:" це";s:3:"293";s:6:"ами";s:3:"294";s:6:"ари";s:3:"295";s:6:"бат";s:3:"296";s:5:"би ";s:3:"297";s:6:"бра";s:3:"298";s:6:"бъд";s:3:"299";}s:7:"cebuano";a:300:{s:3:"ng ";s:1:"0";s:3:"sa ";s:1:"1";s:3:" sa";s:1:"2";s:3:"ang";s:1:"3";s:3:"ga ";s:1:"4";s:3:"nga";s:1:"5";s:3:" ka";s:1:"6";s:3:" ng";s:1:"7";s:3:"an ";s:1:"8";s:3:" an";s:1:"9";s:3:" na";s:2:"10";s:3:" ma";s:2:"11";s:3:" ni";s:2:"12";s:3:"a s";s:2:"13";s:3:"a n";s:2:"14";s:3:"on ";s:2:"15";s:3:" pa";s:2:"16";s:3:" si";s:2:"17";s:3:"a k";s:2:"18";s:3:"a m";s:2:"19";s:3:" ba";s:2:"20";s:3:"ong";s:2:"21";s:3:"a i";s:2:"22";s:3:"ila";s:2:"23";s:3:" mg";s:2:"24";s:3:"mga";s:2:"25";s:3:"a p";s:2:"26";s:3:"iya";s:2:"27";s:3:"a a";s:2:"28";s:3:"ay ";s:2:"29";s:3:"ka ";s:2:"30";s:3:"ala";s:2:"31";s:3:"ing";s:2:"32";s:3:"g m";s:2:"33";s:3:"n s";s:2:"34";s:3:"g n";s:2:"35";s:3:"lan";s:2:"36";s:3:" gi";s:2:"37";s:3:"na ";s:2:"38";s:3:"ni ";s:2:"39";s:3:"o s";s:2:"40";s:3:"g p";s:2:"41";s:3:"n n";s:2:"42";s:3:" da";s:2:"43";s:3:"ag ";s:2:"44";s:3:"pag";s:2:"45";s:3:"g s";s:2:"46";s:3:"yan";s:2:"47";s:3:"ayo";s:2:"48";s:3:"o n";s:2:"49";s:3:"si ";s:2:"50";s:3:" mo";s:2:"51";s:3:"a b";s:2:"52";s:3:"g a";s:2:"53";s:3:"ail";s:2:"54";s:3:"g b";s:2:"55";s:3:"han";s:2:"56";s:3:"a d";s:2:"57";s:3:"asu";s:2:"58";s:3:"nag";s:2:"59";s:3:"ya ";s:2:"60";s:3:"man";s:2:"61";s:3:"ne ";s:2:"62";s:3:"pan";s:2:"63";s:3:"kon";s:2:"64";s:3:" il";s:2:"65";s:3:" la";s:2:"66";s:3:"aka";s:2:"67";s:3:"ako";s:2:"68";s:3:"ana";s:2:"69";s:3:"bas";s:2:"70";s:3:"ko ";s:2:"71";s:3:"od ";s:2:"72";s:3:"yo ";s:2:"73";s:3:" di";s:2:"74";s:3:" ko";s:2:"75";s:3:" ug";s:2:"76";s:3:"a u";s:2:"77";s:3:"g k";s:2:"78";s:3:"kan";s:2:"79";s:3:"la ";s:2:"80";s:3:"len";s:2:"81";s:3:"sur";s:2:"82";s:3:"ug ";s:2:"83";s:3:" ai";s:2:"84";s:3:"apa";s:2:"85";s:3:"aw ";s:2:"86";s:3:"d s";s:2:"87";s:3:"g d";s:2:"88";s:3:"g g";s:2:"89";s:3:"ile";s:2:"90";s:3:"nin";s:2:"91";s:3:" iy";s:2:"92";s:3:" su";s:2:"93";s:3:"ene";s:2:"94";s:3:"og ";s:2:"95";s:3:"ot ";s:2:"96";s:3:"aba";s:2:"97";s:3:"aha";s:2:"98";s:3:"as ";s:2:"99";s:3:"imo";s:3:"100";s:3:" ki";s:3:"101";s:3:"a t";s:3:"102";s:3:"aga";s:3:"103";s:3:"ban";s:3:"104";s:3:"ero";s:3:"105";s:3:"nan";s:3:"106";s:3:"o k";s:3:"107";s:3:"ran";s:3:"108";s:3:"ron";s:3:"109";s:3:"sil";s:3:"110";s:3:"una";s:3:"111";s:3:"usa";s:3:"112";s:3:" us";s:3:"113";s:3:"a g";s:3:"114";s:3:"ahi";s:3:"115";s:3:"ani";s:3:"116";s:3:"er ";s:3:"117";s:3:"ha ";s:3:"118";s:3:"i a";s:3:"119";s:3:"rer";s:3:"120";s:3:"yon";s:3:"121";s:3:" pu";s:3:"122";s:3:"ini";s:3:"123";s:3:"nak";s:3:"124";s:3:"ro ";s:3:"125";s:3:"to ";s:3:"126";s:3:"ure";s:3:"127";s:3:" ed";s:3:"128";s:3:" og";s:3:"129";s:3:" wa";s:3:"130";s:3:"ili";s:3:"131";s:3:"mo ";s:3:"132";s:3:"n a";s:3:"133";s:3:"nd ";s:3:"134";s:3:"o a";s:3:"135";s:3:" ad";s:3:"136";s:3:" du";s:3:"137";s:3:" pr";s:3:"138";s:3:"aro";s:3:"139";s:3:"i s";s:3:"140";s:3:"ma ";s:3:"141";s:3:"n m";s:3:"142";s:3:"ulo";s:3:"143";s:3:"und";s:3:"144";s:3:" ta";s:3:"145";s:3:"ara";s:3:"146";s:3:"asa";s:3:"147";s:3:"ato";s:3:"148";s:3:"awa";s:3:"149";s:3:"dmu";s:3:"150";s:3:"e n";s:3:"151";s:3:"edm";s:3:"152";s:3:"ina";s:3:"153";s:3:"mak";s:3:"154";s:3:"mun";s:3:"155";s:3:"niy";s:3:"156";s:3:"san";s:3:"157";s:3:"wa ";s:3:"158";s:3:" tu";s:3:"159";s:3:" un";s:3:"160";s:3:"a l";s:3:"161";s:3:"bay";s:3:"162";s:3:"iga";s:3:"163";s:3:"ika";s:3:"164";s:3:"ita";s:3:"165";s:3:"kin";s:3:"166";s:3:"lis";s:3:"167";s:3:"may";s:3:"168";s:3:"os ";s:3:"169";s:3:" ar";s:3:"170";s:3:"ad ";s:3:"171";s:3:"ali";s:3:"172";s:3:"ama";s:3:"173";s:3:"ers";s:3:"174";s:3:"ipa";s:3:"175";s:3:"isa";s:3:"176";s:3:"mao";s:3:"177";s:3:"nim";s:3:"178";s:3:"t s";s:3:"179";s:3:"tin";s:3:"180";s:3:" ak";s:3:"181";s:3:" ap";s:3:"182";s:3:" hi";s:3:"183";s:3:"abo";s:3:"184";s:3:"agp";s:3:"185";s:3:"ano";s:3:"186";s:3:"ata";s:3:"187";s:3:"g i";s:3:"188";s:3:"gan";s:3:"189";s:3:"gka";s:3:"190";s:3:"gpa";s:3:"191";s:3:"i m";s:3:"192";s:3:"iha";s:3:"193";s:3:"k s";s:3:"194";s:3:"law";s:3:"195";s:3:"or ";s:3:"196";s:3:"rs ";s:3:"197";s:3:"siy";s:3:"198";s:3:"tag";s:3:"199";s:3:" al";s:3:"200";s:3:" at";s:3:"201";s:3:" ha";s:3:"202";s:3:" hu";s:3:"203";s:3:" im";s:3:"204";s:3:"a h";s:3:"205";s:3:"bu ";s:3:"206";s:3:"e s";s:3:"207";s:3:"gma";s:3:"208";s:3:"kas";s:3:"209";s:3:"lag";s:3:"210";s:3:"mon";s:3:"211";s:3:"nah";s:3:"212";s:3:"ngo";s:3:"213";s:3:"r s";s:3:"214";s:3:"ra ";s:3:"215";s:3:"sab";s:3:"216";s:3:"sam";s:3:"217";s:3:"sul";s:3:"218";s:3:"uba";s:3:"219";s:3:"uha";s:3:"220";s:3:" lo";s:3:"221";s:3:" re";s:3:"222";s:3:"ada";s:3:"223";s:3:"aki";s:3:"224";s:3:"aya";s:3:"225";s:3:"bah";s:3:"226";s:3:"ce ";s:3:"227";s:3:"d n";s:3:"228";s:3:"lab";s:3:"229";s:3:"pa ";s:3:"230";s:3:"pak";s:3:"231";s:3:"s n";s:3:"232";s:3:"s s";s:3:"233";s:3:"tan";s:3:"234";s:3:"taw";s:3:"235";s:3:"te ";s:3:"236";s:3:"uma";s:3:"237";s:3:"ura";s:3:"238";s:3:" in";s:3:"239";s:3:" lu";s:3:"240";s:3:"a c";s:3:"241";s:3:"abi";s:3:"242";s:3:"at ";s:3:"243";s:3:"awo";s:3:"244";s:3:"bat";s:3:"245";s:3:"dal";s:3:"246";s:3:"dla";s:3:"247";s:3:"ele";s:3:"248";s:3:"g t";s:3:"249";s:3:"g u";s:3:"250";s:3:"gay";s:3:"251";s:3:"go ";s:3:"252";s:3:"hab";s:3:"253";s:3:"hin";s:3:"254";s:3:"i e";s:3:"255";s:3:"i n";s:3:"256";s:3:"kab";s:3:"257";s:3:"kap";s:3:"258";s:3:"lay";s:3:"259";s:3:"lin";s:3:"260";s:3:"nil";s:3:"261";s:3:"pam";s:3:"262";s:3:"pas";s:3:"263";s:3:"pro";s:3:"264";s:3:"pul";s:3:"265";s:3:"ta ";s:3:"266";s:3:"ton";s:3:"267";s:3:"uga";s:3:"268";s:3:"ugm";s:3:"269";s:3:"unt";s:3:"270";s:3:" co";s:3:"271";s:3:" gu";s:3:"272";s:3:" mi";s:3:"273";s:3:" pi";s:3:"274";s:3:" ti";s:3:"275";s:3:"a o";s:3:"276";s:3:"abu";s:3:"277";s:3:"adl";s:3:"278";s:3:"ado";s:3:"279";s:3:"agh";s:3:"280";s:3:"agk";s:3:"281";s:3:"ao ";s:3:"282";s:3:"art";s:3:"283";s:3:"bal";s:3:"284";s:3:"cit";s:3:"285";s:3:"di ";s:3:"286";s:3:"dto";s:3:"287";s:3:"dun";s:3:"288";s:3:"ent";s:3:"289";s:3:"g e";s:3:"290";s:3:"gon";s:3:"291";s:3:"gug";s:3:"292";s:3:"ia ";s:3:"293";s:3:"iba";s:3:"294";s:3:"ice";s:3:"295";s:3:"in ";s:3:"296";s:3:"inu";s:3:"297";s:3:"it ";s:3:"298";s:3:"kaa";s:3:"299";}s:8:"croatian";a:300:{s:3:"je ";s:1:"0";s:3:" na";s:1:"1";s:3:" pr";s:1:"2";s:3:" po";s:1:"3";s:3:"na ";s:1:"4";s:3:" je";s:1:"5";s:3:" za";s:1:"6";s:3:"ije";s:1:"7";s:3:"ne ";s:1:"8";s:3:" i ";s:1:"9";s:3:"ti ";s:2:"10";s:3:"da ";s:2:"11";s:3:" ko";s:2:"12";s:3:" ne";s:2:"13";s:3:"li ";s:2:"14";s:3:" bi";s:2:"15";s:3:" da";s:2:"16";s:3:" u ";s:2:"17";s:3:"ma ";s:2:"18";s:3:"mo ";s:2:"19";s:3:"a n";s:2:"20";s:3:"ih ";s:2:"21";s:3:"za ";s:2:"22";s:3:"a s";s:2:"23";s:3:"ko ";s:2:"24";s:3:"i s";s:2:"25";s:3:"a p";s:2:"26";s:3:"koj";s:2:"27";s:3:"pro";s:2:"28";s:3:"ju ";s:2:"29";s:3:"se ";s:2:"30";s:3:" go";s:2:"31";s:3:"ost";s:2:"32";s:3:"to ";s:2:"33";s:3:"va ";s:2:"34";s:3:" do";s:2:"35";s:3:" to";s:2:"36";s:3:"e n";s:2:"37";s:3:"i p";s:2:"38";s:3:" od";s:2:"39";s:3:" ra";s:2:"40";s:3:"no ";s:2:"41";s:3:"ako";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ni ";s:2:"44";s:3:" ka";s:2:"45";s:3:" se";s:2:"46";s:3:" mo";s:2:"47";s:3:" st";s:2:"48";s:3:"i n";s:2:"49";s:3:"ima";s:2:"50";s:3:"ja ";s:2:"51";s:3:"pri";s:2:"52";s:3:"vat";s:2:"53";s:3:"sta";s:2:"54";s:3:" su";s:2:"55";s:3:"ati";s:2:"56";s:3:"e p";s:2:"57";s:3:"ta ";s:2:"58";s:3:"tsk";s:2:"59";s:3:"e i";s:2:"60";s:3:"nij";s:2:"61";s:3:" tr";s:2:"62";s:3:"cij";s:2:"63";s:3:"jen";s:2:"64";s:3:"nos";s:2:"65";s:3:"o s";s:2:"66";s:3:" iz";s:2:"67";s:3:"om ";s:2:"68";s:3:"tro";s:2:"69";s:3:"ili";s:2:"70";s:3:"iti";s:2:"71";s:3:"pos";s:2:"72";s:3:" al";s:2:"73";s:3:"a i";s:2:"74";s:3:"a o";s:2:"75";s:3:"e s";s:2:"76";s:3:"ija";s:2:"77";s:3:"ini";s:2:"78";s:3:"pre";s:2:"79";s:3:"str";s:2:"80";s:3:"la ";s:2:"81";s:3:"og ";s:2:"82";s:3:"ovo";s:2:"83";s:3:" sv";s:2:"84";s:3:"ekt";s:2:"85";s:3:"nje";s:2:"86";s:3:"o p";s:2:"87";s:3:"odi";s:2:"88";s:3:"rva";s:2:"89";s:3:" ni";s:2:"90";s:3:"ali";s:2:"91";s:3:"min";s:2:"92";s:3:"rij";s:2:"93";s:3:"a t";s:2:"94";s:3:"a z";s:2:"95";s:3:"ats";s:2:"96";s:3:"iva";s:2:"97";s:3:"o t";s:2:"98";s:3:"od ";s:2:"99";s:3:"oje";s:3:"100";s:3:"ra ";s:3:"101";s:3:" hr";s:3:"102";s:3:"a m";s:3:"103";s:3:"a u";s:3:"104";s:3:"hrv";s:3:"105";s:3:"im ";s:3:"106";s:3:"ke ";s:3:"107";s:3:"o i";s:3:"108";s:3:"ovi";s:3:"109";s:3:"red";s:3:"110";s:3:"riv";s:3:"111";s:3:"te ";s:3:"112";s:3:"bi ";s:3:"113";s:3:"e o";s:3:"114";s:3:"god";s:3:"115";s:3:"i d";s:3:"116";s:3:"lek";s:3:"117";s:3:"umi";s:3:"118";s:3:"zvo";s:3:"119";s:3:"din";s:3:"120";s:3:"e u";s:3:"121";s:3:"ene";s:3:"122";s:3:"jed";s:3:"123";s:3:"ji ";s:3:"124";s:3:"lje";s:3:"125";s:3:"nog";s:3:"126";s:3:"su ";s:3:"127";s:3:" a ";s:3:"128";s:3:" el";s:3:"129";s:3:" mi";s:3:"130";s:3:" o ";s:3:"131";s:3:"a d";s:3:"132";s:3:"alu";s:3:"133";s:3:"ele";s:3:"134";s:3:"i u";s:3:"135";s:3:"izv";s:3:"136";s:3:"ktr";s:3:"137";s:3:"lum";s:3:"138";s:3:"o d";s:3:"139";s:3:"ori";s:3:"140";s:3:"rad";s:3:"141";s:3:"sto";s:3:"142";s:3:"a k";s:3:"143";s:3:"anj";s:3:"144";s:3:"ava";s:3:"145";s:3:"e k";s:3:"146";s:3:"men";s:3:"147";s:3:"nic";s:3:"148";s:3:"o j";s:3:"149";s:3:"oj ";s:3:"150";s:3:"ove";s:3:"151";s:3:"ski";s:3:"152";s:3:"tvr";s:3:"153";s:3:"una";s:3:"154";s:3:"vor";s:3:"155";s:3:" di";s:3:"156";s:3:" no";s:3:"157";s:3:" s ";s:3:"158";s:3:" ta";s:3:"159";s:3:" tv";s:3:"160";s:3:"i i";s:3:"161";s:3:"i o";s:3:"162";s:3:"kak";s:3:"163";s:4:"roš";s:3:"164";s:3:"sko";s:3:"165";s:3:"vod";s:3:"166";s:3:" sa";s:3:"167";s:4:" će";s:3:"168";s:3:"a b";s:3:"169";s:3:"adi";s:3:"170";s:3:"amo";s:3:"171";s:3:"eni";s:3:"172";s:3:"gov";s:3:"173";s:3:"iju";s:3:"174";s:3:"ku ";s:3:"175";s:3:"o n";s:3:"176";s:3:"ora";s:3:"177";s:3:"rav";s:3:"178";s:3:"ruj";s:3:"179";s:3:"smo";s:3:"180";s:3:"tav";s:3:"181";s:3:"tru";s:3:"182";s:3:"u p";s:3:"183";s:3:"ve ";s:3:"184";s:3:" in";s:3:"185";s:3:" pl";s:3:"186";s:3:"aci";s:3:"187";s:3:"bit";s:3:"188";s:3:"de ";s:3:"189";s:4:"diš";s:3:"190";s:3:"ema";s:3:"191";s:3:"i m";s:3:"192";s:3:"ika";s:3:"193";s:4:"išt";s:3:"194";s:3:"jer";s:3:"195";s:3:"ki ";s:3:"196";s:3:"mog";s:3:"197";s:3:"nik";s:3:"198";s:3:"nov";s:3:"199";s:3:"nu ";s:3:"200";s:3:"oji";s:3:"201";s:3:"oli";s:3:"202";s:3:"pla";s:3:"203";s:3:"pod";s:3:"204";s:3:"st ";s:3:"205";s:3:"sti";s:3:"206";s:3:"tra";s:3:"207";s:3:"tre";s:3:"208";s:3:"vo ";s:3:"209";s:3:" sm";s:3:"210";s:4:" št";s:3:"211";s:3:"dan";s:3:"212";s:3:"e z";s:3:"213";s:3:"i t";s:3:"214";s:3:"io ";s:3:"215";s:3:"ist";s:3:"216";s:3:"kon";s:3:"217";s:3:"lo ";s:3:"218";s:3:"stv";s:3:"219";s:3:"u s";s:3:"220";s:3:"uje";s:3:"221";s:3:"ust";s:3:"222";s:4:"će ";s:3:"223";s:4:"ći ";s:3:"224";s:4:"što";s:3:"225";s:3:" dr";s:3:"226";s:3:" im";s:3:"227";s:3:" li";s:3:"228";s:3:"ada";s:3:"229";s:3:"aft";s:3:"230";s:3:"ani";s:3:"231";s:3:"ao ";s:3:"232";s:3:"ars";s:3:"233";s:3:"ata";s:3:"234";s:3:"e t";s:3:"235";s:3:"emo";s:3:"236";s:3:"i k";s:3:"237";s:3:"ine";s:3:"238";s:3:"jem";s:3:"239";s:3:"kov";s:3:"240";s:3:"lik";s:3:"241";s:3:"lji";s:3:"242";s:3:"mje";s:3:"243";s:3:"naf";s:3:"244";s:3:"ner";s:3:"245";s:3:"nih";s:3:"246";s:3:"nja";s:3:"247";s:3:"ogo";s:3:"248";s:3:"oiz";s:3:"249";s:3:"ome";s:3:"250";s:3:"pot";s:3:"251";s:3:"ran";s:3:"252";s:3:"ri ";s:3:"253";s:3:"roi";s:3:"254";s:3:"rtk";s:3:"255";s:3:"ska";s:3:"256";s:3:"ter";s:3:"257";s:3:"u i";s:3:"258";s:3:"u o";s:3:"259";s:3:"vi ";s:3:"260";s:3:"vrt";s:3:"261";s:3:" me";s:3:"262";s:3:" ug";s:3:"263";s:3:"ak ";s:3:"264";s:3:"ama";s:3:"265";s:4:"drž";s:3:"266";s:3:"e e";s:3:"267";s:3:"e g";s:3:"268";s:3:"e m";s:3:"269";s:3:"em ";s:3:"270";s:3:"eme";s:3:"271";s:3:"enj";s:3:"272";s:3:"ent";s:3:"273";s:3:"er ";s:3:"274";s:3:"ere";s:3:"275";s:3:"erg";s:3:"276";s:3:"eur";s:3:"277";s:3:"go ";s:3:"278";s:3:"i b";s:3:"279";s:3:"i z";s:3:"280";s:3:"jet";s:3:"281";s:3:"ksi";s:3:"282";s:3:"o u";s:3:"283";s:3:"oda";s:3:"284";s:3:"ona";s:3:"285";s:3:"pra";s:3:"286";s:3:"reb";s:3:"287";s:3:"rem";s:3:"288";s:3:"rop";s:3:"289";s:3:"tri";s:3:"290";s:4:"žav";s:3:"291";s:3:" ci";s:3:"292";s:3:" eu";s:3:"293";s:3:" re";s:3:"294";s:3:" te";s:3:"295";s:3:" uv";s:3:"296";s:3:" ve";s:3:"297";s:3:"aju";s:3:"298";s:3:"an ";s:3:"299";}s:5:"czech";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:4:"ní ";s:1:"2";s:3:"pro";s:1:"3";s:3:" na";s:1:"4";s:3:"na ";s:1:"5";s:4:" př";s:1:"6";s:3:"ch ";s:1:"7";s:3:" je";s:1:"8";s:3:" ne";s:1:"9";s:4:"že ";s:2:"10";s:4:" že";s:2:"11";s:3:" se";s:2:"12";s:3:" do";s:2:"13";s:3:" ro";s:2:"14";s:3:" st";s:2:"15";s:3:" v ";s:2:"16";s:3:" ve";s:2:"17";s:4:"pře";s:2:"18";s:3:"se ";s:2:"19";s:3:"ho ";s:2:"20";s:3:"sta";s:2:"21";s:3:" to";s:2:"22";s:3:" vy";s:2:"23";s:3:" za";s:2:"24";s:3:"ou ";s:2:"25";s:3:" a ";s:2:"26";s:3:"to ";s:2:"27";s:3:" by";s:2:"28";s:3:"la ";s:2:"29";s:3:"ce ";s:2:"30";s:3:"e v";s:2:"31";s:3:"ist";s:2:"32";s:3:"le ";s:2:"33";s:3:"pod";s:2:"34";s:4:"í p";s:2:"35";s:3:" vl";s:2:"36";s:3:"e n";s:2:"37";s:3:"e s";s:2:"38";s:3:"je ";s:2:"39";s:4:"ké ";s:2:"40";s:3:"by ";s:2:"41";s:3:"em ";s:2:"42";s:4:"ých";s:2:"43";s:3:" od";s:2:"44";s:3:"ova";s:2:"45";s:4:"řed";s:2:"46";s:3:"dy ";s:2:"47";s:4:"ení";s:2:"48";s:3:"kon";s:2:"49";s:3:"li ";s:2:"50";s:4:"ně ";s:2:"51";s:3:"str";s:2:"52";s:4:" zá";s:2:"53";s:3:"ve ";s:2:"54";s:3:" ka";s:2:"55";s:3:" sv";s:2:"56";s:3:"e p";s:2:"57";s:3:"it ";s:2:"58";s:4:"lád";s:2:"59";s:3:"oho";s:2:"60";s:3:"rov";s:2:"61";s:3:"roz";s:2:"62";s:3:"ter";s:2:"63";s:4:"vlá";s:2:"64";s:4:"ím ";s:2:"65";s:3:" ko";s:2:"66";s:3:"hod";s:2:"67";s:3:"nis";s:2:"68";s:5:"pří";s:2:"69";s:4:"ský";s:2:"70";s:3:" mi";s:2:"71";s:3:" ob";s:2:"72";s:3:" so";s:2:"73";s:3:"a p";s:2:"74";s:3:"ali";s:2:"75";s:3:"bud";s:2:"76";s:3:"edn";s:2:"77";s:3:"ick";s:2:"78";s:3:"kte";s:2:"79";s:3:"ku ";s:2:"80";s:3:"o s";s:2:"81";s:3:"al ";s:2:"82";s:3:"ci ";s:2:"83";s:3:"e t";s:2:"84";s:3:"il ";s:2:"85";s:3:"ny ";s:2:"86";s:4:"né ";s:2:"87";s:3:"odl";s:2:"88";s:4:"ová";s:2:"89";s:3:"rot";s:2:"90";s:3:"sou";s:2:"91";s:5:"ání";s:2:"92";s:3:" bu";s:2:"93";s:3:" mo";s:2:"94";s:3:" o ";s:2:"95";s:3:"ast";s:2:"96";s:3:"byl";s:2:"97";s:3:"de ";s:2:"98";s:3:"ek ";s:2:"99";s:3:"ost";s:3:"100";s:4:" mí";s:3:"101";s:3:" ta";s:3:"102";s:3:"es ";s:3:"103";s:3:"jed";s:3:"104";s:3:"ky ";s:3:"105";s:3:"las";s:3:"106";s:3:"m p";s:3:"107";s:3:"nes";s:3:"108";s:4:"ním";s:3:"109";s:3:"ran";s:3:"110";s:3:"rem";s:3:"111";s:3:"ros";s:3:"112";s:4:"ého";s:3:"113";s:3:" de";s:3:"114";s:3:" kt";s:3:"115";s:3:" ni";s:3:"116";s:3:" si";s:3:"117";s:4:" vý";s:3:"118";s:3:"at ";s:3:"119";s:4:"jí ";s:3:"120";s:4:"ký ";s:3:"121";s:3:"mi ";s:3:"122";s:3:"pre";s:3:"123";s:3:"tak";s:3:"124";s:3:"tan";s:3:"125";s:3:"y v";s:3:"126";s:4:"řek";s:3:"127";s:3:" ch";s:3:"128";s:3:" li";s:3:"129";s:4:" ná";s:3:"130";s:3:" pa";s:3:"131";s:4:" ře";s:3:"132";s:3:"da ";s:3:"133";s:3:"dle";s:3:"134";s:3:"dne";s:3:"135";s:3:"i p";s:3:"136";s:3:"i v";s:3:"137";s:3:"ly ";s:3:"138";s:3:"min";s:3:"139";s:3:"o n";s:3:"140";s:3:"o v";s:3:"141";s:3:"pol";s:3:"142";s:3:"tra";s:3:"143";s:3:"val";s:3:"144";s:4:"vní";s:3:"145";s:4:"ích";s:3:"146";s:4:"ý p";s:3:"147";s:4:"řej";s:3:"148";s:3:" ce";s:3:"149";s:3:" kd";s:3:"150";s:3:" le";s:3:"151";s:3:"a s";s:3:"152";s:3:"a z";s:3:"153";s:3:"cen";s:3:"154";s:3:"e k";s:3:"155";s:3:"eds";s:3:"156";s:3:"ekl";s:3:"157";s:3:"emi";s:3:"158";s:3:"kl ";s:3:"159";s:3:"lat";s:3:"160";s:3:"lo ";s:3:"161";s:4:"mié";s:3:"162";s:3:"nov";s:3:"163";s:3:"pra";s:3:"164";s:3:"sku";s:3:"165";s:4:"ské";s:3:"166";s:3:"sti";s:3:"167";s:3:"tav";s:3:"168";s:3:"ti ";s:3:"169";s:3:"ty ";s:3:"170";s:4:"ván";s:3:"171";s:4:"vé ";s:3:"172";s:3:"y n";s:3:"173";s:3:"y s";s:3:"174";s:4:"í s";s:3:"175";s:4:"í v";s:3:"176";s:4:"ě p";s:3:"177";s:3:" dn";s:3:"178";s:4:" ně";s:3:"179";s:3:" sp";s:3:"180";s:4:" čs";s:3:"181";s:3:"a n";s:3:"182";s:3:"a t";s:3:"183";s:3:"ak ";s:3:"184";s:4:"dní";s:3:"185";s:3:"doh";s:3:"186";s:3:"e b";s:3:"187";s:3:"e m";s:3:"188";s:3:"ejn";s:3:"189";s:3:"ena";s:3:"190";s:3:"est";s:3:"191";s:3:"ini";s:3:"192";s:3:"m z";s:3:"193";s:3:"nal";s:3:"194";s:3:"nou";s:3:"195";s:4:"ná ";s:3:"196";s:3:"ovi";s:3:"197";s:4:"ové";s:3:"198";s:4:"ový";s:3:"199";s:3:"rsk";s:3:"200";s:4:"stá";s:3:"201";s:4:"tí ";s:3:"202";s:4:"tře";s:3:"203";s:4:"tů ";s:3:"204";s:3:"ude";s:3:"205";s:3:"za ";s:3:"206";s:4:"é p";s:3:"207";s:4:"ém ";s:3:"208";s:4:"í d";s:3:"209";s:3:" ir";s:3:"210";s:3:" zv";s:3:"211";s:3:"ale";s:3:"212";s:4:"aně";s:3:"213";s:3:"ave";s:3:"214";s:4:"cké";s:3:"215";s:3:"den";s:3:"216";s:3:"e z";s:3:"217";s:3:"ech";s:3:"218";s:3:"en ";s:3:"219";s:4:"erý";s:3:"220";s:3:"hla";s:3:"221";s:3:"i s";s:3:"222";s:4:"iér";s:3:"223";s:3:"lov";s:3:"224";s:3:"mu ";s:3:"225";s:3:"neb";s:3:"226";s:3:"nic";s:3:"227";s:3:"o b";s:3:"228";s:3:"o m";s:3:"229";s:3:"pad";s:3:"230";s:3:"pot";s:3:"231";s:3:"rav";s:3:"232";s:3:"rop";s:3:"233";s:4:"rý ";s:3:"234";s:3:"sed";s:3:"235";s:3:"si ";s:3:"236";s:3:"t p";s:3:"237";s:3:"tic";s:3:"238";s:3:"tu ";s:3:"239";s:4:"tě ";s:3:"240";s:3:"u p";s:3:"241";s:3:"u v";s:3:"242";s:4:"vá ";s:3:"243";s:5:"výš";s:3:"244";s:4:"zvý";s:3:"245";s:5:"ční";s:3:"246";s:5:"ří ";s:3:"247";s:4:"ům ";s:3:"248";s:3:" bl";s:3:"249";s:3:" br";s:3:"250";s:3:" ho";s:3:"251";s:3:" ja";s:3:"252";s:3:" re";s:3:"253";s:3:" s ";s:3:"254";s:3:" z ";s:3:"255";s:3:" zd";s:3:"256";s:3:"a v";s:3:"257";s:3:"ani";s:3:"258";s:3:"ato";s:3:"259";s:3:"bla";s:3:"260";s:3:"bri";s:3:"261";s:4:"ečn";s:3:"262";s:4:"eře";s:3:"263";s:3:"h v";s:3:"264";s:3:"i n";s:3:"265";s:3:"ie ";s:3:"266";s:3:"ila";s:3:"267";s:3:"irs";s:3:"268";s:3:"ite";s:3:"269";s:3:"kov";s:3:"270";s:3:"nos";s:3:"271";s:3:"o o";s:3:"272";s:3:"o p";s:3:"273";s:3:"oce";s:3:"274";s:3:"ody";s:3:"275";s:3:"ohl";s:3:"276";s:3:"oli";s:3:"277";s:3:"ovo";s:3:"278";s:3:"pla";s:3:"279";s:4:"poč";s:3:"280";s:4:"prá";s:3:"281";s:3:"ra ";s:3:"282";s:3:"rit";s:3:"283";s:3:"rod";s:3:"284";s:3:"ry ";s:3:"285";s:3:"sd ";s:3:"286";s:3:"sko";s:3:"287";s:3:"ssd";s:3:"288";s:3:"tel";s:3:"289";s:3:"u s";s:3:"290";s:3:"vat";s:3:"291";s:4:"veř";s:3:"292";s:3:"vit";s:3:"293";s:3:"vla";s:3:"294";s:3:"y p";s:3:"295";s:4:"áln";s:3:"296";s:4:"čss";s:3:"297";s:4:"šen";s:3:"298";s:3:" al";s:3:"299";}s:6:"danish";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"der";s:1:"4";s:3:"de ";s:1:"5";s:3:"for";s:1:"6";s:3:" fo";s:1:"7";s:3:" i ";s:1:"8";s:3:"at ";s:1:"9";s:3:" at";s:2:"10";s:3:"re ";s:2:"11";s:3:"det";s:2:"12";s:3:" ha";s:2:"13";s:3:"nde";s:2:"14";s:3:"ere";s:2:"15";s:3:"ing";s:2:"16";s:3:"den";s:2:"17";s:3:" me";s:2:"18";s:3:" og";s:2:"19";s:3:"ger";s:2:"20";s:3:"ter";s:2:"21";s:3:" er";s:2:"22";s:3:" si";s:2:"23";s:3:"and";s:2:"24";s:3:" af";s:2:"25";s:3:"or ";s:2:"26";s:3:" st";s:2:"27";s:3:" ti";s:2:"28";s:3:" en";s:2:"29";s:3:"og ";s:2:"30";s:3:"ar ";s:2:"31";s:3:"il ";s:2:"32";s:3:"r s";s:2:"33";s:3:"ige";s:2:"34";s:3:"til";s:2:"35";s:3:"ke ";s:2:"36";s:3:"r e";s:2:"37";s:3:"af ";s:2:"38";s:3:"kke";s:2:"39";s:3:" ma";s:2:"40";s:4:" på";s:2:"41";s:3:"om ";s:2:"42";s:4:"på ";s:2:"43";s:3:"ed ";s:2:"44";s:3:"ge ";s:2:"45";s:3:"end";s:2:"46";s:3:"nge";s:2:"47";s:3:"t s";s:2:"48";s:3:"e s";s:2:"49";s:3:"ler";s:2:"50";s:3:" sk";s:2:"51";s:3:"els";s:2:"52";s:3:"ern";s:2:"53";s:3:"sig";s:2:"54";s:3:"ne ";s:2:"55";s:3:"lig";s:2:"56";s:3:"r d";s:2:"57";s:3:"ska";s:2:"58";s:3:" vi";s:2:"59";s:3:"har";s:2:"60";s:3:" be";s:2:"61";s:3:" se";s:2:"62";s:3:"an ";s:2:"63";s:3:"ikk";s:2:"64";s:3:"lle";s:2:"65";s:3:"gen";s:2:"66";s:3:"n f";s:2:"67";s:3:"ste";s:2:"68";s:3:"t a";s:2:"69";s:3:"t d";s:2:"70";s:3:"rin";s:2:"71";s:3:" ik";s:2:"72";s:3:"es ";s:2:"73";s:3:"ng ";s:2:"74";s:3:"ver";s:2:"75";s:3:"r b";s:2:"76";s:3:"sen";s:2:"77";s:3:"ede";s:2:"78";s:3:"men";s:2:"79";s:3:"r i";s:2:"80";s:3:" he";s:2:"81";s:3:" et";s:2:"82";s:3:"ig ";s:2:"83";s:3:"lan";s:2:"84";s:3:"med";s:2:"85";s:3:"nd ";s:2:"86";s:3:"rne";s:2:"87";s:3:" da";s:2:"88";s:3:" in";s:2:"89";s:3:"e t";s:2:"90";s:3:"mme";s:2:"91";s:3:"und";s:2:"92";s:3:" om";s:2:"93";s:3:"e e";s:2:"94";s:3:"e m";s:2:"95";s:3:"her";s:2:"96";s:3:"le ";s:2:"97";s:3:"r f";s:2:"98";s:3:"t f";s:2:"99";s:4:"så ";s:3:"100";s:3:"te ";s:3:"101";s:3:" so";s:3:"102";s:3:"ele";s:3:"103";s:3:"t e";s:3:"104";s:3:" ko";s:3:"105";s:3:"est";s:3:"106";s:3:"ske";s:3:"107";s:3:" bl";s:3:"108";s:3:"e f";s:3:"109";s:3:"ekt";s:3:"110";s:3:"mar";s:3:"111";s:3:"bru";s:3:"112";s:3:"e a";s:3:"113";s:3:"el ";s:3:"114";s:3:"ers";s:3:"115";s:3:"ret";s:3:"116";s:3:"som";s:3:"117";s:3:"tte";s:3:"118";s:3:"ve ";s:3:"119";s:3:" la";s:3:"120";s:3:" ud";s:3:"121";s:3:" ve";s:3:"122";s:3:"age";s:3:"123";s:3:"e d";s:3:"124";s:3:"e h";s:3:"125";s:3:"lse";s:3:"126";s:3:"man";s:3:"127";s:3:"rug";s:3:"128";s:3:"sel";s:3:"129";s:3:"ser";s:3:"130";s:3:" fi";s:3:"131";s:3:" op";s:3:"132";s:3:" pr";s:3:"133";s:3:"dt ";s:3:"134";s:3:"e i";s:3:"135";s:3:"n m";s:3:"136";s:3:"r m";s:3:"137";s:3:" an";s:3:"138";s:3:" re";s:3:"139";s:3:" sa";s:3:"140";s:3:"ion";s:3:"141";s:3:"ner";s:3:"142";s:3:"res";s:3:"143";s:3:"t i";s:3:"144";s:3:"get";s:3:"145";s:3:"n s";s:3:"146";s:3:"one";s:3:"147";s:3:"orb";s:3:"148";s:3:"t h";s:3:"149";s:3:"vis";s:3:"150";s:4:"år ";s:3:"151";s:3:" fr";s:3:"152";s:3:"bil";s:3:"153";s:3:"e k";s:3:"154";s:3:"ens";s:3:"155";s:3:"ind";s:3:"156";s:3:"omm";s:3:"157";s:3:"t m";s:3:"158";s:3:" hv";s:3:"159";s:3:" je";s:3:"160";s:3:"dan";s:3:"161";s:3:"ent";s:3:"162";s:3:"fte";s:3:"163";s:3:"nin";s:3:"164";s:3:" mi";s:3:"165";s:3:"e o";s:3:"166";s:3:"e p";s:3:"167";s:3:"n o";s:3:"168";s:3:"nte";s:3:"169";s:3:" ku";s:3:"170";s:3:"ell";s:3:"171";s:3:"nas";s:3:"172";s:3:"ore";s:3:"173";s:3:"r h";s:3:"174";s:3:"r k";s:3:"175";s:3:"sta";s:3:"176";s:3:"sto";s:3:"177";s:3:"dag";s:3:"178";s:3:"eri";s:3:"179";s:3:"kun";s:3:"180";s:3:"lde";s:3:"181";s:3:"mer";s:3:"182";s:3:"r a";s:3:"183";s:3:"r v";s:3:"184";s:3:"rek";s:3:"185";s:3:"rer";s:3:"186";s:3:"t o";s:3:"187";s:3:"tor";s:3:"188";s:4:"tør";s:3:"189";s:4:" få";s:3:"190";s:4:" må";s:3:"191";s:3:" to";s:3:"192";s:3:"boe";s:3:"193";s:3:"che";s:3:"194";s:3:"e v";s:3:"195";s:3:"i d";s:3:"196";s:3:"ive";s:3:"197";s:3:"kab";s:3:"198";s:3:"ns ";s:3:"199";s:3:"oel";s:3:"200";s:3:"se ";s:3:"201";s:3:"t v";s:3:"202";s:3:" al";s:3:"203";s:3:" bo";s:3:"204";s:3:" un";s:3:"205";s:3:"ans";s:3:"206";s:3:"dre";s:3:"207";s:3:"ire";s:3:"208";s:4:"køb";s:3:"209";s:3:"ors";s:3:"210";s:3:"ove";s:3:"211";s:3:"ren";s:3:"212";s:3:"t b";s:3:"213";s:4:"ør ";s:3:"214";s:3:" ka";s:3:"215";s:3:"ald";s:3:"216";s:3:"bet";s:3:"217";s:3:"gt ";s:3:"218";s:3:"isk";s:3:"219";s:3:"kal";s:3:"220";s:3:"kom";s:3:"221";s:3:"lev";s:3:"222";s:3:"n d";s:3:"223";s:3:"n i";s:3:"224";s:3:"pri";s:3:"225";s:3:"r p";s:3:"226";s:3:"rbr";s:3:"227";s:4:"søg";s:3:"228";s:3:"tel";s:3:"229";s:4:" så";s:3:"230";s:3:" te";s:3:"231";s:3:" va";s:3:"232";s:3:"al ";s:3:"233";s:3:"dir";s:3:"234";s:3:"eje";s:3:"235";s:3:"fis";s:3:"236";s:4:"gså";s:3:"237";s:3:"isc";s:3:"238";s:3:"jer";s:3:"239";s:3:"ker";s:3:"240";s:3:"ogs";s:3:"241";s:3:"sch";s:3:"242";s:3:"st ";s:3:"243";s:3:"t k";s:3:"244";s:3:"uge";s:3:"245";s:3:" di";s:3:"246";s:3:"ag ";s:3:"247";s:3:"d a";s:3:"248";s:3:"g i";s:3:"249";s:3:"ill";s:3:"250";s:3:"l a";s:3:"251";s:3:"lsk";s:3:"252";s:3:"n a";s:3:"253";s:3:"on ";s:3:"254";s:3:"sam";s:3:"255";s:3:"str";s:3:"256";s:3:"tet";s:3:"257";s:3:"var";s:3:"258";s:3:" mo";s:3:"259";s:3:"art";s:3:"260";s:3:"ash";s:3:"261";s:3:"att";s:3:"262";s:3:"e b";s:3:"263";s:3:"han";s:3:"264";s:3:"hav";s:3:"265";s:3:"kla";s:3:"266";s:3:"kon";s:3:"267";s:3:"n t";s:3:"268";s:3:"ned";s:3:"269";s:3:"r o";s:3:"270";s:3:"ra ";s:3:"271";s:3:"rre";s:3:"272";s:3:"ves";s:3:"273";s:3:"vil";s:3:"274";s:3:" el";s:3:"275";s:3:" kr";s:3:"276";s:3:" ov";s:3:"277";s:3:"ann";s:3:"278";s:3:"e u";s:3:"279";s:3:"ess";s:3:"280";s:3:"fra";s:3:"281";s:3:"g a";s:3:"282";s:3:"g d";s:3:"283";s:3:"int";s:3:"284";s:3:"ngs";s:3:"285";s:3:"rde";s:3:"286";s:3:"tra";s:3:"287";s:4:" år";s:3:"288";s:3:"akt";s:3:"289";s:3:"asi";s:3:"290";s:3:"em ";s:3:"291";s:3:"gel";s:3:"292";s:3:"gym";s:3:"293";s:3:"hol";s:3:"294";s:3:"kan";s:3:"295";s:3:"mna";s:3:"296";s:3:"n h";s:3:"297";s:3:"nsk";s:3:"298";s:3:"old";s:3:"299";}s:5:"dutch";a:300:{s:3:"en ";s:1:"0";s:3:"de ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"an ";s:1:"4";s:3:" he";s:1:"5";s:3:"er ";s:1:"6";s:3:" va";s:1:"7";s:3:"n d";s:1:"8";s:3:"van";s:1:"9";s:3:"een";s:2:"10";s:3:"het";s:2:"11";s:3:" ge";s:2:"12";s:3:"oor";s:2:"13";s:3:" ee";s:2:"14";s:3:"der";s:2:"15";s:3:" en";s:2:"16";s:3:"ij ";s:2:"17";s:3:"aar";s:2:"18";s:3:"gen";s:2:"19";s:3:"te ";s:2:"20";s:3:"ver";s:2:"21";s:3:" in";s:2:"22";s:3:" me";s:2:"23";s:3:"aan";s:2:"24";s:3:"den";s:2:"25";s:3:" we";s:2:"26";s:3:"at ";s:2:"27";s:3:"in ";s:2:"28";s:3:" da";s:2:"29";s:3:" te";s:2:"30";s:3:"eer";s:2:"31";s:3:"nde";s:2:"32";s:3:"ter";s:2:"33";s:3:"ste";s:2:"34";s:3:"n v";s:2:"35";s:3:" vo";s:2:"36";s:3:" zi";s:2:"37";s:3:"ing";s:2:"38";s:3:"n h";s:2:"39";s:3:"voo";s:2:"40";s:3:"is ";s:2:"41";s:3:" op";s:2:"42";s:3:"tie";s:2:"43";s:3:" aa";s:2:"44";s:3:"ede";s:2:"45";s:3:"erd";s:2:"46";s:3:"ers";s:2:"47";s:3:" be";s:2:"48";s:3:"eme";s:2:"49";s:3:"ten";s:2:"50";s:3:"ken";s:2:"51";s:3:"n e";s:2:"52";s:3:" ni";s:2:"53";s:3:" ve";s:2:"54";s:3:"ent";s:2:"55";s:3:"ijn";s:2:"56";s:3:"jn ";s:2:"57";s:3:"mee";s:2:"58";s:3:"iet";s:2:"59";s:3:"n w";s:2:"60";s:3:"ng ";s:2:"61";s:3:"nie";s:2:"62";s:3:" is";s:2:"63";s:3:"cht";s:2:"64";s:3:"dat";s:2:"65";s:3:"ere";s:2:"66";s:3:"ie ";s:2:"67";s:3:"ijk";s:2:"68";s:3:"n b";s:2:"69";s:3:"rde";s:2:"70";s:3:"ar ";s:2:"71";s:3:"e b";s:2:"72";s:3:"e a";s:2:"73";s:3:"met";s:2:"74";s:3:"t d";s:2:"75";s:3:"el ";s:2:"76";s:3:"ond";s:2:"77";s:3:"t h";s:2:"78";s:3:" al";s:2:"79";s:3:"e w";s:2:"80";s:3:"op ";s:2:"81";s:3:"ren";s:2:"82";s:3:" di";s:2:"83";s:3:" on";s:2:"84";s:3:"al ";s:2:"85";s:3:"and";s:2:"86";s:3:"bij";s:2:"87";s:3:"zij";s:2:"88";s:3:" bi";s:2:"89";s:3:" hi";s:2:"90";s:3:" wi";s:2:"91";s:3:"or ";s:2:"92";s:3:"r d";s:2:"93";s:3:"t v";s:2:"94";s:3:" wa";s:2:"95";s:3:"e h";s:2:"96";s:3:"lle";s:2:"97";s:3:"rt ";s:2:"98";s:3:"ang";s:2:"99";s:3:"hij";s:3:"100";s:3:"men";s:3:"101";s:3:"n a";s:3:"102";s:3:"n z";s:3:"103";s:3:"rs ";s:3:"104";s:3:" om";s:3:"105";s:3:"e o";s:3:"106";s:3:"e v";s:3:"107";s:3:"end";s:3:"108";s:3:"est";s:3:"109";s:3:"n t";s:3:"110";s:3:"par";s:3:"111";s:3:" pa";s:3:"112";s:3:" pr";s:3:"113";s:3:" ze";s:3:"114";s:3:"e g";s:3:"115";s:3:"e p";s:3:"116";s:3:"n p";s:3:"117";s:3:"ord";s:3:"118";s:3:"oud";s:3:"119";s:3:"raa";s:3:"120";s:3:"sch";s:3:"121";s:3:"t e";s:3:"122";s:3:"ege";s:3:"123";s:3:"ich";s:3:"124";s:3:"ien";s:3:"125";s:3:"aat";s:3:"126";s:3:"ek ";s:3:"127";s:3:"len";s:3:"128";s:3:"n m";s:3:"129";s:3:"nge";s:3:"130";s:3:"nt ";s:3:"131";s:3:"ove";s:3:"132";s:3:"rd ";s:3:"133";s:3:"wer";s:3:"134";s:3:" ma";s:3:"135";s:3:" mi";s:3:"136";s:3:"daa";s:3:"137";s:3:"e k";s:3:"138";s:3:"lij";s:3:"139";s:3:"mer";s:3:"140";s:3:"n g";s:3:"141";s:3:"n o";s:3:"142";s:3:"om ";s:3:"143";s:3:"sen";s:3:"144";s:3:"t b";s:3:"145";s:3:"wij";s:3:"146";s:3:" ho";s:3:"147";s:3:"e m";s:3:"148";s:3:"ele";s:3:"149";s:3:"gem";s:3:"150";s:3:"heb";s:3:"151";s:3:"pen";s:3:"152";s:3:"ude";s:3:"153";s:3:" bo";s:3:"154";s:3:" ja";s:3:"155";s:3:"die";s:3:"156";s:3:"e e";s:3:"157";s:3:"eli";s:3:"158";s:3:"erk";s:3:"159";s:3:"le ";s:3:"160";s:3:"pro";s:3:"161";s:3:"rij";s:3:"162";s:3:" er";s:3:"163";s:3:" za";s:3:"164";s:3:"e d";s:3:"165";s:3:"ens";s:3:"166";s:3:"ind";s:3:"167";s:3:"ke ";s:3:"168";s:3:"n k";s:3:"169";s:3:"nd ";s:3:"170";s:3:"nen";s:3:"171";s:3:"nte";s:3:"172";s:3:"r h";s:3:"173";s:3:"s d";s:3:"174";s:3:"s e";s:3:"175";s:3:"t z";s:3:"176";s:3:" b ";s:3:"177";s:3:" co";s:3:"178";s:3:" ik";s:3:"179";s:3:" ko";s:3:"180";s:3:" ov";s:3:"181";s:3:"eke";s:3:"182";s:3:"hou";s:3:"183";s:3:"ik ";s:3:"184";s:3:"iti";s:3:"185";s:3:"lan";s:3:"186";s:3:"ns ";s:3:"187";s:3:"t g";s:3:"188";s:3:"t m";s:3:"189";s:3:" do";s:3:"190";s:3:" le";s:3:"191";s:3:" zo";s:3:"192";s:3:"ams";s:3:"193";s:3:"e z";s:3:"194";s:3:"g v";s:3:"195";s:3:"it ";s:3:"196";s:3:"je ";s:3:"197";s:3:"ls ";s:3:"198";s:3:"maa";s:3:"199";s:3:"n i";s:3:"200";s:3:"nke";s:3:"201";s:3:"rke";s:3:"202";s:3:"uit";s:3:"203";s:3:" ha";s:3:"204";s:3:" ka";s:3:"205";s:3:" mo";s:3:"206";s:3:" re";s:3:"207";s:3:" st";s:3:"208";s:3:" to";s:3:"209";s:3:"age";s:3:"210";s:3:"als";s:3:"211";s:3:"ark";s:3:"212";s:3:"art";s:3:"213";s:3:"ben";s:3:"214";s:3:"e r";s:3:"215";s:3:"e s";s:3:"216";s:3:"ert";s:3:"217";s:3:"eze";s:3:"218";s:3:"ht ";s:3:"219";s:3:"ijd";s:3:"220";s:3:"lem";s:3:"221";s:3:"r v";s:3:"222";s:3:"rte";s:3:"223";s:3:"t p";s:3:"224";s:3:"zeg";s:3:"225";s:3:"zic";s:3:"226";s:3:"aak";s:3:"227";s:3:"aal";s:3:"228";s:3:"ag ";s:3:"229";s:3:"ale";s:3:"230";s:3:"bbe";s:3:"231";s:3:"ch ";s:3:"232";s:3:"e t";s:3:"233";s:3:"ebb";s:3:"234";s:3:"erz";s:3:"235";s:3:"ft ";s:3:"236";s:3:"ge ";s:3:"237";s:3:"led";s:3:"238";s:3:"mst";s:3:"239";s:3:"n n";s:3:"240";s:3:"oek";s:3:"241";s:3:"r i";s:3:"242";s:3:"t o";s:3:"243";s:3:"t w";s:3:"244";s:3:"tel";s:3:"245";s:3:"tte";s:3:"246";s:3:"uur";s:3:"247";s:3:"we ";s:3:"248";s:3:"zit";s:3:"249";s:3:" af";s:3:"250";s:3:" li";s:3:"251";s:3:" ui";s:3:"252";s:3:"ak ";s:3:"253";s:3:"all";s:3:"254";s:3:"aut";s:3:"255";s:3:"doo";s:3:"256";s:3:"e i";s:3:"257";s:3:"ene";s:3:"258";s:3:"erg";s:3:"259";s:3:"ete";s:3:"260";s:3:"ges";s:3:"261";s:3:"hee";s:3:"262";s:3:"jaa";s:3:"263";s:3:"jke";s:3:"264";s:3:"kee";s:3:"265";s:3:"kel";s:3:"266";s:3:"kom";s:3:"267";s:3:"lee";s:3:"268";s:3:"moe";s:3:"269";s:3:"n s";s:3:"270";s:3:"ort";s:3:"271";s:3:"rec";s:3:"272";s:3:"s o";s:3:"273";s:3:"s v";s:3:"274";s:3:"teg";s:3:"275";s:3:"tij";s:3:"276";s:3:"ven";s:3:"277";s:3:"waa";s:3:"278";s:3:"wel";s:3:"279";s:3:" an";s:3:"280";s:3:" au";s:3:"281";s:3:" bu";s:3:"282";s:3:" gr";s:3:"283";s:3:" pl";s:3:"284";s:3:" ti";s:3:"285";s:3:"'' ";s:3:"286";s:3:"ade";s:3:"287";s:3:"dag";s:3:"288";s:3:"e l";s:3:"289";s:3:"ech";s:3:"290";s:3:"eel";s:3:"291";s:3:"eft";s:3:"292";s:3:"ger";s:3:"293";s:3:"gt ";s:3:"294";s:3:"ig ";s:3:"295";s:3:"itt";s:3:"296";s:3:"j d";s:3:"297";s:3:"ppe";s:3:"298";s:3:"rda";s:3:"299";}s:7:"english";a:300:{s:3:" th";s:1:"0";s:3:"the";s:1:"1";s:3:"he ";s:1:"2";s:3:"ed ";s:1:"3";s:3:" to";s:1:"4";s:3:" in";s:1:"5";s:3:"er ";s:1:"6";s:3:"ing";s:1:"7";s:3:"ng ";s:1:"8";s:3:" an";s:1:"9";s:3:"nd ";s:2:"10";s:3:" of";s:2:"11";s:3:"and";s:2:"12";s:3:"to ";s:2:"13";s:3:"of ";s:2:"14";s:3:" co";s:2:"15";s:3:"at ";s:2:"16";s:3:"on ";s:2:"17";s:3:"in ";s:2:"18";s:3:" a ";s:2:"19";s:3:"d t";s:2:"20";s:3:" he";s:2:"21";s:3:"e t";s:2:"22";s:3:"ion";s:2:"23";s:3:"es ";s:2:"24";s:3:" re";s:2:"25";s:3:"re ";s:2:"26";s:3:"hat";s:2:"27";s:3:" sa";s:2:"28";s:3:" st";s:2:"29";s:3:" ha";s:2:"30";s:3:"her";s:2:"31";s:3:"tha";s:2:"32";s:3:"tio";s:2:"33";s:3:"or ";s:2:"34";s:3:" ''";s:2:"35";s:3:"en ";s:2:"36";s:3:" wh";s:2:"37";s:3:"e s";s:2:"38";s:3:"ent";s:2:"39";s:3:"n t";s:2:"40";s:3:"s a";s:2:"41";s:3:"as ";s:2:"42";s:3:"for";s:2:"43";s:3:"is ";s:2:"44";s:3:"t t";s:2:"45";s:3:" be";s:2:"46";s:3:"ld ";s:2:"47";s:3:"e a";s:2:"48";s:3:"rs ";s:2:"49";s:3:" wa";s:2:"50";s:3:"ut ";s:2:"51";s:3:"ve ";s:2:"52";s:3:"ll ";s:2:"53";s:3:"al ";s:2:"54";s:3:" ma";s:2:"55";s:3:"e i";s:2:"56";s:3:" fo";s:2:"57";s:3:"'s ";s:2:"58";s:3:"an ";s:2:"59";s:3:"est";s:2:"60";s:3:" hi";s:2:"61";s:3:" mo";s:2:"62";s:3:" se";s:2:"63";s:3:" pr";s:2:"64";s:3:"s t";s:2:"65";s:3:"ate";s:2:"66";s:3:"st ";s:2:"67";s:3:"ter";s:2:"68";s:3:"ere";s:2:"69";s:3:"ted";s:2:"70";s:3:"nt ";s:2:"71";s:3:"ver";s:2:"72";s:3:"d a";s:2:"73";s:3:" wi";s:2:"74";s:3:"se ";s:2:"75";s:3:"e c";s:2:"76";s:3:"ect";s:2:"77";s:3:"ns ";s:2:"78";s:3:" on";s:2:"79";s:3:"ly ";s:2:"80";s:3:"tol";s:2:"81";s:3:"ey ";s:2:"82";s:3:"r t";s:2:"83";s:3:" ca";s:2:"84";s:3:"ati";s:2:"85";s:3:"ts ";s:2:"86";s:3:"all";s:2:"87";s:3:" no";s:2:"88";s:3:"his";s:2:"89";s:3:"s o";s:2:"90";s:3:"ers";s:2:"91";s:3:"con";s:2:"92";s:3:"e o";s:2:"93";s:3:"ear";s:2:"94";s:3:"f t";s:2:"95";s:3:"e w";s:2:"96";s:3:"was";s:2:"97";s:3:"ons";s:2:"98";s:3:"sta";s:2:"99";s:3:"'' ";s:3:"100";s:3:"sti";s:3:"101";s:3:"n a";s:3:"102";s:3:"sto";s:3:"103";s:3:"t h";s:3:"104";s:3:" we";s:3:"105";s:3:"id ";s:3:"106";s:3:"th ";s:3:"107";s:3:" it";s:3:"108";s:3:"ce ";s:3:"109";s:3:" di";s:3:"110";s:3:"ave";s:3:"111";s:3:"d h";s:3:"112";s:3:"cou";s:3:"113";s:3:"pro";s:3:"114";s:3:"ad ";s:3:"115";s:3:"oll";s:3:"116";s:3:"ry ";s:3:"117";s:3:"d s";s:3:"118";s:3:"e m";s:3:"119";s:3:" so";s:3:"120";s:3:"ill";s:3:"121";s:3:"cti";s:3:"122";s:3:"te ";s:3:"123";s:3:"tor";s:3:"124";s:3:"eve";s:3:"125";s:3:"g t";s:3:"126";s:3:"it ";s:3:"127";s:3:" ch";s:3:"128";s:3:" de";s:3:"129";s:3:"hav";s:3:"130";s:3:"oul";s:3:"131";s:3:"ty ";s:3:"132";s:3:"uld";s:3:"133";s:3:"use";s:3:"134";s:3:" al";s:3:"135";s:3:"are";s:3:"136";s:3:"ch ";s:3:"137";s:3:"me ";s:3:"138";s:3:"out";s:3:"139";s:3:"ove";s:3:"140";s:3:"wit";s:3:"141";s:3:"ys ";s:3:"142";s:3:"chi";s:3:"143";s:3:"t a";s:3:"144";s:3:"ith";s:3:"145";s:3:"oth";s:3:"146";s:3:" ab";s:3:"147";s:3:" te";s:3:"148";s:3:" wo";s:3:"149";s:3:"s s";s:3:"150";s:3:"res";s:3:"151";s:3:"t w";s:3:"152";s:3:"tin";s:3:"153";s:3:"e b";s:3:"154";s:3:"e h";s:3:"155";s:3:"nce";s:3:"156";s:3:"t s";s:3:"157";s:3:"y t";s:3:"158";s:3:"e p";s:3:"159";s:3:"ele";s:3:"160";s:3:"hin";s:3:"161";s:3:"s i";s:3:"162";s:3:"nte";s:3:"163";s:3:" li";s:3:"164";s:3:"le ";s:3:"165";s:3:" do";s:3:"166";s:3:"aid";s:3:"167";s:3:"hey";s:3:"168";s:3:"ne ";s:3:"169";s:3:"s w";s:3:"170";s:3:" as";s:3:"171";s:3:" fr";s:3:"172";s:3:" tr";s:3:"173";s:3:"end";s:3:"174";s:3:"sai";s:3:"175";s:3:" el";s:3:"176";s:3:" ne";s:3:"177";s:3:" su";s:3:"178";s:3:"'t ";s:3:"179";s:3:"ay ";s:3:"180";s:3:"hou";s:3:"181";s:3:"ive";s:3:"182";s:3:"lec";s:3:"183";s:3:"n't";s:3:"184";s:3:" ye";s:3:"185";s:3:"but";s:3:"186";s:3:"d o";s:3:"187";s:3:"o t";s:3:"188";s:3:"y o";s:3:"189";s:3:" ho";s:3:"190";s:3:" me";s:3:"191";s:3:"be ";s:3:"192";s:3:"cal";s:3:"193";s:3:"e e";s:3:"194";s:3:"had";s:3:"195";s:3:"ple";s:3:"196";s:3:" at";s:3:"197";s:3:" bu";s:3:"198";s:3:" la";s:3:"199";s:3:"d b";s:3:"200";s:3:"s h";s:3:"201";s:3:"say";s:3:"202";s:3:"t i";s:3:"203";s:3:" ar";s:3:"204";s:3:"e f";s:3:"205";s:3:"ght";s:3:"206";s:3:"hil";s:3:"207";s:3:"igh";s:3:"208";s:3:"int";s:3:"209";s:3:"not";s:3:"210";s:3:"ren";s:3:"211";s:3:" is";s:3:"212";s:3:" pa";s:3:"213";s:3:" sh";s:3:"214";s:3:"ays";s:3:"215";s:3:"com";s:3:"216";s:3:"n s";s:3:"217";s:3:"r a";s:3:"218";s:3:"rin";s:3:"219";s:3:"y a";s:3:"220";s:3:" un";s:3:"221";s:3:"n c";s:3:"222";s:3:"om ";s:3:"223";s:3:"thi";s:3:"224";s:3:" mi";s:3:"225";s:3:"by ";s:3:"226";s:3:"d i";s:3:"227";s:3:"e d";s:3:"228";s:3:"e n";s:3:"229";s:3:"t o";s:3:"230";s:3:" by";s:3:"231";s:3:"e r";s:3:"232";s:3:"eri";s:3:"233";s:3:"old";s:3:"234";s:3:"ome";s:3:"235";s:3:"whe";s:3:"236";s:3:"yea";s:3:"237";s:3:" gr";s:3:"238";s:3:"ar ";s:3:"239";s:3:"ity";s:3:"240";s:3:"mpl";s:3:"241";s:3:"oun";s:3:"242";s:3:"one";s:3:"243";s:3:"ow ";s:3:"244";s:3:"r s";s:3:"245";s:3:"s f";s:3:"246";s:3:"tat";s:3:"247";s:3:" ba";s:3:"248";s:3:" vo";s:3:"249";s:3:"bou";s:3:"250";s:3:"sam";s:3:"251";s:3:"tim";s:3:"252";s:3:"vot";s:3:"253";s:3:"abo";s:3:"254";s:3:"ant";s:3:"255";s:3:"ds ";s:3:"256";s:3:"ial";s:3:"257";s:3:"ine";s:3:"258";s:3:"man";s:3:"259";s:3:"men";s:3:"260";s:3:" or";s:3:"261";s:3:" po";s:3:"262";s:3:"amp";s:3:"263";s:3:"can";s:3:"264";s:3:"der";s:3:"265";s:3:"e l";s:3:"266";s:3:"les";s:3:"267";s:3:"ny ";s:3:"268";s:3:"ot ";s:3:"269";s:3:"rec";s:3:"270";s:3:"tes";s:3:"271";s:3:"tho";s:3:"272";s:3:"ica";s:3:"273";s:3:"ild";s:3:"274";s:3:"ir ";s:3:"275";s:3:"nde";s:3:"276";s:3:"ose";s:3:"277";s:3:"ous";s:3:"278";s:3:"pre";s:3:"279";s:3:"ste";s:3:"280";s:3:"era";s:3:"281";s:3:"per";s:3:"282";s:3:"r o";s:3:"283";s:3:"red";s:3:"284";s:3:"rie";s:3:"285";s:3:" bo";s:3:"286";s:3:" le";s:3:"287";s:3:"ali";s:3:"288";s:3:"ars";s:3:"289";s:3:"ore";s:3:"290";s:3:"ric";s:3:"291";s:3:"s m";s:3:"292";s:3:"str";s:3:"293";s:3:" fa";s:3:"294";s:3:"ess";s:3:"295";s:3:"ie ";s:3:"296";s:3:"ist";s:3:"297";s:3:"lat";s:3:"298";s:3:"uri";s:3:"299";}s:8:"estonian";a:300:{s:3:"st ";s:1:"0";s:3:" ka";s:1:"1";s:3:"on ";s:1:"2";s:3:"ja ";s:1:"3";s:3:" va";s:1:"4";s:3:" on";s:1:"5";s:3:" ja";s:1:"6";s:3:" ko";s:1:"7";s:3:"se ";s:1:"8";s:3:"ast";s:1:"9";s:3:"le ";s:2:"10";s:3:"es ";s:2:"11";s:3:"as ";s:2:"12";s:3:"is ";s:2:"13";s:3:"ud ";s:2:"14";s:3:" sa";s:2:"15";s:3:"da ";s:2:"16";s:3:"ga ";s:2:"17";s:3:" ta";s:2:"18";s:3:"aja";s:2:"19";s:3:"sta";s:2:"20";s:3:" ku";s:2:"21";s:3:" pe";s:2:"22";s:3:"a k";s:2:"23";s:3:"est";s:2:"24";s:3:"ist";s:2:"25";s:3:"ks ";s:2:"26";s:3:"ta ";s:2:"27";s:3:"al ";s:2:"28";s:3:"ava";s:2:"29";s:3:"id ";s:2:"30";s:3:"saa";s:2:"31";s:3:"mis";s:2:"32";s:3:"te ";s:2:"33";s:3:"val";s:2:"34";s:3:" et";s:2:"35";s:3:"nud";s:2:"36";s:3:" te";s:2:"37";s:3:"inn";s:2:"38";s:3:" se";s:2:"39";s:3:" tu";s:2:"40";s:3:"a v";s:2:"41";s:3:"alu";s:2:"42";s:3:"e k";s:2:"43";s:3:"ise";s:2:"44";s:3:"lu ";s:2:"45";s:3:"ma ";s:2:"46";s:3:"mes";s:2:"47";s:3:" mi";s:2:"48";s:3:"et ";s:2:"49";s:3:"iku";s:2:"50";s:3:"lin";s:2:"51";s:3:"ad ";s:2:"52";s:3:"el ";s:2:"53";s:3:"ime";s:2:"54";s:3:"ne ";s:2:"55";s:3:"nna";s:2:"56";s:3:" ha";s:2:"57";s:3:" in";s:2:"58";s:3:" ke";s:2:"59";s:4:" võ";s:2:"60";s:3:"a s";s:2:"61";s:3:"a t";s:2:"62";s:3:"ab ";s:2:"63";s:3:"e s";s:2:"64";s:3:"esi";s:2:"65";s:3:" la";s:2:"66";s:3:" li";s:2:"67";s:3:"e v";s:2:"68";s:3:"eks";s:2:"69";s:3:"ema";s:2:"70";s:3:"las";s:2:"71";s:3:"les";s:2:"72";s:3:"rju";s:2:"73";s:3:"tle";s:2:"74";s:3:"tsi";s:2:"75";s:3:"tus";s:2:"76";s:3:"upa";s:2:"77";s:3:"use";s:2:"78";s:3:"ust";s:2:"79";s:3:"var";s:2:"80";s:4:" lä";s:2:"81";s:3:"ali";s:2:"82";s:3:"arj";s:2:"83";s:3:"de ";s:2:"84";s:3:"ete";s:2:"85";s:3:"i t";s:2:"86";s:3:"iga";s:2:"87";s:3:"ilm";s:2:"88";s:3:"kui";s:2:"89";s:3:"li ";s:2:"90";s:3:"tul";s:2:"91";s:3:" ei";s:2:"92";s:3:" me";s:2:"93";s:4:" sõ";s:2:"94";s:3:"aal";s:2:"95";s:3:"ata";s:2:"96";s:3:"dus";s:2:"97";s:3:"ei ";s:2:"98";s:3:"nik";s:2:"99";s:3:"pea";s:3:"100";s:3:"s k";s:3:"101";s:3:"s o";s:3:"102";s:3:"sal";s:3:"103";s:4:"sõn";s:3:"104";s:3:"ter";s:3:"105";s:3:"ul ";s:3:"106";s:4:"või";s:3:"107";s:3:" el";s:3:"108";s:3:" ne";s:3:"109";s:3:"a j";s:3:"110";s:3:"ate";s:3:"111";s:3:"end";s:3:"112";s:3:"i k";s:3:"113";s:3:"ita";s:3:"114";s:3:"kar";s:3:"115";s:3:"kor";s:3:"116";s:3:"l o";s:3:"117";s:3:"lt ";s:3:"118";s:3:"maa";s:3:"119";s:3:"oli";s:3:"120";s:3:"sti";s:3:"121";s:3:"vad";s:3:"122";s:5:"ään";s:3:"123";s:3:" ju";s:3:"124";s:4:" jä";s:3:"125";s:4:" kü";s:3:"126";s:3:" ma";s:3:"127";s:3:" po";s:3:"128";s:4:" üt";s:3:"129";s:3:"aas";s:3:"130";s:3:"aks";s:3:"131";s:3:"at ";s:3:"132";s:3:"ed ";s:3:"133";s:3:"eri";s:3:"134";s:3:"hoi";s:3:"135";s:3:"i s";s:3:"136";s:3:"ka ";s:3:"137";s:3:"la ";s:3:"138";s:3:"nni";s:3:"139";s:3:"oid";s:3:"140";s:3:"pai";s:3:"141";s:3:"rit";s:3:"142";s:3:"us ";s:3:"143";s:4:"ütl";s:3:"144";s:3:" aa";s:3:"145";s:3:" lo";s:3:"146";s:3:" to";s:3:"147";s:3:" ve";s:3:"148";s:3:"a e";s:3:"149";s:3:"ada";s:3:"150";s:3:"aid";s:3:"151";s:3:"ami";s:3:"152";s:3:"and";s:3:"153";s:3:"dla";s:3:"154";s:3:"e j";s:3:"155";s:3:"ega";s:3:"156";s:3:"gi ";s:3:"157";s:3:"gu ";s:3:"158";s:3:"i p";s:3:"159";s:3:"idl";s:3:"160";s:3:"ik ";s:3:"161";s:3:"ini";s:3:"162";s:3:"jup";s:3:"163";s:3:"kal";s:3:"164";s:3:"kas";s:3:"165";s:3:"kes";s:3:"166";s:3:"koh";s:3:"167";s:3:"s e";s:3:"168";s:3:"s p";s:3:"169";s:3:"sel";s:3:"170";s:3:"sse";s:3:"171";s:3:"ui ";s:3:"172";s:3:" pi";s:3:"173";s:3:" si";s:3:"174";s:3:"aru";s:3:"175";s:3:"eda";s:3:"176";s:3:"eva";s:3:"177";s:3:"fil";s:3:"178";s:3:"i v";s:3:"179";s:3:"ida";s:3:"180";s:3:"ing";s:3:"181";s:5:"lää";s:3:"182";s:3:"me ";s:3:"183";s:3:"na ";s:3:"184";s:3:"nda";s:3:"185";s:3:"nim";s:3:"186";s:3:"ole";s:3:"187";s:3:"ots";s:3:"188";s:3:"ris";s:3:"189";s:3:"s l";s:3:"190";s:3:"sia";s:3:"191";s:3:"t p";s:3:"192";s:3:" en";s:3:"193";s:3:" mu";s:3:"194";s:3:" ol";s:3:"195";s:4:" põ";s:3:"196";s:3:" su";s:3:"197";s:4:" vä";s:3:"198";s:4:" üh";s:3:"199";s:3:"a l";s:3:"200";s:3:"a p";s:3:"201";s:3:"aga";s:3:"202";s:3:"ale";s:3:"203";s:3:"aps";s:3:"204";s:3:"arv";s:3:"205";s:3:"e a";s:3:"206";s:3:"ela";s:3:"207";s:3:"ika";s:3:"208";s:3:"lle";s:3:"209";s:3:"loo";s:3:"210";s:3:"mal";s:3:"211";s:3:"pet";s:3:"212";s:3:"t k";s:3:"213";s:3:"tee";s:3:"214";s:3:"tis";s:3:"215";s:3:"vat";s:3:"216";s:4:"äne";s:3:"217";s:4:"õnn";s:3:"218";s:3:" es";s:3:"219";s:3:" fi";s:3:"220";s:3:" vi";s:3:"221";s:3:"a i";s:3:"222";s:3:"a o";s:3:"223";s:3:"aab";s:3:"224";s:3:"aap";s:3:"225";s:3:"ala";s:3:"226";s:3:"alt";s:3:"227";s:3:"ama";s:3:"228";s:3:"anu";s:3:"229";s:3:"e p";s:3:"230";s:3:"e t";s:3:"231";s:3:"eal";s:3:"232";s:3:"eli";s:3:"233";s:3:"haa";s:3:"234";s:3:"hin";s:3:"235";s:3:"iva";s:3:"236";s:3:"kon";s:3:"237";s:3:"ku ";s:3:"238";s:3:"lik";s:3:"239";s:3:"lm ";s:3:"240";s:3:"min";s:3:"241";s:3:"n t";s:3:"242";s:3:"odu";s:3:"243";s:3:"oon";s:3:"244";s:3:"psa";s:3:"245";s:3:"ri ";s:3:"246";s:3:"si ";s:3:"247";s:3:"stu";s:3:"248";s:3:"t e";s:3:"249";s:3:"t s";s:3:"250";s:3:"ti ";s:3:"251";s:3:"ule";s:3:"252";s:3:"uur";s:3:"253";s:3:"vas";s:3:"254";s:3:"vee";s:3:"255";s:3:" ki";s:3:"256";s:3:" ni";s:3:"257";s:4:" nä";s:3:"258";s:3:" ra";s:3:"259";s:3:"aig";s:3:"260";s:3:"aka";s:3:"261";s:3:"all";s:3:"262";s:3:"atu";s:3:"263";s:3:"e e";s:3:"264";s:3:"eis";s:3:"265";s:3:"ers";s:3:"266";s:3:"i e";s:3:"267";s:3:"ii ";s:3:"268";s:3:"iis";s:3:"269";s:3:"il ";s:3:"270";s:3:"ima";s:3:"271";s:3:"its";s:3:"272";s:3:"kka";s:3:"273";s:3:"kuh";s:3:"274";s:3:"l k";s:3:"275";s:3:"lat";s:3:"276";s:3:"maj";s:3:"277";s:3:"ndu";s:3:"278";s:3:"ni ";s:3:"279";s:3:"nii";s:3:"280";s:3:"oma";s:3:"281";s:3:"ool";s:3:"282";s:3:"rso";s:3:"283";s:3:"ru ";s:3:"284";s:3:"rva";s:3:"285";s:3:"s t";s:3:"286";s:3:"sek";s:3:"287";s:3:"son";s:3:"288";s:3:"ste";s:3:"289";s:3:"t m";s:3:"290";s:3:"taj";s:3:"291";s:3:"tam";s:3:"292";s:3:"ude";s:3:"293";s:3:"uho";s:3:"294";s:3:"vai";s:3:"295";s:3:" ag";s:3:"296";s:3:" os";s:3:"297";s:3:" pa";s:3:"298";s:3:" re";s:3:"299";}s:5:"farsi";a:300:{s:5:"ان ";s:1:"0";s:5:"ای ";s:1:"1";s:5:"ه ا";s:1:"2";s:5:" اي";s:1:"3";s:5:" در";s:1:"4";s:5:"به ";s:1:"5";s:5:" بر";s:1:"6";s:5:"در ";s:1:"7";s:6:"ران";s:1:"8";s:5:" به";s:1:"9";s:5:"ی ا";s:2:"10";s:5:"از ";s:2:"11";s:5:"ين ";s:2:"12";s:5:"می ";s:2:"13";s:5:" از";s:2:"14";s:5:"ده ";s:2:"15";s:5:"ست ";s:2:"16";s:6:"است";s:2:"17";s:5:" اس";s:2:"18";s:5:" که";s:2:"19";s:5:"که ";s:2:"20";s:6:"اير";s:2:"21";s:5:"ند ";s:2:"22";s:6:"اين";s:2:"23";s:5:" ها";s:2:"24";s:6:"يرا";s:2:"25";s:5:"ود ";s:2:"26";s:5:" را";s:2:"27";s:6:"های";s:2:"28";s:5:" خو";s:2:"29";s:5:"ته ";s:2:"30";s:5:"را ";s:2:"31";s:6:"رای";s:2:"32";s:5:"رد ";s:2:"33";s:5:"ن ب";s:2:"34";s:6:"کرد";s:2:"35";s:4:" و ";s:2:"36";s:5:" کر";s:2:"37";s:5:"ات ";s:2:"38";s:6:"برا";s:2:"39";s:5:"د ک";s:2:"40";s:6:"مان";s:2:"41";s:5:"ی د";s:2:"42";s:5:" ان";s:2:"43";s:6:"خوا";s:2:"44";s:6:"شور";s:2:"45";s:5:" با";s:2:"46";s:5:"ن ا";s:2:"47";s:5:" سا";s:2:"48";s:6:"تمی";s:2:"49";s:5:"ری ";s:2:"50";s:6:"اتم";s:2:"51";s:5:"ا ا";s:2:"52";s:6:"واه";s:2:"53";s:5:" ات";s:2:"54";s:5:" عر";s:2:"55";s:5:"اق ";s:2:"56";s:5:"ر م";s:2:"57";s:6:"راق";s:2:"58";s:6:"عرا";s:2:"59";s:5:"ی ب";s:2:"60";s:5:" تا";s:2:"61";s:5:" تو";s:2:"62";s:5:"ار ";s:2:"63";s:5:"ر ا";s:2:"64";s:5:"ن م";s:2:"65";s:5:"ه ب";s:2:"66";s:5:"ور ";s:2:"67";s:5:"يد ";s:2:"68";s:5:"ی ک";s:2:"69";s:5:" ام";s:2:"70";s:5:" دا";s:2:"71";s:5:" کن";s:2:"72";s:6:"اهد";s:2:"73";s:5:"هد ";s:2:"74";s:5:" آن";s:2:"75";s:5:" می";s:2:"76";s:5:" ني";s:2:"77";s:5:" گف";s:2:"78";s:5:"د ا";s:2:"79";s:6:"گفت";s:2:"80";s:5:" کش";s:2:"81";s:5:"ا ب";s:2:"82";s:5:"نی ";s:2:"83";s:5:"ها ";s:2:"84";s:6:"کشو";s:2:"85";s:5:" رو";s:2:"86";s:5:"ت ک";s:2:"87";s:6:"نيو";s:2:"88";s:5:"ه م";s:2:"89";s:5:"وی ";s:2:"90";s:5:"ی ت";s:2:"91";s:5:" شو";s:2:"92";s:5:"ال ";s:2:"93";s:6:"دار";s:2:"94";s:5:"مه ";s:2:"95";s:5:"ن ک";s:2:"96";s:5:"ه د";s:2:"97";s:5:"يه ";s:2:"98";s:5:" ما";s:2:"99";s:6:"امه";s:3:"100";s:5:"د ب";s:3:"101";s:6:"زار";s:3:"102";s:6:"ورا";s:3:"103";s:6:"گزا";s:3:"104";s:5:" پي";s:3:"105";s:5:"آن ";s:3:"106";s:6:"انت";s:3:"107";s:5:"ت ا";s:3:"108";s:5:"فت ";s:3:"109";s:5:"ه ن";s:3:"110";s:5:"ی خ";s:3:"111";s:6:"اما";s:3:"112";s:6:"بات";s:3:"113";s:5:"ما ";s:3:"114";s:6:"ملل";s:3:"115";s:6:"نام";s:3:"116";s:5:"ير ";s:3:"117";s:5:"ی م";s:3:"118";s:5:"ی ه";s:3:"119";s:5:" آم";s:3:"120";s:5:" ای";s:3:"121";s:5:" من";s:3:"122";s:6:"انس";s:3:"123";s:6:"اني";s:3:"124";s:5:"ت د";s:3:"125";s:6:"رده";s:3:"126";s:6:"ساز";s:3:"127";s:5:"ن د";s:3:"128";s:5:"نه ";s:3:"129";s:6:"ورد";s:3:"130";s:5:" او";s:3:"131";s:5:" بي";s:3:"132";s:5:" سو";s:3:"133";s:5:" شد";s:3:"134";s:6:"اده";s:3:"135";s:6:"اند";s:3:"136";s:5:"با ";s:3:"137";s:5:"ت ب";s:3:"138";s:5:"ر ب";s:3:"139";s:5:"ز ا";s:3:"140";s:6:"زما";s:3:"141";s:6:"سته";s:3:"142";s:5:"ن ر";s:3:"143";s:5:"ه س";s:3:"144";s:6:"وان";s:3:"145";s:5:"وز ";s:3:"146";s:5:"ی ر";s:3:"147";s:5:"ی س";s:3:"148";s:5:" هس";s:3:"149";s:6:"ابا";s:3:"150";s:5:"ام ";s:3:"151";s:6:"اور";s:3:"152";s:6:"تخا";s:3:"153";s:6:"خاب";s:3:"154";s:6:"خود";s:3:"155";s:5:"د د";s:3:"156";s:5:"دن ";s:3:"157";s:6:"رها";s:3:"158";s:6:"روز";s:3:"159";s:6:"رگز";s:3:"160";s:6:"نتخ";s:3:"161";s:5:"ه ش";s:3:"162";s:5:"ه ه";s:3:"163";s:6:"هست";s:3:"164";s:5:"يت ";s:3:"165";s:5:"يم ";s:3:"166";s:5:" دو";s:3:"167";s:5:" دي";s:3:"168";s:5:" مو";s:3:"169";s:5:" نو";s:3:"170";s:5:" هم";s:3:"171";s:5:" کا";s:3:"172";s:5:"اد ";s:3:"173";s:6:"اری";s:3:"174";s:6:"انی";s:3:"175";s:5:"بر ";s:3:"176";s:6:"بود";s:3:"177";s:5:"ت ه";s:3:"178";s:5:"ح ه";s:3:"179";s:6:"حال";s:3:"180";s:5:"رش ";s:3:"181";s:5:"عه ";s:3:"182";s:5:"لی ";s:3:"183";s:5:"وم ";s:3:"184";s:6:"ژان";s:3:"185";s:5:" سل";s:3:"186";s:6:"آمر";s:3:"187";s:5:"اح ";s:3:"188";s:6:"توس";s:3:"189";s:6:"داد";s:3:"190";s:6:"دام";s:3:"191";s:5:"ر د";s:3:"192";s:5:"ره ";s:3:"193";s:6:"ريک";s:3:"194";s:5:"زی ";s:3:"195";s:6:"سلا";s:3:"196";s:6:"شود";s:3:"197";s:6:"لاح";s:3:"198";s:6:"مري";s:3:"199";s:6:"نند";s:3:"200";s:5:"ه ع";s:3:"201";s:6:"يما";s:3:"202";s:6:"يکا";s:3:"203";s:6:"پيم";s:3:"204";s:5:"گر ";s:3:"205";s:5:" آژ";s:3:"206";s:5:" ال";s:3:"207";s:5:" بو";s:3:"208";s:5:" مق";s:3:"209";s:5:" مل";s:3:"210";s:5:" وی";s:3:"211";s:6:"آژا";s:3:"212";s:6:"ازم";s:3:"213";s:6:"ازی";s:3:"214";s:6:"بار";s:3:"215";s:6:"برن";s:3:"216";s:5:"ر آ";s:3:"217";s:5:"ز س";s:3:"218";s:6:"سعه";s:3:"219";s:6:"شته";s:3:"220";s:6:"مات";s:3:"221";s:5:"ن آ";s:3:"222";s:5:"ن پ";s:3:"223";s:5:"نس ";s:3:"224";s:5:"ه گ";s:3:"225";s:6:"وسع";s:3:"226";s:6:"يان";s:3:"227";s:6:"يوم";s:3:"228";s:5:"کا ";s:3:"229";s:6:"کام";s:3:"230";s:6:"کند";s:3:"231";s:5:" خا";s:3:"232";s:5:" سر";s:3:"233";s:6:"آور";s:3:"234";s:6:"ارد";s:3:"235";s:6:"اقد";s:3:"236";s:6:"ايم";s:3:"237";s:6:"ايی";s:3:"238";s:6:"برگ";s:3:"239";s:5:"ت ع";s:3:"240";s:5:"تن ";s:3:"241";s:5:"خت ";s:3:"242";s:5:"د و";s:3:"243";s:5:"ر خ";s:3:"244";s:5:"رک ";s:3:"245";s:6:"زير";s:3:"246";s:6:"فته";s:3:"247";s:6:"قدا";s:3:"248";s:5:"ل ت";s:3:"249";s:6:"مين";s:3:"250";s:5:"ن گ";s:3:"251";s:5:"ه آ";s:3:"252";s:5:"ه خ";s:3:"253";s:5:"ه ک";s:3:"254";s:6:"ورک";s:3:"255";s:6:"ويو";s:3:"256";s:6:"يور";s:3:"257";s:6:"يوي";s:3:"258";s:5:"يی ";s:3:"259";s:5:"ک ت";s:3:"260";s:5:"ی ش";s:3:"261";s:5:" اق";s:3:"262";s:5:" حا";s:3:"263";s:5:" حق";s:3:"264";s:5:" دس";s:3:"265";s:5:" شک";s:3:"266";s:5:" عم";s:3:"267";s:5:" يک";s:3:"268";s:5:"ا ت";s:3:"269";s:5:"ا د";s:3:"270";s:6:"ارج";s:3:"271";s:6:"بين";s:3:"272";s:5:"ت م";s:3:"273";s:5:"ت و";s:3:"274";s:6:"تاي";s:3:"275";s:6:"دست";s:3:"276";s:5:"ر ح";s:3:"277";s:5:"ر س";s:3:"278";s:6:"رنا";s:3:"279";s:5:"ز ب";s:3:"280";s:6:"شکا";s:3:"281";s:5:"لل ";s:3:"282";s:5:"م ک";s:3:"283";s:5:"مز ";s:3:"284";s:6:"ندا";s:3:"285";s:6:"نوا";s:3:"286";s:5:"و ا";s:3:"287";s:6:"وره";s:3:"288";s:5:"ون ";s:3:"289";s:6:"وند";s:3:"290";s:6:"يمز";s:3:"291";s:5:" آو";s:3:"292";s:5:" اع";s:3:"293";s:5:" فر";s:3:"294";s:5:" مت";s:3:"295";s:5:" نه";s:3:"296";s:5:" هر";s:3:"297";s:5:" وز";s:3:"298";s:5:" گز";s:3:"299";}s:7:"finnish";a:300:{s:3:"en ";s:1:"0";s:3:"in ";s:1:"1";s:3:"an ";s:1:"2";s:3:"on ";s:1:"3";s:3:"ist";s:1:"4";s:3:"ta ";s:1:"5";s:3:"ja ";s:1:"6";s:3:"n t";s:1:"7";s:3:"sa ";s:1:"8";s:3:"sta";s:1:"9";s:3:"aan";s:2:"10";s:3:"n p";s:2:"11";s:3:" on";s:2:"12";s:3:"ssa";s:2:"13";s:3:"tta";s:2:"14";s:4:"tä ";s:2:"15";s:3:" ka";s:2:"16";s:3:" pa";s:2:"17";s:3:"si ";s:2:"18";s:3:" ja";s:2:"19";s:3:"n k";s:2:"20";s:3:"lla";s:2:"21";s:4:"än ";s:2:"22";s:3:"een";s:2:"23";s:3:"n v";s:2:"24";s:3:"ksi";s:2:"25";s:3:"ett";s:2:"26";s:3:"nen";s:2:"27";s:3:"taa";s:2:"28";s:4:"ttä";s:2:"29";s:3:" va";s:2:"30";s:3:"ill";s:2:"31";s:3:"itt";s:2:"32";s:3:" jo";s:2:"33";s:3:" ko";s:2:"34";s:3:"n s";s:2:"35";s:3:" tu";s:2:"36";s:3:"ia ";s:2:"37";s:3:" su";s:2:"38";s:3:"a p";s:2:"39";s:3:"aa ";s:2:"40";s:3:"la ";s:2:"41";s:3:"lle";s:2:"42";s:3:"n m";s:2:"43";s:3:"le ";s:2:"44";s:3:"tte";s:2:"45";s:3:"na ";s:2:"46";s:3:" ta";s:2:"47";s:3:" ve";s:2:"48";s:3:"at ";s:2:"49";s:3:" vi";s:2:"50";s:3:"utt";s:2:"51";s:3:" sa";s:2:"52";s:3:"ise";s:2:"53";s:3:"sen";s:2:"54";s:3:" ku";s:2:"55";s:4:" nä";s:2:"56";s:4:" pä";s:2:"57";s:3:"ste";s:2:"58";s:3:" ol";s:2:"59";s:3:"a t";s:2:"60";s:3:"ais";s:2:"61";s:3:"maa";s:2:"62";s:3:"ti ";s:2:"63";s:3:"a o";s:2:"64";s:3:"oit";s:2:"65";s:5:"pää";s:2:"66";s:3:" pi";s:2:"67";s:3:"a v";s:2:"68";s:3:"ala";s:2:"69";s:3:"ine";s:2:"70";s:3:"isi";s:2:"71";s:3:"tel";s:2:"72";s:3:"tti";s:2:"73";s:3:" si";s:2:"74";s:3:"a k";s:2:"75";s:3:"all";s:2:"76";s:3:"iin";s:2:"77";s:3:"kin";s:2:"78";s:4:"stä";s:2:"79";s:3:"uom";s:2:"80";s:3:"vii";s:2:"81";s:3:" ma";s:2:"82";s:3:" se";s:2:"83";s:4:"enä";s:2:"84";s:3:" mu";s:2:"85";s:3:"a s";s:2:"86";s:3:"est";s:2:"87";s:3:"iss";s:2:"88";s:4:"llä";s:2:"89";s:3:"lok";s:2:"90";s:4:"lä ";s:2:"91";s:3:"n j";s:2:"92";s:3:"n o";s:2:"93";s:3:"toi";s:2:"94";s:3:"ven";s:2:"95";s:3:"ytt";s:2:"96";s:3:" li";s:2:"97";s:3:"ain";s:2:"98";s:3:"et ";s:2:"99";s:3:"ina";s:3:"100";s:3:"n a";s:3:"101";s:3:"n n";s:3:"102";s:3:"oll";s:3:"103";s:3:"plo";s:3:"104";s:3:"ten";s:3:"105";s:3:"ust";s:3:"106";s:4:"äll";s:3:"107";s:5:"ään";s:3:"108";s:3:" to";s:3:"109";s:3:"den";s:3:"110";s:3:"men";s:3:"111";s:3:"oki";s:3:"112";s:3:"suo";s:3:"113";s:4:"sä ";s:3:"114";s:5:"tää";s:3:"115";s:3:"uks";s:3:"116";s:3:"vat";s:3:"117";s:3:" al";s:3:"118";s:3:" ke";s:3:"119";s:3:" te";s:3:"120";s:3:"a e";s:3:"121";s:3:"lii";s:3:"122";s:3:"tai";s:3:"123";s:3:"tei";s:3:"124";s:4:"äis";s:3:"125";s:5:"ää ";s:3:"126";s:3:" pl";s:3:"127";s:3:"ell";s:3:"128";s:3:"i t";s:3:"129";s:3:"ide";s:3:"130";s:3:"ikk";s:3:"131";s:3:"ki ";s:3:"132";s:3:"nta";s:3:"133";s:3:"ova";s:3:"134";s:3:"yst";s:3:"135";s:3:"yt ";s:3:"136";s:4:"ä p";s:3:"137";s:4:"äyt";s:3:"138";s:3:" ha";s:3:"139";s:3:" pe";s:3:"140";s:4:" tä";s:3:"141";s:3:"a n";s:3:"142";s:3:"aik";s:3:"143";s:3:"i p";s:3:"144";s:3:"i v";s:3:"145";s:3:"nyt";s:3:"146";s:4:"näy";s:3:"147";s:3:"pal";s:3:"148";s:3:"tee";s:3:"149";s:3:"un ";s:3:"150";s:3:" me";s:3:"151";s:3:"a m";s:3:"152";s:3:"ess";s:3:"153";s:3:"kau";s:3:"154";s:3:"pai";s:3:"155";s:3:"stu";s:3:"156";s:3:"ut ";s:3:"157";s:3:"voi";s:3:"158";s:3:" et";s:3:"159";s:3:"a h";s:3:"160";s:3:"eis";s:3:"161";s:3:"hte";s:3:"162";s:3:"i o";s:3:"163";s:3:"iik";s:3:"164";s:3:"ita";s:3:"165";s:3:"jou";s:3:"166";s:3:"mis";s:3:"167";s:3:"nin";s:3:"168";s:3:"nut";s:3:"169";s:3:"sia";s:3:"170";s:4:"ssä";s:3:"171";s:3:"van";s:3:"172";s:3:" ty";s:3:"173";s:3:" yh";s:3:"174";s:3:"aks";s:3:"175";s:3:"ime";s:3:"176";s:3:"loi";s:3:"177";s:3:"me ";s:3:"178";s:3:"n e";s:3:"179";s:3:"n h";s:3:"180";s:3:"n l";s:3:"181";s:3:"oin";s:3:"182";s:3:"ome";s:3:"183";s:3:"ott";s:3:"184";s:3:"ouk";s:3:"185";s:3:"sit";s:3:"186";s:3:"sti";s:3:"187";s:3:"tet";s:3:"188";s:3:"tie";s:3:"189";s:3:"ukk";s:3:"190";s:4:"ä k";s:3:"191";s:3:" ra";s:3:"192";s:3:" ti";s:3:"193";s:3:"aja";s:3:"194";s:3:"asi";s:3:"195";s:3:"ent";s:3:"196";s:3:"iga";s:3:"197";s:3:"iig";s:3:"198";s:3:"ite";s:3:"199";s:3:"jan";s:3:"200";s:3:"kaa";s:3:"201";s:3:"kse";s:3:"202";s:3:"laa";s:3:"203";s:3:"lan";s:3:"204";s:3:"li ";s:3:"205";s:4:"näj";s:3:"206";s:3:"ole";s:3:"207";s:3:"tii";s:3:"208";s:3:"usi";s:3:"209";s:5:"äjä";s:3:"210";s:3:" ov";s:3:"211";s:3:"a a";s:3:"212";s:3:"ant";s:3:"213";s:3:"ava";s:3:"214";s:3:"ei ";s:3:"215";s:3:"eri";s:3:"216";s:3:"kan";s:3:"217";s:3:"kku";s:3:"218";s:3:"lai";s:3:"219";s:3:"lis";s:3:"220";s:4:"läi";s:3:"221";s:3:"mat";s:3:"222";s:3:"ois";s:3:"223";s:3:"pel";s:3:"224";s:3:"sil";s:3:"225";s:3:"sty";s:3:"226";s:3:"taj";s:3:"227";s:3:"tav";s:3:"228";s:3:"ttu";s:3:"229";s:4:"työ";s:3:"230";s:4:"yös";s:3:"231";s:4:"ä o";s:3:"232";s:3:" ai";s:3:"233";s:3:" pu";s:3:"234";s:3:"a j";s:3:"235";s:3:"a l";s:3:"236";s:3:"aal";s:3:"237";s:3:"arv";s:3:"238";s:3:"ass";s:3:"239";s:3:"ien";s:3:"240";s:3:"imi";s:3:"241";s:3:"imm";s:3:"242";s:4:"itä";s:3:"243";s:3:"ka ";s:3:"244";s:3:"kes";s:3:"245";s:3:"kue";s:3:"246";s:3:"lee";s:3:"247";s:3:"lin";s:3:"248";s:3:"llo";s:3:"249";s:3:"one";s:3:"250";s:3:"ri ";s:3:"251";s:3:"t o";s:3:"252";s:3:"t p";s:3:"253";s:3:"tu ";s:3:"254";s:3:"val";s:3:"255";s:3:"vuo";s:3:"256";s:3:" ei";s:3:"257";s:3:" he";s:3:"258";s:3:" hy";s:3:"259";s:3:" my";s:3:"260";s:3:" vo";s:3:"261";s:3:"ali";s:3:"262";s:3:"alo";s:3:"263";s:3:"ano";s:3:"264";s:3:"ast";s:3:"265";s:3:"att";s:3:"266";s:3:"auk";s:3:"267";s:3:"eli";s:3:"268";s:3:"ely";s:3:"269";s:3:"hti";s:3:"270";s:3:"ika";s:3:"271";s:3:"ken";s:3:"272";s:3:"kki";s:3:"273";s:3:"lys";s:3:"274";s:3:"min";s:3:"275";s:4:"myö";s:3:"276";s:3:"oht";s:3:"277";s:3:"oma";s:3:"278";s:3:"tus";s:3:"279";s:3:"umi";s:3:"280";s:3:"yks";s:3:"281";s:4:"ät ";s:3:"282";s:5:"ääl";s:3:"283";s:4:"ös ";s:3:"284";s:3:" ar";s:3:"285";s:3:" eu";s:3:"286";s:3:" hu";s:3:"287";s:3:" na";s:3:"288";s:3:"aat";s:3:"289";s:3:"alk";s:3:"290";s:3:"alu";s:3:"291";s:3:"ans";s:3:"292";s:3:"arj";s:3:"293";s:3:"enn";s:3:"294";s:3:"han";s:3:"295";s:3:"kuu";s:3:"296";s:3:"n y";s:3:"297";s:3:"set";s:3:"298";s:3:"sim";s:3:"299";}s:6:"french";a:300:{s:3:"es ";s:1:"0";s:3:" de";s:1:"1";s:3:"de ";s:1:"2";s:3:" le";s:1:"3";s:3:"ent";s:1:"4";s:3:"le ";s:1:"5";s:3:"nt ";s:1:"6";s:3:"la ";s:1:"7";s:3:"s d";s:1:"8";s:3:" la";s:1:"9";s:3:"ion";s:2:"10";s:3:"on ";s:2:"11";s:3:"re ";s:2:"12";s:3:" pa";s:2:"13";s:3:"e l";s:2:"14";s:3:"e d";s:2:"15";s:3:" l'";s:2:"16";s:3:"e p";s:2:"17";s:3:" co";s:2:"18";s:3:" pr";s:2:"19";s:3:"tio";s:2:"20";s:3:"ns ";s:2:"21";s:3:" en";s:2:"22";s:3:"ne ";s:2:"23";s:3:"que";s:2:"24";s:3:"r l";s:2:"25";s:3:"les";s:2:"26";s:3:"ur ";s:2:"27";s:3:"en ";s:2:"28";s:3:"ati";s:2:"29";s:3:"ue ";s:2:"30";s:3:" po";s:2:"31";s:3:" d'";s:2:"32";s:3:"par";s:2:"33";s:3:" a ";s:2:"34";s:3:"et ";s:2:"35";s:3:"it ";s:2:"36";s:3:" qu";s:2:"37";s:3:"men";s:2:"38";s:3:"ons";s:2:"39";s:3:"te ";s:2:"40";s:3:" et";s:2:"41";s:3:"t d";s:2:"42";s:3:" re";s:2:"43";s:3:"des";s:2:"44";s:3:" un";s:2:"45";s:3:"ie ";s:2:"46";s:3:"s l";s:2:"47";s:3:" su";s:2:"48";s:3:"pou";s:2:"49";s:3:" au";s:2:"50";s:4:" à ";s:2:"51";s:3:"con";s:2:"52";s:3:"er ";s:2:"53";s:3:" no";s:2:"54";s:3:"ait";s:2:"55";s:3:"e c";s:2:"56";s:3:"se ";s:2:"57";s:4:"té ";s:2:"58";s:3:"du ";s:2:"59";s:3:" du";s:2:"60";s:4:" dé";s:2:"61";s:3:"ce ";s:2:"62";s:3:"e e";s:2:"63";s:3:"is ";s:2:"64";s:3:"n d";s:2:"65";s:3:"s a";s:2:"66";s:3:" so";s:2:"67";s:3:"e r";s:2:"68";s:3:"e s";s:2:"69";s:3:"our";s:2:"70";s:3:"res";s:2:"71";s:3:"ssi";s:2:"72";s:3:"eur";s:2:"73";s:3:" se";s:2:"74";s:3:"eme";s:2:"75";s:3:"est";s:2:"76";s:3:"us ";s:2:"77";s:3:"sur";s:2:"78";s:3:"ant";s:2:"79";s:3:"iqu";s:2:"80";s:3:"s p";s:2:"81";s:3:"une";s:2:"82";s:3:"uss";s:2:"83";s:3:"l'a";s:2:"84";s:3:"pro";s:2:"85";s:3:"ter";s:2:"86";s:3:"tre";s:2:"87";s:3:"end";s:2:"88";s:3:"rs ";s:2:"89";s:3:" ce";s:2:"90";s:3:"e a";s:2:"91";s:3:"t p";s:2:"92";s:3:"un ";s:2:"93";s:3:" ma";s:2:"94";s:3:" ru";s:2:"95";s:4:" ré";s:2:"96";s:3:"ous";s:2:"97";s:3:"ris";s:2:"98";s:3:"rus";s:2:"99";s:3:"sse";s:3:"100";s:3:"ans";s:3:"101";s:3:"ar ";s:3:"102";s:3:"com";s:3:"103";s:3:"e m";s:3:"104";s:3:"ire";s:3:"105";s:3:"nce";s:3:"106";s:3:"nte";s:3:"107";s:3:"t l";s:3:"108";s:3:" av";s:3:"109";s:3:" mo";s:3:"110";s:3:" te";s:3:"111";s:3:"il ";s:3:"112";s:3:"me ";s:3:"113";s:3:"ont";s:3:"114";s:3:"ten";s:3:"115";s:3:"a p";s:3:"116";s:3:"dan";s:3:"117";s:3:"pas";s:3:"118";s:3:"qui";s:3:"119";s:3:"s e";s:3:"120";s:3:"s s";s:3:"121";s:3:" in";s:3:"122";s:3:"ist";s:3:"123";s:3:"lle";s:3:"124";s:3:"nou";s:3:"125";s:4:"pré";s:3:"126";s:3:"'un";s:3:"127";s:3:"air";s:3:"128";s:3:"d'a";s:3:"129";s:3:"ir ";s:3:"130";s:3:"n e";s:3:"131";s:3:"rop";s:3:"132";s:3:"ts ";s:3:"133";s:3:" da";s:3:"134";s:3:"a s";s:3:"135";s:3:"as ";s:3:"136";s:3:"au ";s:3:"137";s:3:"den";s:3:"138";s:3:"mai";s:3:"139";s:3:"mis";s:3:"140";s:3:"ori";s:3:"141";s:3:"out";s:3:"142";s:3:"rme";s:3:"143";s:3:"sio";s:3:"144";s:3:"tte";s:3:"145";s:3:"ux ";s:3:"146";s:3:"a d";s:3:"147";s:3:"ien";s:3:"148";s:3:"n a";s:3:"149";s:3:"ntr";s:3:"150";s:3:"omm";s:3:"151";s:3:"ort";s:3:"152";s:3:"ouv";s:3:"153";s:3:"s c";s:3:"154";s:3:"son";s:3:"155";s:3:"tes";s:3:"156";s:3:"ver";s:3:"157";s:4:"ère";s:3:"158";s:3:" il";s:3:"159";s:3:" m ";s:3:"160";s:3:" sa";s:3:"161";s:3:" ve";s:3:"162";s:3:"a r";s:3:"163";s:3:"ais";s:3:"164";s:3:"ava";s:3:"165";s:3:"di ";s:3:"166";s:3:"n p";s:3:"167";s:3:"sti";s:3:"168";s:3:"ven";s:3:"169";s:3:" mi";s:3:"170";s:3:"ain";s:3:"171";s:3:"enc";s:3:"172";s:3:"for";s:3:"173";s:4:"ité";s:3:"174";s:3:"lar";s:3:"175";s:3:"oir";s:3:"176";s:3:"rem";s:3:"177";s:3:"ren";s:3:"178";s:3:"rro";s:3:"179";s:4:"rés";s:3:"180";s:3:"sie";s:3:"181";s:3:"t a";s:3:"182";s:3:"tur";s:3:"183";s:3:" pe";s:3:"184";s:3:" to";s:3:"185";s:3:"d'u";s:3:"186";s:3:"ell";s:3:"187";s:3:"err";s:3:"188";s:3:"ers";s:3:"189";s:3:"ide";s:3:"190";s:3:"ine";s:3:"191";s:3:"iss";s:3:"192";s:3:"mes";s:3:"193";s:3:"por";s:3:"194";s:3:"ran";s:3:"195";s:3:"sit";s:3:"196";s:3:"st ";s:3:"197";s:3:"t r";s:3:"198";s:3:"uti";s:3:"199";s:3:"vai";s:3:"200";s:4:"é l";s:3:"201";s:4:"ési";s:3:"202";s:3:" di";s:3:"203";s:3:" n'";s:3:"204";s:4:" ét";s:3:"205";s:3:"a c";s:3:"206";s:3:"ass";s:3:"207";s:3:"e t";s:3:"208";s:3:"in ";s:3:"209";s:3:"nde";s:3:"210";s:3:"pre";s:3:"211";s:3:"rat";s:3:"212";s:3:"s m";s:3:"213";s:3:"ste";s:3:"214";s:3:"tai";s:3:"215";s:3:"tch";s:3:"216";s:3:"ui ";s:3:"217";s:3:"uro";s:3:"218";s:4:"ès ";s:3:"219";s:3:" es";s:3:"220";s:3:" fo";s:3:"221";s:3:" tr";s:3:"222";s:3:"'ad";s:3:"223";s:3:"app";s:3:"224";s:3:"aux";s:3:"225";s:4:"e à";s:3:"226";s:3:"ett";s:3:"227";s:3:"iti";s:3:"228";s:3:"lit";s:3:"229";s:3:"nal";s:3:"230";s:4:"opé";s:3:"231";s:3:"r d";s:3:"232";s:3:"ra ";s:3:"233";s:3:"rai";s:3:"234";s:3:"ror";s:3:"235";s:3:"s r";s:3:"236";s:3:"tat";s:3:"237";s:4:"uté";s:3:"238";s:4:"à l";s:3:"239";s:3:" af";s:3:"240";s:3:"anc";s:3:"241";s:3:"ara";s:3:"242";s:3:"art";s:3:"243";s:3:"bre";s:3:"244";s:4:"ché";s:3:"245";s:3:"dre";s:3:"246";s:3:"e f";s:3:"247";s:3:"ens";s:3:"248";s:3:"lem";s:3:"249";s:3:"n r";s:3:"250";s:3:"n t";s:3:"251";s:3:"ndr";s:3:"252";s:3:"nne";s:3:"253";s:3:"onn";s:3:"254";s:3:"pos";s:3:"255";s:3:"s t";s:3:"256";s:3:"tiq";s:3:"257";s:3:"ure";s:3:"258";s:3:" tu";s:3:"259";s:3:"ale";s:3:"260";s:3:"and";s:3:"261";s:3:"ave";s:3:"262";s:3:"cla";s:3:"263";s:3:"cou";s:3:"264";s:3:"e n";s:3:"265";s:3:"emb";s:3:"266";s:3:"ins";s:3:"267";s:3:"jou";s:3:"268";s:3:"mme";s:3:"269";s:3:"rie";s:3:"270";s:4:"rès";s:3:"271";s:3:"sem";s:3:"272";s:3:"str";s:3:"273";s:3:"t i";s:3:"274";s:3:"ues";s:3:"275";s:3:"uni";s:3:"276";s:3:"uve";s:3:"277";s:4:"é d";s:3:"278";s:4:"ée ";s:3:"279";s:3:" ch";s:3:"280";s:3:" do";s:3:"281";s:3:" eu";s:3:"282";s:3:" fa";s:3:"283";s:3:" lo";s:3:"284";s:3:" ne";s:3:"285";s:3:" ra";s:3:"286";s:3:"arl";s:3:"287";s:3:"att";s:3:"288";s:3:"ec ";s:3:"289";s:3:"ica";s:3:"290";s:3:"l a";s:3:"291";s:3:"l'o";s:3:"292";s:4:"l'é";s:3:"293";s:3:"mmi";s:3:"294";s:3:"nta";s:3:"295";s:3:"orm";s:3:"296";s:3:"ou ";s:3:"297";s:3:"r u";s:3:"298";s:3:"rle";s:3:"299";}s:6:"german";a:300:{s:3:"en ";s:1:"0";s:3:"er ";s:1:"1";s:3:" de";s:1:"2";s:3:"der";s:1:"3";s:3:"ie ";s:1:"4";s:3:" di";s:1:"5";s:3:"die";s:1:"6";s:3:"sch";s:1:"7";s:3:"ein";s:1:"8";s:3:"che";s:1:"9";s:3:"ich";s:2:"10";s:3:"den";s:2:"11";s:3:"in ";s:2:"12";s:3:"te ";s:2:"13";s:3:"ch ";s:2:"14";s:3:" ei";s:2:"15";s:3:"ung";s:2:"16";s:3:"n d";s:2:"17";s:3:"nd ";s:2:"18";s:3:" be";s:2:"19";s:3:"ver";s:2:"20";s:3:"es ";s:2:"21";s:3:" zu";s:2:"22";s:3:"eit";s:2:"23";s:3:"gen";s:2:"24";s:3:"und";s:2:"25";s:3:" un";s:2:"26";s:3:" au";s:2:"27";s:3:" in";s:2:"28";s:3:"cht";s:2:"29";s:3:"it ";s:2:"30";s:3:"ten";s:2:"31";s:3:" da";s:2:"32";s:3:"ent";s:2:"33";s:3:" ve";s:2:"34";s:3:"and";s:2:"35";s:3:" ge";s:2:"36";s:3:"ine";s:2:"37";s:3:" mi";s:2:"38";s:3:"r d";s:2:"39";s:3:"hen";s:2:"40";s:3:"ng ";s:2:"41";s:3:"nde";s:2:"42";s:3:" vo";s:2:"43";s:3:"e d";s:2:"44";s:3:"ber";s:2:"45";s:3:"men";s:2:"46";s:3:"ei ";s:2:"47";s:3:"mit";s:2:"48";s:3:" st";s:2:"49";s:3:"ter";s:2:"50";s:3:"ren";s:2:"51";s:3:"t d";s:2:"52";s:3:" er";s:2:"53";s:3:"ere";s:2:"54";s:3:"n s";s:2:"55";s:3:"ste";s:2:"56";s:3:" se";s:2:"57";s:3:"e s";s:2:"58";s:3:"ht ";s:2:"59";s:3:"des";s:2:"60";s:3:"ist";s:2:"61";s:3:"ne ";s:2:"62";s:3:"auf";s:2:"63";s:3:"e a";s:2:"64";s:3:"isc";s:2:"65";s:3:"on ";s:2:"66";s:3:"rte";s:2:"67";s:3:" re";s:2:"68";s:3:" we";s:2:"69";s:3:"ges";s:2:"70";s:3:"uch";s:2:"71";s:4:" fü";s:2:"72";s:3:" so";s:2:"73";s:3:"bei";s:2:"74";s:3:"e e";s:2:"75";s:3:"nen";s:2:"76";s:3:"r s";s:2:"77";s:3:"ach";s:2:"78";s:4:"für";s:2:"79";s:3:"ier";s:2:"80";s:3:"par";s:2:"81";s:4:"ür ";s:2:"82";s:3:" ha";s:2:"83";s:3:"as ";s:2:"84";s:3:"ert";s:2:"85";s:3:" an";s:2:"86";s:3:" pa";s:2:"87";s:3:" sa";s:2:"88";s:3:" sp";s:2:"89";s:3:" wi";s:2:"90";s:3:"for";s:2:"91";s:3:"tag";s:2:"92";s:3:"zu ";s:2:"93";s:3:"das";s:2:"94";s:3:"rei";s:2:"95";s:3:"he ";s:2:"96";s:3:"hre";s:2:"97";s:3:"nte";s:2:"98";s:3:"sen";s:2:"99";s:3:"vor";s:3:"100";s:3:" sc";s:3:"101";s:3:"ech";s:3:"102";s:3:"etz";s:3:"103";s:3:"hei";s:3:"104";s:3:"lan";s:3:"105";s:3:"n a";s:3:"106";s:3:"pd ";s:3:"107";s:3:"st ";s:3:"108";s:3:"sta";s:3:"109";s:3:"ese";s:3:"110";s:3:"lic";s:3:"111";s:3:" ab";s:3:"112";s:3:" si";s:3:"113";s:3:"gte";s:3:"114";s:3:" wa";s:3:"115";s:3:"iti";s:3:"116";s:3:"kei";s:3:"117";s:3:"n e";s:3:"118";s:3:"nge";s:3:"119";s:3:"sei";s:3:"120";s:3:"tra";s:3:"121";s:3:"zen";s:3:"122";s:3:" im";s:3:"123";s:3:" la";s:3:"124";s:3:"art";s:3:"125";s:3:"im ";s:3:"126";s:3:"lle";s:3:"127";s:3:"n w";s:3:"128";s:3:"rde";s:3:"129";s:3:"rec";s:3:"130";s:3:"set";s:3:"131";s:3:"str";s:3:"132";s:3:"tei";s:3:"133";s:3:"tte";s:3:"134";s:3:" ni";s:3:"135";s:3:"e p";s:3:"136";s:3:"ehe";s:3:"137";s:3:"ers";s:3:"138";s:3:"g d";s:3:"139";s:3:"nic";s:3:"140";s:3:"von";s:3:"141";s:3:" al";s:3:"142";s:3:" pr";s:3:"143";s:3:"an ";s:3:"144";s:3:"aus";s:3:"145";s:3:"erf";s:3:"146";s:3:"r e";s:3:"147";s:3:"tze";s:3:"148";s:4:"tür";s:3:"149";s:3:"uf ";s:3:"150";s:3:"ag ";s:3:"151";s:3:"als";s:3:"152";s:3:"ar ";s:3:"153";s:3:"chs";s:3:"154";s:3:"end";s:3:"155";s:3:"ge ";s:3:"156";s:3:"ige";s:3:"157";s:3:"ion";s:3:"158";s:3:"ls ";s:3:"159";s:3:"n m";s:3:"160";s:3:"ngs";s:3:"161";s:3:"nis";s:3:"162";s:3:"nt ";s:3:"163";s:3:"ord";s:3:"164";s:3:"s s";s:3:"165";s:3:"sse";s:3:"166";s:4:" tü";s:3:"167";s:3:"ahl";s:3:"168";s:3:"e b";s:3:"169";s:3:"ede";s:3:"170";s:3:"em ";s:3:"171";s:3:"len";s:3:"172";s:3:"n i";s:3:"173";s:3:"orm";s:3:"174";s:3:"pro";s:3:"175";s:3:"rke";s:3:"176";s:3:"run";s:3:"177";s:3:"s d";s:3:"178";s:3:"wah";s:3:"179";s:3:"wer";s:3:"180";s:4:"ürk";s:3:"181";s:3:" me";s:3:"182";s:3:"age";s:3:"183";s:3:"att";s:3:"184";s:3:"ell";s:3:"185";s:3:"est";s:3:"186";s:3:"hat";s:3:"187";s:3:"n b";s:3:"188";s:3:"oll";s:3:"189";s:3:"raf";s:3:"190";s:3:"s a";s:3:"191";s:3:"tsc";s:3:"192";s:3:" es";s:3:"193";s:3:" fo";s:3:"194";s:3:" gr";s:3:"195";s:3:" ja";s:3:"196";s:3:"abe";s:3:"197";s:3:"auc";s:3:"198";s:3:"ben";s:3:"199";s:3:"e n";s:3:"200";s:3:"ege";s:3:"201";s:3:"lie";s:3:"202";s:3:"n u";s:3:"203";s:3:"r v";s:3:"204";s:3:"re ";s:3:"205";s:3:"rit";s:3:"206";s:3:"sag";s:3:"207";s:3:" am";s:3:"208";s:3:"agt";s:3:"209";s:3:"ahr";s:3:"210";s:3:"bra";s:3:"211";s:3:"de ";s:3:"212";s:3:"erd";s:3:"213";s:3:"her";s:3:"214";s:3:"ite";s:3:"215";s:3:"le ";s:3:"216";s:3:"n p";s:3:"217";s:3:"n v";s:3:"218";s:3:"or ";s:3:"219";s:3:"rbe";s:3:"220";s:3:"rt ";s:3:"221";s:3:"sic";s:3:"222";s:3:"wie";s:3:"223";s:4:"übe";s:3:"224";s:3:" is";s:3:"225";s:4:" üb";s:3:"226";s:3:"cha";s:3:"227";s:3:"chi";s:3:"228";s:3:"e f";s:3:"229";s:3:"e m";s:3:"230";s:3:"eri";s:3:"231";s:3:"ied";s:3:"232";s:3:"mme";s:3:"233";s:3:"ner";s:3:"234";s:3:"r a";s:3:"235";s:3:"sti";s:3:"236";s:3:"t a";s:3:"237";s:3:"t s";s:3:"238";s:3:"tis";s:3:"239";s:3:" ko";s:3:"240";s:3:"arb";s:3:"241";s:3:"ds ";s:3:"242";s:3:"gan";s:3:"243";s:3:"n z";s:3:"244";s:3:"r f";s:3:"245";s:3:"r w";s:3:"246";s:3:"ran";s:3:"247";s:3:"se ";s:3:"248";s:3:"t i";s:3:"249";s:3:"wei";s:3:"250";s:3:"wir";s:3:"251";s:3:" br";s:3:"252";s:3:" np";s:3:"253";s:3:"am ";s:3:"254";s:3:"bes";s:3:"255";s:3:"d d";s:3:"256";s:3:"deu";s:3:"257";s:3:"e g";s:3:"258";s:3:"e k";s:3:"259";s:3:"efo";s:3:"260";s:3:"et ";s:3:"261";s:3:"eut";s:3:"262";s:3:"fen";s:3:"263";s:3:"hse";s:3:"264";s:3:"lte";s:3:"265";s:3:"n r";s:3:"266";s:3:"npd";s:3:"267";s:3:"r b";s:3:"268";s:3:"rhe";s:3:"269";s:3:"t w";s:3:"270";s:3:"tz ";s:3:"271";s:3:" fr";s:3:"272";s:3:" ih";s:3:"273";s:3:" ke";s:3:"274";s:3:" ma";s:3:"275";s:3:"ame";s:3:"276";s:3:"ang";s:3:"277";s:3:"d s";s:3:"278";s:3:"eil";s:3:"279";s:3:"el ";s:3:"280";s:3:"era";s:3:"281";s:3:"erh";s:3:"282";s:3:"h d";s:3:"283";s:3:"i d";s:3:"284";s:3:"kan";s:3:"285";s:3:"n f";s:3:"286";s:3:"n l";s:3:"287";s:3:"nts";s:3:"288";s:3:"och";s:3:"289";s:3:"rag";s:3:"290";s:3:"rd ";s:3:"291";s:3:"spd";s:3:"292";s:3:"spr";s:3:"293";s:3:"tio";s:3:"294";s:3:" ar";s:3:"295";s:3:" en";s:3:"296";s:3:" ka";s:3:"297";s:3:"ark";s:3:"298";s:3:"ass";s:3:"299";}s:5:"hausa";a:300:{s:3:" da";s:1:"0";s:3:"da ";s:1:"1";s:3:"in ";s:1:"2";s:3:"an ";s:1:"3";s:3:"ya ";s:1:"4";s:3:" wa";s:1:"5";s:3:" ya";s:1:"6";s:3:"na ";s:1:"7";s:3:"ar ";s:1:"8";s:3:"a d";s:1:"9";s:3:" ma";s:2:"10";s:3:"wa ";s:2:"11";s:3:"a a";s:2:"12";s:3:"a k";s:2:"13";s:3:"a s";s:2:"14";s:3:" ta";s:2:"15";s:3:"wan";s:2:"16";s:3:" a ";s:2:"17";s:3:" ba";s:2:"18";s:3:" ka";s:2:"19";s:3:"ta ";s:2:"20";s:3:"a y";s:2:"21";s:3:"n d";s:2:"22";s:3:" ha";s:2:"23";s:3:" na";s:2:"24";s:3:" su";s:2:"25";s:3:" sa";s:2:"26";s:3:"kin";s:2:"27";s:3:"sa ";s:2:"28";s:3:"ata";s:2:"29";s:3:" ko";s:2:"30";s:3:"a t";s:2:"31";s:3:"su ";s:2:"32";s:3:" ga";s:2:"33";s:3:"ai ";s:2:"34";s:3:" sh";s:2:"35";s:3:"a m";s:2:"36";s:3:"uwa";s:2:"37";s:3:"iya";s:2:"38";s:3:"ma ";s:2:"39";s:3:"a w";s:2:"40";s:3:"asa";s:2:"41";s:3:"yan";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ani";s:2:"44";s:3:"shi";s:2:"45";s:3:"a b";s:2:"46";s:3:"a h";s:2:"47";s:3:"a c";s:2:"48";s:3:"ama";s:2:"49";s:3:"ba ";s:2:"50";s:3:"nan";s:2:"51";s:3:"n a";s:2:"52";s:3:" mu";s:2:"53";s:3:"ana";s:2:"54";s:3:" yi";s:2:"55";s:3:"a g";s:2:"56";s:3:" za";s:2:"57";s:3:"i d";s:2:"58";s:3:" ku";s:2:"59";s:3:"aka";s:2:"60";s:3:"yi ";s:2:"61";s:3:"n k";s:2:"62";s:3:"ann";s:2:"63";s:3:"ke ";s:2:"64";s:3:"tar";s:2:"65";s:3:" ci";s:2:"66";s:3:"iki";s:2:"67";s:3:"n s";s:2:"68";s:3:"ko ";s:2:"69";s:3:" ra";s:2:"70";s:3:"ki ";s:2:"71";s:3:"ne ";s:2:"72";s:3:"a z";s:2:"73";s:3:"mat";s:2:"74";s:3:"hak";s:2:"75";s:3:"nin";s:2:"76";s:3:"e d";s:2:"77";s:3:"nna";s:2:"78";s:3:"uma";s:2:"79";s:3:"nda";s:2:"80";s:3:"a n";s:2:"81";s:3:"ada";s:2:"82";s:3:"cik";s:2:"83";s:3:"ni ";s:2:"84";s:3:"rin";s:2:"85";s:3:"una";s:2:"86";s:3:"ara";s:2:"87";s:3:"kum";s:2:"88";s:3:"akk";s:2:"89";s:3:" ce";s:2:"90";s:3:" du";s:2:"91";s:3:"man";s:2:"92";s:3:"n y";s:2:"93";s:3:"nci";s:2:"94";s:3:"sar";s:2:"95";s:3:"aki";s:2:"96";s:3:"awa";s:2:"97";s:3:"ci ";s:2:"98";s:3:"kan";s:2:"99";s:3:"kar";s:3:"100";s:3:"ari";s:3:"101";s:3:"n m";s:3:"102";s:3:"and";s:3:"103";s:3:"hi ";s:3:"104";s:3:"n t";s:3:"105";s:3:"ga ";s:3:"106";s:3:"owa";s:3:"107";s:3:"ash";s:3:"108";s:3:"kam";s:3:"109";s:3:"dan";s:3:"110";s:3:"ewa";s:3:"111";s:3:"nsa";s:3:"112";s:3:"ali";s:3:"113";s:3:"ami";s:3:"114";s:3:" ab";s:3:"115";s:3:" do";s:3:"116";s:3:"anc";s:3:"117";s:3:"n r";s:3:"118";s:3:"aya";s:3:"119";s:3:"i n";s:3:"120";s:3:"sun";s:3:"121";s:3:"uka";s:3:"122";s:3:" al";s:3:"123";s:3:" ne";s:3:"124";s:3:"a'a";s:3:"125";s:3:"cew";s:3:"126";s:3:"cin";s:3:"127";s:3:"mas";s:3:"128";s:3:"tak";s:3:"129";s:3:"un ";s:3:"130";s:3:"aba";s:3:"131";s:3:"kow";s:3:"132";s:3:"a r";s:3:"133";s:3:"ra ";s:3:"134";s:3:" ja";s:3:"135";s:4:" ƙa";s:3:"136";s:3:"en ";s:3:"137";s:3:"r d";s:3:"138";s:3:"sam";s:3:"139";s:3:"tsa";s:3:"140";s:3:" ru";s:3:"141";s:3:"ce ";s:3:"142";s:3:"i a";s:3:"143";s:3:"abi";s:3:"144";s:3:"ida";s:3:"145";s:3:"mut";s:3:"146";s:3:"n g";s:3:"147";s:3:"n j";s:3:"148";s:3:"san";s:3:"149";s:4:"a ƙ";s:3:"150";s:3:"har";s:3:"151";s:3:"on ";s:3:"152";s:3:"i m";s:3:"153";s:3:"suk";s:3:"154";s:3:" ak";s:3:"155";s:3:" ji";s:3:"156";s:3:"yar";s:3:"157";s:3:"'ya";s:3:"158";s:3:"kwa";s:3:"159";s:3:"min";s:3:"160";s:3:" 'y";s:3:"161";s:3:"ane";s:3:"162";s:3:"ban";s:3:"163";s:3:"ins";s:3:"164";s:3:"ruw";s:3:"165";s:3:"i k";s:3:"166";s:3:"n h";s:3:"167";s:3:" ad";s:3:"168";s:3:"ake";s:3:"169";s:3:"n w";s:3:"170";s:3:"sha";s:3:"171";s:3:"utu";s:3:"172";s:4:" ƴa";s:3:"173";s:3:"bay";s:3:"174";s:3:"tan";s:3:"175";s:4:"ƴan";s:3:"176";s:3:"bin";s:3:"177";s:3:"duk";s:3:"178";s:3:"e m";s:3:"179";s:3:"n n";s:3:"180";s:3:"oka";s:3:"181";s:3:"yin";s:3:"182";s:4:"ɗan";s:3:"183";s:3:" fa";s:3:"184";s:3:"a i";s:3:"185";s:3:"kki";s:3:"186";s:3:"re ";s:3:"187";s:3:"za ";s:3:"188";s:3:"ala";s:3:"189";s:3:"asu";s:3:"190";s:3:"han";s:3:"191";s:3:"i y";s:3:"192";s:3:"mar";s:3:"193";s:3:"ran";s:3:"194";s:4:"ƙas";s:3:"195";s:3:"add";s:3:"196";s:3:"ars";s:3:"197";s:3:"gab";s:3:"198";s:3:"ira";s:3:"199";s:3:"mma";s:3:"200";s:3:"u d";s:3:"201";s:3:" ts";s:3:"202";s:3:"abb";s:3:"203";s:3:"abu";s:3:"204";s:3:"aga";s:3:"205";s:3:"gar";s:3:"206";s:3:"n b";s:3:"207";s:4:" ɗa";s:3:"208";s:3:"aci";s:3:"209";s:3:"aik";s:3:"210";s:3:"am ";s:3:"211";s:3:"dun";s:3:"212";s:3:"e s";s:3:"213";s:3:"i b";s:3:"214";s:3:"i w";s:3:"215";s:3:"kas";s:3:"216";s:3:"kok";s:3:"217";s:3:"wam";s:3:"218";s:3:" am";s:3:"219";s:3:"amf";s:3:"220";s:3:"bba";s:3:"221";s:3:"din";s:3:"222";s:3:"fan";s:3:"223";s:3:"gwa";s:3:"224";s:3:"i s";s:3:"225";s:3:"wat";s:3:"226";s:3:"ano";s:3:"227";s:3:"are";s:3:"228";s:3:"dai";s:3:"229";s:3:"iri";s:3:"230";s:3:"ma'";s:3:"231";s:3:" la";s:3:"232";s:3:"all";s:3:"233";s:3:"dam";s:3:"234";s:3:"ika";s:3:"235";s:3:"mi ";s:3:"236";s:3:"she";s:3:"237";s:3:"tum";s:3:"238";s:3:"uni";s:3:"239";s:3:" an";s:3:"240";s:3:" ai";s:3:"241";s:3:" ke";s:3:"242";s:3:" ki";s:3:"243";s:3:"dag";s:3:"244";s:3:"mai";s:3:"245";s:3:"mfa";s:3:"246";s:3:"no ";s:3:"247";s:3:"nsu";s:3:"248";s:3:"o d";s:3:"249";s:3:"sak";s:3:"250";s:3:"um ";s:3:"251";s:3:" bi";s:3:"252";s:3:" gw";s:3:"253";s:3:" kw";s:3:"254";s:3:"jam";s:3:"255";s:3:"yya";s:3:"256";s:3:"a j";s:3:"257";s:3:"fa ";s:3:"258";s:3:"uta";s:3:"259";s:3:" hu";s:3:"260";s:3:"'a ";s:3:"261";s:3:"ans";s:3:"262";s:4:"aɗa";s:3:"263";s:3:"dda";s:3:"264";s:3:"hin";s:3:"265";s:3:"niy";s:3:"266";s:3:"r s";s:3:"267";s:3:"bat";s:3:"268";s:3:"dar";s:3:"269";s:3:"gan";s:3:"270";s:3:"i t";s:3:"271";s:3:"nta";s:3:"272";s:3:"oki";s:3:"273";s:3:"omi";s:3:"274";s:3:"sal";s:3:"275";s:3:"a l";s:3:"276";s:3:"kac";s:3:"277";s:3:"lla";s:3:"278";s:3:"wad";s:3:"279";s:3:"war";s:3:"280";s:3:"amm";s:3:"281";s:3:"dom";s:3:"282";s:3:"r m";s:3:"283";s:3:"ras";s:3:"284";s:3:"sai";s:3:"285";s:3:" lo";s:3:"286";s:3:"ats";s:3:"287";s:3:"hal";s:3:"288";s:3:"kat";s:3:"289";s:3:"li ";s:3:"290";s:3:"lok";s:3:"291";s:3:"n c";s:3:"292";s:3:"nar";s:3:"293";s:3:"tin";s:3:"294";s:3:"afa";s:3:"295";s:3:"bub";s:3:"296";s:3:"i g";s:3:"297";s:3:"isa";s:3:"298";s:3:"mak";s:3:"299";}s:8:"hawaiian";a:300:{s:3:" ka";s:1:"0";s:3:"na ";s:1:"1";s:3:" o ";s:1:"2";s:3:"ka ";s:1:"3";s:3:" ma";s:1:"4";s:3:" a ";s:1:"5";s:3:" la";s:1:"6";s:3:"a i";s:1:"7";s:3:"a m";s:1:"8";s:3:" i ";s:1:"9";s:3:"la ";s:2:"10";s:3:"ana";s:2:"11";s:3:"ai ";s:2:"12";s:3:"ia ";s:2:"13";s:3:"a o";s:2:"14";s:3:"a k";s:2:"15";s:3:"a h";s:2:"16";s:3:"o k";s:2:"17";s:3:" ke";s:2:"18";s:3:"a a";s:2:"19";s:3:"i k";s:2:"20";s:3:" ho";s:2:"21";s:3:" ia";s:2:"22";s:3:"ua ";s:2:"23";s:3:" na";s:2:"24";s:3:" me";s:2:"25";s:3:"e k";s:2:"26";s:3:"e a";s:2:"27";s:3:"au ";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ma ";s:2:"30";s:3:"mai";s:2:"31";s:3:"aku";s:2:"32";s:3:" ak";s:2:"33";s:3:"ahi";s:2:"34";s:3:" ha";s:2:"35";s:3:" ko";s:2:"36";s:3:" e ";s:2:"37";s:3:"a l";s:2:"38";s:3:" no";s:2:"39";s:3:"me ";s:2:"40";s:3:"ku ";s:2:"41";s:3:"aka";s:2:"42";s:3:"kan";s:2:"43";s:3:"no ";s:2:"44";s:3:"i a";s:2:"45";s:3:"ho ";s:2:"46";s:3:"ou ";s:2:"47";s:3:" ai";s:2:"48";s:3:"i o";s:2:"49";s:3:"a p";s:2:"50";s:3:"o l";s:2:"51";s:3:"o a";s:2:"52";s:3:"ama";s:2:"53";s:3:"a n";s:2:"54";s:3:" an";s:2:"55";s:3:"i m";s:2:"56";s:3:"han";s:2:"57";s:3:"i i";s:2:"58";s:3:"iho";s:2:"59";s:3:"kou";s:2:"60";s:3:"ne ";s:2:"61";s:3:" ih";s:2:"62";s:3:"o i";s:2:"63";s:3:"iki";s:2:"64";s:3:"ona";s:2:"65";s:3:"hoo";s:2:"66";s:3:"le ";s:2:"67";s:3:"e h";s:2:"68";s:3:" he";s:2:"69";s:3:"ina";s:2:"70";s:3:" wa";s:2:"71";s:3:"ea ";s:2:"72";s:3:"ako";s:2:"73";s:3:"u i";s:2:"74";s:3:"kah";s:2:"75";s:3:"oe ";s:2:"76";s:3:"i l";s:2:"77";s:3:"u a";s:2:"78";s:3:" pa";s:2:"79";s:3:"hoi";s:2:"80";s:3:"e i";s:2:"81";s:3:"era";s:2:"82";s:3:"ko ";s:2:"83";s:3:"u m";s:2:"84";s:3:"kua";s:2:"85";s:3:"mak";s:2:"86";s:3:"oi ";s:2:"87";s:3:"kai";s:2:"88";s:3:"i n";s:2:"89";s:3:"a e";s:2:"90";s:3:"hin";s:2:"91";s:3:"ane";s:2:"92";s:3:" ol";s:2:"93";s:3:"i h";s:2:"94";s:3:"mea";s:2:"95";s:3:"wah";s:2:"96";s:3:"lak";s:2:"97";s:3:"e m";s:2:"98";s:3:"o n";s:2:"99";s:3:"u l";s:3:"100";s:3:"ika";s:3:"101";s:3:"ki ";s:3:"102";s:3:"a w";s:3:"103";s:3:"mal";s:3:"104";s:3:"hi ";s:3:"105";s:3:"e n";s:3:"106";s:3:"u o";s:3:"107";s:3:"hik";s:3:"108";s:3:" ku";s:3:"109";s:3:"e l";s:3:"110";s:3:"ele";s:3:"111";s:3:"ra ";s:3:"112";s:3:"ber";s:3:"113";s:3:"ine";s:3:"114";s:3:"abe";s:3:"115";s:3:"ain";s:3:"116";s:3:"ala";s:3:"117";s:3:"lo ";s:3:"118";s:3:" po";s:3:"119";s:3:"kon";s:3:"120";s:3:" ab";s:3:"121";s:3:"ole";s:3:"122";s:3:"he ";s:3:"123";s:3:"pau";s:3:"124";s:3:"mah";s:3:"125";s:3:"va ";s:3:"126";s:3:"ela";s:3:"127";s:3:"kau";s:3:"128";s:3:"nak";s:3:"129";s:3:" oe";s:3:"130";s:3:"kei";s:3:"131";s:3:"oia";s:3:"132";s:3:" ie";s:3:"133";s:3:"ram";s:3:"134";s:3:" oi";s:3:"135";s:3:"oa ";s:3:"136";s:3:"eho";s:3:"137";s:3:"hov";s:3:"138";s:3:"ieh";s:3:"139";s:3:"ova";s:3:"140";s:3:" ua";s:3:"141";s:3:"una";s:3:"142";s:3:"ara";s:3:"143";s:3:"o s";s:3:"144";s:3:"awa";s:3:"145";s:3:"o o";s:3:"146";s:3:"nau";s:3:"147";s:3:"u n";s:3:"148";s:3:"wa ";s:3:"149";s:3:"wai";s:3:"150";s:3:"hel";s:3:"151";s:3:" ae";s:3:"152";s:3:" al";s:3:"153";s:3:"ae ";s:3:"154";s:3:"ta ";s:3:"155";s:3:"aik";s:3:"156";s:3:" hi";s:3:"157";s:3:"ale";s:3:"158";s:3:"ila";s:3:"159";s:3:"lel";s:3:"160";s:3:"ali";s:3:"161";s:3:"eik";s:3:"162";s:3:"olo";s:3:"163";s:3:"onu";s:3:"164";s:3:" lo";s:3:"165";s:3:"aua";s:3:"166";s:3:"e o";s:3:"167";s:3:"ola";s:3:"168";s:3:"hon";s:3:"169";s:3:"mam";s:3:"170";s:3:"nan";s:3:"171";s:3:" au";s:3:"172";s:3:"aha";s:3:"173";s:3:"lau";s:3:"174";s:3:"nua";s:3:"175";s:3:"oho";s:3:"176";s:3:"oma";s:3:"177";s:3:" ao";s:3:"178";s:3:"ii ";s:3:"179";s:3:"alu";s:3:"180";s:3:"ima";s:3:"181";s:3:"mau";s:3:"182";s:3:"ike";s:3:"183";s:3:"apa";s:3:"184";s:3:"elo";s:3:"185";s:3:"lii";s:3:"186";s:3:"poe";s:3:"187";s:3:"aia";s:3:"188";s:3:"noa";s:3:"189";s:3:" in";s:3:"190";s:3:"o m";s:3:"191";s:3:"oka";s:3:"192";s:3:"'u ";s:3:"193";s:3:"aho";s:3:"194";s:3:"ei ";s:3:"195";s:3:"eka";s:3:"196";s:3:"ha ";s:3:"197";s:3:"lu ";s:3:"198";s:3:"nei";s:3:"199";s:3:"hol";s:3:"200";s:3:"ino";s:3:"201";s:3:"o e";s:3:"202";s:3:"ema";s:3:"203";s:3:"iwa";s:3:"204";s:3:"olu";s:3:"205";s:3:"ada";s:3:"206";s:3:"naa";s:3:"207";s:3:"pa ";s:3:"208";s:3:"u k";s:3:"209";s:3:"ewa";s:3:"210";s:3:"hua";s:3:"211";s:3:"lam";s:3:"212";s:3:"lua";s:3:"213";s:3:"o h";s:3:"214";s:3:"ook";s:3:"215";s:3:"u h";s:3:"216";s:3:" li";s:3:"217";s:3:"ahu";s:3:"218";s:3:"amu";s:3:"219";s:3:"ui ";s:3:"220";s:3:" il";s:3:"221";s:3:" mo";s:3:"222";s:3:" se";s:3:"223";s:3:"eia";s:3:"224";s:3:"law";s:3:"225";s:3:" hu";s:3:"226";s:3:" ik";s:3:"227";s:3:"ail";s:3:"228";s:3:"e p";s:3:"229";s:3:"li ";s:3:"230";s:3:"lun";s:3:"231";s:3:"uli";s:3:"232";s:3:"io ";s:3:"233";s:3:"kik";s:3:"234";s:3:"noh";s:3:"235";s:3:"u e";s:3:"236";s:3:" sa";s:3:"237";s:3:"aaw";s:3:"238";s:3:"awe";s:3:"239";s:3:"ena";s:3:"240";s:3:"hal";s:3:"241";s:3:"kol";s:3:"242";s:3:"lan";s:3:"243";s:3:" le";s:3:"244";s:3:" ne";s:3:"245";s:3:"a'u";s:3:"246";s:3:"ilo";s:3:"247";s:3:"kap";s:3:"248";s:3:"oko";s:3:"249";s:3:"sa ";s:3:"250";s:3:" pe";s:3:"251";s:3:"hop";s:3:"252";s:3:"loa";s:3:"253";s:3:"ope";s:3:"254";s:3:"pe ";s:3:"255";s:3:" ad";s:3:"256";s:3:" pu";s:3:"257";s:3:"ahe";s:3:"258";s:3:"aol";s:3:"259";s:3:"ia'";s:3:"260";s:3:"lai";s:3:"261";s:3:"loh";s:3:"262";s:3:"na'";s:3:"263";s:3:"oom";s:3:"264";s:3:"aau";s:3:"265";s:3:"eri";s:3:"266";s:3:"kul";s:3:"267";s:3:"we ";s:3:"268";s:3:"ake";s:3:"269";s:3:"kek";s:3:"270";s:3:"laa";s:3:"271";s:3:"ri ";s:3:"272";s:3:"iku";s:3:"273";s:3:"kak";s:3:"274";s:3:"lim";s:3:"275";s:3:"nah";s:3:"276";s:3:"ner";s:3:"277";s:3:"nui";s:3:"278";s:3:"ono";s:3:"279";s:3:"a u";s:3:"280";s:3:"dam";s:3:"281";s:3:"kum";s:3:"282";s:3:"lok";s:3:"283";s:3:"mua";s:3:"284";s:3:"uma";s:3:"285";s:3:"wal";s:3:"286";s:3:"wi ";s:3:"287";s:3:"'i ";s:3:"288";s:3:"a'i";s:3:"289";s:3:"aan";s:3:"290";s:3:"alo";s:3:"291";s:3:"eta";s:3:"292";s:3:"mu ";s:3:"293";s:3:"ohe";s:3:"294";s:3:"u p";s:3:"295";s:3:"ula";s:3:"296";s:3:"uwa";s:3:"297";s:3:" nu";s:3:"298";s:3:"amo";s:3:"299";}s:5:"hindi";a:300:{s:7:"ें ";s:1:"0";s:7:" है";s:1:"1";s:9:"में";s:1:"2";s:7:" मे";s:1:"3";s:7:"ने ";s:1:"4";s:7:"की ";s:1:"5";s:7:"के ";s:1:"6";s:7:"है ";s:1:"7";s:7:" के";s:1:"8";s:7:" की";s:1:"9";s:7:" को";s:2:"10";s:7:"ों ";s:2:"11";s:7:"को ";s:2:"12";s:7:"ा ह";s:2:"13";s:7:" का";s:2:"14";s:7:"से ";s:2:"15";s:7:"ा क";s:2:"16";s:7:"े क";s:2:"17";s:7:"ं क";s:2:"18";s:7:"या ";s:2:"19";s:7:" कि";s:2:"20";s:7:" से";s:2:"21";s:7:"का ";s:2:"22";s:7:"ी क";s:2:"23";s:7:" ने";s:2:"24";s:7:" और";s:2:"25";s:7:"और ";s:2:"26";s:7:"ना ";s:2:"27";s:7:"कि ";s:2:"28";s:7:"भी ";s:2:"29";s:7:"ी स";s:2:"30";s:7:" जा";s:2:"31";s:7:" पर";s:2:"32";s:7:"ार ";s:2:"33";s:7:" कर";s:2:"34";s:7:"ी ह";s:2:"35";s:7:" हो";s:2:"36";s:7:"ही ";s:2:"37";s:9:"िया";s:2:"38";s:7:" इस";s:2:"39";s:7:" रह";s:2:"40";s:7:"र क";s:2:"41";s:9:"ुना";s:2:"42";s:7:"ता ";s:2:"43";s:7:"ान ";s:2:"44";s:7:"े स";s:2:"45";s:7:" भी";s:2:"46";s:7:" रा";s:2:"47";s:7:"े ह";s:2:"48";s:7:" चु";s:2:"49";s:7:" पा";s:2:"50";s:7:"पर ";s:2:"51";s:9:"चुन";s:2:"52";s:9:"नाव";s:2:"53";s:7:" कह";s:2:"54";s:9:"प्र";s:2:"55";s:7:" भा";s:2:"56";s:9:"राज";s:2:"57";s:9:"हैं";s:2:"58";s:7:"ा स";s:2:"59";s:7:"ै क";s:2:"60";s:7:"ैं ";s:2:"61";s:7:"नी ";s:2:"62";s:7:"ल क";s:2:"63";s:7:"ीं ";s:2:"64";s:7:"़ी ";s:2:"65";s:7:"था ";s:2:"66";s:7:"री ";s:2:"67";s:7:"ाव ";s:2:"68";s:7:"े ब";s:2:"69";s:7:" प्";s:2:"70";s:9:"क्ष";s:2:"71";s:7:"पा ";s:2:"72";s:7:"ले ";s:2:"73";s:7:" दे";s:2:"74";s:7:"ला ";s:2:"75";s:7:"हा ";s:2:"76";s:9:"ाजप";s:2:"77";s:7:" था";s:2:"78";s:7:" नह";s:2:"79";s:7:"इस ";s:2:"80";s:7:"कर ";s:2:"81";s:9:"जपा";s:2:"82";s:9:"नही";s:2:"83";s:9:"भाज";s:2:"84";s:9:"यों";s:2:"85";s:7:"र स";s:2:"86";s:9:"हीं";s:2:"87";s:7:" अम";s:2:"88";s:7:" बा";s:2:"89";s:7:" मा";s:2:"90";s:7:" वि";s:2:"91";s:9:"रीक";s:2:"92";s:7:"िए ";s:2:"93";s:7:"े प";s:2:"94";s:9:"्या";s:2:"95";s:7:" ही";s:2:"96";s:7:"ं म";s:2:"97";s:9:"कार";s:2:"98";s:7:"ा ज";s:2:"99";s:7:"े ल";s:3:"100";s:7:" ता";s:3:"101";s:7:" दि";s:3:"102";s:7:" सा";s:3:"103";s:7:" हम";s:3:"104";s:7:"ा न";s:3:"105";s:7:"ा म";s:3:"106";s:9:"ाक़";s:3:"107";s:9:"्ता";s:3:"108";s:7:" एक";s:3:"109";s:7:" सं";s:3:"110";s:7:" स्";s:3:"111";s:9:"अमर";s:3:"112";s:9:"क़ी";s:3:"113";s:9:"ताज";s:3:"114";s:9:"मरी";s:3:"115";s:9:"स्थ";s:3:"116";s:7:"ा थ";s:3:"117";s:9:"ार्";s:3:"118";s:7:" हु";s:3:"119";s:9:"इरा";s:3:"120";s:7:"एक ";s:3:"121";s:7:"न क";s:3:"122";s:7:"र म";s:3:"123";s:9:"राक";s:3:"124";s:7:"ी ज";s:3:"125";s:7:"ी न";s:3:"126";s:7:" इर";s:3:"127";s:7:" उन";s:3:"128";s:7:" पह";s:3:"129";s:9:"कहा";s:3:"130";s:7:"ते ";s:3:"131";s:7:"े अ";s:3:"132";s:7:" तो";s:3:"133";s:7:" सु";s:3:"134";s:7:"ति ";s:3:"135";s:7:"ती ";s:3:"136";s:7:"तो ";s:3:"137";s:9:"मिल";s:3:"138";s:7:"िक ";s:3:"139";s:9:"ियो";s:3:"140";s:9:"्रे";s:3:"141";s:7:" अप";s:3:"142";s:7:" फ़";s:3:"143";s:7:" लि";s:3:"144";s:7:" लो";s:3:"145";s:7:" सम";s:3:"146";s:7:"म क";s:3:"147";s:9:"र्ट";s:3:"148";s:7:"हो ";s:3:"149";s:7:"ा च";s:3:"150";s:7:"ाई ";s:3:"151";s:9:"ाने";s:3:"152";s:7:"िन ";s:3:"153";s:7:"्य ";s:3:"154";s:7:" उस";s:3:"155";s:7:" क़";s:3:"156";s:7:" सक";s:3:"157";s:7:" सै";s:3:"158";s:7:"ं प";s:3:"159";s:7:"ं ह";s:3:"160";s:7:"गी ";s:3:"161";s:7:"त क";s:3:"162";s:9:"मान";s:3:"163";s:7:"र न";s:3:"164";s:9:"ष्ट";s:3:"165";s:7:"स क";s:3:"166";s:9:"स्त";s:3:"167";s:7:"ाँ ";s:3:"168";s:7:"ी ब";s:3:"169";s:7:"ी म";s:3:"170";s:9:"्री";s:3:"171";s:7:" दो";s:3:"172";s:7:" मि";s:3:"173";s:7:" मु";s:3:"174";s:7:" ले";s:3:"175";s:7:" शा";s:3:"176";s:7:"ं स";s:3:"177";s:9:"ज़ा";s:3:"178";s:9:"त्र";s:3:"179";s:7:"थी ";s:3:"180";s:9:"लिए";s:3:"181";s:7:"सी ";s:3:"182";s:7:"़ा ";s:3:"183";s:9:"़ार";s:3:"184";s:9:"ांग";s:3:"185";s:7:"े द";s:3:"186";s:7:"े म";s:3:"187";s:7:"्व ";s:3:"188";s:7:" ना";s:3:"189";s:7:" बन";s:3:"190";s:9:"ंग्";s:3:"191";s:9:"कां";s:3:"192";s:7:"गा ";s:3:"193";s:9:"ग्र";s:3:"194";s:7:"जा ";s:3:"195";s:9:"ज्य";s:3:"196";s:7:"दी ";s:3:"197";s:7:"न म";s:3:"198";s:9:"पार";s:3:"199";s:7:"भा ";s:3:"200";s:9:"रही";s:3:"201";s:7:"रे ";s:3:"202";s:9:"रेस";s:3:"203";s:7:"ली ";s:3:"204";s:9:"सभा";s:3:"205";s:7:"ा र";s:3:"206";s:7:"ाल ";s:3:"207";s:7:"ी अ";s:3:"208";s:9:"ीकी";s:3:"209";s:7:"े त";s:3:"210";s:7:"ेश ";s:3:"211";s:7:" अं";s:3:"212";s:7:" तक";s:3:"213";s:7:" या";s:3:"214";s:7:"ई ह";s:3:"215";s:9:"करन";s:3:"216";s:7:"तक ";s:3:"217";s:9:"देश";s:3:"218";s:9:"वर्";s:3:"219";s:9:"ाया";s:3:"220";s:7:"ी भ";s:3:"221";s:7:"ेस ";s:3:"222";s:7:"्ष ";s:3:"223";s:7:" गय";s:3:"224";s:7:" जि";s:3:"225";s:7:" थी";s:3:"226";s:7:" बड";s:3:"227";s:7:" यह";s:3:"228";s:7:" वा";s:3:"229";s:9:"ंतर";s:3:"230";s:9:"अंत";s:3:"231";s:7:"क़ ";s:3:"232";s:9:"गया";s:3:"233";s:7:"टी ";s:3:"234";s:9:"निक";s:3:"235";s:9:"न्ह";s:3:"236";s:9:"पहल";s:3:"237";s:9:"बड़";s:3:"238";s:9:"मार";s:3:"239";s:7:"र प";s:3:"240";s:9:"रने";s:3:"241";s:9:"ाज़";s:3:"242";s:7:"ि इ";s:3:"243";s:7:"ी र";s:3:"244";s:7:"े ज";s:3:"245";s:7:"े व";s:3:"246";s:7:"्ट ";s:3:"247";s:9:"्टी";s:3:"248";s:7:" अब";s:3:"249";s:7:" लग";s:3:"250";s:7:" वर";s:3:"251";s:7:" सी";s:3:"252";s:7:"ं भ";s:3:"253";s:9:"उन्";s:3:"254";s:7:"क क";s:3:"255";s:9:"किय";s:3:"256";s:9:"देख";s:3:"257";s:9:"पूर";s:3:"258";s:9:"फ़्";s:3:"259";s:7:"यह ";s:3:"260";s:9:"यान";s:3:"261";s:9:"रिक";s:3:"262";s:9:"रिय";s:3:"263";s:9:"र्ड";s:3:"264";s:9:"लेक";s:3:"265";s:9:"सकत";s:3:"266";s:9:"हों";s:3:"267";s:9:"होग";s:3:"268";s:7:"ा अ";s:3:"269";s:7:"ा द";s:3:"270";s:7:"ा प";s:3:"271";s:7:"ाद ";s:3:"272";s:9:"ारा";s:3:"273";s:7:"ित ";s:3:"274";s:7:"ी त";s:3:"275";s:7:"ी प";s:3:"276";s:7:"ो क";s:3:"277";s:7:"ो द";s:3:"278";s:7:" ते";s:3:"279";s:7:" नि";s:3:"280";s:7:" सर";s:3:"281";s:7:" हा";s:3:"282";s:7:"ं द";s:3:"283";s:9:"अपन";s:3:"284";s:9:"जान";s:3:"285";s:7:"त म";s:3:"286";s:9:"थित";s:3:"287";s:9:"पनी";s:3:"288";s:9:"महल";s:3:"289";s:7:"र ह";s:3:"290";s:9:"लोग";s:3:"291";s:7:"व क";s:3:"292";s:9:"हना";s:3:"293";s:7:"हल ";s:3:"294";s:9:"हाँ";s:3:"295";s:9:"ाज्";s:3:"296";s:9:"ाना";s:3:"297";s:9:"िक्";s:3:"298";s:9:"िस्";s:3:"299";}s:9:"hungarian";a:300:{s:3:" a ";s:1:"0";s:3:" az";s:1:"1";s:3:" sz";s:1:"2";s:3:"az ";s:1:"3";s:3:" me";s:1:"4";s:3:"en ";s:1:"5";s:3:" el";s:1:"6";s:3:" ho";s:1:"7";s:3:"ek ";s:1:"8";s:3:"gy ";s:1:"9";s:3:"tt ";s:2:"10";s:3:"ett";s:2:"11";s:3:"sze";s:2:"12";s:3:" fe";s:2:"13";s:4:"és ";s:2:"14";s:3:" ki";s:2:"15";s:3:"tet";s:2:"16";s:3:" be";s:2:"17";s:3:"et ";s:2:"18";s:3:"ter";s:2:"19";s:4:" kö";s:2:"20";s:4:" és";s:2:"21";s:3:"hog";s:2:"22";s:3:"meg";s:2:"23";s:3:"ogy";s:2:"24";s:3:"szt";s:2:"25";s:3:"te ";s:2:"26";s:3:"t a";s:2:"27";s:3:"zet";s:2:"28";s:3:"a m";s:2:"29";s:3:"nek";s:2:"30";s:3:"nt ";s:2:"31";s:4:"ség";s:2:"32";s:4:"szá";s:2:"33";s:3:"ak ";s:2:"34";s:3:" va";s:2:"35";s:3:"an ";s:2:"36";s:3:"eze";s:2:"37";s:3:"ra ";s:2:"38";s:3:"ta ";s:2:"39";s:3:" mi";s:2:"40";s:3:"int";s:2:"41";s:4:"köz";s:2:"42";s:3:" is";s:2:"43";s:3:"esz";s:2:"44";s:3:"fel";s:2:"45";s:3:"min";s:2:"46";s:3:"nak";s:2:"47";s:3:"ors";s:2:"48";s:3:"zer";s:2:"49";s:3:" te";s:2:"50";s:3:"a a";s:2:"51";s:3:"a k";s:2:"52";s:3:"is ";s:2:"53";s:3:" cs";s:2:"54";s:3:"ele";s:2:"55";s:3:"er ";s:2:"56";s:3:"men";s:2:"57";s:3:"si ";s:2:"58";s:3:"tek";s:2:"59";s:3:"ti ";s:2:"60";s:3:" ne";s:2:"61";s:3:"csa";s:2:"62";s:3:"ent";s:2:"63";s:3:"z e";s:2:"64";s:3:"a t";s:2:"65";s:3:"ala";s:2:"66";s:3:"ere";s:2:"67";s:3:"es ";s:2:"68";s:3:"lom";s:2:"69";s:3:"lte";s:2:"70";s:3:"mon";s:2:"71";s:3:"ond";s:2:"72";s:3:"rsz";s:2:"73";s:3:"sza";s:2:"74";s:3:"tte";s:2:"75";s:4:"zág";s:2:"76";s:4:"ány";s:2:"77";s:3:" fo";s:2:"78";s:3:" ma";s:2:"79";s:3:"ai ";s:2:"80";s:3:"ben";s:2:"81";s:3:"el ";s:2:"82";s:3:"ene";s:2:"83";s:3:"ik ";s:2:"84";s:3:"jel";s:2:"85";s:4:"tás";s:2:"86";s:4:"áll";s:2:"87";s:3:" ha";s:2:"88";s:3:" le";s:2:"89";s:4:" ál";s:2:"90";s:3:"agy";s:2:"91";s:4:"alá";s:2:"92";s:3:"isz";s:2:"93";s:3:"y a";s:2:"94";s:3:"zte";s:2:"95";s:4:"ás ";s:2:"96";s:3:" al";s:2:"97";s:3:"e a";s:2:"98";s:3:"egy";s:2:"99";s:3:"ely";s:3:"100";s:3:"for";s:3:"101";s:3:"lat";s:3:"102";s:3:"lt ";s:3:"103";s:3:"n a";s:3:"104";s:3:"oga";s:3:"105";s:3:"on ";s:3:"106";s:3:"re ";s:3:"107";s:3:"st ";s:3:"108";s:4:"ság";s:3:"109";s:3:"t m";s:3:"110";s:4:"án ";s:3:"111";s:4:"ét ";s:3:"112";s:4:"ült";s:3:"113";s:3:" je";s:3:"114";s:3:"gi ";s:3:"115";s:3:"k a";s:3:"116";s:4:"kül";s:3:"117";s:3:"lam";s:3:"118";s:3:"len";s:3:"119";s:4:"lás";s:3:"120";s:4:"más";s:3:"121";s:3:"s k";s:3:"122";s:3:"vez";s:3:"123";s:4:"áso";s:3:"124";s:5:"özö";s:3:"125";s:3:" ta";s:3:"126";s:3:"a s";s:3:"127";s:3:"a v";s:3:"128";s:3:"asz";s:3:"129";s:4:"atá";s:3:"130";s:4:"ető";s:3:"131";s:3:"kez";s:3:"132";s:3:"let";s:3:"133";s:3:"mag";s:3:"134";s:3:"nem";s:3:"135";s:4:"szé";s:3:"136";s:3:"z m";s:3:"137";s:4:"át ";s:3:"138";s:4:"éte";s:3:"139";s:4:"ölt";s:3:"140";s:3:" de";s:3:"141";s:3:" gy";s:3:"142";s:4:" ké";s:3:"143";s:3:" mo";s:3:"144";s:4:" vá";s:3:"145";s:4:" ér";s:3:"146";s:3:"a b";s:3:"147";s:3:"a f";s:3:"148";s:3:"ami";s:3:"149";s:3:"at ";s:3:"150";s:3:"ato";s:3:"151";s:3:"att";s:3:"152";s:3:"bef";s:3:"153";s:3:"dta";s:3:"154";s:3:"gya";s:3:"155";s:3:"hat";s:3:"156";s:3:"i s";s:3:"157";s:3:"las";s:3:"158";s:3:"ndt";s:3:"159";s:3:"rt ";s:3:"160";s:3:"szo";s:3:"161";s:3:"t k";s:3:"162";s:4:"tár";s:3:"163";s:4:"tés";s:3:"164";s:3:"van";s:3:"165";s:5:"ásá";s:3:"166";s:4:"ól ";s:3:"167";s:4:" bé";s:3:"168";s:3:" eg";s:3:"169";s:3:" or";s:3:"170";s:4:" pá";s:3:"171";s:4:" pé";s:3:"172";s:3:" ve";s:3:"173";s:3:"ban";s:3:"174";s:3:"eke";s:3:"175";s:4:"ekü";s:3:"176";s:4:"elő";s:3:"177";s:3:"erv";s:3:"178";s:3:"ete";s:3:"179";s:3:"fog";s:3:"180";s:3:"i a";s:3:"181";s:3:"kis";s:3:"182";s:4:"lád";s:3:"183";s:3:"nte";s:3:"184";s:3:"nye";s:3:"185";s:3:"nyi";s:3:"186";s:3:"ok ";s:3:"187";s:4:"omá";s:3:"188";s:3:"os ";s:3:"189";s:4:"rán";s:3:"190";s:4:"rás";s:3:"191";s:3:"sal";s:3:"192";s:3:"t e";s:3:"193";s:4:"vál";s:3:"194";s:3:"yar";s:3:"195";s:4:"ágo";s:3:"196";s:4:"ála";s:3:"197";s:4:"ége";s:3:"198";s:4:"ény";s:3:"199";s:4:"ött";s:3:"200";s:4:" tá";s:3:"201";s:4:"adó";s:3:"202";s:3:"elh";s:3:"203";s:3:"fej";s:3:"204";s:3:"het";s:3:"205";s:3:"hoz";s:3:"206";s:3:"ill";s:3:"207";s:4:"jár";s:3:"208";s:4:"kés";s:3:"209";s:3:"llo";s:3:"210";s:3:"mi ";s:3:"211";s:3:"ny ";s:3:"212";s:3:"ont";s:3:"213";s:3:"ren";s:3:"214";s:3:"res";s:3:"215";s:3:"rin";s:3:"216";s:3:"s a";s:3:"217";s:3:"s e";s:3:"218";s:3:"ssz";s:3:"219";s:3:"zt ";s:3:"220";s:3:" ez";s:3:"221";s:3:" ka";s:3:"222";s:3:" ke";s:3:"223";s:3:" ko";s:3:"224";s:3:" re";s:3:"225";s:3:"a h";s:3:"226";s:3:"a n";s:3:"227";s:3:"den";s:3:"228";s:4:"dó ";s:3:"229";s:3:"efo";s:3:"230";s:3:"gad";s:3:"231";s:3:"gat";s:3:"232";s:3:"gye";s:3:"233";s:3:"hel";s:3:"234";s:3:"k e";s:3:"235";s:3:"ket";s:3:"236";s:3:"les";s:3:"237";s:4:"mán";s:3:"238";s:3:"nde";s:3:"239";s:3:"nis";s:3:"240";s:3:"ozz";s:3:"241";s:3:"t b";s:3:"242";s:3:"t i";s:3:"243";s:4:"t é";s:3:"244";s:3:"tat";s:3:"245";s:3:"tos";s:3:"246";s:3:"val";s:3:"247";s:3:"z o";s:3:"248";s:3:"zak";s:3:"249";s:4:"ád ";s:3:"250";s:4:"ály";s:3:"251";s:4:"ára";s:3:"252";s:4:"ési";s:3:"253";s:4:"ész";s:3:"254";s:3:" ak";s:3:"255";s:3:" am";s:3:"256";s:3:" es";s:3:"257";s:4:" há";s:3:"258";s:3:" ny";s:3:"259";s:4:" tö";s:3:"260";s:3:"aka";s:3:"261";s:3:"art";s:3:"262";s:4:"ató";s:3:"263";s:3:"azt";s:3:"264";s:3:"bbe";s:3:"265";s:3:"ber";s:3:"266";s:4:"ció";s:3:"267";s:3:"cso";s:3:"268";s:3:"em ";s:3:"269";s:3:"eti";s:3:"270";s:4:"eté";s:3:"271";s:3:"gal";s:3:"272";s:3:"i t";s:3:"273";s:3:"ini";s:3:"274";s:3:"ist";s:3:"275";s:3:"ja ";s:3:"276";s:3:"ker";s:3:"277";s:3:"ki ";s:3:"278";s:3:"kor";s:3:"279";s:3:"koz";s:3:"280";s:4:"l é";s:3:"281";s:4:"ljá";s:3:"282";s:3:"lye";s:3:"283";s:3:"n v";s:3:"284";s:3:"ni ";s:3:"285";s:4:"pál";s:3:"286";s:3:"ror";s:3:"287";s:4:"ról";s:3:"288";s:4:"rül";s:3:"289";s:3:"s c";s:3:"290";s:3:"s p";s:3:"291";s:3:"s s";s:3:"292";s:3:"s v";s:3:"293";s:3:"sok";s:3:"294";s:3:"t j";s:3:"295";s:3:"t t";s:3:"296";s:3:"tar";s:3:"297";s:3:"tel";s:3:"298";s:3:"vat";s:3:"299";}s:9:"icelandic";a:300:{s:4:"að ";s:1:"0";s:3:"um ";s:1:"1";s:4:" að";s:1:"2";s:3:"ir ";s:1:"3";s:4:"ið ";s:1:"4";s:3:"ur ";s:1:"5";s:3:" ve";s:1:"6";s:4:" í ";s:1:"7";s:3:"na ";s:1:"8";s:4:" á ";s:1:"9";s:3:" se";s:2:"10";s:3:" er";s:2:"11";s:3:" og";s:2:"12";s:3:"ar ";s:2:"13";s:3:"og ";s:2:"14";s:3:"ver";s:2:"15";s:3:" mi";s:2:"16";s:3:"inn";s:2:"17";s:3:"nn ";s:2:"18";s:3:" fy";s:2:"19";s:3:"er ";s:2:"20";s:3:"fyr";s:2:"21";s:3:" ek";s:2:"22";s:3:" en";s:2:"23";s:3:" ha";s:2:"24";s:3:" he";s:2:"25";s:3:"ekk";s:2:"26";s:3:" st";s:2:"27";s:3:"ki ";s:2:"28";s:3:"st ";s:2:"29";s:4:"ði ";s:2:"30";s:3:" ba";s:2:"31";s:3:" me";s:2:"32";s:3:" vi";s:2:"33";s:3:"ig ";s:2:"34";s:3:"rir";s:2:"35";s:3:"yri";s:2:"36";s:3:" um";s:2:"37";s:3:"g f";s:2:"38";s:3:"leg";s:2:"39";s:3:"lei";s:2:"40";s:3:"ns ";s:2:"41";s:4:"ð s";s:2:"42";s:3:" ei";s:2:"43";s:4:" þa";s:2:"44";s:3:"in ";s:2:"45";s:3:"kki";s:2:"46";s:3:"r h";s:2:"47";s:3:"r s";s:2:"48";s:3:"egi";s:2:"49";s:3:"ein";s:2:"50";s:3:"ga ";s:2:"51";s:3:"ing";s:2:"52";s:3:"ra ";s:2:"53";s:3:"sta";s:2:"54";s:3:" va";s:2:"55";s:4:" þe";s:2:"56";s:3:"ann";s:2:"57";s:3:"en ";s:2:"58";s:3:"mil";s:2:"59";s:3:"sem";s:2:"60";s:4:"tjó";s:2:"61";s:4:"arð";s:2:"62";s:3:"di ";s:2:"63";s:3:"eit";s:2:"64";s:3:"haf";s:2:"65";s:3:"ill";s:2:"66";s:3:"ins";s:2:"67";s:3:"ist";s:2:"68";s:3:"llj";s:2:"69";s:3:"ndi";s:2:"70";s:3:"r a";s:2:"71";s:3:"r e";s:2:"72";s:3:"seg";s:2:"73";s:3:"un ";s:2:"74";s:3:"var";s:2:"75";s:3:" bi";s:2:"76";s:3:" el";s:2:"77";s:3:" fo";s:2:"78";s:3:" ge";s:2:"79";s:3:" yf";s:2:"80";s:3:"and";s:2:"81";s:3:"aug";s:2:"82";s:3:"bau";s:2:"83";s:3:"big";s:2:"84";s:3:"ega";s:2:"85";s:3:"eld";s:2:"86";s:4:"erð";s:2:"87";s:3:"fir";s:2:"88";s:3:"foo";s:2:"89";s:3:"gin";s:2:"90";s:3:"itt";s:2:"91";s:3:"n s";s:2:"92";s:3:"ngi";s:2:"93";s:3:"num";s:2:"94";s:3:"od ";s:2:"95";s:3:"ood";s:2:"96";s:3:"sin";s:2:"97";s:3:"ta ";s:2:"98";s:3:"tt ";s:2:"99";s:4:"við";s:3:"100";s:3:"yfi";s:3:"101";s:4:"ð e";s:3:"102";s:4:"ð f";s:3:"103";s:3:" hr";s:3:"104";s:4:" sé";s:3:"105";s:4:" þv";s:3:"106";s:3:"a e";s:3:"107";s:4:"a á";s:3:"108";s:3:"em ";s:3:"109";s:3:"gi ";s:3:"110";s:3:"i f";s:3:"111";s:3:"jar";s:3:"112";s:4:"jór";s:3:"113";s:3:"lja";s:3:"114";s:3:"m e";s:3:"115";s:4:"r á";s:3:"116";s:3:"rei";s:3:"117";s:3:"rst";s:3:"118";s:4:"rða";s:3:"119";s:4:"rði";s:3:"120";s:4:"rðu";s:3:"121";s:3:"stj";s:3:"122";s:3:"und";s:3:"123";s:3:"veg";s:3:"124";s:4:"ví ";s:3:"125";s:4:"ð v";s:3:"126";s:5:"það";s:3:"127";s:5:"því";s:3:"128";s:3:" fj";s:3:"129";s:3:" ko";s:3:"130";s:3:" sl";s:3:"131";s:3:"eik";s:3:"132";s:3:"end";s:3:"133";s:3:"ert";s:3:"134";s:3:"ess";s:3:"135";s:4:"fjá";s:3:"136";s:3:"fur";s:3:"137";s:3:"gir";s:3:"138";s:4:"hús";s:3:"139";s:4:"jár";s:3:"140";s:3:"n e";s:3:"141";s:3:"ri ";s:3:"142";s:3:"tar";s:3:"143";s:5:"ð þ";s:3:"144";s:4:"ðar";s:3:"145";s:4:"ður";s:3:"146";s:4:"þes";s:3:"147";s:3:" br";s:3:"148";s:4:" hú";s:3:"149";s:3:" kr";s:3:"150";s:3:" le";s:3:"151";s:3:" up";s:3:"152";s:3:"a s";s:3:"153";s:3:"egg";s:3:"154";s:3:"i s";s:3:"155";s:3:"irt";s:3:"156";s:3:"ja ";s:3:"157";s:4:"kið";s:3:"158";s:3:"len";s:3:"159";s:4:"með";s:3:"160";s:3:"mik";s:3:"161";s:3:"n b";s:3:"162";s:3:"nar";s:3:"163";s:3:"nir";s:3:"164";s:3:"nun";s:3:"165";s:3:"r f";s:3:"166";s:3:"r v";s:3:"167";s:4:"rið";s:3:"168";s:3:"rt ";s:3:"169";s:3:"sti";s:3:"170";s:3:"t v";s:3:"171";s:3:"ti ";s:3:"172";s:3:"una";s:3:"173";s:3:"upp";s:3:"174";s:4:"ða ";s:3:"175";s:4:"óna";s:3:"176";s:3:" al";s:3:"177";s:3:" fr";s:3:"178";s:3:" gr";s:3:"179";s:3:"a v";s:3:"180";s:3:"all";s:3:"181";s:3:"an ";s:3:"182";s:3:"da ";s:3:"183";s:4:"eið";s:3:"184";s:4:"eð ";s:3:"185";s:3:"fa ";s:3:"186";s:3:"fra";s:3:"187";s:3:"g e";s:3:"188";s:3:"ger";s:3:"189";s:4:"gið";s:3:"190";s:3:"gt ";s:3:"191";s:3:"han";s:3:"192";s:3:"hef";s:3:"193";s:3:"hel";s:3:"194";s:3:"her";s:3:"195";s:3:"hra";s:3:"196";s:3:"i a";s:3:"197";s:3:"i e";s:3:"198";s:3:"i v";s:3:"199";s:4:"i þ";s:3:"200";s:3:"iki";s:3:"201";s:4:"jón";s:3:"202";s:4:"jör";s:3:"203";s:3:"ka ";s:3:"204";s:4:"kró";s:3:"205";s:4:"lík";s:3:"206";s:3:"m h";s:3:"207";s:3:"n a";s:3:"208";s:3:"nga";s:3:"209";s:3:"r l";s:3:"210";s:3:"ram";s:3:"211";s:3:"ru ";s:3:"212";s:5:"ráð";s:3:"213";s:4:"rón";s:3:"214";s:3:"svo";s:3:"215";s:3:"vin";s:3:"216";s:4:"í b";s:3:"217";s:4:"í h";s:3:"218";s:4:"ð h";s:3:"219";s:4:"ð k";s:3:"220";s:4:"ð m";s:3:"221";s:5:"örð";s:3:"222";s:3:" af";s:3:"223";s:3:" fa";s:3:"224";s:4:" lí";s:3:"225";s:4:" rá";s:3:"226";s:3:" sk";s:3:"227";s:3:" sv";s:3:"228";s:3:" te";s:3:"229";s:3:"a b";s:3:"230";s:3:"a f";s:3:"231";s:3:"a h";s:3:"232";s:3:"a k";s:3:"233";s:3:"a u";s:3:"234";s:3:"afi";s:3:"235";s:3:"agn";s:3:"236";s:3:"arn";s:3:"237";s:3:"ast";s:3:"238";s:3:"ber";s:3:"239";s:3:"efu";s:3:"240";s:3:"enn";s:3:"241";s:3:"erb";s:3:"242";s:3:"erg";s:3:"243";s:3:"fi ";s:3:"244";s:3:"g a";s:3:"245";s:3:"gar";s:3:"246";s:4:"iðs";s:3:"247";s:3:"ker";s:3:"248";s:3:"kke";s:3:"249";s:3:"lan";s:3:"250";s:4:"ljó";s:3:"251";s:3:"llt";s:3:"252";s:3:"ma ";s:3:"253";s:4:"mið";s:3:"254";s:3:"n v";s:3:"255";s:4:"n í";s:3:"256";s:3:"nan";s:3:"257";s:3:"nda";s:3:"258";s:3:"ndu";s:3:"259";s:4:"nið";s:3:"260";s:3:"nna";s:3:"261";s:3:"nnu";s:3:"262";s:3:"nu ";s:3:"263";s:3:"r o";s:3:"264";s:3:"rbe";s:3:"265";s:3:"rgi";s:3:"266";s:4:"slö";s:3:"267";s:4:"sé ";s:3:"268";s:3:"t a";s:3:"269";s:3:"t h";s:3:"270";s:3:"til";s:3:"271";s:3:"tin";s:3:"272";s:3:"ugu";s:3:"273";s:3:"vil";s:3:"274";s:3:"ygg";s:3:"275";s:4:"á s";s:3:"276";s:4:"ð a";s:3:"277";s:4:"ð b";s:3:"278";s:4:"órn";s:3:"279";s:4:"ögn";s:3:"280";s:4:"öku";s:3:"281";s:3:" at";s:3:"282";s:3:" fi";s:3:"283";s:4:" fé";s:3:"284";s:3:" ka";s:3:"285";s:3:" ma";s:3:"286";s:3:" no";s:3:"287";s:3:" sa";s:3:"288";s:3:" si";s:3:"289";s:3:" ti";s:3:"290";s:4:" ák";s:3:"291";s:3:"a m";s:3:"292";s:3:"a t";s:3:"293";s:4:"a í";s:3:"294";s:4:"a þ";s:3:"295";s:3:"afa";s:3:"296";s:3:"afs";s:3:"297";s:3:"ald";s:3:"298";s:3:"arf";s:3:"299";}s:10:"indonesian";a:300:{s:3:"an ";s:1:"0";s:3:" me";s:1:"1";s:3:"kan";s:1:"2";s:3:"ang";s:1:"3";s:3:"ng ";s:1:"4";s:3:" pe";s:1:"5";s:3:"men";s:1:"6";s:3:" di";s:1:"7";s:3:" ke";s:1:"8";s:3:" da";s:1:"9";s:3:" se";s:2:"10";s:3:"eng";s:2:"11";s:3:" be";s:2:"12";s:3:"nga";s:2:"13";s:3:"nya";s:2:"14";s:3:" te";s:2:"15";s:3:"ah ";s:2:"16";s:3:"ber";s:2:"17";s:3:"aka";s:2:"18";s:3:" ya";s:2:"19";s:3:"dan";s:2:"20";s:3:"di ";s:2:"21";s:3:"yan";s:2:"22";s:3:"n p";s:2:"23";s:3:"per";s:2:"24";s:3:"a m";s:2:"25";s:3:"ita";s:2:"26";s:3:" pa";s:2:"27";s:3:"da ";s:2:"28";s:3:"ata";s:2:"29";s:3:"ada";s:2:"30";s:3:"ya ";s:2:"31";s:3:"ta ";s:2:"32";s:3:" in";s:2:"33";s:3:"ala";s:2:"34";s:3:"eri";s:2:"35";s:3:"ia ";s:2:"36";s:3:"a d";s:2:"37";s:3:"n k";s:2:"38";s:3:"am ";s:2:"39";s:3:"ga ";s:2:"40";s:3:"at ";s:2:"41";s:3:"era";s:2:"42";s:3:"n d";s:2:"43";s:3:"ter";s:2:"44";s:3:" ka";s:2:"45";s:3:"a p";s:2:"46";s:3:"ari";s:2:"47";s:3:"emb";s:2:"48";s:3:"n m";s:2:"49";s:3:"ri ";s:2:"50";s:3:" ba";s:2:"51";s:3:"aan";s:2:"52";s:3:"ak ";s:2:"53";s:3:"ra ";s:2:"54";s:3:" it";s:2:"55";s:3:"ara";s:2:"56";s:3:"ela";s:2:"57";s:3:"ni ";s:2:"58";s:3:"ali";s:2:"59";s:3:"ran";s:2:"60";s:3:"ar ";s:2:"61";s:3:"eru";s:2:"62";s:3:"lah";s:2:"63";s:3:"a b";s:2:"64";s:3:"asi";s:2:"65";s:3:"awa";s:2:"66";s:3:"eba";s:2:"67";s:3:"gan";s:2:"68";s:3:"n b";s:2:"69";s:3:" ha";s:2:"70";s:3:"ini";s:2:"71";s:3:"mer";s:2:"72";s:3:" la";s:2:"73";s:3:" mi";s:2:"74";s:3:"and";s:2:"75";s:3:"ena";s:2:"76";s:3:"wan";s:2:"77";s:3:" sa";s:2:"78";s:3:"aha";s:2:"79";s:3:"lam";s:2:"80";s:3:"n i";s:2:"81";s:3:"nda";s:2:"82";s:3:" wa";s:2:"83";s:3:"a i";s:2:"84";s:3:"dua";s:2:"85";s:3:"g m";s:2:"86";s:3:"mi ";s:2:"87";s:3:"n a";s:2:"88";s:3:"rus";s:2:"89";s:3:"tel";s:2:"90";s:3:"yak";s:2:"91";s:3:" an";s:2:"92";s:3:"dal";s:2:"93";s:3:"h d";s:2:"94";s:3:"i s";s:2:"95";s:3:"ing";s:2:"96";s:3:"min";s:2:"97";s:3:"ngg";s:2:"98";s:3:"tak";s:2:"99";s:3:"ami";s:3:"100";s:3:"beb";s:3:"101";s:3:"den";s:3:"102";s:3:"gat";s:3:"103";s:3:"ian";s:3:"104";s:3:"ih ";s:3:"105";s:3:"pad";s:3:"106";s:3:"rga";s:3:"107";s:3:"san";s:3:"108";s:3:"ua ";s:3:"109";s:3:" de";s:3:"110";s:3:"a t";s:3:"111";s:3:"arg";s:3:"112";s:3:"dar";s:3:"113";s:3:"elu";s:3:"114";s:3:"har";s:3:"115";s:3:"i k";s:3:"116";s:3:"i m";s:3:"117";s:3:"i p";s:3:"118";s:3:"ika";s:3:"119";s:3:"in ";s:3:"120";s:3:"iny";s:3:"121";s:3:"itu";s:3:"122";s:3:"mba";s:3:"123";s:3:"n t";s:3:"124";s:3:"ntu";s:3:"125";s:3:"pan";s:3:"126";s:3:"pen";s:3:"127";s:3:"sah";s:3:"128";s:3:"tan";s:3:"129";s:3:"tu ";s:3:"130";s:3:"a k";s:3:"131";s:3:"ban";s:3:"132";s:3:"edu";s:3:"133";s:3:"eka";s:3:"134";s:3:"g d";s:3:"135";s:3:"ka ";s:3:"136";s:3:"ker";s:3:"137";s:3:"nde";s:3:"138";s:3:"nta";s:3:"139";s:3:"ora";s:3:"140";s:3:"usa";s:3:"141";s:3:" du";s:3:"142";s:3:" ma";s:3:"143";s:3:"a s";s:3:"144";s:3:"ai ";s:3:"145";s:3:"ant";s:3:"146";s:3:"bas";s:3:"147";s:3:"end";s:3:"148";s:3:"i d";s:3:"149";s:3:"ira";s:3:"150";s:3:"kam";s:3:"151";s:3:"lan";s:3:"152";s:3:"n s";s:3:"153";s:3:"uli";s:3:"154";s:3:"al ";s:3:"155";s:3:"apa";s:3:"156";s:3:"ere";s:3:"157";s:3:"ert";s:3:"158";s:3:"lia";s:3:"159";s:3:"mem";s:3:"160";s:3:"rka";s:3:"161";s:3:"si ";s:3:"162";s:3:"tal";s:3:"163";s:3:"ung";s:3:"164";s:3:" ak";s:3:"165";s:3:"a a";s:3:"166";s:3:"a w";s:3:"167";s:3:"ani";s:3:"168";s:3:"ask";s:3:"169";s:3:"ent";s:3:"170";s:3:"gar";s:3:"171";s:3:"haa";s:3:"172";s:3:"i i";s:3:"173";s:3:"isa";s:3:"174";s:3:"ked";s:3:"175";s:3:"mbe";s:3:"176";s:3:"ska";s:3:"177";s:3:"tor";s:3:"178";s:3:"uan";s:3:"179";s:3:"uk ";s:3:"180";s:3:"uka";s:3:"181";s:3:" ad";s:3:"182";s:3:" to";s:3:"183";s:3:"asa";s:3:"184";s:3:"aya";s:3:"185";s:3:"bag";s:3:"186";s:3:"dia";s:3:"187";s:3:"dun";s:3:"188";s:3:"erj";s:3:"189";s:3:"mas";s:3:"190";s:3:"na ";s:3:"191";s:3:"rek";s:3:"192";s:3:"rit";s:3:"193";s:3:"sih";s:3:"194";s:3:"us ";s:3:"195";s:3:" bi";s:3:"196";s:3:"a h";s:3:"197";s:3:"ama";s:3:"198";s:3:"dib";s:3:"199";s:3:"ers";s:3:"200";s:3:"g s";s:3:"201";s:3:"han";s:3:"202";s:3:"ik ";s:3:"203";s:3:"kem";s:3:"204";s:3:"ma ";s:3:"205";s:3:"n l";s:3:"206";s:3:"nit";s:3:"207";s:3:"r b";s:3:"208";s:3:"rja";s:3:"209";s:3:"sa ";s:3:"210";s:3:" ju";s:3:"211";s:3:" or";s:3:"212";s:3:" si";s:3:"213";s:3:" ti";s:3:"214";s:3:"a y";s:3:"215";s:3:"aga";s:3:"216";s:3:"any";s:3:"217";s:3:"as ";s:3:"218";s:3:"cul";s:3:"219";s:3:"eme";s:3:"220";s:3:"emu";s:3:"221";s:3:"eny";s:3:"222";s:3:"epa";s:3:"223";s:3:"erb";s:3:"224";s:3:"erl";s:3:"225";s:3:"gi ";s:3:"226";s:3:"h m";s:3:"227";s:3:"i a";s:3:"228";s:3:"kel";s:3:"229";s:3:"li ";s:3:"230";s:3:"mel";s:3:"231";s:3:"nia";s:3:"232";s:3:"opa";s:3:"233";s:3:"rta";s:3:"234";s:3:"sia";s:3:"235";s:3:"tah";s:3:"236";s:3:"ula";s:3:"237";s:3:"un ";s:3:"238";s:3:"unt";s:3:"239";s:3:" at";s:3:"240";s:3:" bu";s:3:"241";s:3:" pu";s:3:"242";s:3:" ta";s:3:"243";s:3:"agi";s:3:"244";s:3:"alu";s:3:"245";s:3:"amb";s:3:"246";s:3:"bah";s:3:"247";s:3:"bis";s:3:"248";s:3:"er ";s:3:"249";s:3:"i t";s:3:"250";s:3:"ibe";s:3:"251";s:3:"ir ";s:3:"252";s:3:"ja ";s:3:"253";s:3:"k m";s:3:"254";s:3:"kar";s:3:"255";s:3:"lai";s:3:"256";s:3:"lal";s:3:"257";s:3:"lu ";s:3:"258";s:3:"mpa";s:3:"259";s:3:"ngk";s:3:"260";s:3:"nja";s:3:"261";s:3:"or ";s:3:"262";s:3:"pa ";s:3:"263";s:3:"pas";s:3:"264";s:3:"pem";s:3:"265";s:3:"rak";s:3:"266";s:3:"rik";s:3:"267";s:3:"seb";s:3:"268";s:3:"tam";s:3:"269";s:3:"tem";s:3:"270";s:3:"top";s:3:"271";s:3:"tuk";s:3:"272";s:3:"uni";s:3:"273";s:3:"war";s:3:"274";s:3:" al";s:3:"275";s:3:" ga";s:3:"276";s:3:" ge";s:3:"277";s:3:" ir";s:3:"278";s:3:" ja";s:3:"279";s:3:" mu";s:3:"280";s:3:" na";s:3:"281";s:3:" pr";s:3:"282";s:3:" su";s:3:"283";s:3:" un";s:3:"284";s:3:"ad ";s:3:"285";s:3:"adi";s:3:"286";s:3:"akt";s:3:"287";s:3:"ann";s:3:"288";s:3:"apo";s:3:"289";s:3:"bel";s:3:"290";s:3:"bul";s:3:"291";s:3:"der";s:3:"292";s:3:"ega";s:3:"293";s:3:"eke";s:3:"294";s:3:"ema";s:3:"295";s:3:"emp";s:3:"296";s:3:"ene";s:3:"297";s:3:"enj";s:3:"298";s:3:"esa";s:3:"299";}s:7:"italian";a:300:{s:3:" di";s:1:"0";s:3:"to ";s:1:"1";s:3:"la ";s:1:"2";s:3:" de";s:1:"3";s:3:"di ";s:1:"4";s:3:"no ";s:1:"5";s:3:" co";s:1:"6";s:3:"re ";s:1:"7";s:3:"ion";s:1:"8";s:3:"e d";s:1:"9";s:3:" e ";s:2:"10";s:3:"le ";s:2:"11";s:3:"del";s:2:"12";s:3:"ne ";s:2:"13";s:3:"ti ";s:2:"14";s:3:"ell";s:2:"15";s:3:" la";s:2:"16";s:3:" un";s:2:"17";s:3:"ni ";s:2:"18";s:3:"i d";s:2:"19";s:3:"per";s:2:"20";s:3:" pe";s:2:"21";s:3:"ent";s:2:"22";s:3:" in";s:2:"23";s:3:"one";s:2:"24";s:3:"he ";s:2:"25";s:3:"ta ";s:2:"26";s:3:"zio";s:2:"27";s:3:"che";s:2:"28";s:3:"o d";s:2:"29";s:3:"a d";s:2:"30";s:3:"na ";s:2:"31";s:3:"ato";s:2:"32";s:3:"e s";s:2:"33";s:3:" so";s:2:"34";s:3:"i s";s:2:"35";s:3:"lla";s:2:"36";s:3:"a p";s:2:"37";s:3:"li ";s:2:"38";s:3:"te ";s:2:"39";s:3:" al";s:2:"40";s:3:" ch";s:2:"41";s:3:"er ";s:2:"42";s:3:" pa";s:2:"43";s:3:" si";s:2:"44";s:3:"con";s:2:"45";s:3:"sta";s:2:"46";s:3:" pr";s:2:"47";s:3:"a c";s:2:"48";s:3:" se";s:2:"49";s:3:"el ";s:2:"50";s:3:"ia ";s:2:"51";s:3:"si ";s:2:"52";s:3:"e p";s:2:"53";s:3:" da";s:2:"54";s:3:"e i";s:2:"55";s:3:"i p";s:2:"56";s:3:"ont";s:2:"57";s:3:"ano";s:2:"58";s:3:"i c";s:2:"59";s:3:"all";s:2:"60";s:3:"azi";s:2:"61";s:3:"nte";s:2:"62";s:3:"on ";s:2:"63";s:3:"nti";s:2:"64";s:3:"o s";s:2:"65";s:3:" ri";s:2:"66";s:3:"i a";s:2:"67";s:3:"o a";s:2:"68";s:3:"un ";s:2:"69";s:3:" an";s:2:"70";s:3:"are";s:2:"71";s:3:"ari";s:2:"72";s:3:"e a";s:2:"73";s:3:"i e";s:2:"74";s:3:"ita";s:2:"75";s:3:"men";s:2:"76";s:3:"ri ";s:2:"77";s:3:" ca";s:2:"78";s:3:" il";s:2:"79";s:3:" no";s:2:"80";s:3:" po";s:2:"81";s:3:"a s";s:2:"82";s:3:"ant";s:2:"83";s:3:"il ";s:2:"84";s:3:"in ";s:2:"85";s:3:"a l";s:2:"86";s:3:"ati";s:2:"87";s:3:"cia";s:2:"88";s:3:"e c";s:2:"89";s:3:"ro ";s:2:"90";s:3:"ann";s:2:"91";s:3:"est";s:2:"92";s:3:"gli";s:2:"93";s:4:"tà ";s:2:"94";s:3:" qu";s:2:"95";s:3:"e l";s:2:"96";s:3:"nta";s:2:"97";s:3:" a ";s:2:"98";s:3:"com";s:2:"99";s:3:"o c";s:3:"100";s:3:"ra ";s:3:"101";s:3:" le";s:3:"102";s:3:" ne";s:3:"103";s:3:"ali";s:3:"104";s:3:"ere";s:3:"105";s:3:"ist";s:3:"106";s:3:" ma";s:3:"107";s:4:" è ";s:3:"108";s:3:"io ";s:3:"109";s:3:"lle";s:3:"110";s:3:"me ";s:3:"111";s:3:"era";s:3:"112";s:3:"ica";s:3:"113";s:3:"ost";s:3:"114";s:3:"pro";s:3:"115";s:3:"tar";s:3:"116";s:3:"una";s:3:"117";s:3:" pi";s:3:"118";s:3:"da ";s:3:"119";s:3:"tat";s:3:"120";s:3:" mi";s:3:"121";s:3:"att";s:3:"122";s:3:"ca ";s:3:"123";s:3:"mo ";s:3:"124";s:3:"non";s:3:"125";s:3:"par";s:3:"126";s:3:"sti";s:3:"127";s:3:" fa";s:3:"128";s:3:" i ";s:3:"129";s:3:" re";s:3:"130";s:3:" su";s:3:"131";s:3:"ess";s:3:"132";s:3:"ini";s:3:"133";s:3:"nto";s:3:"134";s:3:"o l";s:3:"135";s:3:"ssi";s:3:"136";s:3:"tto";s:3:"137";s:3:"a e";s:3:"138";s:3:"ame";s:3:"139";s:3:"col";s:3:"140";s:3:"ei ";s:3:"141";s:3:"ma ";s:3:"142";s:3:"o i";s:3:"143";s:3:"za ";s:3:"144";s:3:" st";s:3:"145";s:3:"a a";s:3:"146";s:3:"ale";s:3:"147";s:3:"anc";s:3:"148";s:3:"ani";s:3:"149";s:3:"i m";s:3:"150";s:3:"ian";s:3:"151";s:3:"o p";s:3:"152";s:3:"oni";s:3:"153";s:3:"sio";s:3:"154";s:3:"tan";s:3:"155";s:3:"tti";s:3:"156";s:3:" lo";s:3:"157";s:3:"i r";s:3:"158";s:3:"oci";s:3:"159";s:3:"oli";s:3:"160";s:3:"ona";s:3:"161";s:3:"ono";s:3:"162";s:3:"tra";s:3:"163";s:3:" l ";s:3:"164";s:3:"a r";s:3:"165";s:3:"eri";s:3:"166";s:3:"ett";s:3:"167";s:3:"lo ";s:3:"168";s:3:"nza";s:3:"169";s:3:"que";s:3:"170";s:3:"str";s:3:"171";s:3:"ter";s:3:"172";s:3:"tta";s:3:"173";s:3:" ba";s:3:"174";s:3:" li";s:3:"175";s:3:" te";s:3:"176";s:3:"ass";s:3:"177";s:3:"e f";s:3:"178";s:3:"enz";s:3:"179";s:3:"for";s:3:"180";s:3:"nno";s:3:"181";s:3:"olo";s:3:"182";s:3:"ori";s:3:"183";s:3:"res";s:3:"184";s:3:"tor";s:3:"185";s:3:" ci";s:3:"186";s:3:" vo";s:3:"187";s:3:"a i";s:3:"188";s:3:"al ";s:3:"189";s:3:"chi";s:3:"190";s:3:"e n";s:3:"191";s:3:"lia";s:3:"192";s:3:"pre";s:3:"193";s:3:"ria";s:3:"194";s:3:"uni";s:3:"195";s:3:"ver";s:3:"196";s:3:" sp";s:3:"197";s:3:"imo";s:3:"198";s:3:"l a";s:3:"199";s:3:"l c";s:3:"200";s:3:"ran";s:3:"201";s:3:"sen";s:3:"202";s:3:"soc";s:3:"203";s:3:"tic";s:3:"204";s:3:" fi";s:3:"205";s:3:" mo";s:3:"206";s:3:"a n";s:3:"207";s:3:"ce ";s:3:"208";s:3:"dei";s:3:"209";s:3:"ggi";s:3:"210";s:3:"gio";s:3:"211";s:3:"iti";s:3:"212";s:3:"l s";s:3:"213";s:3:"lit";s:3:"214";s:3:"ll ";s:3:"215";s:3:"mon";s:3:"216";s:3:"ola";s:3:"217";s:3:"pac";s:3:"218";s:3:"sim";s:3:"219";s:3:"tit";s:3:"220";s:3:"utt";s:3:"221";s:3:"vol";s:3:"222";s:3:" ar";s:3:"223";s:3:" fo";s:3:"224";s:3:" ha";s:3:"225";s:3:" sa";s:3:"226";s:3:"acc";s:3:"227";s:3:"e r";s:3:"228";s:3:"ire";s:3:"229";s:3:"man";s:3:"230";s:3:"ntr";s:3:"231";s:3:"rat";s:3:"232";s:3:"sco";s:3:"233";s:3:"tro";s:3:"234";s:3:"tut";s:3:"235";s:3:"va ";s:3:"236";s:3:" do";s:3:"237";s:3:" gi";s:3:"238";s:3:" me";s:3:"239";s:3:" sc";s:3:"240";s:3:" tu";s:3:"241";s:3:" ve";s:3:"242";s:3:" vi";s:3:"243";s:3:"a m";s:3:"244";s:3:"ber";s:3:"245";s:3:"can";s:3:"246";s:3:"cit";s:3:"247";s:3:"i l";s:3:"248";s:3:"ier";s:3:"249";s:4:"ità";s:3:"250";s:3:"lli";s:3:"251";s:3:"min";s:3:"252";s:3:"n p";s:3:"253";s:3:"nat";s:3:"254";s:3:"nda";s:3:"255";s:3:"o e";s:3:"256";s:3:"o f";s:3:"257";s:3:"o u";s:3:"258";s:3:"ore";s:3:"259";s:3:"oro";s:3:"260";s:3:"ort";s:3:"261";s:3:"sto";s:3:"262";s:3:"ten";s:3:"263";s:3:"tiv";s:3:"264";s:3:"van";s:3:"265";s:3:"art";s:3:"266";s:3:"cco";s:3:"267";s:3:"ci ";s:3:"268";s:3:"cos";s:3:"269";s:3:"dal";s:3:"270";s:3:"e v";s:3:"271";s:3:"i i";s:3:"272";s:3:"ila";s:3:"273";s:3:"ino";s:3:"274";s:3:"l p";s:3:"275";s:3:"n c";s:3:"276";s:3:"nit";s:3:"277";s:3:"ole";s:3:"278";s:3:"ome";s:3:"279";s:3:"po ";s:3:"280";s:3:"rio";s:3:"281";s:3:"sa ";s:3:"282";s:3:" ce";s:3:"283";s:3:" es";s:3:"284";s:3:" tr";s:3:"285";s:3:"a b";s:3:"286";s:3:"and";s:3:"287";s:3:"ata";s:3:"288";s:3:"der";s:3:"289";s:3:"ens";s:3:"290";s:3:"ers";s:3:"291";s:3:"gi ";s:3:"292";s:3:"ial";s:3:"293";s:3:"ina";s:3:"294";s:3:"itt";s:3:"295";s:3:"izi";s:3:"296";s:3:"lan";s:3:"297";s:3:"lor";s:3:"298";s:3:"mil";s:3:"299";}s:6:"kazakh";a:300:{s:5:"ан ";s:1:"0";s:5:"ен ";s:1:"1";s:5:"ың ";s:1:"2";s:5:" қа";s:1:"3";s:5:" ба";s:1:"4";s:5:"ай ";s:1:"5";s:6:"нда";s:1:"6";s:5:"ын ";s:1:"7";s:5:" са";s:1:"8";s:5:" ал";s:1:"9";s:5:"ді ";s:2:"10";s:6:"ары";s:2:"11";s:5:"ды ";s:2:"12";s:5:"ып ";s:2:"13";s:5:" мұ";s:2:"14";s:5:" бі";s:2:"15";s:6:"асы";s:2:"16";s:5:"да ";s:2:"17";s:6:"най";s:2:"18";s:5:" жа";s:2:"19";s:6:"мұн";s:2:"20";s:6:"ста";s:2:"21";s:6:"ған";s:2:"22";s:5:"н б";s:2:"23";s:6:"ұна";s:2:"24";s:5:" бо";s:2:"25";s:6:"ның";s:2:"26";s:5:"ін ";s:2:"27";s:6:"лар";s:2:"28";s:6:"сын";s:2:"29";s:5:" де";s:2:"30";s:6:"аға";s:2:"31";s:6:"тан";s:2:"32";s:5:" кө";s:2:"33";s:6:"бір";s:2:"34";s:5:"ер ";s:2:"35";s:6:"мен";s:2:"36";s:6:"аза";s:2:"37";s:6:"ынд";s:2:"38";s:6:"ыны";s:2:"39";s:5:" ме";s:2:"40";s:6:"анд";s:2:"41";s:6:"ері";s:2:"42";s:6:"бол";s:2:"43";s:6:"дың";s:2:"44";s:6:"қаз";s:2:"45";s:6:"аты";s:2:"46";s:5:"сы ";s:2:"47";s:6:"тын";s:2:"48";s:5:"ғы ";s:2:"49";s:5:" ке";s:2:"50";s:5:"ар ";s:2:"51";s:6:"зақ";s:2:"52";s:5:"ық ";s:2:"53";s:6:"ала";s:2:"54";s:6:"алы";s:2:"55";s:6:"аны";s:2:"56";s:6:"ара";s:2:"57";s:6:"ағы";s:2:"58";s:6:"ген";s:2:"59";s:6:"тар";s:2:"60";s:6:"тер";s:2:"61";s:6:"тыр";s:2:"62";s:6:"айд";s:2:"63";s:6:"ард";s:2:"64";s:5:"де ";s:2:"65";s:5:"ға ";s:2:"66";s:5:" қо";s:2:"67";s:6:"бар";s:2:"68";s:5:"ің ";s:2:"69";s:6:"қан";s:2:"70";s:5:" бе";s:2:"71";s:5:" қы";s:2:"72";s:6:"ақс";s:2:"73";s:6:"гер";s:2:"74";s:6:"дан";s:2:"75";s:6:"дар";s:2:"76";s:6:"лық";s:2:"77";s:6:"лға";s:2:"78";s:6:"ына";s:2:"79";s:5:"ір ";s:2:"80";s:6:"ірі";s:2:"81";s:6:"ғас";s:2:"82";s:5:" та";s:2:"83";s:5:"а б";s:2:"84";s:5:"гі ";s:2:"85";s:6:"еді";s:2:"86";s:6:"еле";s:2:"87";s:6:"йды";s:2:"88";s:5:"н к";s:2:"89";s:5:"н т";s:2:"90";s:6:"ола";s:2:"91";s:6:"рын";s:2:"92";s:5:"іп ";s:2:"93";s:6:"қст";s:2:"94";s:6:"қта";s:2:"95";s:5:"ң б";s:2:"96";s:5:" ай";s:2:"97";s:5:" ол";s:2:"98";s:5:" со";s:2:"99";s:6:"айт";s:3:"100";s:6:"дағ";s:3:"101";s:6:"иге";s:3:"102";s:6:"лер";s:3:"103";s:6:"лып";s:3:"104";s:5:"н а";s:3:"105";s:5:"ік ";s:3:"106";s:6:"ақт";s:3:"107";s:6:"бағ";s:3:"108";s:6:"кен";s:3:"109";s:5:"н қ";s:3:"110";s:5:"ны ";s:3:"111";s:6:"рге";s:3:"112";s:6:"рға";s:3:"113";s:5:"ыр ";s:3:"114";s:5:" ар";s:3:"115";s:6:"алғ";s:3:"116";s:6:"аса";s:3:"117";s:6:"бас";s:3:"118";s:6:"бер";s:3:"119";s:5:"ге ";s:3:"120";s:6:"еті";s:3:"121";s:5:"на ";s:3:"122";s:6:"нде";s:3:"123";s:5:"не ";s:3:"124";s:6:"ниг";s:3:"125";s:6:"рды";s:3:"126";s:5:"ры ";s:3:"127";s:6:"сай";s:3:"128";s:5:" ау";s:3:"129";s:5:" кү";s:3:"130";s:5:" ни";s:3:"131";s:5:" от";s:3:"132";s:5:" өз";s:3:"133";s:6:"ауд";s:3:"134";s:5:"еп ";s:3:"135";s:6:"иял";s:3:"136";s:6:"лты";s:3:"137";s:5:"н ж";s:3:"138";s:5:"н о";s:3:"139";s:6:"осы";s:3:"140";s:6:"оты";s:3:"141";s:6:"рып";s:3:"142";s:5:"рі ";s:3:"143";s:6:"тке";s:3:"144";s:5:"ты ";s:3:"145";s:5:"ы б";s:3:"146";s:5:"ы ж";s:3:"147";s:6:"ылы";s:3:"148";s:6:"ысы";s:3:"149";s:5:"і с";s:3:"150";s:6:"қар";s:3:"151";s:5:" бұ";s:3:"152";s:5:" да";s:3:"153";s:5:" же";s:3:"154";s:5:" тұ";s:3:"155";s:5:" құ";s:3:"156";s:6:"ады";s:3:"157";s:6:"айл";s:3:"158";s:5:"ап ";s:3:"159";s:6:"ата";s:3:"160";s:6:"ені";s:3:"161";s:6:"йла";s:3:"162";s:5:"н м";s:3:"163";s:5:"н с";s:3:"164";s:6:"нды";s:3:"165";s:6:"нді";s:3:"166";s:5:"р м";s:3:"167";s:6:"тай";s:3:"168";s:6:"тін";s:3:"169";s:5:"ы т";s:3:"170";s:5:"ыс ";s:3:"171";s:6:"інд";s:3:"172";s:5:" би";s:3:"173";s:5:"а ж";s:3:"174";s:6:"ауы";s:3:"175";s:6:"деп";s:3:"176";s:6:"дің";s:3:"177";s:6:"еке";s:3:"178";s:6:"ери";s:3:"179";s:6:"йын";s:3:"180";s:6:"кел";s:3:"181";s:6:"лды";s:3:"182";s:5:"ма ";s:3:"183";s:6:"нан";s:3:"184";s:6:"оны";s:3:"185";s:5:"п ж";s:3:"186";s:5:"п о";s:3:"187";s:5:"р б";s:3:"188";s:6:"рия";s:3:"189";s:6:"рла";s:3:"190";s:6:"уда";s:3:"191";s:6:"шыл";s:3:"192";s:5:"ы а";s:3:"193";s:6:"ықт";s:3:"194";s:5:"і а";s:3:"195";s:5:"і б";s:3:"196";s:5:"із ";s:3:"197";s:6:"ілі";s:3:"198";s:5:"ң қ";s:3:"199";s:5:" ас";s:3:"200";s:5:" ек";s:3:"201";s:5:" жо";s:3:"202";s:5:" мә";s:3:"203";s:5:" ос";s:3:"204";s:5:" ре";s:3:"205";s:5:" се";s:3:"206";s:6:"алд";s:3:"207";s:6:"дал";s:3:"208";s:6:"дег";s:3:"209";s:6:"дей";s:3:"210";s:5:"е б";s:3:"211";s:5:"ет ";s:3:"212";s:6:"жас";s:3:"213";s:5:"й б";s:3:"214";s:6:"лау";s:3:"215";s:6:"лда";s:3:"216";s:6:"мет";s:3:"217";s:6:"нын";s:3:"218";s:6:"сар";s:3:"219";s:5:"сі ";s:3:"220";s:5:"ті ";s:3:"221";s:6:"ыры";s:3:"222";s:6:"ыта";s:3:"223";s:6:"ісі";s:3:"224";s:5:"ң а";s:3:"225";s:6:"өте";s:3:"226";s:5:" ат";s:3:"227";s:5:" ел";s:3:"228";s:5:" жү";s:3:"229";s:5:" ма";s:3:"230";s:5:" то";s:3:"231";s:5:" шы";s:3:"232";s:5:"а а";s:3:"233";s:6:"алт";s:3:"234";s:6:"ама";s:3:"235";s:6:"арл";s:3:"236";s:6:"аст";s:3:"237";s:6:"бұл";s:3:"238";s:6:"дай";s:3:"239";s:6:"дық";s:3:"240";s:5:"ек ";s:3:"241";s:6:"ель";s:3:"242";s:6:"есі";s:3:"243";s:6:"зді";s:3:"244";s:6:"көт";s:3:"245";s:6:"лем";s:3:"246";s:5:"ль ";s:3:"247";s:5:"н е";s:3:"248";s:5:"п а";s:3:"249";s:5:"р а";s:3:"250";s:6:"рес";s:3:"251";s:5:"са ";s:3:"252";s:5:"та ";s:3:"253";s:6:"тте";s:3:"254";s:6:"тұр";s:3:"255";s:5:"шы ";s:3:"256";s:5:"ы д";s:3:"257";s:5:"ы қ";s:3:"258";s:5:"ыз ";s:3:"259";s:6:"қыт";s:3:"260";s:5:" ко";s:3:"261";s:5:" не";s:3:"262";s:5:" ой";s:3:"263";s:5:" ор";s:3:"264";s:5:" сұ";s:3:"265";s:5:" тү";s:3:"266";s:6:"аль";s:3:"267";s:6:"аре";s:3:"268";s:6:"атт";s:3:"269";s:6:"дір";s:3:"270";s:5:"ев ";s:3:"271";s:6:"егі";s:3:"272";s:6:"еда";s:3:"273";s:6:"екі";s:3:"274";s:6:"елд";s:3:"275";s:6:"ерг";s:3:"276";s:6:"ерд";s:3:"277";s:6:"ияд";s:3:"278";s:6:"кер";s:3:"279";s:6:"кет";s:3:"280";s:6:"лыс";s:3:"281";s:6:"ліс";s:3:"282";s:6:"мед";s:3:"283";s:6:"мпи";s:3:"284";s:5:"н д";s:3:"285";s:5:"ні ";s:3:"286";s:6:"нін";s:3:"287";s:5:"п т";s:3:"288";s:6:"пек";s:3:"289";s:6:"рел";s:3:"290";s:6:"рта";s:3:"291";s:6:"ріл";s:3:"292";s:6:"рін";s:3:"293";s:6:"сен";s:3:"294";s:6:"тал";s:3:"295";s:6:"шіл";s:3:"296";s:5:"ы к";s:3:"297";s:5:"ы м";s:3:"298";s:6:"ыст";s:3:"299";}s:6:"kyrgyz";a:300:{s:5:"ын ";s:1:"0";s:5:"ан ";s:1:"1";s:5:" жа";s:1:"2";s:5:"ен ";s:1:"3";s:5:"да ";s:1:"4";s:5:" та";s:1:"5";s:5:"ар ";s:1:"6";s:5:"ин ";s:1:"7";s:5:" ка";s:1:"8";s:6:"ары";s:1:"9";s:5:" ал";s:2:"10";s:5:" ба";s:2:"11";s:5:" би";s:2:"12";s:6:"лар";s:2:"13";s:5:" бо";s:2:"14";s:5:" кы";s:2:"15";s:6:"ала";s:2:"16";s:5:"н к";s:2:"17";s:5:" са";s:2:"18";s:6:"нда";s:2:"19";s:6:"ган";s:2:"20";s:6:"тар";s:2:"21";s:5:" де";s:2:"22";s:6:"анд";s:2:"23";s:5:"н б";s:2:"24";s:5:" ке";s:2:"25";s:6:"ард";s:2:"26";s:6:"мен";s:2:"27";s:5:"н т";s:2:"28";s:6:"ара";s:2:"29";s:6:"нын";s:2:"30";s:5:" да";s:2:"31";s:5:" ме";s:2:"32";s:6:"кыр";s:2:"33";s:5:" че";s:2:"34";s:5:"н а";s:2:"35";s:5:"ры ";s:2:"36";s:5:" ко";s:2:"37";s:6:"ген";s:2:"38";s:6:"дар";s:2:"39";s:6:"кен";s:2:"40";s:6:"кта";s:2:"41";s:5:"уу ";s:2:"42";s:6:"ене";s:2:"43";s:6:"ери";s:2:"44";s:5:" ша";s:2:"45";s:6:"алы";s:2:"46";s:5:"ат ";s:2:"47";s:5:"на ";s:2:"48";s:5:" кө";s:2:"49";s:5:" эм";s:2:"50";s:6:"аты";s:2:"51";s:6:"дан";s:2:"52";s:6:"деп";s:2:"53";s:6:"дын";s:2:"54";s:5:"еп ";s:2:"55";s:6:"нен";s:2:"56";s:6:"рын";s:2:"57";s:5:" бе";s:2:"58";s:6:"кан";s:2:"59";s:6:"луу";s:2:"60";s:6:"ргы";s:2:"61";s:6:"тан";s:2:"62";s:6:"шай";s:2:"63";s:6:"ырг";s:2:"64";s:5:"үн ";s:2:"65";s:5:" ар";s:2:"66";s:5:" ма";s:2:"67";s:6:"агы";s:2:"68";s:6:"акт";s:2:"69";s:6:"аны";s:2:"70";s:5:"гы ";s:2:"71";s:6:"гыз";s:2:"72";s:5:"ды ";s:2:"73";s:6:"рда";s:2:"74";s:5:"ай ";s:2:"75";s:6:"бир";s:2:"76";s:6:"бол";s:2:"77";s:5:"ер ";s:2:"78";s:5:"н с";s:2:"79";s:6:"нды";s:2:"80";s:5:"ун ";s:2:"81";s:5:"ча ";s:2:"82";s:6:"ынд";s:2:"83";s:5:"а к";s:2:"84";s:6:"ага";s:2:"85";s:6:"айл";s:2:"86";s:6:"ана";s:2:"87";s:5:"ап ";s:2:"88";s:5:"га ";s:2:"89";s:6:"лге";s:2:"90";s:6:"нча";s:2:"91";s:5:"п к";s:2:"92";s:6:"рды";s:2:"93";s:6:"туу";s:2:"94";s:6:"ыны";s:2:"95";s:5:" ан";s:2:"96";s:5:" өз";s:2:"97";s:6:"ама";s:2:"98";s:6:"ата";s:2:"99";s:6:"дин";s:3:"100";s:5:"йт ";s:3:"101";s:6:"лга";s:3:"102";s:6:"лоо";s:3:"103";s:5:"оо ";s:3:"104";s:5:"ри ";s:3:"105";s:6:"тин";s:3:"106";s:5:"ыз ";s:3:"107";s:5:"ып ";s:3:"108";s:6:"өрү";s:3:"109";s:5:" па";s:3:"110";s:5:" эк";s:3:"111";s:5:"а б";s:3:"112";s:6:"алг";s:3:"113";s:6:"асы";s:3:"114";s:6:"ашт";s:3:"115";s:6:"биз";s:3:"116";s:6:"кел";s:3:"117";s:6:"кте";s:3:"118";s:6:"тал";s:3:"119";s:5:" не";s:3:"120";s:5:" су";s:3:"121";s:6:"акы";s:3:"122";s:6:"ент";s:3:"123";s:6:"инд";s:3:"124";s:5:"ир ";s:3:"125";s:6:"кал";s:3:"126";s:5:"н д";s:3:"127";s:6:"нде";s:3:"128";s:6:"ого";s:3:"129";s:6:"онд";s:3:"130";s:6:"оюн";s:3:"131";s:5:"р б";s:3:"132";s:5:"р м";s:3:"133";s:6:"ран";s:3:"134";s:6:"сал";s:3:"135";s:6:"ста";s:3:"136";s:5:"сы ";s:3:"137";s:6:"ура";s:3:"138";s:6:"ыгы";s:3:"139";s:5:" аш";s:3:"140";s:5:" ми";s:3:"141";s:5:" сы";s:3:"142";s:5:" ту";s:3:"143";s:5:"ал ";s:3:"144";s:6:"арт";s:3:"145";s:6:"бор";s:3:"146";s:6:"елг";s:3:"147";s:6:"ени";s:3:"148";s:5:"ет ";s:3:"149";s:6:"жат";s:3:"150";s:6:"йло";s:3:"151";s:6:"кар";s:3:"152";s:5:"н м";s:3:"153";s:6:"огу";s:3:"154";s:5:"п а";s:3:"155";s:5:"п ж";s:3:"156";s:5:"р э";s:3:"157";s:6:"сын";s:3:"158";s:5:"ык ";s:3:"159";s:6:"юнч";s:3:"160";s:5:" бу";s:3:"161";s:5:" ур";s:3:"162";s:5:"а а";s:3:"163";s:5:"ак ";s:3:"164";s:6:"алд";s:3:"165";s:6:"алу";s:3:"166";s:6:"бар";s:3:"167";s:6:"бер";s:3:"168";s:6:"бою";s:3:"169";s:5:"ге ";s:3:"170";s:6:"дон";s:3:"171";s:6:"еги";s:3:"172";s:6:"ект";s:3:"173";s:6:"ефт";s:3:"174";s:5:"из ";s:3:"175";s:6:"кат";s:3:"176";s:6:"лды";s:3:"177";s:5:"н ч";s:3:"178";s:5:"н э";s:3:"179";s:5:"н ө";s:3:"180";s:6:"ндо";s:3:"181";s:6:"неф";s:3:"182";s:5:"он ";s:3:"183";s:6:"сат";s:3:"184";s:6:"тор";s:3:"185";s:5:"ты ";s:3:"186";s:6:"уда";s:3:"187";s:5:"ул ";s:3:"188";s:6:"ула";s:3:"189";s:6:"ууд";s:3:"190";s:5:"ы б";s:3:"191";s:5:"ы ж";s:3:"192";s:5:"ы к";s:3:"193";s:5:"ыл ";s:3:"194";s:6:"ына";s:3:"195";s:6:"эке";s:3:"196";s:6:"ясы";s:3:"197";s:5:" ат";s:3:"198";s:5:" до";s:3:"199";s:5:" жы";s:3:"200";s:5:" со";s:3:"201";s:5:" чы";s:3:"202";s:6:"аас";s:3:"203";s:6:"айт";s:3:"204";s:6:"аст";s:3:"205";s:6:"баа";s:3:"206";s:6:"баш";s:3:"207";s:6:"гар";s:3:"208";s:6:"гын";s:3:"209";s:5:"дө ";s:3:"210";s:5:"е б";s:3:"211";s:5:"ек ";s:3:"212";s:6:"жыл";s:3:"213";s:5:"и б";s:3:"214";s:5:"ик ";s:3:"215";s:6:"ияс";s:3:"216";s:6:"кыз";s:3:"217";s:6:"лда";s:3:"218";s:6:"лык";s:3:"219";s:6:"мда";s:3:"220";s:5:"н ж";s:3:"221";s:6:"нди";s:3:"222";s:5:"ни ";s:3:"223";s:6:"нин";s:3:"224";s:6:"орд";s:3:"225";s:6:"рдо";s:3:"226";s:6:"сто";s:3:"227";s:5:"та ";s:3:"228";s:6:"тер";s:3:"229";s:6:"тти";s:3:"230";s:6:"тур";s:3:"231";s:6:"тын";s:3:"232";s:5:"уп ";s:3:"233";s:6:"ушу";s:3:"234";s:6:"фти";s:3:"235";s:6:"ыкт";s:3:"236";s:5:"үп ";s:3:"237";s:5:"өн ";s:3:"238";s:5:" ай";s:3:"239";s:5:" бү";s:3:"240";s:5:" ич";s:3:"241";s:5:" иш";s:3:"242";s:5:" мо";s:3:"243";s:5:" пр";s:3:"244";s:5:" ре";s:3:"245";s:5:" өк";s:3:"246";s:5:" өт";s:3:"247";s:5:"а д";s:3:"248";s:5:"а у";s:3:"249";s:5:"а э";s:3:"250";s:6:"айм";s:3:"251";s:6:"амд";s:3:"252";s:6:"атт";s:3:"253";s:6:"бек";s:3:"254";s:6:"бул";s:3:"255";s:6:"гол";s:3:"256";s:6:"дег";s:3:"257";s:6:"еге";s:3:"258";s:6:"ейт";s:3:"259";s:6:"еле";s:3:"260";s:6:"енд";s:3:"261";s:6:"жак";s:3:"262";s:5:"и к";s:3:"263";s:6:"ини";s:3:"264";s:6:"ири";s:3:"265";s:6:"йма";s:3:"266";s:6:"кто";s:3:"267";s:6:"лик";s:3:"268";s:6:"мак";s:3:"269";s:6:"мес";s:3:"270";s:5:"н у";s:3:"271";s:5:"н ш";s:3:"272";s:6:"нтт";s:3:"273";s:5:"ол ";s:3:"274";s:6:"оло";s:3:"275";s:6:"пар";s:3:"276";s:6:"рак";s:3:"277";s:6:"рүү";s:3:"278";s:6:"сыр";s:3:"279";s:5:"ти ";s:3:"280";s:6:"тик";s:3:"281";s:6:"тта";s:3:"282";s:6:"төр";s:3:"283";s:5:"у ж";s:3:"284";s:5:"у с";s:3:"285";s:6:"шка";s:3:"286";s:5:"ы м";s:3:"287";s:6:"ызы";s:3:"288";s:6:"ылд";s:3:"289";s:6:"эме";s:3:"290";s:6:"үрү";s:3:"291";s:6:"өлү";s:3:"292";s:6:"өтө";s:3:"293";s:5:" же";s:3:"294";s:5:" тү";s:3:"295";s:5:" эл";s:3:"296";s:5:" өн";s:3:"297";s:5:"а ж";s:3:"298";s:6:"ады";s:3:"299";}s:5:"latin";a:300:{s:3:"um ";s:1:"0";s:3:"us ";s:1:"1";s:3:"ut ";s:1:"2";s:3:"et ";s:1:"3";s:3:"is ";s:1:"4";s:3:" et";s:1:"5";s:3:" in";s:1:"6";s:3:" qu";s:1:"7";s:3:"tur";s:1:"8";s:3:" pr";s:1:"9";s:3:"est";s:2:"10";s:3:"tio";s:2:"11";s:3:" au";s:2:"12";s:3:"am ";s:2:"13";s:3:"em ";s:2:"14";s:3:"aut";s:2:"15";s:3:" di";s:2:"16";s:3:"ent";s:2:"17";s:3:"in ";s:2:"18";s:3:"dic";s:2:"19";s:3:"t e";s:2:"20";s:3:" es";s:2:"21";s:3:"ur ";s:2:"22";s:3:"ati";s:2:"23";s:3:"ion";s:2:"24";s:3:"st ";s:2:"25";s:3:" ut";s:2:"26";s:3:"ae ";s:2:"27";s:3:"qua";s:2:"28";s:3:" de";s:2:"29";s:3:"nt ";s:2:"30";s:3:" su";s:2:"31";s:3:" si";s:2:"32";s:3:"itu";s:2:"33";s:3:"unt";s:2:"34";s:3:"rum";s:2:"35";s:3:"ia ";s:2:"36";s:3:"es ";s:2:"37";s:3:"ter";s:2:"38";s:3:" re";s:2:"39";s:3:"nti";s:2:"40";s:3:"rae";s:2:"41";s:3:"s e";s:2:"42";s:3:"qui";s:2:"43";s:3:"io ";s:2:"44";s:3:"pro";s:2:"45";s:3:"it ";s:2:"46";s:3:"per";s:2:"47";s:3:"ita";s:2:"48";s:3:"one";s:2:"49";s:3:"ici";s:2:"50";s:3:"ius";s:2:"51";s:3:" co";s:2:"52";s:3:"t d";s:2:"53";s:3:"bus";s:2:"54";s:3:"pra";s:2:"55";s:3:"m e";s:2:"56";s:3:" no";s:2:"57";s:3:"edi";s:2:"58";s:3:"tia";s:2:"59";s:3:"ue ";s:2:"60";s:3:"ibu";s:2:"61";s:3:" se";s:2:"62";s:3:" ad";s:2:"63";s:3:"er ";s:2:"64";s:3:" fi";s:2:"65";s:3:"ili";s:2:"66";s:3:"que";s:2:"67";s:3:"t i";s:2:"68";s:3:"de ";s:2:"69";s:3:"oru";s:2:"70";s:3:" te";s:2:"71";s:3:"ali";s:2:"72";s:3:" pe";s:2:"73";s:3:"aed";s:2:"74";s:3:"cit";s:2:"75";s:3:"m d";s:2:"76";s:3:"t s";s:2:"77";s:3:"tat";s:2:"78";s:3:"tem";s:2:"79";s:3:"tis";s:2:"80";s:3:"t p";s:2:"81";s:3:"sti";s:2:"82";s:3:"te ";s:2:"83";s:3:"cum";s:2:"84";s:3:"ere";s:2:"85";s:3:"ium";s:2:"86";s:3:" ex";s:2:"87";s:3:"rat";s:2:"88";s:3:"ta ";s:2:"89";s:3:"con";s:2:"90";s:3:"cti";s:2:"91";s:3:"oni";s:2:"92";s:3:"ra ";s:2:"93";s:3:"s i";s:2:"94";s:3:" cu";s:2:"95";s:3:" sa";s:2:"96";s:3:"eni";s:2:"97";s:3:"nis";s:2:"98";s:3:"nte";s:2:"99";s:3:"eri";s:3:"100";s:3:"omi";s:3:"101";s:3:"re ";s:3:"102";s:3:"s a";s:3:"103";s:3:"min";s:3:"104";s:3:"os ";s:3:"105";s:3:"ti ";s:3:"106";s:3:"uer";s:3:"107";s:3:" ma";s:3:"108";s:3:" ue";s:3:"109";s:3:"m s";s:3:"110";s:3:"nem";s:3:"111";s:3:"t m";s:3:"112";s:3:" mo";s:3:"113";s:3:" po";s:3:"114";s:3:" ui";s:3:"115";s:3:"gen";s:3:"116";s:3:"ict";s:3:"117";s:3:"m i";s:3:"118";s:3:"ris";s:3:"119";s:3:"s s";s:3:"120";s:3:"t a";s:3:"121";s:3:"uae";s:3:"122";s:3:" do";s:3:"123";s:3:"m a";s:3:"124";s:3:"t c";s:3:"125";s:3:" ge";s:3:"126";s:3:"as ";s:3:"127";s:3:"e i";s:3:"128";s:3:"e p";s:3:"129";s:3:"ne ";s:3:"130";s:3:" ca";s:3:"131";s:3:"ine";s:3:"132";s:3:"quo";s:3:"133";s:3:"s p";s:3:"134";s:3:" al";s:3:"135";s:3:"e e";s:3:"136";s:3:"ntu";s:3:"137";s:3:"ro ";s:3:"138";s:3:"tri";s:3:"139";s:3:"tus";s:3:"140";s:3:"uit";s:3:"141";s:3:"atu";s:3:"142";s:3:"ini";s:3:"143";s:3:"iqu";s:3:"144";s:3:"m p";s:3:"145";s:3:"ost";s:3:"146";s:3:"res";s:3:"147";s:3:"ura";s:3:"148";s:3:" ac";s:3:"149";s:3:" fu";s:3:"150";s:3:"a e";s:3:"151";s:3:"ant";s:3:"152";s:3:"nes";s:3:"153";s:3:"nim";s:3:"154";s:3:"sun";s:3:"155";s:3:"tra";s:3:"156";s:3:"e a";s:3:"157";s:3:"s d";s:3:"158";s:3:" pa";s:3:"159";s:3:" uo";s:3:"160";s:3:"ecu";s:3:"161";s:3:" om";s:3:"162";s:3:" tu";s:3:"163";s:3:"ad ";s:3:"164";s:3:"cut";s:3:"165";s:3:"omn";s:3:"166";s:3:"s q";s:3:"167";s:3:" ei";s:3:"168";s:3:"ex ";s:3:"169";s:3:"icu";s:3:"170";s:3:"tor";s:3:"171";s:3:"uid";s:3:"172";s:3:" ip";s:3:"173";s:3:" me";s:3:"174";s:3:"e s";s:3:"175";s:3:"era";s:3:"176";s:3:"eru";s:3:"177";s:3:"iam";s:3:"178";s:3:"ide";s:3:"179";s:3:"ips";s:3:"180";s:3:" iu";s:3:"181";s:3:"a s";s:3:"182";s:3:"do ";s:3:"183";s:3:"e d";s:3:"184";s:3:"eiu";s:3:"185";s:3:"ica";s:3:"186";s:3:"im ";s:3:"187";s:3:"m c";s:3:"188";s:3:"m u";s:3:"189";s:3:"tiu";s:3:"190";s:3:" ho";s:3:"191";s:3:"cat";s:3:"192";s:3:"ist";s:3:"193";s:3:"nat";s:3:"194";s:3:"on ";s:3:"195";s:3:"pti";s:3:"196";s:3:"reg";s:3:"197";s:3:"rit";s:3:"198";s:3:"s t";s:3:"199";s:3:"sic";s:3:"200";s:3:"spe";s:3:"201";s:3:" en";s:3:"202";s:3:" sp";s:3:"203";s:3:"dis";s:3:"204";s:3:"eli";s:3:"205";s:3:"liq";s:3:"206";s:3:"lis";s:3:"207";s:3:"men";s:3:"208";s:3:"mus";s:3:"209";s:3:"num";s:3:"210";s:3:"pos";s:3:"211";s:3:"sio";s:3:"212";s:3:" an";s:3:"213";s:3:" gr";s:3:"214";s:3:"abi";s:3:"215";s:3:"acc";s:3:"216";s:3:"ect";s:3:"217";s:3:"ri ";s:3:"218";s:3:"uan";s:3:"219";s:3:" le";s:3:"220";s:3:"ecc";s:3:"221";s:3:"ete";s:3:"222";s:3:"gra";s:3:"223";s:3:"non";s:3:"224";s:3:"se ";s:3:"225";s:3:"uen";s:3:"226";s:3:"uis";s:3:"227";s:3:" fa";s:3:"228";s:3:" tr";s:3:"229";s:3:"ate";s:3:"230";s:3:"e c";s:3:"231";s:3:"fil";s:3:"232";s:3:"na ";s:3:"233";s:3:"ni ";s:3:"234";s:3:"pul";s:3:"235";s:3:"s f";s:3:"236";s:3:"ui ";s:3:"237";s:3:"at ";s:3:"238";s:3:"cce";s:3:"239";s:3:"dam";s:3:"240";s:3:"i e";s:3:"241";s:3:"ina";s:3:"242";s:3:"leg";s:3:"243";s:3:"nos";s:3:"244";s:3:"ori";s:3:"245";s:3:"pec";s:3:"246";s:3:"rop";s:3:"247";s:3:"sta";s:3:"248";s:3:"uia";s:3:"249";s:3:"ene";s:3:"250";s:3:"iue";s:3:"251";s:3:"iui";s:3:"252";s:3:"siu";s:3:"253";s:3:"t t";s:3:"254";s:3:"t u";s:3:"255";s:3:"tib";s:3:"256";s:3:"tit";s:3:"257";s:3:" da";s:3:"258";s:3:" ne";s:3:"259";s:3:"a d";s:3:"260";s:3:"and";s:3:"261";s:3:"ege";s:3:"262";s:3:"equ";s:3:"263";s:3:"hom";s:3:"264";s:3:"imu";s:3:"265";s:3:"lor";s:3:"266";s:3:"m m";s:3:"267";s:3:"mni";s:3:"268";s:3:"ndo";s:3:"269";s:3:"ner";s:3:"270";s:3:"o e";s:3:"271";s:3:"r e";s:3:"272";s:3:"sit";s:3:"273";s:3:"tum";s:3:"274";s:3:"utu";s:3:"275";s:3:"a p";s:3:"276";s:3:"bis";s:3:"277";s:3:"bit";s:3:"278";s:3:"cer";s:3:"279";s:3:"cta";s:3:"280";s:3:"dom";s:3:"281";s:3:"fut";s:3:"282";s:3:"i s";s:3:"283";s:3:"ign";s:3:"284";s:3:"int";s:3:"285";s:3:"mod";s:3:"286";s:3:"ndu";s:3:"287";s:3:"nit";s:3:"288";s:3:"rib";s:3:"289";s:3:"rti";s:3:"290";s:3:"tas";s:3:"291";s:3:"und";s:3:"292";s:3:" ab";s:3:"293";s:3:"err";s:3:"294";s:3:"ers";s:3:"295";s:3:"ite";s:3:"296";s:3:"iti";s:3:"297";s:3:"m t";s:3:"298";s:3:"o p";s:3:"299";}s:7:"latvian";a:300:{s:3:"as ";s:1:"0";s:3:" la";s:1:"1";s:3:" pa";s:1:"2";s:3:" ne";s:1:"3";s:3:"es ";s:1:"4";s:3:" un";s:1:"5";s:3:"un ";s:1:"6";s:3:" ka";s:1:"7";s:3:" va";s:1:"8";s:3:"ar ";s:1:"9";s:3:"s p";s:2:"10";s:3:" ar";s:2:"11";s:3:" vi";s:2:"12";s:3:"is ";s:2:"13";s:3:"ai ";s:2:"14";s:3:" no";s:2:"15";s:3:"ja ";s:2:"16";s:3:"ija";s:2:"17";s:3:"iem";s:2:"18";s:3:"em ";s:2:"19";s:3:"tu ";s:2:"20";s:3:"tie";s:2:"21";s:3:"vie";s:2:"22";s:3:"lat";s:2:"23";s:3:"aks";s:2:"24";s:3:"ien";s:2:"25";s:3:"kst";s:2:"26";s:3:"ies";s:2:"27";s:3:"s a";s:2:"28";s:3:"rak";s:2:"29";s:3:"atv";s:2:"30";s:3:"tvi";s:2:"31";s:3:" ja";s:2:"32";s:3:" pi";s:2:"33";s:3:"ka ";s:2:"34";s:3:" ir";s:2:"35";s:3:"ir ";s:2:"36";s:3:"ta ";s:2:"37";s:3:" sa";s:2:"38";s:3:"ts ";s:2:"39";s:4:" kā";s:2:"40";s:4:"ās ";s:2:"41";s:3:" ti";s:2:"42";s:3:"ot ";s:2:"43";s:3:"s n";s:2:"44";s:3:" ie";s:2:"45";s:3:" ta";s:2:"46";s:4:"arī";s:2:"47";s:3:"par";s:2:"48";s:3:"pie";s:2:"49";s:3:" pr";s:2:"50";s:4:"kā ";s:2:"51";s:3:" at";s:2:"52";s:3:" ra";s:2:"53";s:3:"am ";s:2:"54";s:4:"inā";s:2:"55";s:4:"tā ";s:2:"56";s:3:" iz";s:2:"57";s:3:"jas";s:2:"58";s:3:"lai";s:2:"59";s:3:" na";s:2:"60";s:3:"aut";s:2:"61";s:4:"ieš";s:2:"62";s:3:"s s";s:2:"63";s:3:" ap";s:2:"64";s:3:" ko";s:2:"65";s:3:" st";s:2:"66";s:3:"iek";s:2:"67";s:3:"iet";s:2:"68";s:3:"jau";s:2:"69";s:3:"us ";s:2:"70";s:4:"rī ";s:2:"71";s:3:"tik";s:2:"72";s:4:"ība";s:2:"73";s:3:"na ";s:2:"74";s:3:" ga";s:2:"75";s:3:"cij";s:2:"76";s:3:"s i";s:2:"77";s:3:" uz";s:2:"78";s:3:"jum";s:2:"79";s:3:"s v";s:2:"80";s:3:"ms ";s:2:"81";s:3:"var";s:2:"82";s:3:" ku";s:2:"83";s:3:" ma";s:2:"84";s:4:"jā ";s:2:"85";s:3:"sta";s:2:"86";s:3:"s u";s:2:"87";s:4:" tā";s:2:"88";s:3:"die";s:2:"89";s:3:"kai";s:2:"90";s:3:"kas";s:2:"91";s:3:"ska";s:2:"92";s:3:" ci";s:2:"93";s:3:" da";s:2:"94";s:3:"kur";s:2:"95";s:3:"lie";s:2:"96";s:3:"tas";s:2:"97";s:3:"a p";s:2:"98";s:3:"est";s:2:"99";s:4:"stā";s:3:"100";s:4:"šan";s:3:"101";s:3:"nes";s:3:"102";s:3:"nie";s:3:"103";s:3:"s d";s:3:"104";s:3:"s m";s:3:"105";s:3:"val";s:3:"106";s:3:" di";s:3:"107";s:3:" es";s:3:"108";s:3:" re";s:3:"109";s:3:"no ";s:3:"110";s:3:"to ";s:3:"111";s:3:"umu";s:3:"112";s:3:"vai";s:3:"113";s:4:"ši ";s:3:"114";s:4:" vē";s:3:"115";s:3:"kum";s:3:"116";s:3:"nu ";s:3:"117";s:3:"rie";s:3:"118";s:3:"s t";s:3:"119";s:4:"ām ";s:3:"120";s:3:"ad ";s:3:"121";s:3:"et ";s:3:"122";s:3:"mu ";s:3:"123";s:3:"s l";s:3:"124";s:3:" be";s:3:"125";s:3:"aud";s:3:"126";s:3:"tur";s:3:"127";s:3:"vij";s:3:"128";s:4:"viņ";s:3:"129";s:4:"āju";s:3:"130";s:3:"bas";s:3:"131";s:3:"gad";s:3:"132";s:3:"i n";s:3:"133";s:3:"ika";s:3:"134";s:3:"os ";s:3:"135";s:3:"a v";s:3:"136";s:3:"not";s:3:"137";s:3:"oti";s:3:"138";s:3:"sts";s:3:"139";s:3:"aik";s:3:"140";s:3:"u a";s:3:"141";s:4:"ā a";s:3:"142";s:4:"āk ";s:3:"143";s:3:" to";s:3:"144";s:3:"ied";s:3:"145";s:3:"stu";s:3:"146";s:3:"ti ";s:3:"147";s:3:"u p";s:3:"148";s:4:"vēl";s:3:"149";s:4:"āci";s:3:"150";s:4:" šo";s:3:"151";s:3:"gi ";s:3:"152";s:3:"ko ";s:3:"153";s:3:"pro";s:3:"154";s:3:"s r";s:3:"155";s:4:"tāj";s:3:"156";s:3:"u s";s:3:"157";s:3:"u v";s:3:"158";s:3:"vis";s:3:"159";s:3:"aun";s:3:"160";s:3:"ks ";s:3:"161";s:3:"str";s:3:"162";s:3:"zin";s:3:"163";s:3:"a a";s:3:"164";s:4:"adī";s:3:"165";s:3:"da ";s:3:"166";s:3:"dar";s:3:"167";s:3:"ena";s:3:"168";s:3:"ici";s:3:"169";s:3:"kra";s:3:"170";s:3:"nas";s:3:"171";s:4:"stī";s:3:"172";s:4:"šu ";s:3:"173";s:4:" mē";s:3:"174";s:3:"a n";s:3:"175";s:3:"eci";s:3:"176";s:3:"i s";s:3:"177";s:3:"ie ";s:3:"178";s:4:"iņa";s:3:"179";s:3:"ju ";s:3:"180";s:3:"las";s:3:"181";s:3:"r t";s:3:"182";s:3:"ums";s:3:"183";s:4:"šie";s:3:"184";s:3:"bu ";s:3:"185";s:3:"cit";s:3:"186";s:3:"i a";s:3:"187";s:3:"ina";s:3:"188";s:3:"ma ";s:3:"189";s:3:"pus";s:3:"190";s:3:"ra ";s:3:"191";s:3:" au";s:3:"192";s:3:" se";s:3:"193";s:3:" sl";s:3:"194";s:3:"a s";s:3:"195";s:3:"ais";s:3:"196";s:4:"eši";s:3:"197";s:3:"iec";s:3:"198";s:3:"iku";s:3:"199";s:4:"pār";s:3:"200";s:3:"s b";s:3:"201";s:3:"s k";s:3:"202";s:3:"sot";s:3:"203";s:5:"ādā";s:3:"204";s:3:" in";s:3:"205";s:3:" li";s:3:"206";s:3:" tr";s:3:"207";s:3:"ana";s:3:"208";s:3:"eso";s:3:"209";s:3:"ikr";s:3:"210";s:3:"man";s:3:"211";s:3:"ne ";s:3:"212";s:3:"u k";s:3:"213";s:3:" tu";s:3:"214";s:3:"an ";s:3:"215";s:3:"av ";s:3:"216";s:3:"bet";s:3:"217";s:4:"būt";s:3:"218";s:3:"im ";s:3:"219";s:3:"isk";s:3:"220";s:4:"līd";s:3:"221";s:3:"nav";s:3:"222";s:3:"ras";s:3:"223";s:3:"ri ";s:3:"224";s:3:"s g";s:3:"225";s:3:"sti";s:3:"226";s:4:"īdz";s:3:"227";s:3:" ai";s:3:"228";s:3:"arb";s:3:"229";s:3:"cin";s:3:"230";s:3:"das";s:3:"231";s:3:"ent";s:3:"232";s:3:"gal";s:3:"233";s:3:"i p";s:3:"234";s:3:"lik";s:3:"235";s:4:"mā ";s:3:"236";s:3:"nek";s:3:"237";s:3:"pat";s:3:"238";s:4:"rēt";s:3:"239";s:3:"si ";s:3:"240";s:3:"tra";s:3:"241";s:4:"uši";s:3:"242";s:3:"vei";s:3:"243";s:3:" br";s:3:"244";s:3:" pu";s:3:"245";s:3:" sk";s:3:"246";s:3:"als";s:3:"247";s:3:"ama";s:3:"248";s:3:"edz";s:3:"249";s:3:"eka";s:3:"250";s:4:"ešu";s:3:"251";s:3:"ieg";s:3:"252";s:3:"jis";s:3:"253";s:3:"kam";s:3:"254";s:3:"lst";s:3:"255";s:4:"nāk";s:3:"256";s:3:"oli";s:3:"257";s:3:"pre";s:3:"258";s:4:"pēc";s:3:"259";s:3:"rot";s:3:"260";s:4:"tās";s:3:"261";s:3:"usi";s:3:"262";s:4:"ēl ";s:3:"263";s:4:"ēs ";s:3:"264";s:3:" bi";s:3:"265";s:3:" de";s:3:"266";s:3:" me";s:3:"267";s:4:" pā";s:3:"268";s:3:"a i";s:3:"269";s:3:"aid";s:3:"270";s:4:"ajā";s:3:"271";s:3:"ikt";s:3:"272";s:3:"kat";s:3:"273";s:3:"lic";s:3:"274";s:3:"lod";s:3:"275";s:3:"mi ";s:3:"276";s:3:"ni ";s:3:"277";s:3:"pri";s:3:"278";s:4:"rād";s:3:"279";s:4:"rīg";s:3:"280";s:3:"sim";s:3:"281";s:4:"trā";s:3:"282";s:3:"u l";s:3:"283";s:3:"uto";s:3:"284";s:3:"uz ";s:3:"285";s:4:"ēc ";s:3:"286";s:5:"ītā";s:3:"287";s:3:" ce";s:3:"288";s:4:" jā";s:3:"289";s:3:" sv";s:3:"290";s:3:"a t";s:3:"291";s:3:"aga";s:3:"292";s:3:"aiz";s:3:"293";s:3:"atu";s:3:"294";s:3:"ba ";s:3:"295";s:3:"cie";s:3:"296";s:3:"du ";s:3:"297";s:3:"dzi";s:3:"298";s:4:"dzī";s:3:"299";}s:10:"lithuanian";a:300:{s:3:"as ";s:1:"0";s:3:" pa";s:1:"1";s:3:" ka";s:1:"2";s:3:"ai ";s:1:"3";s:3:"us ";s:1:"4";s:3:"os ";s:1:"5";s:3:"is ";s:1:"6";s:3:" ne";s:1:"7";s:3:" ir";s:1:"8";s:3:"ir ";s:1:"9";s:3:"ti ";s:2:"10";s:3:" pr";s:2:"11";s:3:"aus";s:2:"12";s:3:"ini";s:2:"13";s:3:"s p";s:2:"14";s:3:"pas";s:2:"15";s:4:"ių ";s:2:"16";s:3:" ta";s:2:"17";s:3:" vi";s:2:"18";s:3:"iau";s:2:"19";s:3:" ko";s:2:"20";s:3:" su";s:2:"21";s:3:"kai";s:2:"22";s:3:"o p";s:2:"23";s:3:"usi";s:2:"24";s:3:" sa";s:2:"25";s:3:"vo ";s:2:"26";s:3:"tai";s:2:"27";s:3:"ali";s:2:"28";s:4:"tų ";s:2:"29";s:3:"io ";s:2:"30";s:3:"jo ";s:2:"31";s:3:"s k";s:2:"32";s:3:"sta";s:2:"33";s:3:"iai";s:2:"34";s:3:" bu";s:2:"35";s:3:" nu";s:2:"36";s:3:"ius";s:2:"37";s:3:"mo ";s:2:"38";s:3:" po";s:2:"39";s:3:"ien";s:2:"40";s:3:"s s";s:2:"41";s:3:"tas";s:2:"42";s:3:" me";s:2:"43";s:3:"uvo";s:2:"44";s:3:"kad";s:2:"45";s:4:" iš";s:2:"46";s:3:" la";s:2:"47";s:3:"to ";s:2:"48";s:3:"ais";s:2:"49";s:3:"ie ";s:2:"50";s:3:"kur";s:2:"51";s:3:"uri";s:2:"52";s:3:" ku";s:2:"53";s:3:"ijo";s:2:"54";s:4:"čia";s:2:"55";s:3:"au ";s:2:"56";s:3:"met";s:2:"57";s:3:"je ";s:2:"58";s:3:" va";s:2:"59";s:3:"ad ";s:2:"60";s:3:" ap";s:2:"61";s:3:"and";s:2:"62";s:3:" gr";s:2:"63";s:3:" ti";s:2:"64";s:3:"kal";s:2:"65";s:3:"asi";s:2:"66";s:3:"i p";s:2:"67";s:4:"iči";s:2:"68";s:3:"s i";s:2:"69";s:3:"s v";s:2:"70";s:3:"ink";s:2:"71";s:3:"o n";s:2:"72";s:4:"ės ";s:2:"73";s:3:"buv";s:2:"74";s:3:"s a";s:2:"75";s:3:" ga";s:2:"76";s:3:"aip";s:2:"77";s:3:"avi";s:2:"78";s:3:"mas";s:2:"79";s:3:"pri";s:2:"80";s:3:"tik";s:2:"81";s:3:" re";s:2:"82";s:3:"etu";s:2:"83";s:3:"jos";s:2:"84";s:3:" da";s:2:"85";s:3:"ent";s:2:"86";s:3:"oli";s:2:"87";s:3:"par";s:2:"88";s:3:"ant";s:2:"89";s:3:"ara";s:2:"90";s:3:"tar";s:2:"91";s:3:"ama";s:2:"92";s:3:"gal";s:2:"93";s:3:"imo";s:2:"94";s:4:"išk";s:2:"95";s:3:"o s";s:2:"96";s:3:" at";s:2:"97";s:3:" be";s:2:"98";s:4:" į ";s:2:"99";s:3:"min";s:3:"100";s:3:"tin";s:3:"101";s:3:" tu";s:3:"102";s:3:"s n";s:3:"103";s:3:" jo";s:3:"104";s:3:"dar";s:3:"105";s:3:"ip ";s:3:"106";s:3:"rei";s:3:"107";s:3:" te";s:3:"108";s:4:"dži";s:3:"109";s:3:"kas";s:3:"110";s:3:"nin";s:3:"111";s:3:"tei";s:3:"112";s:3:"vie";s:3:"113";s:3:" li";s:3:"114";s:3:" se";s:3:"115";s:3:"cij";s:3:"116";s:3:"gar";s:3:"117";s:3:"lai";s:3:"118";s:3:"art";s:3:"119";s:3:"lau";s:3:"120";s:3:"ras";s:3:"121";s:3:"no ";s:3:"122";s:3:"o k";s:3:"123";s:4:"tą ";s:3:"124";s:3:" ar";s:3:"125";s:4:"ėjo";s:3:"126";s:4:"vič";s:3:"127";s:3:"iga";s:3:"128";s:3:"pra";s:3:"129";s:3:"vis";s:3:"130";s:3:" na";s:3:"131";s:3:"men";s:3:"132";s:3:"oki";s:3:"133";s:4:"raš";s:3:"134";s:3:"s t";s:3:"135";s:3:"iet";s:3:"136";s:3:"ika";s:3:"137";s:3:"int";s:3:"138";s:3:"kom";s:3:"139";s:3:"tam";s:3:"140";s:3:"aug";s:3:"141";s:3:"avo";s:3:"142";s:3:"rie";s:3:"143";s:3:"s b";s:3:"144";s:3:" st";s:3:"145";s:3:"eim";s:3:"146";s:3:"ko ";s:3:"147";s:3:"nus";s:3:"148";s:3:"pol";s:3:"149";s:3:"ria";s:3:"150";s:3:"sau";s:3:"151";s:3:"api";s:3:"152";s:3:"me ";s:3:"153";s:3:"ne ";s:3:"154";s:3:"sik";s:3:"155";s:4:" ši";s:3:"156";s:3:"i n";s:3:"157";s:3:"ia ";s:3:"158";s:3:"ici";s:3:"159";s:3:"oja";s:3:"160";s:3:"sak";s:3:"161";s:3:"sti";s:3:"162";s:3:"ui ";s:3:"163";s:3:"ame";s:3:"164";s:3:"lie";s:3:"165";s:3:"o t";s:3:"166";s:3:"pie";s:3:"167";s:4:"čiu";s:3:"168";s:3:" di";s:3:"169";s:3:" pe";s:3:"170";s:3:"gri";s:3:"171";s:3:"ios";s:3:"172";s:3:"lia";s:3:"173";s:3:"lin";s:3:"174";s:3:"s d";s:3:"175";s:3:"s g";s:3:"176";s:3:"ta ";s:3:"177";s:3:"uot";s:3:"178";s:3:" ja";s:3:"179";s:4:" už";s:3:"180";s:3:"aut";s:3:"181";s:3:"i s";s:3:"182";s:3:"ino";s:3:"183";s:4:"mą ";s:3:"184";s:3:"oje";s:3:"185";s:3:"rav";s:3:"186";s:4:"dėl";s:3:"187";s:3:"nti";s:3:"188";s:3:"o a";s:3:"189";s:3:"toj";s:3:"190";s:4:"ėl ";s:3:"191";s:3:" to";s:3:"192";s:3:" vy";s:3:"193";s:3:"ar ";s:3:"194";s:3:"ina";s:3:"195";s:3:"lic";s:3:"196";s:3:"o v";s:3:"197";s:3:"sei";s:3:"198";s:3:"su ";s:3:"199";s:3:" mi";s:3:"200";s:3:" pi";s:3:"201";s:3:"din";s:3:"202";s:4:"iš ";s:3:"203";s:3:"lan";s:3:"204";s:3:"si ";s:3:"205";s:3:"tus";s:3:"206";s:3:" ba";s:3:"207";s:3:"asa";s:3:"208";s:3:"ata";s:3:"209";s:3:"kla";s:3:"210";s:3:"omi";s:3:"211";s:3:"tat";s:3:"212";s:3:" an";s:3:"213";s:3:" ji";s:3:"214";s:3:"als";s:3:"215";s:3:"ena";s:3:"216";s:4:"jų ";s:3:"217";s:3:"nuo";s:3:"218";s:3:"per";s:3:"219";s:3:"rig";s:3:"220";s:3:"s m";s:3:"221";s:3:"val";s:3:"222";s:3:"yta";s:3:"223";s:4:"čio";s:3:"224";s:3:" ra";s:3:"225";s:3:"i k";s:3:"226";s:3:"lik";s:3:"227";s:3:"net";s:3:"228";s:4:"nė ";s:3:"229";s:3:"tis";s:3:"230";s:3:"tuo";s:3:"231";s:3:"yti";s:3:"232";s:4:"ęs ";s:3:"233";s:4:"ų s";s:3:"234";s:3:"ada";s:3:"235";s:3:"ari";s:3:"236";s:3:"do ";s:3:"237";s:3:"eik";s:3:"238";s:3:"eis";s:3:"239";s:3:"ist";s:3:"240";s:3:"lst";s:3:"241";s:3:"ma ";s:3:"242";s:3:"nes";s:3:"243";s:3:"sav";s:3:"244";s:3:"sio";s:3:"245";s:3:"tau";s:3:"246";s:3:" ki";s:3:"247";s:3:"aik";s:3:"248";s:3:"aud";s:3:"249";s:3:"ies";s:3:"250";s:3:"ori";s:3:"251";s:3:"s r";s:3:"252";s:3:"ska";s:3:"253";s:3:" ge";s:3:"254";s:3:"ast";s:3:"255";s:3:"eig";s:3:"256";s:3:"et ";s:3:"257";s:3:"iam";s:3:"258";s:3:"isa";s:3:"259";s:3:"mis";s:3:"260";s:3:"nam";s:3:"261";s:3:"ome";s:3:"262";s:4:"žia";s:3:"263";s:3:"aba";s:3:"264";s:3:"aul";s:3:"265";s:3:"ikr";s:3:"266";s:4:"ką ";s:3:"267";s:3:"nta";s:3:"268";s:3:"ra ";s:3:"269";s:3:"tur";s:3:"270";s:3:" ma";s:3:"271";s:3:"die";s:3:"272";s:3:"ei ";s:3:"273";s:3:"i t";s:3:"274";s:3:"nas";s:3:"275";s:3:"rin";s:3:"276";s:3:"sto";s:3:"277";s:3:"tie";s:3:"278";s:3:"tuv";s:3:"279";s:3:"vos";s:3:"280";s:4:"ų p";s:3:"281";s:4:" dė";s:3:"282";s:3:"are";s:3:"283";s:3:"ats";s:3:"284";s:4:"enė";s:3:"285";s:3:"ili";s:3:"286";s:3:"ima";s:3:"287";s:3:"kar";s:3:"288";s:3:"ms ";s:3:"289";s:3:"nia";s:3:"290";s:3:"r p";s:3:"291";s:3:"rod";s:3:"292";s:3:"s l";s:3:"293";s:3:" o ";s:3:"294";s:3:"e p";s:3:"295";s:3:"es ";s:3:"296";s:3:"ide";s:3:"297";s:3:"ik ";s:3:"298";s:3:"ja ";s:3:"299";}s:10:"macedonian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"та ";s:1:"2";s:6:"ата";s:1:"3";s:6:"ија";s:1:"4";s:5:" пр";s:1:"5";s:5:"то ";s:1:"6";s:5:"ја ";s:1:"7";s:5:" за";s:1:"8";s:5:"а н";s:1:"9";s:4:" и ";s:2:"10";s:5:"а с";s:2:"11";s:5:"те ";s:2:"12";s:6:"ите";s:2:"13";s:5:" ко";s:2:"14";s:5:"от ";s:2:"15";s:5:" де";s:2:"16";s:5:" по";s:2:"17";s:5:"а д";s:2:"18";s:5:"во ";s:2:"19";s:5:"за ";s:2:"20";s:5:" во";s:2:"21";s:5:" од";s:2:"22";s:5:" се";s:2:"23";s:5:" не";s:2:"24";s:5:"се ";s:2:"25";s:5:" до";s:2:"26";s:5:"а в";s:2:"27";s:5:"ка ";s:2:"28";s:6:"ање";s:2:"29";s:5:"а п";s:2:"30";s:5:"о п";s:2:"31";s:6:"ува";s:2:"32";s:6:"циј";s:2:"33";s:5:"а о";s:2:"34";s:6:"ици";s:2:"35";s:6:"ето";s:2:"36";s:5:"о н";s:2:"37";s:6:"ани";s:2:"38";s:5:"ни ";s:2:"39";s:5:" вл";s:2:"40";s:6:"дек";s:2:"41";s:6:"ека";s:2:"42";s:6:"њет";s:2:"43";s:5:"ќе ";s:2:"44";s:4:" е ";s:2:"45";s:5:"а з";s:2:"46";s:5:"а и";s:2:"47";s:5:"ат ";s:2:"48";s:6:"вла";s:2:"49";s:5:"го ";s:2:"50";s:5:"е н";s:2:"51";s:5:"од ";s:2:"52";s:6:"пре";s:2:"53";s:5:" го";s:2:"54";s:5:" да";s:2:"55";s:5:" ма";s:2:"56";s:5:" ре";s:2:"57";s:5:" ќе";s:2:"58";s:6:"али";s:2:"59";s:5:"и д";s:2:"60";s:5:"и н";s:2:"61";s:6:"иот";s:2:"62";s:6:"нат";s:2:"63";s:6:"ово";s:2:"64";s:5:" па";s:2:"65";s:5:" ра";s:2:"66";s:5:" со";s:2:"67";s:6:"ове";s:2:"68";s:6:"пра";s:2:"69";s:6:"што";s:2:"70";s:5:"ње ";s:2:"71";s:5:"а е";s:2:"72";s:5:"да ";s:2:"73";s:6:"дат";s:2:"74";s:6:"дон";s:2:"75";s:5:"е в";s:2:"76";s:5:"е д";s:2:"77";s:5:"е з";s:2:"78";s:5:"е с";s:2:"79";s:6:"кон";s:2:"80";s:6:"нит";s:2:"81";s:5:"но ";s:2:"82";s:6:"они";s:2:"83";s:6:"ото";s:2:"84";s:6:"пар";s:2:"85";s:6:"при";s:2:"86";s:6:"ста";s:2:"87";s:5:"т н";s:2:"88";s:5:" шт";s:2:"89";s:5:"а к";s:2:"90";s:6:"аци";s:2:"91";s:5:"ва ";s:2:"92";s:6:"вањ";s:2:"93";s:5:"е п";s:2:"94";s:6:"ени";s:2:"95";s:5:"ла ";s:2:"96";s:6:"лад";s:2:"97";s:6:"мак";s:2:"98";s:6:"нес";s:2:"99";s:6:"нос";s:3:"100";s:6:"про";s:3:"101";s:6:"рен";s:3:"102";s:6:"јат";s:3:"103";s:5:" ин";s:3:"104";s:5:" ме";s:3:"105";s:5:" то";s:3:"106";s:5:"а г";s:3:"107";s:5:"а м";s:3:"108";s:5:"а р";s:3:"109";s:6:"аке";s:3:"110";s:6:"ако";s:3:"111";s:6:"вор";s:3:"112";s:6:"гов";s:3:"113";s:6:"едо";s:3:"114";s:6:"ена";s:3:"115";s:5:"и и";s:3:"116";s:6:"ира";s:3:"117";s:6:"кед";s:3:"118";s:5:"не ";s:3:"119";s:6:"ниц";s:3:"120";s:6:"ниј";s:3:"121";s:6:"ост";s:3:"122";s:5:"ра ";s:3:"123";s:6:"рат";s:3:"124";s:6:"ред";s:3:"125";s:6:"ска";s:3:"126";s:6:"тен";s:3:"127";s:5:" ка";s:3:"128";s:5:" сп";s:3:"129";s:5:" ја";s:3:"130";s:5:"а т";s:3:"131";s:6:"аде";s:3:"132";s:6:"арт";s:3:"133";s:5:"е г";s:3:"134";s:5:"е и";s:3:"135";s:6:"кат";s:3:"136";s:6:"лас";s:3:"137";s:6:"нио";s:3:"138";s:5:"о с";s:3:"139";s:5:"ри ";s:3:"140";s:5:" ба";s:3:"141";s:5:" би";s:3:"142";s:6:"ава";s:3:"143";s:6:"ате";s:3:"144";s:6:"вни";s:3:"145";s:5:"д н";s:3:"146";s:6:"ден";s:3:"147";s:6:"дов";s:3:"148";s:6:"држ";s:3:"149";s:6:"дув";s:3:"150";s:5:"е о";s:3:"151";s:5:"ен ";s:3:"152";s:6:"ере";s:3:"153";s:6:"ери";s:3:"154";s:5:"и п";s:3:"155";s:5:"и с";s:3:"156";s:6:"ина";s:3:"157";s:6:"кој";s:3:"158";s:6:"нци";s:3:"159";s:5:"о м";s:3:"160";s:5:"о о";s:3:"161";s:6:"одн";s:3:"162";s:6:"пор";s:3:"163";s:6:"ски";s:3:"164";s:6:"спо";s:3:"165";s:6:"ств";s:3:"166";s:6:"сти";s:3:"167";s:6:"тво";s:3:"168";s:5:"ти ";s:3:"169";s:5:" об";s:3:"170";s:5:" ов";s:3:"171";s:5:"а б";s:3:"172";s:6:"алн";s:3:"173";s:6:"ара";s:3:"174";s:6:"бар";s:3:"175";s:5:"е к";s:3:"176";s:5:"ед ";s:3:"177";s:6:"ент";s:3:"178";s:6:"еѓу";s:3:"179";s:5:"и о";s:3:"180";s:5:"ии ";s:3:"181";s:6:"меѓ";s:3:"182";s:5:"о д";s:3:"183";s:6:"оја";s:3:"184";s:6:"пот";s:3:"185";s:6:"раз";s:3:"186";s:6:"раш";s:3:"187";s:6:"спр";s:3:"188";s:6:"сто";s:3:"189";s:5:"т д";s:3:"190";s:5:"ци ";s:3:"191";s:5:" бе";s:3:"192";s:5:" гр";s:3:"193";s:5:" др";s:3:"194";s:5:" из";s:3:"195";s:5:" ст";s:3:"196";s:5:"аа ";s:3:"197";s:6:"бид";s:3:"198";s:6:"вед";s:3:"199";s:6:"гла";s:3:"200";s:6:"еко";s:3:"201";s:6:"енд";s:3:"202";s:6:"есе";s:3:"203";s:6:"етс";s:3:"204";s:6:"зац";s:3:"205";s:5:"и т";s:3:"206";s:6:"иза";s:3:"207";s:6:"инс";s:3:"208";s:6:"ист";s:3:"209";s:5:"ки ";s:3:"210";s:6:"ков";s:3:"211";s:6:"кол";s:3:"212";s:5:"ку ";s:3:"213";s:6:"лиц";s:3:"214";s:5:"о з";s:3:"215";s:5:"о и";s:3:"216";s:6:"ова";s:3:"217";s:6:"олк";s:3:"218";s:6:"оре";s:3:"219";s:6:"ори";s:3:"220";s:6:"под";s:3:"221";s:6:"рањ";s:3:"222";s:6:"реф";s:3:"223";s:6:"ржа";s:3:"224";s:6:"ров";s:3:"225";s:6:"рти";s:3:"226";s:5:"со ";s:3:"227";s:6:"тор";s:3:"228";s:6:"фер";s:3:"229";s:6:"цен";s:3:"230";s:6:"цит";s:3:"231";s:4:" а ";s:3:"232";s:5:" вр";s:3:"233";s:5:" гл";s:3:"234";s:5:" дп";s:3:"235";s:5:" мо";s:3:"236";s:5:" ни";s:3:"237";s:5:" но";s:3:"238";s:5:" оп";s:3:"239";s:5:" от";s:3:"240";s:5:"а ќ";s:3:"241";s:6:"або";s:3:"242";s:6:"ада";s:3:"243";s:6:"аса";s:3:"244";s:6:"аша";s:3:"245";s:5:"ба ";s:3:"246";s:6:"бот";s:3:"247";s:6:"ваа";s:3:"248";s:6:"ват";s:3:"249";s:6:"вот";s:3:"250";s:5:"ги ";s:3:"251";s:6:"гра";s:3:"252";s:5:"де ";s:3:"253";s:6:"дин";s:3:"254";s:6:"дум";s:3:"255";s:6:"евр";s:3:"256";s:6:"еду";s:3:"257";s:6:"ено";s:3:"258";s:6:"ера";s:3:"259";s:5:"ес ";s:3:"260";s:6:"ење";s:3:"261";s:5:"же ";s:3:"262";s:6:"зак";s:3:"263";s:5:"и в";s:3:"264";s:6:"ила";s:3:"265";s:6:"иту";s:3:"266";s:6:"коа";s:3:"267";s:6:"кои";s:3:"268";s:6:"лан";s:3:"269";s:6:"лку";s:3:"270";s:6:"лож";s:3:"271";s:6:"мот";s:3:"272";s:6:"нду";s:3:"273";s:6:"нст";s:3:"274";s:5:"о в";s:3:"275";s:5:"оа ";s:3:"276";s:6:"оал";s:3:"277";s:6:"обр";s:3:"278";s:5:"ов ";s:3:"279";s:6:"ови";s:3:"280";s:6:"овн";s:3:"281";s:5:"ои ";s:3:"282";s:5:"ор ";s:3:"283";s:6:"орм";s:3:"284";s:5:"ој ";s:3:"285";s:6:"рет";s:3:"286";s:6:"сед";s:3:"287";s:5:"ст ";s:3:"288";s:6:"тер";s:3:"289";s:6:"тиј";s:3:"290";s:6:"тоа";s:3:"291";s:6:"фор";s:3:"292";s:6:"ции";s:3:"293";s:5:"ѓу ";s:3:"294";s:5:" ал";s:3:"295";s:5:" ве";s:3:"296";s:5:" вм";s:3:"297";s:5:" ги";s:3:"298";s:5:" ду";s:3:"299";}s:9:"mongolian";a:300:{s:5:"ын ";s:1:"0";s:5:" ба";s:1:"1";s:5:"йн ";s:1:"2";s:6:"бай";s:1:"3";s:6:"ийн";s:1:"4";s:6:"уул";s:1:"5";s:5:" ул";s:1:"6";s:6:"улс";s:1:"7";s:5:"ан ";s:1:"8";s:5:" ха";s:1:"9";s:6:"ний";s:2:"10";s:5:"н х";s:2:"11";s:6:"гаа";s:2:"12";s:6:"сын";s:2:"13";s:5:"ий ";s:2:"14";s:6:"лсы";s:2:"15";s:5:" бо";s:2:"16";s:5:"й б";s:2:"17";s:5:"эн ";s:2:"18";s:5:"ах ";s:2:"19";s:6:"бол";s:2:"20";s:5:"ол ";s:2:"21";s:5:"н б";s:2:"22";s:6:"оло";s:2:"23";s:5:" хэ";s:2:"24";s:6:"онг";s:2:"25";s:6:"гол";s:2:"26";s:6:"гуу";s:2:"27";s:6:"нго";s:2:"28";s:5:"ыг ";s:2:"29";s:6:"жил";s:2:"30";s:5:" мо";s:2:"31";s:6:"лаг";s:2:"32";s:6:"лла";s:2:"33";s:6:"мон";s:2:"34";s:5:" тє";s:2:"35";s:5:" ху";s:2:"36";s:6:"айд";s:2:"37";s:5:"ны ";s:2:"38";s:5:"он ";s:2:"39";s:6:"сан";s:2:"40";s:6:"хий";s:2:"41";s:5:" аж";s:2:"42";s:5:" ор";s:2:"43";s:5:"л у";s:2:"44";s:5:"н т";s:2:"45";s:6:"улг";s:2:"46";s:6:"айг";s:2:"47";s:6:"длы";s:2:"48";s:5:"йг ";s:2:"49";s:5:" за";s:2:"50";s:6:"дэс";s:2:"51";s:5:"н а";s:2:"52";s:6:"ндэ";s:2:"53";s:6:"ула";s:2:"54";s:5:"ээ ";s:2:"55";s:6:"ага";s:2:"56";s:6:"ийг";s:2:"57";s:4:"vй ";s:2:"58";s:5:"аа ";s:2:"59";s:5:"й а";s:2:"60";s:6:"лын";s:2:"61";s:5:"н з";s:2:"62";s:5:" аю";s:2:"63";s:5:" зє";s:2:"64";s:6:"аар";s:2:"65";s:5:"ад ";s:2:"66";s:5:"ар ";s:2:"67";s:5:"гvй";s:2:"68";s:6:"зєв";s:2:"69";s:6:"ажи";s:2:"70";s:5:"ал ";s:2:"71";s:6:"аюу";s:2:"72";s:5:"г х";s:2:"73";s:5:"лгv";s:2:"74";s:5:"лж ";s:2:"75";s:6:"сни";s:2:"76";s:6:"эсн";s:2:"77";s:6:"юул";s:2:"78";s:6:"йдл";s:2:"79";s:6:"лыг";s:2:"80";s:6:"нхи";s:2:"81";s:6:"ууд";s:2:"82";s:6:"хам";s:2:"83";s:5:" нэ";s:2:"84";s:5:" са";s:2:"85";s:6:"гий";s:2:"86";s:6:"лах";s:2:"87";s:6:"лєл";s:2:"88";s:6:"рєн";s:2:"89";s:6:"єгч";s:2:"90";s:5:" та";s:2:"91";s:6:"илл";s:2:"92";s:6:"лий";s:2:"93";s:6:"лэх";s:2:"94";s:6:"рий";s:2:"95";s:5:"эх ";s:2:"96";s:5:" ер";s:2:"97";s:5:" эр";s:2:"98";s:6:"влє";s:2:"99";s:6:"ерє";s:3:"100";s:6:"ийл";s:3:"101";s:6:"лон";s:3:"102";s:6:"лєг";s:3:"103";s:6:"євл";s:3:"104";s:6:"єнх";s:3:"105";s:5:" хо";s:3:"106";s:6:"ари";s:3:"107";s:5:"их ";s:3:"108";s:6:"хан";s:3:"109";s:5:"эр ";s:3:"110";s:5:"єн ";s:3:"111";s:4:"vvл";s:3:"112";s:5:"ж б";s:3:"113";s:6:"тэй";s:3:"114";s:5:"х х";s:3:"115";s:6:"эрх";s:3:"116";s:4:" vн";s:3:"117";s:5:" нь";s:3:"118";s:5:"vнд";s:3:"119";s:6:"алт";s:3:"120";s:6:"йлє";s:3:"121";s:5:"нь ";s:3:"122";s:6:"тєр";s:3:"123";s:5:" га";s:3:"124";s:5:" су";s:3:"125";s:6:"аан";s:3:"126";s:6:"даа";s:3:"127";s:6:"илц";s:3:"128";s:6:"йгу";s:3:"129";s:5:"л а";s:3:"130";s:6:"лаа";s:3:"131";s:5:"н н";s:3:"132";s:6:"руу";s:3:"133";s:5:"эй ";s:3:"134";s:5:" то";s:3:"135";s:5:"н с";s:3:"136";s:6:"рил";s:3:"137";s:6:"єри";s:3:"138";s:6:"ааг";s:3:"139";s:5:"гч ";s:3:"140";s:6:"лээ";s:3:"141";s:5:"н о";s:3:"142";s:6:"рэг";s:3:"143";s:6:"суу";s:3:"144";s:6:"эрэ";s:3:"145";s:6:"їїл";s:3:"146";s:4:" yн";s:3:"147";s:5:" бу";s:3:"148";s:5:" дэ";s:3:"149";s:5:" ол";s:3:"150";s:5:" ту";s:3:"151";s:5:" ши";s:3:"152";s:5:"yнд";s:3:"153";s:6:"аши";s:3:"154";s:5:"г т";s:3:"155";s:5:"иг ";s:3:"156";s:5:"йл ";s:3:"157";s:6:"хар";s:3:"158";s:6:"шин";s:3:"159";s:5:"эг ";s:3:"160";s:5:"єр ";s:3:"161";s:5:" их";s:3:"162";s:5:" хє";s:3:"163";s:5:" хї";s:3:"164";s:5:"ам ";s:3:"165";s:6:"анг";s:3:"166";s:5:"ин ";s:3:"167";s:6:"йга";s:3:"168";s:6:"лса";s:3:"169";s:4:"н v";s:3:"170";s:5:"н е";s:3:"171";s:6:"нал";s:3:"172";s:5:"нд ";s:3:"173";s:6:"хуу";s:3:"174";s:6:"цаа";s:3:"175";s:5:"эд ";s:3:"176";s:6:"ээр";s:3:"177";s:5:"єл ";s:3:"178";s:5:"vйл";s:3:"179";s:6:"ада";s:3:"180";s:6:"айн";s:3:"181";s:6:"ала";s:3:"182";s:6:"амт";s:3:"183";s:6:"гах";s:3:"184";s:5:"д х";s:3:"185";s:6:"дал";s:3:"186";s:6:"зар";s:3:"187";s:5:"л б";s:3:"188";s:6:"лан";s:3:"189";s:5:"н д";s:3:"190";s:6:"сэн";s:3:"191";s:6:"улл";s:3:"192";s:5:"х б";s:3:"193";s:6:"хэр";s:3:"194";s:4:" бv";s:3:"195";s:5:" да";s:3:"196";s:5:" зо";s:3:"197";s:5:"vрэ";s:3:"198";s:6:"аад";s:3:"199";s:6:"гээ";s:3:"200";s:6:"лэн";s:3:"201";s:5:"н и";s:3:"202";s:5:"н э";s:3:"203";s:6:"нга";s:3:"204";s:5:"нэ ";s:3:"205";s:6:"тал";s:3:"206";s:6:"тын";s:3:"207";s:6:"хур";s:3:"208";s:5:"эл ";s:3:"209";s:5:" на";s:3:"210";s:5:" ни";s:3:"211";s:5:" он";s:3:"212";s:5:"vлэ";s:3:"213";s:5:"аг ";s:3:"214";s:5:"аж ";s:3:"215";s:5:"ай ";s:3:"216";s:6:"ата";s:3:"217";s:6:"бар";s:3:"218";s:5:"г б";s:3:"219";s:6:"гад";s:3:"220";s:6:"гїй";s:3:"221";s:5:"й х";s:3:"222";s:5:"лт ";s:3:"223";s:5:"н м";s:3:"224";s:5:"на ";s:3:"225";s:6:"оро";s:3:"226";s:6:"уль";s:3:"227";s:6:"чин";s:3:"228";s:5:"эж ";s:3:"229";s:6:"энэ";s:3:"230";s:6:"ээд";s:3:"231";s:5:"їй ";s:3:"232";s:6:"їлэ";s:3:"233";s:5:" би";s:3:"234";s:5:" тэ";s:3:"235";s:5:" эн";s:3:"236";s:6:"аны";s:3:"237";s:6:"дий";s:3:"238";s:6:"дээ";s:3:"239";s:6:"лал";s:3:"240";s:6:"лга";s:3:"241";s:5:"лд ";s:3:"242";s:6:"лог";s:3:"243";s:5:"ль ";s:3:"244";s:5:"н у";s:3:"245";s:5:"н ї";s:3:"246";s:5:"р б";s:3:"247";s:6:"рал";s:3:"248";s:6:"сон";s:3:"249";s:6:"тай";s:3:"250";s:6:"удл";s:3:"251";s:6:"элт";s:3:"252";s:6:"эрг";s:3:"253";s:6:"єлє";s:3:"254";s:4:" vй";s:3:"255";s:4:" в ";s:3:"256";s:5:" гэ";s:3:"257";s:4:" хv";s:3:"258";s:6:"ара";s:3:"259";s:5:"бvр";s:3:"260";s:5:"д н";s:3:"261";s:5:"д о";s:3:"262";s:5:"л х";s:3:"263";s:5:"лс ";s:3:"264";s:6:"лты";s:3:"265";s:5:"н г";s:3:"266";s:6:"нэг";s:3:"267";s:6:"огт";s:3:"268";s:6:"олы";s:3:"269";s:6:"оёр";s:3:"270";s:5:"р т";s:3:"271";s:6:"рээ";s:3:"272";s:6:"тав";s:3:"273";s:6:"тог";s:3:"274";s:6:"уур";s:3:"275";s:6:"хоё";s:3:"276";s:6:"хэл";s:3:"277";s:6:"хээ";s:3:"278";s:6:"элэ";s:3:"279";s:5:"ёр ";s:3:"280";s:5:" ав";s:3:"281";s:5:" ас";s:3:"282";s:5:" аш";s:3:"283";s:5:" ду";s:3:"284";s:5:" со";s:3:"285";s:5:" чи";s:3:"286";s:5:" эв";s:3:"287";s:5:" єр";s:3:"288";s:6:"аал";s:3:"289";s:6:"алд";s:3:"290";s:6:"амж";s:3:"291";s:6:"анд";s:3:"292";s:6:"асу";s:3:"293";s:6:"вэр";s:3:"294";s:5:"г у";s:3:"295";s:6:"двэ";s:3:"296";s:4:"жvv";s:3:"297";s:6:"лца";s:3:"298";s:6:"лэл";s:3:"299";}s:6:"nepali";a:300:{s:7:"को ";s:1:"0";s:7:"का ";s:1:"1";s:7:"मा ";s:1:"2";s:9:"हरु";s:1:"3";s:7:" ने";s:1:"4";s:9:"नेप";s:1:"5";s:9:"पाल";s:1:"6";s:9:"ेपा";s:1:"7";s:7:" सम";s:1:"8";s:7:"ले ";s:1:"9";s:7:" प्";s:2:"10";s:9:"प्र";s:2:"11";s:9:"कार";s:2:"12";s:7:"ा स";s:2:"13";s:9:"एको";s:2:"14";s:7:" भए";s:2:"15";s:5:" छ ";s:2:"16";s:7:" भा";s:2:"17";s:9:"्रम";s:2:"18";s:7:" गर";s:2:"19";s:9:"रुक";s:2:"20";s:5:" र ";s:2:"21";s:9:"भार";s:2:"22";s:9:"ारत";s:2:"23";s:7:" का";s:2:"24";s:7:" वि";s:2:"25";s:9:"भएक";s:2:"26";s:9:"ाली";s:2:"27";s:7:"ली ";s:2:"28";s:7:"ा प";s:2:"29";s:9:"ीहर";s:2:"30";s:9:"ार्";s:2:"31";s:7:"ो छ";s:2:"32";s:7:"ना ";s:2:"33";s:7:"रु ";s:2:"34";s:9:"ालक";s:2:"35";s:9:"्या";s:2:"36";s:7:" बा";s:2:"37";s:9:"एका";s:2:"38";s:7:"ने ";s:2:"39";s:9:"न्त";s:2:"40";s:7:"ा ब";s:2:"41";s:9:"ाको";s:2:"42";s:7:"ार ";s:2:"43";s:7:"ा भ";s:2:"44";s:9:"ाहर";s:2:"45";s:9:"्रो";s:2:"46";s:9:"क्ष";s:2:"47";s:7:"न् ";s:2:"48";s:9:"ारी";s:2:"49";s:7:" नि";s:2:"50";s:7:"ा न";s:2:"51";s:7:"ी स";s:2:"52";s:7:" डु";s:2:"53";s:9:"क्र";s:2:"54";s:9:"जना";s:2:"55";s:7:"यो ";s:2:"56";s:7:"ा छ";s:2:"57";s:9:"ेवा";s:2:"58";s:9:"्ता";s:2:"59";s:7:" रा";s:2:"60";s:9:"त्य";s:2:"61";s:9:"न्द";s:2:"62";s:9:"हुन";s:2:"63";s:7:"ा क";s:2:"64";s:9:"ामा";s:2:"65";s:7:"ी न";s:2:"66";s:9:"्दा";s:2:"67";s:7:" से";s:2:"68";s:9:"छन्";s:2:"69";s:9:"म्ब";s:2:"70";s:9:"रोत";s:2:"71";s:9:"सेव";s:2:"72";s:9:"स्त";s:2:"73";s:9:"स्र";s:2:"74";s:9:"ेका";s:2:"75";s:7:"्त ";s:2:"76";s:7:" बी";s:2:"77";s:7:" हु";s:2:"78";s:9:"क्त";s:2:"79";s:9:"त्र";s:2:"80";s:7:"रत ";s:2:"81";s:9:"र्न";s:2:"82";s:9:"र्य";s:2:"83";s:7:"ा र";s:2:"84";s:9:"ाका";s:2:"85";s:9:"ुको";s:2:"86";s:7:" एक";s:2:"87";s:7:" सं";s:2:"88";s:7:" सु";s:2:"89";s:9:"बीब";s:2:"90";s:9:"बीस";s:2:"91";s:9:"लको";s:2:"92";s:9:"स्य";s:2:"93";s:9:"ीबी";s:2:"94";s:9:"ीसी";s:2:"95";s:9:"ेको";s:2:"96";s:7:"ो स";s:2:"97";s:9:"्यक";s:2:"98";s:7:" छन";s:2:"99";s:7:" जन";s:3:"100";s:7:" बि";s:3:"101";s:7:" मु";s:3:"102";s:7:" स्";s:3:"103";s:9:"गर्";s:3:"104";s:9:"ताह";s:3:"105";s:9:"न्ध";s:3:"106";s:9:"बार";s:3:"107";s:9:"मन्";s:3:"108";s:9:"मस्";s:3:"109";s:9:"रुल";s:3:"110";s:9:"लाई";s:3:"111";s:7:"ा व";s:3:"112";s:7:"ाई ";s:3:"113";s:7:"ाल ";s:3:"114";s:9:"िका";s:3:"115";s:7:" त्";s:3:"116";s:7:" मा";s:3:"117";s:7:" यस";s:3:"118";s:7:" रु";s:3:"119";s:9:"ताक";s:3:"120";s:9:"बन्";s:3:"121";s:7:"र ब";s:3:"122";s:7:"रण ";s:3:"123";s:9:"रुप";s:3:"124";s:9:"रेक";s:3:"125";s:9:"ष्ट";s:3:"126";s:9:"सम्";s:3:"127";s:7:"सी ";s:3:"128";s:9:"ाएक";s:3:"129";s:9:"ुका";s:3:"130";s:9:"ुक्";s:3:"131";s:7:" अध";s:3:"132";s:7:" अन";s:3:"133";s:7:" तथ";s:3:"134";s:7:" थि";s:3:"135";s:7:" दे";s:3:"136";s:7:" पर";s:3:"137";s:7:" बै";s:3:"138";s:9:"तथा";s:3:"139";s:7:"ता ";s:3:"140";s:7:"दा ";s:3:"141";s:9:"द्द";s:3:"142";s:7:"नी ";s:3:"143";s:9:"बाट";s:3:"144";s:9:"यक्";s:3:"145";s:7:"री ";s:3:"146";s:9:"रीह";s:3:"147";s:9:"र्म";s:3:"148";s:9:"लका";s:3:"149";s:9:"समस";s:3:"150";s:7:"ा अ";s:3:"151";s:7:"ा ए";s:3:"152";s:7:"ाट ";s:3:"153";s:7:"िय ";s:3:"154";s:7:"ो प";s:3:"155";s:7:"ो म";s:3:"156";s:7:"्न ";s:3:"157";s:9:"्ने";s:3:"158";s:9:"्षा";s:3:"159";s:7:" पा";s:3:"160";s:7:" यो";s:3:"161";s:7:" हा";s:3:"162";s:9:"अधि";s:3:"163";s:9:"डुव";s:3:"164";s:7:"त भ";s:3:"165";s:7:"त स";s:3:"166";s:7:"था ";s:3:"167";s:9:"धिक";s:3:"168";s:9:"पमा";s:3:"169";s:9:"बैठ";s:3:"170";s:9:"मुद";s:3:"171";s:7:"या ";s:3:"172";s:9:"युक";s:3:"173";s:7:"र न";s:3:"174";s:9:"रति";s:3:"175";s:9:"वान";s:3:"176";s:9:"सार";s:3:"177";s:7:"ा आ";s:3:"178";s:7:"ा ज";s:3:"179";s:7:"ा ह";s:3:"180";s:9:"ुद्";s:3:"181";s:9:"ुपम";s:3:"182";s:9:"ुले";s:3:"183";s:9:"ुवा";s:3:"184";s:9:"ैठक";s:3:"185";s:7:"ो ब";s:3:"186";s:9:"्तर";s:3:"187";s:7:"्य ";s:3:"188";s:9:"्यस";s:3:"189";s:7:" क्";s:3:"190";s:7:" मन";s:3:"191";s:7:" रह";s:3:"192";s:9:"चार";s:3:"193";s:9:"तिय";s:3:"194";s:7:"दै ";s:3:"195";s:9:"निर";s:3:"196";s:7:"नु ";s:3:"197";s:9:"पर्";s:3:"198";s:9:"रक्";s:3:"199";s:9:"र्द";s:3:"200";s:9:"समा";s:3:"201";s:9:"सुर";s:3:"202";s:9:"ाउन";s:3:"203";s:7:"ान ";s:3:"204";s:9:"ानम";s:3:"205";s:9:"ारण";s:3:"206";s:9:"ाले";s:3:"207";s:7:"ि ब";s:3:"208";s:9:"ियो";s:3:"209";s:9:"ुन्";s:3:"210";s:9:"ुरक";s:3:"211";s:9:"्त्";s:3:"212";s:9:"्बन";s:3:"213";s:9:"्रा";s:3:"214";s:7:"्ष ";s:3:"215";s:7:" आर";s:3:"216";s:7:" जल";s:3:"217";s:7:" बे";s:3:"218";s:7:" या";s:3:"219";s:7:" सा";s:3:"220";s:9:"आएक";s:3:"221";s:7:"एक ";s:3:"222";s:9:"कर्";s:3:"223";s:9:"जलस";s:3:"224";s:9:"णका";s:3:"225";s:7:"त र";s:3:"226";s:9:"द्र";s:3:"227";s:9:"धान";s:3:"228";s:7:"धि ";s:3:"229";s:9:"नका";s:3:"230";s:9:"नमा";s:3:"231";s:7:"नि ";s:3:"232";s:9:"ममा";s:3:"233";s:7:"रम ";s:3:"234";s:9:"रहे";s:3:"235";s:9:"राज";s:3:"236";s:9:"लस्";s:3:"237";s:7:"ला ";s:3:"238";s:9:"वार";s:3:"239";s:9:"सका";s:3:"240";s:9:"हिल";s:3:"241";s:9:"हेक";s:3:"242";s:7:"ा त";s:3:"243";s:9:"ारे";s:3:"244";s:9:"िन्";s:3:"245";s:9:"िस्";s:3:"246";s:7:"े स";s:3:"247";s:7:"ो न";s:3:"248";s:7:"ो र";s:3:"249";s:7:"ोत ";s:3:"250";s:9:"्धि";s:3:"251";s:9:"्मी";s:3:"252";s:9:"्रस";s:3:"253";s:7:" दु";s:3:"254";s:7:" पन";s:3:"255";s:7:" बत";s:3:"256";s:7:" बन";s:3:"257";s:7:" भन";s:3:"258";s:9:"ंयु";s:3:"259";s:9:"आरम";s:3:"260";s:7:"खि ";s:3:"261";s:9:"ण्ड";s:3:"262";s:9:"तका";s:3:"263";s:9:"ताल";s:3:"264";s:7:"दी ";s:3:"265";s:9:"देख";s:3:"266";s:9:"निय";s:3:"267";s:9:"पनि";s:3:"268";s:9:"प्त";s:3:"269";s:9:"बता";s:3:"270";s:7:"मी ";s:3:"271";s:9:"म्भ";s:3:"272";s:7:"र स";s:3:"273";s:9:"रम्";s:3:"274";s:9:"लमा";s:3:"275";s:9:"विश";s:3:"276";s:9:"षाक";s:3:"277";s:9:"संय";s:3:"278";s:7:"ा ड";s:3:"279";s:7:"ा म";s:3:"280";s:9:"ानक";s:3:"281";s:9:"ालम";s:3:"282";s:7:"ि भ";s:3:"283";s:7:"ित ";s:3:"284";s:7:"ी प";s:3:"285";s:7:"ी र";s:3:"286";s:7:"ु भ";s:3:"287";s:9:"ुने";s:3:"288";s:7:"े ग";s:3:"289";s:9:"ेखि";s:3:"290";s:7:"ेर ";s:3:"291";s:7:"ो भ";s:3:"292";s:7:"ो व";s:3:"293";s:7:"ो ह";s:3:"294";s:7:"्भ ";s:3:"295";s:7:"्र ";s:3:"296";s:7:" ता";s:3:"297";s:7:" नम";s:3:"298";s:7:" ना";s:3:"299";}s:9:"norwegian";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:"et ";s:1:"2";s:3:" de";s:1:"3";s:3:"det";s:1:"4";s:3:" i ";s:1:"5";s:3:"for";s:1:"6";s:3:"il ";s:1:"7";s:3:" fo";s:1:"8";s:3:" me";s:1:"9";s:3:"ing";s:2:"10";s:3:"om ";s:2:"11";s:3:" ha";s:2:"12";s:3:" og";s:2:"13";s:3:"ter";s:2:"14";s:3:" er";s:2:"15";s:3:" ti";s:2:"16";s:3:" st";s:2:"17";s:3:"og ";s:2:"18";s:3:"til";s:2:"19";s:3:"ne ";s:2:"20";s:3:" vi";s:2:"21";s:3:"re ";s:2:"22";s:3:" en";s:2:"23";s:3:" se";s:2:"24";s:3:"te ";s:2:"25";s:3:"or ";s:2:"26";s:3:"de ";s:2:"27";s:3:"kke";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ar ";s:2:"30";s:3:"ng ";s:2:"31";s:3:"r s";s:2:"32";s:3:"ene";s:2:"33";s:3:" so";s:2:"34";s:3:"e s";s:2:"35";s:3:"der";s:2:"36";s:3:"an ";s:2:"37";s:3:"som";s:2:"38";s:3:"ste";s:2:"39";s:3:"at ";s:2:"40";s:3:"ed ";s:2:"41";s:3:"r i";s:2:"42";s:3:" av";s:2:"43";s:3:" in";s:2:"44";s:3:"men";s:2:"45";s:3:" at";s:2:"46";s:3:" ko";s:2:"47";s:4:" på";s:2:"48";s:3:"har";s:2:"49";s:3:" si";s:2:"50";s:3:"ere";s:2:"51";s:4:"på ";s:2:"52";s:3:"nde";s:2:"53";s:3:"and";s:2:"54";s:3:"els";s:2:"55";s:3:"ett";s:2:"56";s:3:"tte";s:2:"57";s:3:"lig";s:2:"58";s:3:"t s";s:2:"59";s:3:"den";s:2:"60";s:3:"t i";s:2:"61";s:3:"ikk";s:2:"62";s:3:"med";s:2:"63";s:3:"n s";s:2:"64";s:3:"rt ";s:2:"65";s:3:"ser";s:2:"66";s:3:"ska";s:2:"67";s:3:"t e";s:2:"68";s:3:"ker";s:2:"69";s:3:"sen";s:2:"70";s:3:"av ";s:2:"71";s:3:"ler";s:2:"72";s:3:"r a";s:2:"73";s:3:"ten";s:2:"74";s:3:"e f";s:2:"75";s:3:"r e";s:2:"76";s:3:"r t";s:2:"77";s:3:"ede";s:2:"78";s:3:"ig ";s:2:"79";s:3:" re";s:2:"80";s:3:"han";s:2:"81";s:3:"lle";s:2:"82";s:3:"ner";s:2:"83";s:3:" bl";s:2:"84";s:3:" fr";s:2:"85";s:3:"le ";s:2:"86";s:3:" ve";s:2:"87";s:3:"e t";s:2:"88";s:3:"lan";s:2:"89";s:3:"mme";s:2:"90";s:3:"nge";s:2:"91";s:3:" be";s:2:"92";s:3:" ik";s:2:"93";s:3:" om";s:2:"94";s:4:" å ";s:2:"95";s:3:"ell";s:2:"96";s:3:"sel";s:2:"97";s:3:"sta";s:2:"98";s:3:"ver";s:2:"99";s:3:" et";s:3:"100";s:3:" sk";s:3:"101";s:3:"nte";s:3:"102";s:3:"one";s:3:"103";s:3:"ore";s:3:"104";s:3:"r d";s:3:"105";s:3:"ske";s:3:"106";s:3:" an";s:3:"107";s:3:" la";s:3:"108";s:3:"del";s:3:"109";s:3:"gen";s:3:"110";s:3:"nin";s:3:"111";s:3:"r f";s:3:"112";s:3:"r v";s:3:"113";s:3:"se ";s:3:"114";s:3:" po";s:3:"115";s:3:"ir ";s:3:"116";s:3:"jon";s:3:"117";s:3:"mer";s:3:"118";s:3:"nen";s:3:"119";s:3:"omm";s:3:"120";s:3:"sjo";s:3:"121";s:3:" fl";s:3:"122";s:3:" sa";s:3:"123";s:3:"ern";s:3:"124";s:3:"kom";s:3:"125";s:3:"r m";s:3:"126";s:3:"r o";s:3:"127";s:3:"ren";s:3:"128";s:3:"vil";s:3:"129";s:3:"ale";s:3:"130";s:3:"es ";s:3:"131";s:3:"n a";s:3:"132";s:3:"t f";s:3:"133";s:3:" le";s:3:"134";s:3:"bli";s:3:"135";s:3:"e e";s:3:"136";s:3:"e i";s:3:"137";s:3:"e v";s:3:"138";s:3:"het";s:3:"139";s:3:"ye ";s:3:"140";s:3:" ir";s:3:"141";s:3:"al ";s:3:"142";s:3:"e o";s:3:"143";s:3:"ide";s:3:"144";s:3:"iti";s:3:"145";s:3:"lit";s:3:"146";s:3:"nne";s:3:"147";s:3:"ran";s:3:"148";s:3:"t o";s:3:"149";s:3:"tal";s:3:"150";s:3:"tat";s:3:"151";s:3:"tt ";s:3:"152";s:3:" ka";s:3:"153";s:3:"ans";s:3:"154";s:3:"asj";s:3:"155";s:3:"ge ";s:3:"156";s:3:"inn";s:3:"157";s:3:"kon";s:3:"158";s:3:"lse";s:3:"159";s:3:"pet";s:3:"160";s:3:"t d";s:3:"161";s:3:"vi ";s:3:"162";s:3:" ut";s:3:"163";s:3:"ent";s:3:"164";s:3:"eri";s:3:"165";s:3:"oli";s:3:"166";s:3:"r p";s:3:"167";s:3:"ret";s:3:"168";s:3:"ris";s:3:"169";s:3:"sto";s:3:"170";s:3:"str";s:3:"171";s:3:"t a";s:3:"172";s:3:" ga";s:3:"173";s:3:"all";s:3:"174";s:3:"ape";s:3:"175";s:3:"g s";s:3:"176";s:3:"ill";s:3:"177";s:3:"ira";s:3:"178";s:3:"kap";s:3:"179";s:3:"nn ";s:3:"180";s:3:"opp";s:3:"181";s:3:"r h";s:3:"182";s:3:"rin";s:3:"183";s:3:" br";s:3:"184";s:3:" op";s:3:"185";s:3:"e m";s:3:"186";s:3:"ert";s:3:"187";s:3:"ger";s:3:"188";s:3:"ion";s:3:"189";s:3:"kal";s:3:"190";s:3:"lsk";s:3:"191";s:3:"nes";s:3:"192";s:3:" gj";s:3:"193";s:3:" mi";s:3:"194";s:3:" pr";s:3:"195";s:3:"ang";s:3:"196";s:3:"e h";s:3:"197";s:3:"e r";s:3:"198";s:3:"elt";s:3:"199";s:3:"enn";s:3:"200";s:3:"i s";s:3:"201";s:3:"ist";s:3:"202";s:3:"jen";s:3:"203";s:3:"kan";s:3:"204";s:3:"lt ";s:3:"205";s:3:"nal";s:3:"206";s:3:"res";s:3:"207";s:3:"tor";s:3:"208";s:3:"ass";s:3:"209";s:3:"dre";s:3:"210";s:3:"e b";s:3:"211";s:3:"e p";s:3:"212";s:3:"mel";s:3:"213";s:3:"n t";s:3:"214";s:3:"nse";s:3:"215";s:3:"ort";s:3:"216";s:3:"per";s:3:"217";s:3:"reg";s:3:"218";s:3:"sje";s:3:"219";s:3:"t p";s:3:"220";s:3:"t v";s:3:"221";s:3:" hv";s:3:"222";s:4:" nå";s:3:"223";s:3:" va";s:3:"224";s:3:"ann";s:3:"225";s:3:"ato";s:3:"226";s:3:"e a";s:3:"227";s:3:"est";s:3:"228";s:3:"ise";s:3:"229";s:3:"isk";s:3:"230";s:3:"oil";s:3:"231";s:3:"ord";s:3:"232";s:3:"pol";s:3:"233";s:3:"ra ";s:3:"234";s:3:"rak";s:3:"235";s:3:"sse";s:3:"236";s:3:"toi";s:3:"237";s:3:" gr";s:3:"238";s:3:"ak ";s:3:"239";s:3:"eg ";s:3:"240";s:3:"ele";s:3:"241";s:3:"g a";s:3:"242";s:3:"ige";s:3:"243";s:3:"igh";s:3:"244";s:3:"m e";s:3:"245";s:3:"n f";s:3:"246";s:3:"n v";s:3:"247";s:3:"ndr";s:3:"248";s:3:"nsk";s:3:"249";s:3:"rer";s:3:"250";s:3:"t m";s:3:"251";s:3:"und";s:3:"252";s:3:"var";s:3:"253";s:4:"år ";s:3:"254";s:3:" he";s:3:"255";s:3:" no";s:3:"256";s:3:" ny";s:3:"257";s:3:"end";s:3:"258";s:3:"ete";s:3:"259";s:3:"fly";s:3:"260";s:3:"g i";s:3:"261";s:3:"ghe";s:3:"262";s:3:"ier";s:3:"263";s:3:"ind";s:3:"264";s:3:"int";s:3:"265";s:3:"lin";s:3:"266";s:3:"n d";s:3:"267";s:3:"n p";s:3:"268";s:3:"rne";s:3:"269";s:3:"sak";s:3:"270";s:3:"sie";s:3:"271";s:3:"t b";s:3:"272";s:3:"tid";s:3:"273";s:3:" al";s:3:"274";s:3:" pa";s:3:"275";s:3:" tr";s:3:"276";s:3:"ag ";s:3:"277";s:3:"dig";s:3:"278";s:3:"e d";s:3:"279";s:3:"e k";s:3:"280";s:3:"ess";s:3:"281";s:3:"hol";s:3:"282";s:3:"i d";s:3:"283";s:3:"lag";s:3:"284";s:3:"led";s:3:"285";s:3:"n e";s:3:"286";s:3:"n i";s:3:"287";s:3:"n o";s:3:"288";s:3:"pri";s:3:"289";s:3:"r b";s:3:"290";s:3:"st ";s:3:"291";s:3:" fe";s:3:"292";s:3:" li";s:3:"293";s:3:" ry";s:3:"294";s:3:"air";s:3:"295";s:3:"ake";s:3:"296";s:3:"d s";s:3:"297";s:3:"eas";s:3:"298";s:3:"egi";s:3:"299";}s:6:"pashto";a:300:{s:4:" د ";s:1:"0";s:5:"اؤ ";s:1:"1";s:5:" اؤ";s:1:"2";s:5:"نو ";s:1:"3";s:5:"ې د";s:1:"4";s:5:"ره ";s:1:"5";s:5:" په";s:1:"6";s:5:"نه ";s:1:"7";s:5:"چې ";s:1:"8";s:5:" چې";s:1:"9";s:5:"په ";s:2:"10";s:5:"ه د";s:2:"11";s:5:"ته ";s:2:"12";s:5:"و ا";s:2:"13";s:6:"ونو";s:2:"14";s:5:"و د";s:2:"15";s:5:" او";s:2:"16";s:6:"انو";s:2:"17";s:6:"ونه";s:2:"18";s:5:"ه ک";s:2:"19";s:5:" دا";s:2:"20";s:5:"ه ا";s:2:"21";s:5:"دې ";s:2:"22";s:5:"ښې ";s:2:"23";s:5:" کې";s:2:"24";s:5:"ان ";s:2:"25";s:5:"لو ";s:2:"26";s:5:"هم ";s:2:"27";s:5:"و م";s:2:"28";s:6:"کښې";s:2:"29";s:5:"ه م";s:2:"30";s:5:"ى ا";s:2:"31";s:5:" نو";s:2:"32";s:5:" ته";s:2:"33";s:5:" کښ";s:2:"34";s:6:"رون";s:2:"35";s:5:"کې ";s:2:"36";s:5:"ده ";s:2:"37";s:5:"له ";s:2:"38";s:5:"به ";s:2:"39";s:5:"رو ";s:2:"40";s:5:" هم";s:2:"41";s:5:"ه و";s:2:"42";s:5:"وى ";s:2:"43";s:5:"او ";s:2:"44";s:6:"تون";s:2:"45";s:5:"دا ";s:2:"46";s:5:" کو";s:2:"47";s:5:" کړ";s:2:"48";s:6:"قام";s:2:"49";s:5:" تر";s:2:"50";s:6:"ران";s:2:"51";s:5:"ه پ";s:2:"52";s:5:"ې و";s:2:"53";s:5:"ې پ";s:2:"54";s:5:" به";s:2:"55";s:5:" خو";s:2:"56";s:5:"تو ";s:2:"57";s:5:"د د";s:2:"58";s:5:"د ا";s:2:"59";s:5:"ه ت";s:2:"60";s:5:"و پ";s:2:"61";s:5:"يا ";s:2:"62";s:5:" خپ";s:2:"63";s:5:" دو";s:2:"64";s:5:" را";s:2:"65";s:5:" مش";s:2:"66";s:5:" پر";s:2:"67";s:6:"ارو";s:2:"68";s:5:"رې ";s:2:"69";s:5:"م د";s:2:"70";s:6:"مشر";s:2:"71";s:5:" شو";s:2:"72";s:5:" ور";s:2:"73";s:5:"ار ";s:2:"74";s:5:"دى ";s:2:"75";s:5:" اد";s:2:"76";s:5:" دى";s:2:"77";s:5:" مو";s:2:"78";s:5:"د پ";s:2:"79";s:5:"لي ";s:2:"80";s:5:"و ک";s:2:"81";s:5:" مق";s:2:"82";s:5:" يو";s:2:"83";s:5:"ؤ د";s:2:"84";s:6:"خپل";s:2:"85";s:6:"سره";s:2:"86";s:5:"ه چ";s:2:"87";s:5:"ور ";s:2:"88";s:5:" تا";s:2:"89";s:5:" دې";s:2:"90";s:5:" رو";s:2:"91";s:5:" سر";s:2:"92";s:5:" مل";s:2:"93";s:5:" کا";s:2:"94";s:5:"ؤ ا";s:2:"95";s:6:"اره";s:2:"96";s:6:"برو";s:2:"97";s:5:"مه ";s:2:"98";s:5:"ه ب";s:2:"99";s:5:"و ت";s:3:"100";s:6:"پښت";s:3:"101";s:5:" با";s:3:"102";s:5:" دغ";s:3:"103";s:5:" قب";s:3:"104";s:5:" له";s:3:"105";s:5:" وا";s:3:"106";s:5:" پا";s:3:"107";s:5:" پښ";s:3:"108";s:5:"د م";s:3:"109";s:5:"د ه";s:3:"110";s:5:"لې ";s:3:"111";s:6:"مات";s:3:"112";s:5:"مو ";s:3:"113";s:5:"ه ه";s:3:"114";s:5:"وي ";s:3:"115";s:5:"ې ب";s:3:"116";s:5:"ې ک";s:3:"117";s:5:" ده";s:3:"118";s:5:" قا";s:3:"119";s:5:"ال ";s:3:"120";s:6:"اما";s:3:"121";s:5:"د ن";s:3:"122";s:6:"قبر";s:3:"123";s:5:"ه ن";s:3:"124";s:6:"پار";s:3:"125";s:5:" اث";s:3:"126";s:5:" بي";s:3:"127";s:5:" لا";s:3:"128";s:5:" لر";s:3:"129";s:6:"اثا";s:3:"130";s:5:"د خ";s:3:"131";s:6:"دار";s:3:"132";s:6:"ريخ";s:3:"133";s:6:"شرا";s:3:"134";s:6:"مقا";s:3:"135";s:5:"نۍ ";s:3:"136";s:5:"ه ر";s:3:"137";s:5:"ه ل";s:3:"138";s:6:"ولو";s:3:"139";s:5:"يو ";s:3:"140";s:6:"کوم";s:3:"141";s:5:" دد";s:3:"142";s:5:" لو";s:3:"143";s:5:" مح";s:3:"144";s:5:" مر";s:3:"145";s:5:" وو";s:3:"146";s:6:"اتو";s:3:"147";s:6:"اري";s:3:"148";s:6:"الو";s:3:"149";s:6:"اند";s:3:"150";s:6:"خان";s:3:"151";s:5:"د ت";s:3:"152";s:5:"سې ";s:3:"153";s:5:"لى ";s:3:"154";s:6:"نور";s:3:"155";s:5:"و ل";s:3:"156";s:5:"ي چ";s:3:"157";s:5:"ړي ";s:3:"158";s:6:"ښتو";s:3:"159";s:5:"ې ل";s:3:"160";s:5:" جو";s:3:"161";s:5:" سي";s:3:"162";s:5:"ام ";s:3:"163";s:6:"بان";s:3:"164";s:6:"تار";s:3:"165";s:5:"تر ";s:3:"166";s:6:"ثار";s:3:"167";s:5:"خو ";s:3:"168";s:5:"دو ";s:3:"169";s:5:"ر ک";s:3:"170";s:5:"ل د";s:3:"171";s:6:"مون";s:3:"172";s:6:"ندې";s:3:"173";s:5:"و ن";s:3:"174";s:5:"ول ";s:3:"175";s:5:"وه ";s:3:"176";s:5:"ى و";s:3:"177";s:5:"ي د";s:3:"178";s:5:"ې ا";s:3:"179";s:5:"ې ت";s:3:"180";s:5:"ې ي";s:3:"181";s:5:" حک";s:3:"182";s:5:" خب";s:3:"183";s:5:" نه";s:3:"184";s:5:" پو";s:3:"185";s:5:"ا د";s:3:"186";s:5:"تې ";s:3:"187";s:6:"جوړ";s:3:"188";s:6:"حکم";s:3:"189";s:6:"حکو";s:3:"190";s:6:"خبر";s:3:"191";s:6:"دان";s:3:"192";s:5:"ر د";s:3:"193";s:5:"غه ";s:3:"194";s:6:"قاف";s:3:"195";s:6:"محک";s:3:"196";s:6:"وال";s:3:"197";s:6:"ومت";s:3:"198";s:6:"ويل";s:3:"199";s:5:"ى د";s:3:"200";s:5:"ى م";s:3:"201";s:6:"يره";s:3:"202";s:5:"پر ";s:3:"203";s:6:"کول";s:3:"204";s:5:"ې ه";s:3:"205";s:5:" تي";s:3:"206";s:5:" خا";s:3:"207";s:5:" وک";s:3:"208";s:5:" يا";s:3:"209";s:5:" ځا";s:3:"210";s:5:"ؤ ق";s:3:"211";s:6:"انۍ";s:3:"212";s:5:"بى ";s:3:"213";s:5:"غو ";s:3:"214";s:5:"ه خ";s:3:"215";s:5:"و ب";s:3:"216";s:6:"ودا";s:3:"217";s:6:"يدو";s:3:"218";s:5:"ړې ";s:3:"219";s:6:"کال";s:3:"220";s:5:" بر";s:3:"221";s:5:" قد";s:3:"222";s:5:" مي";s:3:"223";s:5:" وي";s:3:"224";s:5:" کر";s:3:"225";s:5:"ؤ م";s:3:"226";s:5:"ات ";s:3:"227";s:6:"ايي";s:3:"228";s:5:"تى ";s:3:"229";s:6:"تيا";s:3:"230";s:6:"تير";s:3:"231";s:6:"خوا";s:3:"232";s:6:"دغو";s:3:"233";s:5:"دم ";s:3:"234";s:6:"ديم";s:3:"235";s:5:"ر و";s:3:"236";s:6:"قدي";s:3:"237";s:5:"م خ";s:3:"238";s:6:"مان";s:3:"239";s:5:"مې ";s:3:"240";s:6:"نيو";s:3:"241";s:5:"نږ ";s:3:"242";s:5:"ه ي";s:3:"243";s:5:"و س";s:3:"244";s:5:"و چ";s:3:"245";s:6:"وان";s:3:"246";s:6:"ورو";s:3:"247";s:6:"ونږ";s:3:"248";s:6:"پور";s:3:"249";s:5:"ړه ";s:3:"250";s:5:"ړو ";s:3:"251";s:5:"ۍ د";s:3:"252";s:5:"ې ن";s:3:"253";s:5:" اه";s:3:"254";s:5:" زي";s:3:"255";s:5:" سو";s:3:"256";s:5:" شي";s:3:"257";s:5:" هر";s:3:"258";s:5:" هغ";s:3:"259";s:5:" ښا";s:3:"260";s:6:"اتل";s:3:"261";s:5:"اق ";s:3:"262";s:6:"اني";s:3:"263";s:6:"بري";s:3:"264";s:5:"بې ";s:3:"265";s:5:"ت ا";s:3:"266";s:5:"د ب";s:3:"267";s:5:"د س";s:3:"268";s:5:"ر م";s:3:"269";s:5:"رى ";s:3:"270";s:6:"عرا";s:3:"271";s:6:"لان";s:3:"272";s:5:"مى ";s:3:"273";s:5:"نى ";s:3:"274";s:5:"و خ";s:3:"275";s:5:"وئ ";s:3:"276";s:6:"ورک";s:3:"277";s:6:"ورې";s:3:"278";s:5:"ون ";s:3:"279";s:6:"وکړ";s:3:"280";s:5:"ى چ";s:3:"281";s:6:"يمه";s:3:"282";s:5:"يې ";s:3:"283";s:6:"ښتن";s:3:"284";s:5:"که ";s:3:"285";s:6:"کړي";s:3:"286";s:5:"ې خ";s:3:"287";s:5:"ے ش";s:3:"288";s:5:" تح";s:3:"289";s:5:" تو";s:3:"290";s:5:" در";s:3:"291";s:5:" دپ";s:3:"292";s:5:" صو";s:3:"293";s:5:" عر";s:3:"294";s:5:" ول";s:3:"295";s:5:" يؤ";s:3:"296";s:5:" پۀ";s:3:"297";s:5:" څو";s:3:"298";s:5:"ا ا";s:3:"299";}s:6:"pidgin";a:300:{s:3:" de";s:1:"0";s:3:" we";s:1:"1";s:3:" di";s:1:"2";s:3:"di ";s:1:"3";s:3:"dem";s:1:"4";s:3:"em ";s:1:"5";s:3:"ay ";s:1:"6";s:3:" sa";s:1:"7";s:3:"or ";s:1:"8";s:3:"say";s:1:"9";s:3:"ke ";s:2:"10";s:3:"ey ";s:2:"11";s:3:" an";s:2:"12";s:3:" go";s:2:"13";s:3:" e ";s:2:"14";s:3:" to";s:2:"15";s:3:" ma";s:2:"16";s:3:"e d";s:2:"17";s:3:"wey";s:2:"18";s:3:"for";s:2:"19";s:3:"nd ";s:2:"20";s:3:"to ";s:2:"21";s:3:" be";s:2:"22";s:3:" fo";s:2:"23";s:3:"ake";s:2:"24";s:3:"im ";s:2:"25";s:3:" pe";s:2:"26";s:3:"le ";s:2:"27";s:3:"go ";s:2:"28";s:3:"ll ";s:2:"29";s:3:"de ";s:2:"30";s:3:"e s";s:2:"31";s:3:"on ";s:2:"32";s:3:"get";s:2:"33";s:3:"ght";s:2:"34";s:3:"igh";s:2:"35";s:3:" ri";s:2:"36";s:3:"et ";s:2:"37";s:3:"rig";s:2:"38";s:3:" ge";s:2:"39";s:3:"y d";s:2:"40";s:3:" na";s:2:"41";s:3:"mak";s:2:"42";s:3:"t t";s:2:"43";s:3:" no";s:2:"44";s:3:"and";s:2:"45";s:3:"tin";s:2:"46";s:3:"ing";s:2:"47";s:3:"eve";s:2:"48";s:3:"ri ";s:2:"49";s:3:" im";s:2:"50";s:3:" am";s:2:"51";s:3:" or";s:2:"52";s:3:"am ";s:2:"53";s:3:"be ";s:2:"54";s:3:" ev";s:2:"55";s:3:" ta";s:2:"56";s:3:"ht ";s:2:"57";s:3:"e w";s:2:"58";s:3:" li";s:2:"59";s:3:"eri";s:2:"60";s:3:"ng ";s:2:"61";s:3:"ver";s:2:"62";s:3:"all";s:2:"63";s:3:"e f";s:2:"64";s:3:"ers";s:2:"65";s:3:"ntr";s:2:"66";s:3:"ont";s:2:"67";s:3:" do";s:2:"68";s:3:"r d";s:2:"69";s:3:" ko";s:2:"70";s:3:" ti";s:2:"71";s:3:"an ";s:2:"72";s:3:"kon";s:2:"73";s:3:"per";s:2:"74";s:3:"tri";s:2:"75";s:3:"y e";s:2:"76";s:3:"rso";s:2:"77";s:3:"son";s:2:"78";s:3:"no ";s:2:"79";s:3:"ome";s:2:"80";s:3:"is ";s:2:"81";s:3:"do ";s:2:"82";s:3:"ne ";s:2:"83";s:3:"one";s:2:"84";s:3:"ion";s:2:"85";s:3:"m g";s:2:"86";s:3:"i k";s:2:"87";s:3:" al";s:2:"88";s:3:"bod";s:2:"89";s:3:"i w";s:2:"90";s:3:"odi";s:2:"91";s:3:" so";s:2:"92";s:3:" wo";s:2:"93";s:3:"o d";s:2:"94";s:3:"st ";s:2:"95";s:3:"t r";s:2:"96";s:3:" of";s:2:"97";s:3:"aim";s:2:"98";s:3:"e g";s:2:"99";s:3:"nai";s:3:"100";s:3:" co";s:3:"101";s:3:"dis";s:3:"102";s:3:"me ";s:3:"103";s:3:"of ";s:3:"104";s:3:" wa";s:3:"105";s:3:"e t";s:3:"106";s:3:" ar";s:3:"107";s:3:"e l";s:3:"108";s:3:"ike";s:3:"109";s:3:"lik";s:3:"110";s:3:"t a";s:3:"111";s:3:"wor";s:3:"112";s:3:"alk";s:3:"113";s:3:"ell";s:3:"114";s:3:"eop";s:3:"115";s:3:"lk ";s:3:"116";s:3:"opl";s:3:"117";s:3:"peo";s:3:"118";s:3:"ple";s:3:"119";s:3:"re ";s:3:"120";s:3:"tal";s:3:"121";s:3:"any";s:3:"122";s:3:"e a";s:3:"123";s:3:"o g";s:3:"124";s:3:"art";s:3:"125";s:3:"cle";s:3:"126";s:3:"i p";s:3:"127";s:3:"icl";s:3:"128";s:3:"rti";s:3:"129";s:3:"the";s:3:"130";s:3:"tic";s:3:"131";s:3:"we ";s:3:"132";s:3:"f d";s:3:"133";s:3:"in ";s:3:"134";s:3:" mu";s:3:"135";s:3:"e n";s:3:"136";s:3:"e o";s:3:"137";s:3:"mus";s:3:"138";s:3:"n d";s:3:"139";s:3:"na ";s:3:"140";s:3:"o m";s:3:"141";s:3:"ust";s:3:"142";s:3:"wel";s:3:"143";s:3:"e e";s:3:"144";s:3:"her";s:3:"145";s:3:"m d";s:3:"146";s:3:"nt ";s:3:"147";s:3:" fi";s:3:"148";s:3:"at ";s:3:"149";s:3:"e b";s:3:"150";s:3:"it ";s:3:"151";s:3:"m w";s:3:"152";s:3:"o t";s:3:"153";s:3:"wan";s:3:"154";s:3:"com";s:3:"155";s:3:"da ";s:3:"156";s:3:"fit";s:3:"157";s:3:"m b";s:3:"158";s:3:"so ";s:3:"159";s:3:" fr";s:3:"160";s:3:"ce ";s:3:"161";s:3:"er ";s:3:"162";s:3:"o a";s:3:"163";s:3:" if";s:3:"164";s:3:" on";s:3:"165";s:3:"ent";s:3:"166";s:3:"if ";s:3:"167";s:3:"ind";s:3:"168";s:3:"kin";s:3:"169";s:3:"l d";s:3:"170";s:3:"man";s:3:"171";s:3:"o s";s:3:"172";s:3:" se";s:3:"173";s:3:"y a";s:3:"174";s:3:"y m";s:3:"175";s:3:" re";s:3:"176";s:3:"ee ";s:3:"177";s:3:"k a";s:3:"178";s:3:"t s";s:3:"179";s:3:"ve ";s:3:"180";s:3:"y w";s:3:"181";s:3:" ki";s:3:"182";s:3:"eti";s:3:"183";s:3:"men";s:3:"184";s:3:"ta ";s:3:"185";s:3:"y n";s:3:"186";s:3:"d t";s:3:"187";s:3:"dey";s:3:"188";s:3:"e c";s:3:"189";s:3:"i o";s:3:"190";s:3:"ibo";s:3:"191";s:3:"ld ";s:3:"192";s:3:"m t";s:3:"193";s:3:"n b";s:3:"194";s:3:"o b";s:3:"195";s:3:"ow ";s:3:"196";s:3:"ree";s:3:"197";s:3:"rio";s:3:"198";s:3:"t d";s:3:"199";s:3:" hu";s:3:"200";s:3:" su";s:3:"201";s:3:"en ";s:3:"202";s:3:"hts";s:3:"203";s:3:"ive";s:3:"204";s:3:"m n";s:3:"205";s:3:"n g";s:3:"206";s:3:"ny ";s:3:"207";s:3:"oth";s:3:"208";s:3:"ts ";s:3:"209";s:3:" as";s:3:"210";s:3:" wh";s:3:"211";s:3:"as ";s:3:"212";s:3:"gom";s:3:"213";s:3:"hum";s:3:"214";s:3:"k s";s:3:"215";s:3:"oda";s:3:"216";s:3:"ork";s:3:"217";s:3:"se ";s:3:"218";s:3:"uma";s:3:"219";s:3:"ut ";s:3:"220";s:3:" ba";s:3:"221";s:3:" ot";s:3:"222";s:3:"ano";s:3:"223";s:3:"m a";s:3:"224";s:3:"m s";s:3:"225";s:3:"nod";s:3:"226";s:3:"om ";s:3:"227";s:3:"r a";s:3:"228";s:3:"r i";s:3:"229";s:3:"rk ";s:3:"230";s:3:" fa";s:3:"231";s:3:" si";s:3:"232";s:3:" th";s:3:"233";s:3:"ad ";s:3:"234";s:3:"e m";s:3:"235";s:3:"eac";s:3:"236";s:3:"m m";s:3:"237";s:3:"n w";s:3:"238";s:3:"nob";s:3:"239";s:3:"orl";s:3:"240";s:3:"out";s:3:"241";s:3:"own";s:3:"242";s:3:"r s";s:3:"243";s:3:"r w";s:3:"244";s:3:"rib";s:3:"245";s:3:"rld";s:3:"246";s:3:"s w";s:3:"247";s:3:"ure";s:3:"248";s:3:"wn ";s:3:"249";s:3:" ow";s:3:"250";s:3:"a d";s:3:"251";s:3:"bad";s:3:"252";s:3:"ch ";s:3:"253";s:3:"fre";s:3:"254";s:3:"gs ";s:3:"255";s:3:"m k";s:3:"256";s:3:"nce";s:3:"257";s:3:"ngs";s:3:"258";s:3:"o f";s:3:"259";s:3:"obo";s:3:"260";s:3:"rea";s:3:"261";s:3:"sur";s:3:"262";s:3:"y o";s:3:"263";s:3:" ab";s:3:"264";s:3:" un";s:3:"265";s:3:"abo";s:3:"266";s:3:"ach";s:3:"267";s:3:"bou";s:3:"268";s:3:"d m";s:3:"269";s:3:"dat";s:3:"270";s:3:"e p";s:3:"271";s:3:"g w";s:3:"272";s:3:"hol";s:3:"273";s:3:"i m";s:3:"274";s:3:"i r";s:3:"275";s:3:"m f";s:3:"276";s:3:"m o";s:3:"277";s:3:"n o";s:3:"278";s:3:"now";s:3:"279";s:3:"ry ";s:3:"280";s:3:"s a";s:3:"281";s:3:"t o";s:3:"282";s:3:"tay";s:3:"283";s:3:"wet";s:3:"284";s:3:" ag";s:3:"285";s:3:" bo";s:3:"286";s:3:" da";s:3:"287";s:3:" pr";s:3:"288";s:3:"arr";s:3:"289";s:3:"ati";s:3:"290";s:3:"d d";s:3:"291";s:3:"d p";s:3:"292";s:3:"i g";s:3:"293";s:3:"i t";s:3:"294";s:3:"liv";s:3:"295";s:3:"ly ";s:3:"296";s:3:"n a";s:3:"297";s:3:"od ";s:3:"298";s:3:"ok ";s:3:"299";}s:6:"polish";a:300:{s:3:"ie ";s:1:"0";s:3:"nie";s:1:"1";s:3:"em ";s:1:"2";s:3:" ni";s:1:"3";s:3:" po";s:1:"4";s:3:" pr";s:1:"5";s:3:"dzi";s:1:"6";s:3:" na";s:1:"7";s:4:"że ";s:1:"8";s:3:"rze";s:1:"9";s:3:"na ";s:2:"10";s:4:"łem";s:2:"11";s:3:"wie";s:2:"12";s:3:" w ";s:2:"13";s:4:" że";s:2:"14";s:3:"go ";s:2:"15";s:3:" by";s:2:"16";s:3:"prz";s:2:"17";s:3:"owa";s:2:"18";s:4:"ię ";s:2:"19";s:3:" do";s:2:"20";s:3:" si";s:2:"21";s:3:"owi";s:2:"22";s:3:" pa";s:2:"23";s:3:" za";s:2:"24";s:3:"ch ";s:2:"25";s:3:"ego";s:2:"26";s:4:"ał ";s:2:"27";s:4:"się";s:2:"28";s:3:"ej ";s:2:"29";s:4:"wał";s:2:"30";s:3:"ym ";s:2:"31";s:3:"ani";s:2:"32";s:4:"ałe";s:2:"33";s:3:"to ";s:2:"34";s:3:" i ";s:2:"35";s:3:" to";s:2:"36";s:3:" te";s:2:"37";s:3:"e p";s:2:"38";s:3:" je";s:2:"39";s:3:" z ";s:2:"40";s:3:"czy";s:2:"41";s:4:"był";s:2:"42";s:3:"pan";s:2:"43";s:3:"sta";s:2:"44";s:3:"kie";s:2:"45";s:3:" ja";s:2:"46";s:3:"do ";s:2:"47";s:3:" ch";s:2:"48";s:3:" cz";s:2:"49";s:3:" wi";s:2:"50";s:4:"iał";s:2:"51";s:3:"a p";s:2:"52";s:3:"pow";s:2:"53";s:3:" mi";s:2:"54";s:3:"li ";s:2:"55";s:3:"eni";s:2:"56";s:3:"zie";s:2:"57";s:3:" ta";s:2:"58";s:3:" wa";s:2:"59";s:4:"ło ";s:2:"60";s:4:"ać ";s:2:"61";s:3:"dy ";s:2:"62";s:3:"ak ";s:2:"63";s:3:"e w";s:2:"64";s:3:" a ";s:2:"65";s:3:" od";s:2:"66";s:3:" st";s:2:"67";s:3:"nia";s:2:"68";s:3:"rzy";s:2:"69";s:3:"ied";s:2:"70";s:3:" kt";s:2:"71";s:3:"odz";s:2:"72";s:3:"cie";s:2:"73";s:3:"cze";s:2:"74";s:3:"ia ";s:2:"75";s:3:"iel";s:2:"76";s:4:"któ";s:2:"77";s:3:"o p";s:2:"78";s:4:"tór";s:2:"79";s:4:"ści";s:2:"80";s:3:" sp";s:2:"81";s:3:" wy";s:2:"82";s:3:"jak";s:2:"83";s:3:"tak";s:2:"84";s:3:"zy ";s:2:"85";s:3:" mo";s:2:"86";s:5:"ałę";s:2:"87";s:3:"pro";s:2:"88";s:3:"ski";s:2:"89";s:3:"tem";s:2:"90";s:5:"łęs";s:2:"91";s:3:" tr";s:2:"92";s:3:"e m";s:2:"93";s:3:"jes";s:2:"94";s:3:"my ";s:2:"95";s:3:" ro";s:2:"96";s:3:"edz";s:2:"97";s:3:"eli";s:2:"98";s:3:"iej";s:2:"99";s:3:" rz";s:3:"100";s:3:"a n";s:3:"101";s:3:"ale";s:3:"102";s:3:"an ";s:3:"103";s:3:"e s";s:3:"104";s:3:"est";s:3:"105";s:3:"le ";s:3:"106";s:3:"o s";s:3:"107";s:3:"i p";s:3:"108";s:3:"ki ";s:3:"109";s:3:" co";s:3:"110";s:3:"ada";s:3:"111";s:3:"czn";s:3:"112";s:3:"e t";s:3:"113";s:3:"e z";s:3:"114";s:3:"ent";s:3:"115";s:3:"ny ";s:3:"116";s:3:"pre";s:3:"117";s:4:"rzą";s:3:"118";s:3:"y s";s:3:"119";s:3:" ko";s:3:"120";s:3:" o ";s:3:"121";s:3:"ach";s:3:"122";s:3:"am ";s:3:"123";s:3:"e n";s:3:"124";s:3:"o t";s:3:"125";s:3:"oli";s:3:"126";s:3:"pod";s:3:"127";s:3:"zia";s:3:"128";s:3:" go";s:3:"129";s:3:" ka";s:3:"130";s:3:"by ";s:3:"131";s:3:"ieg";s:3:"132";s:3:"ier";s:3:"133";s:4:"noś";s:3:"134";s:3:"roz";s:3:"135";s:3:"spo";s:3:"136";s:3:"ych";s:3:"137";s:4:"ząd";s:3:"138";s:3:" mn";s:3:"139";s:3:"acz";s:3:"140";s:3:"adz";s:3:"141";s:3:"bie";s:3:"142";s:3:"cho";s:3:"143";s:3:"mni";s:3:"144";s:3:"o n";s:3:"145";s:3:"ost";s:3:"146";s:3:"pra";s:3:"147";s:3:"ze ";s:3:"148";s:4:"ła ";s:3:"149";s:3:" so";s:3:"150";s:3:"a m";s:3:"151";s:3:"cza";s:3:"152";s:3:"iem";s:3:"153";s:4:"ić ";s:3:"154";s:3:"obi";s:3:"155";s:4:"ył ";s:3:"156";s:4:"yło";s:3:"157";s:3:" mu";s:3:"158";s:4:" mó";s:3:"159";s:3:"a t";s:3:"160";s:3:"acj";s:3:"161";s:3:"ci ";s:3:"162";s:3:"e b";s:3:"163";s:3:"ich";s:3:"164";s:3:"kan";s:3:"165";s:3:"mi ";s:3:"166";s:3:"mie";s:3:"167";s:4:"ośc";s:3:"168";s:3:"row";s:3:"169";s:3:"zen";s:3:"170";s:3:"zyd";s:3:"171";s:3:" al";s:3:"172";s:3:" re";s:3:"173";s:3:"a w";s:3:"174";s:3:"den";s:3:"175";s:3:"edy";s:3:"176";s:4:"ił ";s:3:"177";s:3:"ko ";s:3:"178";s:3:"o w";s:3:"179";s:3:"rac";s:3:"180";s:4:"śmy";s:3:"181";s:3:" ma";s:3:"182";s:3:" ra";s:3:"183";s:3:" sz";s:3:"184";s:3:" ty";s:3:"185";s:3:"e j";s:3:"186";s:3:"isk";s:3:"187";s:3:"ji ";s:3:"188";s:3:"ka ";s:3:"189";s:3:"m s";s:3:"190";s:3:"no ";s:3:"191";s:3:"o z";s:3:"192";s:3:"rez";s:3:"193";s:3:"wa ";s:3:"194";s:4:"ów ";s:3:"195";s:4:"łow";s:3:"196";s:5:"ść ";s:3:"197";s:3:" ob";s:3:"198";s:3:"ech";s:3:"199";s:3:"ecz";s:3:"200";s:3:"ezy";s:3:"201";s:3:"i w";s:3:"202";s:3:"ja ";s:3:"203";s:3:"kon";s:3:"204";s:4:"mów";s:3:"205";s:3:"ne ";s:3:"206";s:3:"ni ";s:3:"207";s:3:"now";s:3:"208";s:3:"nym";s:3:"209";s:3:"pol";s:3:"210";s:3:"pot";s:3:"211";s:3:"yde";s:3:"212";s:3:" dl";s:3:"213";s:3:" sy";s:3:"214";s:3:"a s";s:3:"215";s:3:"aki";s:3:"216";s:3:"ali";s:3:"217";s:3:"dla";s:3:"218";s:3:"icz";s:3:"219";s:3:"ku ";s:3:"220";s:3:"ocz";s:3:"221";s:3:"st ";s:3:"222";s:3:"str";s:3:"223";s:3:"szy";s:3:"224";s:3:"trz";s:3:"225";s:3:"wia";s:3:"226";s:3:"y p";s:3:"227";s:3:"za ";s:3:"228";s:3:" wt";s:3:"229";s:3:"chc";s:3:"230";s:3:"esz";s:3:"231";s:3:"iec";s:3:"232";s:3:"im ";s:3:"233";s:3:"la ";s:3:"234";s:3:"o m";s:3:"235";s:3:"sa ";s:3:"236";s:4:"wać";s:3:"237";s:3:"y n";s:3:"238";s:3:"zac";s:3:"239";s:3:"zec";s:3:"240";s:3:" gd";s:3:"241";s:3:"a z";s:3:"242";s:3:"ard";s:3:"243";s:3:"co ";s:3:"244";s:3:"dar";s:3:"245";s:3:"e r";s:3:"246";s:3:"ien";s:3:"247";s:3:"m n";s:3:"248";s:3:"m w";s:3:"249";s:3:"mia";s:3:"250";s:4:"moż";s:3:"251";s:3:"raw";s:3:"252";s:3:"rdz";s:3:"253";s:3:"tan";s:3:"254";s:3:"ted";s:3:"255";s:3:"teg";s:3:"256";s:4:"wił";s:3:"257";s:3:"wte";s:3:"258";s:3:"y z";s:3:"259";s:3:"zna";s:3:"260";s:4:"zło";s:3:"261";s:3:"a r";s:3:"262";s:3:"awi";s:3:"263";s:3:"bar";s:3:"264";s:3:"cji";s:3:"265";s:4:"czą";s:3:"266";s:3:"dow";s:3:"267";s:4:"eż ";s:3:"268";s:3:"gdy";s:3:"269";s:3:"iek";s:3:"270";s:3:"je ";s:3:"271";s:3:"o d";s:3:"272";s:4:"tał";s:3:"273";s:3:"wal";s:3:"274";s:3:"wsz";s:3:"275";s:3:"zed";s:3:"276";s:4:"ówi";s:3:"277";s:4:"ęsa";s:3:"278";s:3:" ba";s:3:"279";s:3:" lu";s:3:"280";s:3:" wo";s:3:"281";s:3:"aln";s:3:"282";s:3:"arn";s:3:"283";s:3:"ba ";s:3:"284";s:3:"dzo";s:3:"285";s:3:"e c";s:3:"286";s:3:"hod";s:3:"287";s:3:"igi";s:3:"288";s:3:"lig";s:3:"289";s:3:"m p";s:3:"290";s:4:"myś";s:3:"291";s:3:"o c";s:3:"292";s:3:"oni";s:3:"293";s:3:"rel";s:3:"294";s:3:"sku";s:3:"295";s:3:"ste";s:3:"296";s:3:"y w";s:3:"297";s:3:"yst";s:3:"298";s:3:"z w";s:3:"299";}s:10:"portuguese";a:300:{s:3:"de ";s:1:"0";s:3:" de";s:1:"1";s:3:"os ";s:1:"2";s:3:"as ";s:1:"3";s:3:"que";s:1:"4";s:3:" co";s:1:"5";s:4:"ão ";s:1:"6";s:3:"o d";s:1:"7";s:3:" qu";s:1:"8";s:3:"ue ";s:1:"9";s:3:" a ";s:2:"10";s:3:"do ";s:2:"11";s:3:"ent";s:2:"12";s:3:" se";s:2:"13";s:3:"a d";s:2:"14";s:3:"s d";s:2:"15";s:3:"e a";s:2:"16";s:3:"es ";s:2:"17";s:3:" pr";s:2:"18";s:3:"ra ";s:2:"19";s:3:"da ";s:2:"20";s:3:" es";s:2:"21";s:3:" pa";s:2:"22";s:3:"to ";s:2:"23";s:3:" o ";s:2:"24";s:3:"em ";s:2:"25";s:3:"con";s:2:"26";s:3:"o p";s:2:"27";s:3:" do";s:2:"28";s:3:"est";s:2:"29";s:3:"nte";s:2:"30";s:5:"ção";s:2:"31";s:3:" da";s:2:"32";s:3:" re";s:2:"33";s:3:"ma ";s:2:"34";s:3:"par";s:2:"35";s:3:" te";s:2:"36";s:3:"ara";s:2:"37";s:3:"ida";s:2:"38";s:3:" e ";s:2:"39";s:3:"ade";s:2:"40";s:3:"is ";s:2:"41";s:3:" um";s:2:"42";s:3:" po";s:2:"43";s:3:"a a";s:2:"44";s:3:"a p";s:2:"45";s:3:"dad";s:2:"46";s:3:"no ";s:2:"47";s:3:"te ";s:2:"48";s:3:" no";s:2:"49";s:5:"açã";s:2:"50";s:3:"pro";s:2:"51";s:3:"al ";s:2:"52";s:3:"com";s:2:"53";s:3:"e d";s:2:"54";s:3:"s a";s:2:"55";s:3:" as";s:2:"56";s:3:"a c";s:2:"57";s:3:"er ";s:2:"58";s:3:"men";s:2:"59";s:3:"s e";s:2:"60";s:3:"ais";s:2:"61";s:3:"nto";s:2:"62";s:3:"res";s:2:"63";s:3:"a s";s:2:"64";s:3:"ado";s:2:"65";s:3:"ist";s:2:"66";s:3:"s p";s:2:"67";s:3:"tem";s:2:"68";s:3:"e c";s:2:"69";s:3:"e s";s:2:"70";s:3:"ia ";s:2:"71";s:3:"o s";s:2:"72";s:3:"o a";s:2:"73";s:3:"o c";s:2:"74";s:3:"e p";s:2:"75";s:3:"sta";s:2:"76";s:3:"ta ";s:2:"77";s:3:"tra";s:2:"78";s:3:"ura";s:2:"79";s:3:" di";s:2:"80";s:3:" pe";s:2:"81";s:3:"ar ";s:2:"82";s:3:"e e";s:2:"83";s:3:"ser";s:2:"84";s:3:"uma";s:2:"85";s:3:"mos";s:2:"86";s:3:"se ";s:2:"87";s:3:" ca";s:2:"88";s:3:"o e";s:2:"89";s:3:" na";s:2:"90";s:3:"a e";s:2:"91";s:3:"des";s:2:"92";s:3:"ont";s:2:"93";s:3:"por";s:2:"94";s:3:" in";s:2:"95";s:3:" ma";s:2:"96";s:3:"ect";s:2:"97";s:3:"o q";s:2:"98";s:3:"ria";s:2:"99";s:3:"s c";s:3:"100";s:3:"ste";s:3:"101";s:3:"ver";s:3:"102";s:3:"cia";s:3:"103";s:3:"dos";s:3:"104";s:3:"ica";s:3:"105";s:3:"str";s:3:"106";s:3:" ao";s:3:"107";s:3:" em";s:3:"108";s:3:"das";s:3:"109";s:3:"e t";s:3:"110";s:3:"ito";s:3:"111";s:3:"iza";s:3:"112";s:3:"pre";s:3:"113";s:3:"tos";s:3:"114";s:4:" nã";s:3:"115";s:3:"ada";s:3:"116";s:4:"não";s:3:"117";s:3:"ess";s:3:"118";s:3:"eve";s:3:"119";s:3:"or ";s:3:"120";s:3:"ran";s:3:"121";s:3:"s n";s:3:"122";s:3:"s t";s:3:"123";s:3:"tur";s:3:"124";s:3:" ac";s:3:"125";s:3:" fa";s:3:"126";s:3:"a r";s:3:"127";s:3:"ens";s:3:"128";s:3:"eri";s:3:"129";s:3:"na ";s:3:"130";s:3:"sso";s:3:"131";s:3:" si";s:3:"132";s:4:" é ";s:3:"133";s:3:"bra";s:3:"134";s:3:"esp";s:3:"135";s:3:"mo ";s:3:"136";s:3:"nos";s:3:"137";s:3:"ro ";s:3:"138";s:3:"um ";s:3:"139";s:3:"a n";s:3:"140";s:3:"ao ";s:3:"141";s:3:"ico";s:3:"142";s:3:"liz";s:3:"143";s:3:"min";s:3:"144";s:3:"o n";s:3:"145";s:3:"ons";s:3:"146";s:3:"pri";s:3:"147";s:3:"ten";s:3:"148";s:3:"tic";s:3:"149";s:4:"ões";s:3:"150";s:3:" tr";s:3:"151";s:3:"a m";s:3:"152";s:3:"aga";s:3:"153";s:3:"e n";s:3:"154";s:3:"ili";s:3:"155";s:3:"ime";s:3:"156";s:3:"m a";s:3:"157";s:3:"nci";s:3:"158";s:3:"nha";s:3:"159";s:3:"nta";s:3:"160";s:3:"spe";s:3:"161";s:3:"tiv";s:3:"162";s:3:"am ";s:3:"163";s:3:"ano";s:3:"164";s:3:"arc";s:3:"165";s:3:"ass";s:3:"166";s:3:"cer";s:3:"167";s:3:"e o";s:3:"168";s:3:"ece";s:3:"169";s:3:"emo";s:3:"170";s:3:"ga ";s:3:"171";s:3:"o m";s:3:"172";s:3:"rag";s:3:"173";s:3:"so ";s:3:"174";s:4:"são";s:3:"175";s:3:" au";s:3:"176";s:3:" os";s:3:"177";s:3:" sa";s:3:"178";s:3:"ali";s:3:"179";s:3:"ca ";s:3:"180";s:3:"ema";s:3:"181";s:3:"emp";s:3:"182";s:3:"ici";s:3:"183";s:3:"ido";s:3:"184";s:3:"inh";s:3:"185";s:3:"iss";s:3:"186";s:3:"l d";s:3:"187";s:3:"la ";s:3:"188";s:3:"lic";s:3:"189";s:3:"m c";s:3:"190";s:3:"mai";s:3:"191";s:3:"onc";s:3:"192";s:3:"pec";s:3:"193";s:3:"ram";s:3:"194";s:3:"s q";s:3:"195";s:3:" ci";s:3:"196";s:3:" en";s:3:"197";s:3:" fo";s:3:"198";s:3:"a o";s:3:"199";s:3:"ame";s:3:"200";s:3:"car";s:3:"201";s:3:"co ";s:3:"202";s:3:"der";s:3:"203";s:3:"eir";s:3:"204";s:3:"ho ";s:3:"205";s:3:"io ";s:3:"206";s:3:"om ";s:3:"207";s:3:"ora";s:3:"208";s:3:"r a";s:3:"209";s:3:"sen";s:3:"210";s:3:"ter";s:3:"211";s:3:" br";s:3:"212";s:3:" ex";s:3:"213";s:3:"a u";s:3:"214";s:3:"cul";s:3:"215";s:3:"dev";s:3:"216";s:3:"e u";s:3:"217";s:3:"ha ";s:3:"218";s:3:"mpr";s:3:"219";s:3:"nce";s:3:"220";s:3:"oca";s:3:"221";s:3:"ove";s:3:"222";s:3:"rio";s:3:"223";s:3:"s o";s:3:"224";s:3:"sa ";s:3:"225";s:3:"sem";s:3:"226";s:3:"tes";s:3:"227";s:3:"uni";s:3:"228";s:3:"ven";s:3:"229";s:4:"zaç";s:3:"230";s:5:"çõe";s:3:"231";s:3:" ad";s:3:"232";s:3:" al";s:3:"233";s:3:" an";s:3:"234";s:3:" mi";s:3:"235";s:3:" mo";s:3:"236";s:3:" ve";s:3:"237";s:4:" à ";s:3:"238";s:3:"a i";s:3:"239";s:3:"a q";s:3:"240";s:3:"ala";s:3:"241";s:3:"amo";s:3:"242";s:3:"bli";s:3:"243";s:3:"cen";s:3:"244";s:3:"col";s:3:"245";s:3:"cos";s:3:"246";s:3:"cto";s:3:"247";s:3:"e m";s:3:"248";s:3:"e v";s:3:"249";s:3:"ede";s:3:"250";s:4:"gás";s:3:"251";s:3:"ias";s:3:"252";s:3:"ita";s:3:"253";s:3:"iva";s:3:"254";s:3:"ndo";s:3:"255";s:3:"o t";s:3:"256";s:3:"ore";s:3:"257";s:3:"r d";s:3:"258";s:3:"ral";s:3:"259";s:3:"rea";s:3:"260";s:3:"s f";s:3:"261";s:3:"sid";s:3:"262";s:3:"tro";s:3:"263";s:3:"vel";s:3:"264";s:3:"vid";s:3:"265";s:4:"ás ";s:3:"266";s:3:" ap";s:3:"267";s:3:" ar";s:3:"268";s:3:" ce";s:3:"269";s:3:" ou";s:3:"270";s:4:" pú";s:3:"271";s:3:" so";s:3:"272";s:3:" vi";s:3:"273";s:3:"a f";s:3:"274";s:3:"act";s:3:"275";s:3:"arr";s:3:"276";s:3:"bil";s:3:"277";s:3:"cam";s:3:"278";s:3:"e f";s:3:"279";s:3:"e i";s:3:"280";s:3:"el ";s:3:"281";s:3:"for";s:3:"282";s:3:"lem";s:3:"283";s:3:"lid";s:3:"284";s:3:"lo ";s:3:"285";s:3:"m d";s:3:"286";s:3:"mar";s:3:"287";s:3:"nde";s:3:"288";s:3:"o o";s:3:"289";s:3:"omo";s:3:"290";s:3:"ort";s:3:"291";s:3:"per";s:3:"292";s:4:"púb";s:3:"293";s:3:"r u";s:3:"294";s:3:"rei";s:3:"295";s:3:"rem";s:3:"296";s:3:"ros";s:3:"297";s:3:"rre";s:3:"298";s:3:"ssi";s:3:"299";}s:8:"romanian";a:300:{s:3:" de";s:1:"0";s:4:" în";s:1:"1";s:3:"de ";s:1:"2";s:3:" a ";s:1:"3";s:3:"ul ";s:1:"4";s:3:" co";s:1:"5";s:4:"în ";s:1:"6";s:3:"re ";s:1:"7";s:3:"e d";s:1:"8";s:3:"ea ";s:1:"9";s:3:" di";s:2:"10";s:3:" pr";s:2:"11";s:3:"le ";s:2:"12";s:4:"şi ";s:2:"13";s:3:"are";s:2:"14";s:3:"at ";s:2:"15";s:3:"con";s:2:"16";s:3:"ui ";s:2:"17";s:4:" şi";s:2:"18";s:3:"i d";s:2:"19";s:3:"ii ";s:2:"20";s:3:" cu";s:2:"21";s:3:"e a";s:2:"22";s:3:"lui";s:2:"23";s:3:"ern";s:2:"24";s:3:"te ";s:2:"25";s:3:"cu ";s:2:"26";s:3:" la";s:2:"27";s:3:"a c";s:2:"28";s:4:"că ";s:2:"29";s:3:"din";s:2:"30";s:3:"e c";s:2:"31";s:3:"or ";s:2:"32";s:3:"ulu";s:2:"33";s:3:"ne ";s:2:"34";s:3:"ter";s:2:"35";s:3:"la ";s:2:"36";s:4:"să ";s:2:"37";s:3:"tat";s:2:"38";s:3:"tre";s:2:"39";s:3:" ac";s:2:"40";s:4:" să";s:2:"41";s:3:"est";s:2:"42";s:3:"st ";s:2:"43";s:4:"tă ";s:2:"44";s:3:" ca";s:2:"45";s:3:" ma";s:2:"46";s:3:" pe";s:2:"47";s:3:"cur";s:2:"48";s:3:"ist";s:2:"49";s:4:"mân";s:2:"50";s:3:"a d";s:2:"51";s:3:"i c";s:2:"52";s:3:"nat";s:2:"53";s:3:" ce";s:2:"54";s:3:"i a";s:2:"55";s:3:"ia ";s:2:"56";s:3:"in ";s:2:"57";s:3:"scu";s:2:"58";s:3:" mi";s:2:"59";s:3:"ato";s:2:"60";s:4:"aţi";s:2:"61";s:3:"ie ";s:2:"62";s:3:" re";s:2:"63";s:3:" se";s:2:"64";s:3:"a a";s:2:"65";s:3:"int";s:2:"66";s:3:"ntr";s:2:"67";s:3:"tru";s:2:"68";s:3:"uri";s:2:"69";s:4:"ă a";s:2:"70";s:3:" fo";s:2:"71";s:3:" pa";s:2:"72";s:3:"ate";s:2:"73";s:3:"ini";s:2:"74";s:3:"tul";s:2:"75";s:3:"ent";s:2:"76";s:3:"min";s:2:"77";s:3:"pre";s:2:"78";s:3:"pro";s:2:"79";s:3:"a p";s:2:"80";s:3:"e p";s:2:"81";s:3:"e s";s:2:"82";s:3:"ei ";s:2:"83";s:4:"nă ";s:2:"84";s:3:"par";s:2:"85";s:3:"rna";s:2:"86";s:3:"rul";s:2:"87";s:3:"tor";s:2:"88";s:3:" in";s:2:"89";s:3:" ro";s:2:"90";s:3:" tr";s:2:"91";s:3:" un";s:2:"92";s:3:"al ";s:2:"93";s:3:"ale";s:2:"94";s:3:"art";s:2:"95";s:3:"ce ";s:2:"96";s:3:"e e";s:2:"97";s:4:"e î";s:2:"98";s:3:"fos";s:2:"99";s:3:"ita";s:3:"100";s:3:"nte";s:3:"101";s:4:"omâ";s:3:"102";s:3:"ost";s:3:"103";s:3:"rom";s:3:"104";s:3:"ru ";s:3:"105";s:3:"str";s:3:"106";s:3:"ver";s:3:"107";s:3:" ex";s:3:"108";s:3:" na";s:3:"109";s:3:"a f";s:3:"110";s:3:"lor";s:3:"111";s:3:"nis";s:3:"112";s:3:"rea";s:3:"113";s:3:"rit";s:3:"114";s:3:" al";s:3:"115";s:3:" eu";s:3:"116";s:3:" no";s:3:"117";s:3:"ace";s:3:"118";s:3:"cer";s:3:"119";s:3:"ile";s:3:"120";s:3:"nal";s:3:"121";s:3:"pri";s:3:"122";s:3:"ri ";s:3:"123";s:3:"sta";s:3:"124";s:3:"ste";s:3:"125";s:4:"ţie";s:3:"126";s:3:" au";s:3:"127";s:3:" da";s:3:"128";s:3:" ju";s:3:"129";s:3:" po";s:3:"130";s:3:"ar ";s:3:"131";s:3:"au ";s:3:"132";s:3:"ele";s:3:"133";s:3:"ere";s:3:"134";s:3:"eri";s:3:"135";s:3:"ina";s:3:"136";s:3:"n a";s:3:"137";s:3:"n c";s:3:"138";s:3:"res";s:3:"139";s:3:"se ";s:3:"140";s:3:"t a";s:3:"141";s:3:"tea";s:3:"142";s:4:" că";s:3:"143";s:3:" do";s:3:"144";s:3:" fi";s:3:"145";s:3:"a s";s:3:"146";s:4:"ată";s:3:"147";s:3:"com";s:3:"148";s:4:"e ş";s:3:"149";s:3:"eur";s:3:"150";s:3:"guv";s:3:"151";s:3:"i s";s:3:"152";s:3:"ice";s:3:"153";s:3:"ili";s:3:"154";s:3:"na ";s:3:"155";s:3:"rec";s:3:"156";s:3:"rep";s:3:"157";s:3:"ril";s:3:"158";s:3:"rne";s:3:"159";s:3:"rti";s:3:"160";s:3:"uro";s:3:"161";s:3:"uve";s:3:"162";s:4:"ă p";s:3:"163";s:3:" ar";s:3:"164";s:3:" o ";s:3:"165";s:3:" su";s:3:"166";s:3:" vi";s:3:"167";s:3:"dec";s:3:"168";s:3:"dre";s:3:"169";s:3:"oar";s:3:"170";s:3:"ons";s:3:"171";s:3:"pe ";s:3:"172";s:3:"rii";s:3:"173";s:3:" ad";s:3:"174";s:3:" ge";s:3:"175";s:3:"a m";s:3:"176";s:3:"a r";s:3:"177";s:3:"ain";s:3:"178";s:3:"ali";s:3:"179";s:3:"car";s:3:"180";s:3:"cat";s:3:"181";s:3:"ecu";s:3:"182";s:3:"ene";s:3:"183";s:3:"ept";s:3:"184";s:3:"ext";s:3:"185";s:3:"ilo";s:3:"186";s:3:"iu ";s:3:"187";s:3:"n p";s:3:"188";s:3:"ori";s:3:"189";s:3:"sec";s:3:"190";s:3:"u p";s:3:"191";s:3:"une";s:3:"192";s:4:"ă c";s:3:"193";s:4:"şti";s:3:"194";s:4:"ţia";s:3:"195";s:3:" ch";s:3:"196";s:3:" gu";s:3:"197";s:3:"ai ";s:3:"198";s:3:"ani";s:3:"199";s:3:"cea";s:3:"200";s:3:"e f";s:3:"201";s:3:"isc";s:3:"202";s:3:"l a";s:3:"203";s:3:"lic";s:3:"204";s:3:"liu";s:3:"205";s:3:"mar";s:3:"206";s:3:"nic";s:3:"207";s:3:"nt ";s:3:"208";s:3:"nul";s:3:"209";s:3:"ris";s:3:"210";s:3:"t c";s:3:"211";s:3:"t p";s:3:"212";s:3:"tic";s:3:"213";s:3:"tid";s:3:"214";s:3:"u a";s:3:"215";s:3:"ucr";s:3:"216";s:3:" as";s:3:"217";s:3:" dr";s:3:"218";s:3:" fa";s:3:"219";s:3:" nu";s:3:"220";s:3:" pu";s:3:"221";s:3:" to";s:3:"222";s:3:"cra";s:3:"223";s:3:"dis";s:3:"224";s:4:"enţ";s:3:"225";s:3:"esc";s:3:"226";s:3:"gen";s:3:"227";s:3:"it ";s:3:"228";s:3:"ivi";s:3:"229";s:3:"l d";s:3:"230";s:3:"n d";s:3:"231";s:3:"nd ";s:3:"232";s:3:"nu ";s:3:"233";s:3:"ond";s:3:"234";s:3:"pen";s:3:"235";s:3:"ral";s:3:"236";s:3:"riv";s:3:"237";s:3:"rte";s:3:"238";s:3:"sti";s:3:"239";s:3:"t d";s:3:"240";s:3:"ta ";s:3:"241";s:3:"to ";s:3:"242";s:3:"uni";s:3:"243";s:3:"xte";s:3:"244";s:4:"ând";s:3:"245";s:4:"îns";s:3:"246";s:4:"ă s";s:3:"247";s:3:" bl";s:3:"248";s:3:" st";s:3:"249";s:3:" uc";s:3:"250";s:3:"a b";s:3:"251";s:3:"a i";s:3:"252";s:3:"a l";s:3:"253";s:3:"air";s:3:"254";s:3:"ast";s:3:"255";s:3:"bla";s:3:"256";s:3:"bri";s:3:"257";s:3:"che";s:3:"258";s:3:"duc";s:3:"259";s:3:"dul";s:3:"260";s:3:"e m";s:3:"261";s:3:"eas";s:3:"262";s:3:"edi";s:3:"263";s:3:"esp";s:3:"264";s:3:"i l";s:3:"265";s:3:"i p";s:3:"266";s:3:"ica";s:3:"267";s:4:"ică";s:3:"268";s:3:"ir ";s:3:"269";s:3:"iun";s:3:"270";s:3:"jud";s:3:"271";s:3:"lai";s:3:"272";s:3:"lul";s:3:"273";s:3:"mai";s:3:"274";s:3:"men";s:3:"275";s:3:"ni ";s:3:"276";s:3:"pus";s:3:"277";s:3:"put";s:3:"278";s:3:"ra ";s:3:"279";s:3:"rai";s:3:"280";s:3:"rop";s:3:"281";s:3:"sil";s:3:"282";s:3:"ti ";s:3:"283";s:3:"tra";s:3:"284";s:3:"u s";s:3:"285";s:3:"ua ";s:3:"286";s:3:"ude";s:3:"287";s:3:"urs";s:3:"288";s:4:"ân ";s:3:"289";s:4:"înt";s:3:"290";s:5:"ţă ";s:3:"291";s:3:" lu";s:3:"292";s:3:" mo";s:3:"293";s:3:" s ";s:3:"294";s:3:" sa";s:3:"295";s:3:" sc";s:3:"296";s:3:"a u";s:3:"297";s:3:"an ";s:3:"298";s:3:"atu";s:3:"299";}s:7:"russian";a:300:{s:5:" на";s:1:"0";s:5:" пр";s:1:"1";s:5:"то ";s:1:"2";s:5:" не";s:1:"3";s:5:"ли ";s:1:"4";s:5:" по";s:1:"5";s:5:"но ";s:1:"6";s:4:" в ";s:1:"7";s:5:"на ";s:1:"8";s:5:"ть ";s:1:"9";s:5:"не ";s:2:"10";s:4:" и ";s:2:"11";s:5:" ко";s:2:"12";s:5:"ом ";s:2:"13";s:6:"про";s:2:"14";s:5:" то";s:2:"15";s:5:"их ";s:2:"16";s:5:" ка";s:2:"17";s:6:"ать";s:2:"18";s:6:"ото";s:2:"19";s:5:" за";s:2:"20";s:5:"ие ";s:2:"21";s:6:"ова";s:2:"22";s:6:"тел";s:2:"23";s:6:"тор";s:2:"24";s:5:" де";s:2:"25";s:5:"ой ";s:2:"26";s:6:"сти";s:2:"27";s:5:" от";s:2:"28";s:5:"ах ";s:2:"29";s:5:"ми ";s:2:"30";s:6:"стр";s:2:"31";s:5:" бе";s:2:"32";s:5:" во";s:2:"33";s:5:" ра";s:2:"34";s:5:"ая ";s:2:"35";s:6:"ват";s:2:"36";s:5:"ей ";s:2:"37";s:5:"ет ";s:2:"38";s:5:"же ";s:2:"39";s:6:"иче";s:2:"40";s:5:"ия ";s:2:"41";s:5:"ов ";s:2:"42";s:6:"сто";s:2:"43";s:5:" об";s:2:"44";s:6:"вер";s:2:"45";s:5:"го ";s:2:"46";s:5:"и в";s:2:"47";s:5:"и п";s:2:"48";s:5:"и с";s:2:"49";s:5:"ии ";s:2:"50";s:6:"ист";s:2:"51";s:5:"о в";s:2:"52";s:6:"ост";s:2:"53";s:6:"тра";s:2:"54";s:5:" те";s:2:"55";s:6:"ели";s:2:"56";s:6:"ере";s:2:"57";s:6:"кот";s:2:"58";s:6:"льн";s:2:"59";s:6:"ник";s:2:"60";s:6:"нти";s:2:"61";s:5:"о с";s:2:"62";s:6:"рор";s:2:"63";s:6:"ств";s:2:"64";s:6:"чес";s:2:"65";s:5:" бо";s:2:"66";s:5:" ве";s:2:"67";s:5:" да";s:2:"68";s:5:" ин";s:2:"69";s:5:" но";s:2:"70";s:4:" с ";s:2:"71";s:5:" со";s:2:"72";s:5:" сп";s:2:"73";s:5:" ст";s:2:"74";s:5:" чт";s:2:"75";s:6:"али";s:2:"76";s:6:"ами";s:2:"77";s:6:"вид";s:2:"78";s:6:"дет";s:2:"79";s:5:"е н";s:2:"80";s:6:"ель";s:2:"81";s:6:"еск";s:2:"82";s:6:"ест";s:2:"83";s:6:"зал";s:2:"84";s:5:"и н";s:2:"85";s:6:"ива";s:2:"86";s:6:"кон";s:2:"87";s:6:"ого";s:2:"88";s:6:"одн";s:2:"89";s:6:"ожн";s:2:"90";s:6:"оль";s:2:"91";s:6:"ори";s:2:"92";s:6:"ров";s:2:"93";s:6:"ско";s:2:"94";s:5:"ся ";s:2:"95";s:6:"тер";s:2:"96";s:6:"что";s:2:"97";s:5:" мо";s:2:"98";s:5:" са";s:2:"99";s:5:" эт";s:3:"100";s:6:"ант";s:3:"101";s:6:"все";s:3:"102";s:6:"ерр";s:3:"103";s:6:"есл";s:3:"104";s:6:"иде";s:3:"105";s:6:"ина";s:3:"106";s:6:"ино";s:3:"107";s:6:"иро";s:3:"108";s:6:"ите";s:3:"109";s:5:"ка ";s:3:"110";s:5:"ко ";s:3:"111";s:6:"кол";s:3:"112";s:6:"ком";s:3:"113";s:5:"ла ";s:3:"114";s:6:"ния";s:3:"115";s:5:"о т";s:3:"116";s:6:"оло";s:3:"117";s:6:"ран";s:3:"118";s:6:"ред";s:3:"119";s:5:"сь ";s:3:"120";s:6:"тив";s:3:"121";s:6:"тич";s:3:"122";s:5:"ых ";s:3:"123";s:5:" ви";s:3:"124";s:5:" вс";s:3:"125";s:5:" го";s:3:"126";s:5:" ма";s:3:"127";s:5:" сл";s:3:"128";s:6:"ако";s:3:"129";s:6:"ани";s:3:"130";s:6:"аст";s:3:"131";s:6:"без";s:3:"132";s:6:"дел";s:3:"133";s:5:"е д";s:3:"134";s:5:"е п";s:3:"135";s:5:"ем ";s:3:"136";s:6:"жно";s:3:"137";s:5:"и д";s:3:"138";s:6:"ика";s:3:"139";s:6:"каз";s:3:"140";s:6:"как";s:3:"141";s:5:"ки ";s:3:"142";s:6:"нос";s:3:"143";s:5:"о н";s:3:"144";s:6:"опа";s:3:"145";s:6:"при";s:3:"146";s:6:"рро";s:3:"147";s:6:"ски";s:3:"148";s:5:"ти ";s:3:"149";s:6:"тов";s:3:"150";s:5:"ые ";s:3:"151";s:5:" вы";s:3:"152";s:5:" до";s:3:"153";s:5:" ме";s:3:"154";s:5:" ни";s:3:"155";s:5:" од";s:3:"156";s:5:" ро";s:3:"157";s:5:" св";s:3:"158";s:5:" чи";s:3:"159";s:5:"а н";s:3:"160";s:6:"ает";s:3:"161";s:6:"аза";s:3:"162";s:6:"ате";s:3:"163";s:6:"бес";s:3:"164";s:5:"в п";s:3:"165";s:5:"ва ";s:3:"166";s:5:"е в";s:3:"167";s:5:"е м";s:3:"168";s:5:"е с";s:3:"169";s:5:"ез ";s:3:"170";s:6:"ени";s:3:"171";s:5:"за ";s:3:"172";s:6:"зна";s:3:"173";s:6:"ини";s:3:"174";s:6:"кам";s:3:"175";s:6:"ках";s:3:"176";s:6:"кто";s:3:"177";s:6:"лов";s:3:"178";s:6:"мер";s:3:"179";s:6:"мож";s:3:"180";s:6:"нал";s:3:"181";s:6:"ниц";s:3:"182";s:5:"ны ";s:3:"183";s:6:"ным";s:3:"184";s:6:"ора";s:3:"185";s:6:"оро";s:3:"186";s:5:"от ";s:3:"187";s:6:"пор";s:3:"188";s:6:"рав";s:3:"189";s:6:"рес";s:3:"190";s:6:"рис";s:3:"191";s:6:"рос";s:3:"192";s:6:"ска";s:3:"193";s:5:"т н";s:3:"194";s:6:"том";s:3:"195";s:6:"чит";s:3:"196";s:6:"шко";s:3:"197";s:5:" бы";s:3:"198";s:4:" о ";s:3:"199";s:5:" тр";s:3:"200";s:5:" уж";s:3:"201";s:5:" чу";s:3:"202";s:5:" шк";s:3:"203";s:5:"а б";s:3:"204";s:5:"а в";s:3:"205";s:5:"а р";s:3:"206";s:6:"аби";s:3:"207";s:6:"ала";s:3:"208";s:6:"ало";s:3:"209";s:6:"аль";s:3:"210";s:6:"анн";s:3:"211";s:6:"ати";s:3:"212";s:6:"бин";s:3:"213";s:6:"вес";s:3:"214";s:6:"вно";s:3:"215";s:5:"во ";s:3:"216";s:6:"вши";s:3:"217";s:6:"дал";s:3:"218";s:6:"дат";s:3:"219";s:6:"дно";s:3:"220";s:5:"е з";s:3:"221";s:6:"его";s:3:"222";s:6:"еле";s:3:"223";s:6:"енн";s:3:"224";s:6:"ент";s:3:"225";s:6:"ете";s:3:"226";s:5:"и о";s:3:"227";s:6:"или";s:3:"228";s:6:"ись";s:3:"229";s:5:"ит ";s:3:"230";s:6:"ици";s:3:"231";s:6:"ков";s:3:"232";s:6:"лен";s:3:"233";s:6:"льк";s:3:"234";s:6:"мен";s:3:"235";s:5:"мы ";s:3:"236";s:6:"нет";s:3:"237";s:5:"ни ";s:3:"238";s:6:"нны";s:3:"239";s:6:"ног";s:3:"240";s:6:"ной";s:3:"241";s:6:"ном";s:3:"242";s:5:"о п";s:3:"243";s:6:"обн";s:3:"244";s:6:"ове";s:3:"245";s:6:"овн";s:3:"246";s:6:"оры";s:3:"247";s:6:"пер";s:3:"248";s:5:"по ";s:3:"249";s:6:"пра";s:3:"250";s:6:"пре";s:3:"251";s:6:"раз";s:3:"252";s:6:"роп";s:3:"253";s:5:"ры ";s:3:"254";s:5:"се ";s:3:"255";s:6:"сли";s:3:"256";s:6:"сов";s:3:"257";s:6:"тре";s:3:"258";s:6:"тся";s:3:"259";s:6:"уро";s:3:"260";s:6:"цел";s:3:"261";s:6:"чно";s:3:"262";s:5:"ь в";s:3:"263";s:6:"ько";s:3:"264";s:6:"ьно";s:3:"265";s:6:"это";s:3:"266";s:5:"ют ";s:3:"267";s:5:"я н";s:3:"268";s:5:" ан";s:3:"269";s:5:" ес";s:3:"270";s:5:" же";s:3:"271";s:5:" из";s:3:"272";s:5:" кт";s:3:"273";s:5:" ми";s:3:"274";s:5:" мы";s:3:"275";s:5:" пе";s:3:"276";s:5:" се";s:3:"277";s:5:" це";s:3:"278";s:5:"а м";s:3:"279";s:5:"а п";s:3:"280";s:5:"а т";s:3:"281";s:6:"авш";s:3:"282";s:6:"аже";s:3:"283";s:5:"ак ";s:3:"284";s:5:"ал ";s:3:"285";s:6:"але";s:3:"286";s:6:"ане";s:3:"287";s:6:"ачи";s:3:"288";s:6:"ают";s:3:"289";s:6:"бна";s:3:"290";s:6:"бол";s:3:"291";s:5:"бы ";s:3:"292";s:5:"в и";s:3:"293";s:5:"в с";s:3:"294";s:6:"ван";s:3:"295";s:6:"гра";s:3:"296";s:6:"даж";s:3:"297";s:6:"ден";s:3:"298";s:5:"е к";s:3:"299";}s:7:"serbian";a:300:{s:5:" на";s:1:"0";s:5:" је";s:1:"1";s:5:" по";s:1:"2";s:5:"је ";s:1:"3";s:4:" и ";s:1:"4";s:5:" не";s:1:"5";s:5:" пр";s:1:"6";s:5:"га ";s:1:"7";s:5:" св";s:1:"8";s:5:"ог ";s:1:"9";s:5:"а с";s:2:"10";s:5:"их ";s:2:"11";s:5:"на ";s:2:"12";s:6:"кој";s:2:"13";s:6:"ога";s:2:"14";s:4:" у ";s:2:"15";s:5:"а п";s:2:"16";s:5:"не ";s:2:"17";s:5:"ни ";s:2:"18";s:5:"ти ";s:2:"19";s:5:" да";s:2:"20";s:5:"ом ";s:2:"21";s:5:" ве";s:2:"22";s:5:" ср";s:2:"23";s:5:"и с";s:2:"24";s:6:"ско";s:2:"25";s:5:" об";s:2:"26";s:5:"а н";s:2:"27";s:5:"да ";s:2:"28";s:5:"е н";s:2:"29";s:5:"но ";s:2:"30";s:6:"ног";s:2:"31";s:5:"о ј";s:2:"32";s:5:"ој ";s:2:"33";s:5:" за";s:2:"34";s:5:"ва ";s:2:"35";s:5:"е с";s:2:"36";s:5:"и п";s:2:"37";s:5:"ма ";s:2:"38";s:6:"ник";s:2:"39";s:6:"обр";s:2:"40";s:6:"ова";s:2:"41";s:5:" ко";s:2:"42";s:5:"а и";s:2:"43";s:6:"диј";s:2:"44";s:5:"е п";s:2:"45";s:5:"ка ";s:2:"46";s:5:"ко ";s:2:"47";s:6:"ког";s:2:"48";s:6:"ост";s:2:"49";s:6:"све";s:2:"50";s:6:"ств";s:2:"51";s:6:"сти";s:2:"52";s:6:"тра";s:2:"53";s:6:"еди";s:2:"54";s:6:"има";s:2:"55";s:6:"пок";s:2:"56";s:6:"пра";s:2:"57";s:6:"раз";s:2:"58";s:5:"те ";s:2:"59";s:5:" бо";s:2:"60";s:5:" ви";s:2:"61";s:5:" са";s:2:"62";s:6:"аво";s:2:"63";s:6:"бра";s:2:"64";s:6:"гос";s:2:"65";s:5:"е и";s:2:"66";s:6:"ели";s:2:"67";s:6:"ени";s:2:"68";s:5:"за ";s:2:"69";s:6:"ики";s:2:"70";s:5:"ио ";s:2:"71";s:6:"пре";s:2:"72";s:6:"рав";s:2:"73";s:6:"рад";s:2:"74";s:5:"у с";s:2:"75";s:5:"ју ";s:2:"76";s:5:"ња ";s:2:"77";s:5:" би";s:2:"78";s:5:" до";s:2:"79";s:5:" ст";s:2:"80";s:6:"аст";s:2:"81";s:6:"бој";s:2:"82";s:6:"ебо";s:2:"83";s:5:"и н";s:2:"84";s:5:"им ";s:2:"85";s:5:"ку ";s:2:"86";s:6:"лан";s:2:"87";s:6:"неб";s:2:"88";s:6:"ово";s:2:"89";s:6:"ого";s:2:"90";s:6:"осл";s:2:"91";s:6:"ојш";s:2:"92";s:6:"пед";s:2:"93";s:6:"стр";s:2:"94";s:6:"час";s:2:"95";s:5:" го";s:2:"96";s:5:" кр";s:2:"97";s:5:" мо";s:2:"98";s:5:" чл";s:2:"99";s:5:"а м";s:3:"100";s:5:"а о";s:3:"101";s:6:"ако";s:3:"102";s:6:"ача";s:3:"103";s:6:"вел";s:3:"104";s:6:"вет";s:3:"105";s:6:"вог";s:3:"106";s:6:"еда";s:3:"107";s:6:"ист";s:3:"108";s:6:"ити";s:3:"109";s:6:"ије";s:3:"110";s:6:"око";s:3:"111";s:6:"сло";s:3:"112";s:6:"срб";s:3:"113";s:6:"чла";s:3:"114";s:5:" бе";s:3:"115";s:5:" ос";s:3:"116";s:5:" от";s:3:"117";s:5:" ре";s:3:"118";s:5:" се";s:3:"119";s:5:"а в";s:3:"120";s:5:"ан ";s:3:"121";s:6:"бог";s:3:"122";s:6:"бро";s:3:"123";s:6:"вен";s:3:"124";s:6:"гра";s:3:"125";s:5:"е о";s:3:"126";s:6:"ика";s:3:"127";s:6:"ија";s:3:"128";s:6:"ких";s:3:"129";s:6:"ком";s:3:"130";s:5:"ли ";s:3:"131";s:5:"ну ";s:3:"132";s:6:"ота";s:3:"133";s:6:"ојн";s:3:"134";s:6:"под";s:3:"135";s:6:"рбс";s:3:"136";s:6:"ред";s:3:"137";s:6:"рој";s:3:"138";s:5:"са ";s:3:"139";s:6:"сни";s:3:"140";s:6:"тач";s:3:"141";s:6:"тва";s:3:"142";s:5:"ја ";s:3:"143";s:5:"ји ";s:3:"144";s:5:" ка";s:3:"145";s:5:" ов";s:3:"146";s:5:" тр";s:3:"147";s:5:"а ј";s:3:"148";s:6:"ави";s:3:"149";s:5:"аз ";s:3:"150";s:6:"ано";s:3:"151";s:6:"био";s:3:"152";s:6:"вик";s:3:"153";s:5:"во ";s:3:"154";s:6:"гов";s:3:"155";s:6:"дни";s:3:"156";s:5:"е ч";s:3:"157";s:6:"его";s:3:"158";s:5:"и о";s:3:"159";s:6:"ива";s:3:"160";s:6:"иво";s:3:"161";s:5:"ик ";s:3:"162";s:6:"ине";s:3:"163";s:6:"ини";s:3:"164";s:6:"ипе";s:3:"165";s:6:"кип";s:3:"166";s:6:"лик";s:3:"167";s:5:"ло ";s:3:"168";s:6:"наш";s:3:"169";s:6:"нос";s:3:"170";s:5:"о т";s:3:"171";s:5:"од ";s:3:"172";s:6:"оди";s:3:"173";s:6:"она";s:3:"174";s:6:"оји";s:3:"175";s:6:"поч";s:3:"176";s:6:"про";s:3:"177";s:5:"ра ";s:3:"178";s:6:"рис";s:3:"179";s:6:"род";s:3:"180";s:6:"рст";s:3:"181";s:5:"се ";s:3:"182";s:6:"спо";s:3:"183";s:6:"ста";s:3:"184";s:6:"тић";s:3:"185";s:5:"у д";s:3:"186";s:5:"у н";s:3:"187";s:5:"у о";s:3:"188";s:6:"чин";s:3:"189";s:5:"ша ";s:3:"190";s:6:"јед";s:3:"191";s:6:"јни";s:3:"192";s:5:"ће ";s:3:"193";s:4:" м ";s:3:"194";s:5:" ме";s:3:"195";s:5:" ни";s:3:"196";s:5:" он";s:3:"197";s:5:" па";s:3:"198";s:5:" сл";s:3:"199";s:5:" те";s:3:"200";s:5:"а у";s:3:"201";s:6:"ава";s:3:"202";s:6:"аве";s:3:"203";s:6:"авн";s:3:"204";s:6:"ана";s:3:"205";s:5:"ао ";s:3:"206";s:6:"ати";s:3:"207";s:6:"аци";s:3:"208";s:6:"ају";s:3:"209";s:6:"ања";s:3:"210";s:6:"бск";s:3:"211";s:6:"вор";s:3:"212";s:6:"вос";s:3:"213";s:6:"вск";s:3:"214";s:6:"дин";s:3:"215";s:5:"е у";s:3:"216";s:6:"едн";s:3:"217";s:6:"ези";s:3:"218";s:6:"ека";s:3:"219";s:6:"ено";s:3:"220";s:6:"ето";s:3:"221";s:6:"ења";s:3:"222";s:6:"жив";s:3:"223";s:5:"и г";s:3:"224";s:5:"и и";s:3:"225";s:5:"и к";s:3:"226";s:5:"и т";s:3:"227";s:6:"ику";s:3:"228";s:6:"ичк";s:3:"229";s:5:"ки ";s:3:"230";s:6:"крс";s:3:"231";s:5:"ла ";s:3:"232";s:6:"лав";s:3:"233";s:6:"лит";s:3:"234";s:5:"ме ";s:3:"235";s:6:"мен";s:3:"236";s:6:"нац";s:3:"237";s:5:"о н";s:3:"238";s:5:"о п";s:3:"239";s:5:"о у";s:3:"240";s:6:"одн";s:3:"241";s:6:"оли";s:3:"242";s:6:"орн";s:3:"243";s:6:"осн";s:3:"244";s:6:"осп";s:3:"245";s:6:"оче";s:3:"246";s:6:"пск";s:3:"247";s:6:"реч";s:3:"248";s:6:"рпс";s:3:"249";s:6:"сво";s:3:"250";s:6:"ски";s:3:"251";s:6:"сла";s:3:"252";s:6:"срп";s:3:"253";s:5:"су ";s:3:"254";s:5:"та ";s:3:"255";s:6:"тав";s:3:"256";s:6:"тве";s:3:"257";s:5:"у б";s:3:"258";s:6:"јез";s:3:"259";s:5:"ћи ";s:3:"260";s:5:" ен";s:3:"261";s:5:" жи";s:3:"262";s:5:" им";s:3:"263";s:5:" му";s:3:"264";s:5:" од";s:3:"265";s:5:" су";s:3:"266";s:5:" та";s:3:"267";s:5:" хр";s:3:"268";s:5:" ча";s:3:"269";s:5:" шт";s:3:"270";s:5:" ње";s:3:"271";s:5:"а д";s:3:"272";s:5:"а з";s:3:"273";s:5:"а к";s:3:"274";s:5:"а т";s:3:"275";s:6:"аду";s:3:"276";s:6:"ало";s:3:"277";s:6:"ани";s:3:"278";s:6:"асо";s:3:"279";s:6:"ван";s:3:"280";s:6:"вач";s:3:"281";s:6:"вањ";s:3:"282";s:6:"вед";s:3:"283";s:5:"ви ";s:3:"284";s:6:"вно";s:3:"285";s:6:"вот";s:3:"286";s:6:"вој";s:3:"287";s:5:"ву ";s:3:"288";s:6:"доб";s:3:"289";s:6:"дру";s:3:"290";s:6:"дсе";s:3:"291";s:5:"ду ";s:3:"292";s:5:"е б";s:3:"293";s:5:"е д";s:3:"294";s:5:"е м";s:3:"295";s:5:"ем ";s:3:"296";s:6:"ема";s:3:"297";s:6:"ент";s:3:"298";s:6:"енц";s:3:"299";}s:6:"slovak";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:3:" ne";s:1:"2";s:3:" a ";s:1:"3";s:3:"ch ";s:1:"4";s:3:" na";s:1:"5";s:3:" je";s:1:"6";s:4:"ní ";s:1:"7";s:3:"je ";s:1:"8";s:3:" do";s:1:"9";s:3:"na ";s:2:"10";s:3:"ova";s:2:"11";s:3:" v ";s:2:"12";s:3:"to ";s:2:"13";s:3:"ho ";s:2:"14";s:3:"ou ";s:2:"15";s:3:" to";s:2:"16";s:3:"ick";s:2:"17";s:3:"ter";s:2:"18";s:4:"že ";s:2:"19";s:3:" st";s:2:"20";s:3:" za";s:2:"21";s:3:"ost";s:2:"22";s:4:"ých";s:2:"23";s:3:" se";s:2:"24";s:3:"pro";s:2:"25";s:3:" te";s:2:"26";s:3:"e s";s:2:"27";s:4:" že";s:2:"28";s:3:"a p";s:2:"29";s:3:" kt";s:2:"30";s:3:"pre";s:2:"31";s:3:" by";s:2:"32";s:3:" o ";s:2:"33";s:3:"se ";s:2:"34";s:3:"kon";s:2:"35";s:4:" př";s:2:"36";s:3:"a s";s:2:"37";s:4:"né ";s:2:"38";s:4:"ně ";s:2:"39";s:3:"sti";s:2:"40";s:3:"ako";s:2:"41";s:3:"ist";s:2:"42";s:3:"mu ";s:2:"43";s:3:"ame";s:2:"44";s:3:"ent";s:2:"45";s:3:"ky ";s:2:"46";s:3:"la ";s:2:"47";s:3:"pod";s:2:"48";s:3:" ve";s:2:"49";s:3:" ob";s:2:"50";s:3:"om ";s:2:"51";s:3:"vat";s:2:"52";s:3:" ko";s:2:"53";s:3:"sta";s:2:"54";s:3:"em ";s:2:"55";s:3:"le ";s:2:"56";s:3:"a v";s:2:"57";s:3:"by ";s:2:"58";s:3:"e p";s:2:"59";s:3:"ko ";s:2:"60";s:3:"eri";s:2:"61";s:3:"kte";s:2:"62";s:3:"sa ";s:2:"63";s:4:"ého";s:2:"64";s:3:"e v";s:2:"65";s:3:"mer";s:2:"66";s:3:"tel";s:2:"67";s:3:" ak";s:2:"68";s:3:" sv";s:2:"69";s:4:" zá";s:2:"70";s:3:"hla";s:2:"71";s:3:"las";s:2:"72";s:3:"lo ";s:2:"73";s:3:" ta";s:2:"74";s:3:"a n";s:2:"75";s:3:"ej ";s:2:"76";s:3:"li ";s:2:"77";s:3:"ne ";s:2:"78";s:3:" sa";s:2:"79";s:3:"ak ";s:2:"80";s:3:"ani";s:2:"81";s:3:"ate";s:2:"82";s:3:"ia ";s:2:"83";s:3:"sou";s:2:"84";s:3:" so";s:2:"85";s:4:"ení";s:2:"86";s:3:"ie ";s:2:"87";s:3:" re";s:2:"88";s:3:"ce ";s:2:"89";s:3:"e n";s:2:"90";s:3:"ori";s:2:"91";s:3:"tic";s:2:"92";s:3:" vy";s:2:"93";s:3:"a t";s:2:"94";s:4:"ké ";s:2:"95";s:3:"nos";s:2:"96";s:3:"o s";s:2:"97";s:3:"str";s:2:"98";s:3:"ti ";s:2:"99";s:3:"uje";s:3:"100";s:3:" sp";s:3:"101";s:3:"lov";s:3:"102";s:3:"o p";s:3:"103";s:3:"oli";s:3:"104";s:4:"ová";s:3:"105";s:4:" ná";s:3:"106";s:3:"ale";s:3:"107";s:3:"den";s:3:"108";s:3:"e o";s:3:"109";s:3:"ku ";s:3:"110";s:3:"val";s:3:"111";s:3:" am";s:3:"112";s:3:" ro";s:3:"113";s:3:" si";s:3:"114";s:3:"nie";s:3:"115";s:3:"pol";s:3:"116";s:3:"tra";s:3:"117";s:3:" al";s:3:"118";s:3:"ali";s:3:"119";s:3:"o v";s:3:"120";s:3:"tor";s:3:"121";s:3:" mo";s:3:"122";s:3:" ni";s:3:"123";s:3:"ci ";s:3:"124";s:3:"o n";s:3:"125";s:4:"ím ";s:3:"126";s:3:" le";s:3:"127";s:3:" pa";s:3:"128";s:3:" s ";s:3:"129";s:3:"al ";s:3:"130";s:3:"ati";s:3:"131";s:3:"ero";s:3:"132";s:3:"ove";s:3:"133";s:3:"rov";s:3:"134";s:4:"ván";s:3:"135";s:4:"ích";s:3:"136";s:3:" ja";s:3:"137";s:3:" z ";s:3:"138";s:4:"cké";s:3:"139";s:3:"e z";s:3:"140";s:3:" od";s:3:"141";s:3:"byl";s:3:"142";s:3:"de ";s:3:"143";s:3:"dob";s:3:"144";s:3:"nep";s:3:"145";s:3:"pra";s:3:"146";s:3:"ric";s:3:"147";s:3:"spo";s:3:"148";s:3:"tak";s:3:"149";s:4:" vš";s:3:"150";s:3:"a a";s:3:"151";s:3:"e t";s:3:"152";s:3:"lit";s:3:"153";s:3:"me ";s:3:"154";s:3:"nej";s:3:"155";s:3:"no ";s:3:"156";s:4:"nýc";s:3:"157";s:3:"o t";s:3:"158";s:3:"a j";s:3:"159";s:3:"e a";s:3:"160";s:3:"en ";s:3:"161";s:3:"est";s:3:"162";s:4:"jí ";s:3:"163";s:3:"mi ";s:3:"164";s:3:"slo";s:3:"165";s:4:"stá";s:3:"166";s:3:"u v";s:3:"167";s:3:"for";s:3:"168";s:3:"nou";s:3:"169";s:3:"pos";s:3:"170";s:4:"pře";s:3:"171";s:3:"si ";s:3:"172";s:3:"tom";s:3:"173";s:3:" vl";s:3:"174";s:3:"a z";s:3:"175";s:3:"ly ";s:3:"176";s:3:"orm";s:3:"177";s:3:"ris";s:3:"178";s:3:"za ";s:3:"179";s:4:"zák";s:3:"180";s:3:" k ";s:3:"181";s:3:"at ";s:3:"182";s:4:"cký";s:3:"183";s:3:"dno";s:3:"184";s:3:"dos";s:3:"185";s:3:"dy ";s:3:"186";s:3:"jak";s:3:"187";s:3:"kov";s:3:"188";s:3:"ny ";s:3:"189";s:3:"res";s:3:"190";s:3:"ror";s:3:"191";s:3:"sto";s:3:"192";s:3:"van";s:3:"193";s:3:" op";s:3:"194";s:3:"da ";s:3:"195";s:3:"do ";s:3:"196";s:3:"e j";s:3:"197";s:3:"hod";s:3:"198";s:3:"len";s:3:"199";s:4:"ný ";s:3:"200";s:3:"o z";s:3:"201";s:3:"poz";s:3:"202";s:3:"pri";s:3:"203";s:3:"ran";s:3:"204";s:3:"u s";s:3:"205";s:3:" ab";s:3:"206";s:3:"aj ";s:3:"207";s:3:"ast";s:3:"208";s:3:"it ";s:3:"209";s:3:"kto";s:3:"210";s:3:"o o";s:3:"211";s:3:"oby";s:3:"212";s:3:"odo";s:3:"213";s:3:"u p";s:3:"214";s:3:"va ";s:3:"215";s:5:"ání";s:3:"216";s:4:"í p";s:3:"217";s:4:"ým ";s:3:"218";s:3:" in";s:3:"219";s:3:" mi";s:3:"220";s:4:"ať ";s:3:"221";s:3:"dov";s:3:"222";s:3:"ka ";s:3:"223";s:3:"nsk";s:3:"224";s:4:"áln";s:3:"225";s:3:" an";s:3:"226";s:3:" bu";s:3:"227";s:3:" sl";s:3:"228";s:3:" tr";s:3:"229";s:3:"e m";s:3:"230";s:3:"ech";s:3:"231";s:3:"edn";s:3:"232";s:3:"i n";s:3:"233";s:4:"kýc";s:3:"234";s:4:"níc";s:3:"235";s:3:"ov ";s:3:"236";s:5:"pří";s:3:"237";s:4:"í a";s:3:"238";s:3:" aj";s:3:"239";s:3:" bo";s:3:"240";s:3:"a d";s:3:"241";s:3:"ide";s:3:"242";s:3:"o a";s:3:"243";s:3:"o d";s:3:"244";s:3:"och";s:3:"245";s:3:"pov";s:3:"246";s:3:"svo";s:3:"247";s:4:"é s";s:3:"248";s:3:" kd";s:3:"249";s:3:" vo";s:3:"250";s:4:" vý";s:3:"251";s:3:"bud";s:3:"252";s:3:"ich";s:3:"253";s:3:"il ";s:3:"254";s:3:"ili";s:3:"255";s:3:"ni ";s:3:"256";s:4:"ním";s:3:"257";s:3:"od ";s:3:"258";s:3:"osl";s:3:"259";s:3:"ouh";s:3:"260";s:3:"rav";s:3:"261";s:3:"roz";s:3:"262";s:3:"st ";s:3:"263";s:3:"stv";s:3:"264";s:3:"tu ";s:3:"265";s:3:"u a";s:3:"266";s:4:"vál";s:3:"267";s:3:"y s";s:3:"268";s:4:"í s";s:3:"269";s:4:"í v";s:3:"270";s:3:" hl";s:3:"271";s:3:" li";s:3:"272";s:3:" me";s:3:"273";s:3:"a m";s:3:"274";s:3:"e b";s:3:"275";s:3:"h s";s:3:"276";s:3:"i p";s:3:"277";s:3:"i s";s:3:"278";s:3:"iti";s:3:"279";s:4:"lád";s:3:"280";s:3:"nem";s:3:"281";s:3:"nov";s:3:"282";s:3:"opo";s:3:"283";s:3:"uhl";s:3:"284";s:3:"eno";s:3:"285";s:3:"ens";s:3:"286";s:3:"men";s:3:"287";s:3:"nes";s:3:"288";s:3:"obo";s:3:"289";s:3:"te ";s:3:"290";s:3:"ved";s:3:"291";s:4:"vlá";s:3:"292";s:3:"y n";s:3:"293";s:3:" ma";s:3:"294";s:3:" mu";s:3:"295";s:4:" vá";s:3:"296";s:3:"bez";s:3:"297";s:3:"byv";s:3:"298";s:3:"cho";s:3:"299";}s:7:"slovene";a:300:{s:3:"je ";s:1:"0";s:3:" pr";s:1:"1";s:3:" po";s:1:"2";s:3:" je";s:1:"3";s:3:" v ";s:1:"4";s:3:" za";s:1:"5";s:3:" na";s:1:"6";s:3:"pre";s:1:"7";s:3:"da ";s:1:"8";s:3:" da";s:1:"9";s:3:"ki ";s:2:"10";s:3:"ti ";s:2:"11";s:3:"ja ";s:2:"12";s:3:"ne ";s:2:"13";s:3:" in";s:2:"14";s:3:"in ";s:2:"15";s:3:"li ";s:2:"16";s:3:"no ";s:2:"17";s:3:"na ";s:2:"18";s:3:"ni ";s:2:"19";s:3:" bi";s:2:"20";s:3:"jo ";s:2:"21";s:3:" ne";s:2:"22";s:3:"nje";s:2:"23";s:3:"e p";s:2:"24";s:3:"i p";s:2:"25";s:3:"pri";s:2:"26";s:3:"o p";s:2:"27";s:3:"red";s:2:"28";s:3:" do";s:2:"29";s:3:"anj";s:2:"30";s:3:"em ";s:2:"31";s:3:"ih ";s:2:"32";s:3:" bo";s:2:"33";s:3:" ki";s:2:"34";s:3:" iz";s:2:"35";s:3:" se";s:2:"36";s:3:" so";s:2:"37";s:3:"al ";s:2:"38";s:3:" de";s:2:"39";s:3:"e v";s:2:"40";s:3:"i s";s:2:"41";s:3:"ko ";s:2:"42";s:3:"bil";s:2:"43";s:3:"ira";s:2:"44";s:3:"ove";s:2:"45";s:3:" br";s:2:"46";s:3:" ob";s:2:"47";s:3:"e b";s:2:"48";s:3:"i n";s:2:"49";s:3:"ova";s:2:"50";s:3:"se ";s:2:"51";s:3:"za ";s:2:"52";s:3:"la ";s:2:"53";s:3:" ja";s:2:"54";s:3:"ati";s:2:"55";s:3:"so ";s:2:"56";s:3:"ter";s:2:"57";s:3:" ta";s:2:"58";s:3:"a s";s:2:"59";s:3:"del";s:2:"60";s:3:"e d";s:2:"61";s:3:" dr";s:2:"62";s:3:" od";s:2:"63";s:3:"a n";s:2:"64";s:3:"ar ";s:2:"65";s:3:"jal";s:2:"66";s:3:"ji ";s:2:"67";s:3:"rit";s:2:"68";s:3:" ka";s:2:"69";s:3:" ko";s:2:"70";s:3:" pa";s:2:"71";s:3:"a b";s:2:"72";s:3:"ani";s:2:"73";s:3:"e s";s:2:"74";s:3:"er ";s:2:"75";s:3:"ili";s:2:"76";s:3:"lov";s:2:"77";s:3:"o v";s:2:"78";s:3:"tov";s:2:"79";s:3:" ir";s:2:"80";s:3:" ni";s:2:"81";s:3:" vo";s:2:"82";s:3:"a j";s:2:"83";s:3:"bi ";s:2:"84";s:3:"bri";s:2:"85";s:3:"iti";s:2:"86";s:3:"let";s:2:"87";s:3:"o n";s:2:"88";s:3:"tan";s:2:"89";s:4:"še ";s:2:"90";s:3:" le";s:2:"91";s:3:" te";s:2:"92";s:3:"eni";s:2:"93";s:3:"eri";s:2:"94";s:3:"ita";s:2:"95";s:3:"kat";s:2:"96";s:3:"por";s:2:"97";s:3:"pro";s:2:"98";s:3:"ali";s:2:"99";s:3:"ke ";s:3:"100";s:3:"oli";s:3:"101";s:3:"ov ";s:3:"102";s:3:"pra";s:3:"103";s:3:"ri ";s:3:"104";s:3:"uar";s:3:"105";s:3:"ve ";s:3:"106";s:3:" to";s:3:"107";s:3:"a i";s:3:"108";s:3:"a v";s:3:"109";s:3:"ako";s:3:"110";s:3:"arj";s:3:"111";s:3:"ate";s:3:"112";s:3:"di ";s:3:"113";s:3:"do ";s:3:"114";s:3:"ga ";s:3:"115";s:3:"le ";s:3:"116";s:3:"lo ";s:3:"117";s:3:"mer";s:3:"118";s:3:"o s";s:3:"119";s:3:"oda";s:3:"120";s:3:"oro";s:3:"121";s:3:"pod";s:3:"122";s:3:" ma";s:3:"123";s:3:" mo";s:3:"124";s:3:" si";s:3:"125";s:3:"a p";s:3:"126";s:3:"bod";s:3:"127";s:3:"e n";s:3:"128";s:3:"ega";s:3:"129";s:3:"ju ";s:3:"130";s:3:"ka ";s:3:"131";s:3:"lje";s:3:"132";s:3:"rav";s:3:"133";s:3:"ta ";s:3:"134";s:3:"a o";s:3:"135";s:3:"e t";s:3:"136";s:3:"e z";s:3:"137";s:3:"i d";s:3:"138";s:3:"i v";s:3:"139";s:3:"ila";s:3:"140";s:3:"lit";s:3:"141";s:3:"nih";s:3:"142";s:3:"odo";s:3:"143";s:3:"sti";s:3:"144";s:3:"to ";s:3:"145";s:3:"var";s:3:"146";s:3:"ved";s:3:"147";s:3:"vol";s:3:"148";s:3:" la";s:3:"149";s:3:" no";s:3:"150";s:3:" vs";s:3:"151";s:3:"a d";s:3:"152";s:3:"agu";s:3:"153";s:3:"aja";s:3:"154";s:3:"dej";s:3:"155";s:3:"dnj";s:3:"156";s:3:"eda";s:3:"157";s:3:"gov";s:3:"158";s:3:"gua";s:3:"159";s:3:"jag";s:3:"160";s:3:"jem";s:3:"161";s:3:"kon";s:3:"162";s:3:"ku ";s:3:"163";s:3:"nij";s:3:"164";s:3:"omo";s:3:"165";s:4:"oči";s:3:"166";s:3:"pov";s:3:"167";s:3:"rak";s:3:"168";s:3:"rja";s:3:"169";s:3:"sta";s:3:"170";s:3:"tev";s:3:"171";s:3:"a t";s:3:"172";s:3:"aj ";s:3:"173";s:3:"ed ";s:3:"174";s:3:"eja";s:3:"175";s:3:"ent";s:3:"176";s:3:"ev ";s:3:"177";s:3:"i i";s:3:"178";s:3:"i o";s:3:"179";s:3:"ijo";s:3:"180";s:3:"ist";s:3:"181";s:3:"ost";s:3:"182";s:3:"ske";s:3:"183";s:3:"str";s:3:"184";s:3:" ra";s:3:"185";s:3:" s ";s:3:"186";s:3:" tr";s:3:"187";s:4:" še";s:3:"188";s:3:"arn";s:3:"189";s:3:"bo ";s:3:"190";s:4:"drž";s:3:"191";s:3:"i j";s:3:"192";s:3:"ilo";s:3:"193";s:3:"izv";s:3:"194";s:3:"jen";s:3:"195";s:3:"lja";s:3:"196";s:3:"nsk";s:3:"197";s:3:"o d";s:3:"198";s:3:"o i";s:3:"199";s:3:"om ";s:3:"200";s:3:"ora";s:3:"201";s:3:"ovo";s:3:"202";s:3:"raz";s:3:"203";s:4:"rža";s:3:"204";s:3:"tak";s:3:"205";s:3:"va ";s:3:"206";s:3:"ven";s:3:"207";s:4:"žav";s:3:"208";s:3:" me";s:3:"209";s:4:" če";s:3:"210";s:3:"ame";s:3:"211";s:3:"avi";s:3:"212";s:3:"e i";s:3:"213";s:3:"e o";s:3:"214";s:3:"eka";s:3:"215";s:3:"gre";s:3:"216";s:3:"i t";s:3:"217";s:3:"ija";s:3:"218";s:3:"il ";s:3:"219";s:3:"ite";s:3:"220";s:3:"kra";s:3:"221";s:3:"lju";s:3:"222";s:3:"mor";s:3:"223";s:3:"nik";s:3:"224";s:3:"o t";s:3:"225";s:3:"obi";s:3:"226";s:3:"odn";s:3:"227";s:3:"ran";s:3:"228";s:3:"re ";s:3:"229";s:3:"sto";s:3:"230";s:3:"stv";s:3:"231";s:3:"udi";s:3:"232";s:3:"v i";s:3:"233";s:3:"van";s:3:"234";s:3:" am";s:3:"235";s:3:" sp";s:3:"236";s:3:" st";s:3:"237";s:3:" tu";s:3:"238";s:3:" ve";s:3:"239";s:4:" že";s:3:"240";s:3:"ajo";s:3:"241";s:3:"ale";s:3:"242";s:3:"apo";s:3:"243";s:3:"dal";s:3:"244";s:3:"dru";s:3:"245";s:3:"e j";s:3:"246";s:3:"edn";s:3:"247";s:3:"ejo";s:3:"248";s:3:"elo";s:3:"249";s:3:"est";s:3:"250";s:3:"etj";s:3:"251";s:3:"eva";s:3:"252";s:3:"iji";s:3:"253";s:3:"ik ";s:3:"254";s:3:"im ";s:3:"255";s:3:"itv";s:3:"256";s:3:"mob";s:3:"257";s:3:"nap";s:3:"258";s:3:"nek";s:3:"259";s:3:"pol";s:3:"260";s:3:"pos";s:3:"261";s:3:"rat";s:3:"262";s:3:"ski";s:3:"263";s:4:"tič";s:3:"264";s:3:"tom";s:3:"265";s:3:"ton";s:3:"266";s:3:"tra";s:3:"267";s:3:"tud";s:3:"268";s:3:"tve";s:3:"269";s:3:"v b";s:3:"270";s:3:"vil";s:3:"271";s:3:"vse";s:3:"272";s:4:"čit";s:3:"273";s:3:" av";s:3:"274";s:3:" gr";s:3:"275";s:3:"a z";s:3:"276";s:3:"ans";s:3:"277";s:3:"ast";s:3:"278";s:3:"avt";s:3:"279";s:3:"dan";s:3:"280";s:3:"e m";s:3:"281";s:3:"eds";s:3:"282";s:3:"for";s:3:"283";s:3:"i z";s:3:"284";s:3:"kot";s:3:"285";s:3:"mi ";s:3:"286";s:3:"nim";s:3:"287";s:3:"o b";s:3:"288";s:3:"o o";s:3:"289";s:3:"od ";s:3:"290";s:3:"odl";s:3:"291";s:3:"oiz";s:3:"292";s:3:"ot ";s:3:"293";s:3:"par";s:3:"294";s:3:"pot";s:3:"295";s:3:"rje";s:3:"296";s:3:"roi";s:3:"297";s:3:"tem";s:3:"298";s:3:"val";s:3:"299";}s:6:"somali";a:300:{s:3:"ka ";s:1:"0";s:3:"ay ";s:1:"1";s:3:"da ";s:1:"2";s:3:" ay";s:1:"3";s:3:"aal";s:1:"4";s:3:"oo ";s:1:"5";s:3:"aan";s:1:"6";s:3:" ka";s:1:"7";s:3:"an ";s:1:"8";s:3:"in ";s:1:"9";s:3:" in";s:2:"10";s:3:"ada";s:2:"11";s:3:"maa";s:2:"12";s:3:"aba";s:2:"13";s:3:" so";s:2:"14";s:3:"ali";s:2:"15";s:3:"bad";s:2:"16";s:3:"add";s:2:"17";s:3:"soo";s:2:"18";s:3:" na";s:2:"19";s:3:"aha";s:2:"20";s:3:"ku ";s:2:"21";s:3:"ta ";s:2:"22";s:3:" wa";s:2:"23";s:3:"yo ";s:2:"24";s:3:"a s";s:2:"25";s:3:"oma";s:2:"26";s:3:"yaa";s:2:"27";s:3:" ba";s:2:"28";s:3:" ku";s:2:"29";s:3:" la";s:2:"30";s:3:" oo";s:2:"31";s:3:"iya";s:2:"32";s:3:"sha";s:2:"33";s:3:"a a";s:2:"34";s:3:"dda";s:2:"35";s:3:"nab";s:2:"36";s:3:"nta";s:2:"37";s:3:" da";s:2:"38";s:3:" ma";s:2:"39";s:3:"nka";s:2:"40";s:3:"uu ";s:2:"41";s:3:"y i";s:2:"42";s:3:"aya";s:2:"43";s:3:"ha ";s:2:"44";s:3:"raa";s:2:"45";s:3:" dh";s:2:"46";s:3:" qa";s:2:"47";s:3:"a k";s:2:"48";s:3:"ala";s:2:"49";s:3:"baa";s:2:"50";s:3:"doo";s:2:"51";s:3:"had";s:2:"52";s:3:"liy";s:2:"53";s:3:"oom";s:2:"54";s:3:" ha";s:2:"55";s:3:" sh";s:2:"56";s:3:"a d";s:2:"57";s:3:"a i";s:2:"58";s:3:"a n";s:2:"59";s:3:"aar";s:2:"60";s:3:"ee ";s:2:"61";s:3:"ey ";s:2:"62";s:3:"y k";s:2:"63";s:3:"ya ";s:2:"64";s:3:" ee";s:2:"65";s:3:" iy";s:2:"66";s:3:"aa ";s:2:"67";s:3:"aaq";s:2:"68";s:3:"gaa";s:2:"69";s:3:"lam";s:2:"70";s:3:" bu";s:2:"71";s:3:"a b";s:2:"72";s:3:"a m";s:2:"73";s:3:"ad ";s:2:"74";s:3:"aga";s:2:"75";s:3:"ama";s:2:"76";s:3:"iyo";s:2:"77";s:3:"la ";s:2:"78";s:3:"a c";s:2:"79";s:3:"a l";s:2:"80";s:3:"een";s:2:"81";s:3:"int";s:2:"82";s:3:"she";s:2:"83";s:3:"wax";s:2:"84";s:3:"yee";s:2:"85";s:3:" si";s:2:"86";s:3:" uu";s:2:"87";s:3:"a h";s:2:"88";s:3:"aas";s:2:"89";s:3:"alk";s:2:"90";s:3:"dha";s:2:"91";s:3:"gu ";s:2:"92";s:3:"hee";s:2:"93";s:3:"ii ";s:2:"94";s:3:"ira";s:2:"95";s:3:"mad";s:2:"96";s:3:"o a";s:2:"97";s:3:"o k";s:2:"98";s:3:"qay";s:2:"99";s:3:" ah";s:3:"100";s:3:" ca";s:3:"101";s:3:" wu";s:3:"102";s:3:"ank";s:3:"103";s:3:"ash";s:3:"104";s:3:"axa";s:3:"105";s:3:"eed";s:3:"106";s:3:"en ";s:3:"107";s:3:"ga ";s:3:"108";s:3:"haa";s:3:"109";s:3:"n a";s:3:"110";s:3:"n s";s:3:"111";s:3:"naa";s:3:"112";s:3:"nay";s:3:"113";s:3:"o d";s:3:"114";s:3:"taa";s:3:"115";s:3:"u b";s:3:"116";s:3:"uxu";s:3:"117";s:3:"wux";s:3:"118";s:3:"xuu";s:3:"119";s:3:" ci";s:3:"120";s:3:" do";s:3:"121";s:3:" ho";s:3:"122";s:3:" ta";s:3:"123";s:3:"a g";s:3:"124";s:3:"a u";s:3:"125";s:3:"ana";s:3:"126";s:3:"ayo";s:3:"127";s:3:"dhi";s:3:"128";s:3:"iin";s:3:"129";s:3:"lag";s:3:"130";s:3:"lin";s:3:"131";s:3:"lka";s:3:"132";s:3:"o i";s:3:"133";s:3:"san";s:3:"134";s:3:"u s";s:3:"135";s:3:"una";s:3:"136";s:3:"uun";s:3:"137";s:3:" ga";s:3:"138";s:3:" xa";s:3:"139";s:3:" xu";s:3:"140";s:3:"aab";s:3:"141";s:3:"abt";s:3:"142";s:3:"aq ";s:3:"143";s:3:"aqa";s:3:"144";s:3:"ara";s:3:"145";s:3:"arl";s:3:"146";s:3:"caa";s:3:"147";s:3:"cir";s:3:"148";s:3:"eeg";s:3:"149";s:3:"eel";s:3:"150";s:3:"isa";s:3:"151";s:3:"kal";s:3:"152";s:3:"lah";s:3:"153";s:3:"ney";s:3:"154";s:3:"qaa";s:3:"155";s:3:"rla";s:3:"156";s:3:"sad";s:3:"157";s:3:"sii";s:3:"158";s:3:"u d";s:3:"159";s:3:"wad";s:3:"160";s:3:" ad";s:3:"161";s:3:" ar";s:3:"162";s:3:" di";s:3:"163";s:3:" jo";s:3:"164";s:3:" ra";s:3:"165";s:3:" sa";s:3:"166";s:3:" u ";s:3:"167";s:3:" yi";s:3:"168";s:3:"a j";s:3:"169";s:3:"a q";s:3:"170";s:3:"aad";s:3:"171";s:3:"aat";s:3:"172";s:3:"aay";s:3:"173";s:3:"ah ";s:3:"174";s:3:"ale";s:3:"175";s:3:"amk";s:3:"176";s:3:"ari";s:3:"177";s:3:"as ";s:3:"178";s:3:"aye";s:3:"179";s:3:"bus";s:3:"180";s:3:"dal";s:3:"181";s:3:"ddu";s:3:"182";s:3:"dii";s:3:"183";s:3:"du ";s:3:"184";s:3:"duu";s:3:"185";s:3:"ed ";s:3:"186";s:3:"ege";s:3:"187";s:3:"gey";s:3:"188";s:3:"hay";s:3:"189";s:3:"hii";s:3:"190";s:3:"ida";s:3:"191";s:3:"ine";s:3:"192";s:3:"joo";s:3:"193";s:3:"laa";s:3:"194";s:3:"lay";s:3:"195";s:3:"mar";s:3:"196";s:3:"mee";s:3:"197";s:3:"n b";s:3:"198";s:3:"n d";s:3:"199";s:3:"n m";s:3:"200";s:3:"no ";s:3:"201";s:3:"o b";s:3:"202";s:3:"o l";s:3:"203";s:3:"oog";s:3:"204";s:3:"oon";s:3:"205";s:3:"rga";s:3:"206";s:3:"sh ";s:3:"207";s:3:"sid";s:3:"208";s:3:"u q";s:3:"209";s:3:"unk";s:3:"210";s:3:"ush";s:3:"211";s:3:"xa ";s:3:"212";s:3:"y d";s:3:"213";s:3:" bi";s:3:"214";s:3:" gu";s:3:"215";s:3:" is";s:3:"216";s:3:" ke";s:3:"217";s:3:" lo";s:3:"218";s:3:" me";s:3:"219";s:3:" mu";s:3:"220";s:3:" qo";s:3:"221";s:3:" ug";s:3:"222";s:3:"a e";s:3:"223";s:3:"a o";s:3:"224";s:3:"a w";s:3:"225";s:3:"adi";s:3:"226";s:3:"ado";s:3:"227";s:3:"agu";s:3:"228";s:3:"al ";s:3:"229";s:3:"ant";s:3:"230";s:3:"ark";s:3:"231";s:3:"asa";s:3:"232";s:3:"awi";s:3:"233";s:3:"bta";s:3:"234";s:3:"bul";s:3:"235";s:3:"d a";s:3:"236";s:3:"dag";s:3:"237";s:3:"dan";s:3:"238";s:3:"do ";s:3:"239";s:3:"e s";s:3:"240";s:3:"gal";s:3:"241";s:3:"gay";s:3:"242";s:3:"guu";s:3:"243";s:3:"h e";s:3:"244";s:3:"hal";s:3:"245";s:3:"iga";s:3:"246";s:3:"ihi";s:3:"247";s:3:"iri";s:3:"248";s:3:"iye";s:3:"249";s:3:"ken";s:3:"250";s:3:"lad";s:3:"251";s:3:"lid";s:3:"252";s:3:"lsh";s:3:"253";s:3:"mag";s:3:"254";s:3:"mun";s:3:"255";s:3:"n h";s:3:"256";s:3:"n i";s:3:"257";s:3:"na ";s:3:"258";s:3:"o n";s:3:"259";s:3:"o w";s:3:"260";s:3:"ood";s:3:"261";s:3:"oor";s:3:"262";s:3:"ora";s:3:"263";s:3:"qab";s:3:"264";s:3:"qor";s:3:"265";s:3:"rab";s:3:"266";s:3:"rit";s:3:"267";s:3:"rta";s:3:"268";s:3:"s o";s:3:"269";s:3:"sab";s:3:"270";s:3:"ska";s:3:"271";s:3:"to ";s:3:"272";s:3:"u a";s:3:"273";s:3:"u h";s:3:"274";s:3:"u u";s:3:"275";s:3:"ud ";s:3:"276";s:3:"ugu";s:3:"277";s:3:"uls";s:3:"278";s:3:"uud";s:3:"279";s:3:"waa";s:3:"280";s:3:"xus";s:3:"281";s:3:"y b";s:3:"282";s:3:"y q";s:3:"283";s:3:"y s";s:3:"284";s:3:"yad";s:3:"285";s:3:"yay";s:3:"286";s:3:"yih";s:3:"287";s:3:" aa";s:3:"288";s:3:" bo";s:3:"289";s:3:" br";s:3:"290";s:3:" go";s:3:"291";s:3:" ji";s:3:"292";s:3:" mi";s:3:"293";s:3:" of";s:3:"294";s:3:" ti";s:3:"295";s:3:" um";s:3:"296";s:3:" wi";s:3:"297";s:3:" xo";s:3:"298";s:3:"a x";s:3:"299";}s:7:"spanish";a:300:{s:3:" de";s:1:"0";s:3:"de ";s:1:"1";s:3:" la";s:1:"2";s:3:"os ";s:1:"3";s:3:"la ";s:1:"4";s:3:"el ";s:1:"5";s:3:"es ";s:1:"6";s:3:" qu";s:1:"7";s:3:" co";s:1:"8";s:3:"e l";s:1:"9";s:3:"as ";s:2:"10";s:3:"que";s:2:"11";s:3:" el";s:2:"12";s:3:"ue ";s:2:"13";s:3:"en ";s:2:"14";s:3:"ent";s:2:"15";s:3:" en";s:2:"16";s:3:" se";s:2:"17";s:3:"nte";s:2:"18";s:3:"res";s:2:"19";s:3:"con";s:2:"20";s:3:"est";s:2:"21";s:3:" es";s:2:"22";s:3:"s d";s:2:"23";s:3:" lo";s:2:"24";s:3:" pr";s:2:"25";s:3:"los";s:2:"26";s:3:" y ";s:2:"27";s:3:"do ";s:2:"28";s:4:"ón ";s:2:"29";s:4:"ión";s:2:"30";s:3:" un";s:2:"31";s:4:"ció";s:2:"32";s:3:"del";s:2:"33";s:3:"o d";s:2:"34";s:3:" po";s:2:"35";s:3:"a d";s:2:"36";s:3:"aci";s:2:"37";s:3:"sta";s:2:"38";s:3:"te ";s:2:"39";s:3:"ado";s:2:"40";s:3:"pre";s:2:"41";s:3:"to ";s:2:"42";s:3:"par";s:2:"43";s:3:"a e";s:2:"44";s:3:"a l";s:2:"45";s:3:"ra ";s:2:"46";s:3:"al ";s:2:"47";s:3:"e e";s:2:"48";s:3:"se ";s:2:"49";s:3:"pro";s:2:"50";s:3:"ar ";s:2:"51";s:3:"ia ";s:2:"52";s:3:"o e";s:2:"53";s:3:" re";s:2:"54";s:3:"ida";s:2:"55";s:3:"dad";s:2:"56";s:3:"tra";s:2:"57";s:3:"por";s:2:"58";s:3:"s p";s:2:"59";s:3:" a ";s:2:"60";s:3:"a p";s:2:"61";s:3:"ara";s:2:"62";s:3:"cia";s:2:"63";s:3:" pa";s:2:"64";s:3:"com";s:2:"65";s:3:"no ";s:2:"66";s:3:" di";s:2:"67";s:3:" in";s:2:"68";s:3:"ien";s:2:"69";s:3:"n l";s:2:"70";s:3:"ad ";s:2:"71";s:3:"ant";s:2:"72";s:3:"e s";s:2:"73";s:3:"men";s:2:"74";s:3:"a c";s:2:"75";s:3:"on ";s:2:"76";s:3:"un ";s:2:"77";s:3:"las";s:2:"78";s:3:"nci";s:2:"79";s:3:" tr";s:2:"80";s:3:"cio";s:2:"81";s:3:"ier";s:2:"82";s:3:"nto";s:2:"83";s:3:"tiv";s:2:"84";s:3:"n d";s:2:"85";s:3:"n e";s:2:"86";s:3:"or ";s:2:"87";s:3:"s c";s:2:"88";s:3:"enc";s:2:"89";s:3:"ern";s:2:"90";s:3:"io ";s:2:"91";s:3:"a s";s:2:"92";s:3:"ici";s:2:"93";s:3:"s e";s:2:"94";s:3:" ma";s:2:"95";s:3:"dos";s:2:"96";s:3:"e a";s:2:"97";s:3:"e c";s:2:"98";s:3:"emp";s:2:"99";s:3:"ica";s:3:"100";s:3:"ivo";s:3:"101";s:3:"l p";s:3:"102";s:3:"n c";s:3:"103";s:3:"r e";s:3:"104";s:3:"ta ";s:3:"105";s:3:"ter";s:3:"106";s:3:"e d";s:3:"107";s:3:"esa";s:3:"108";s:3:"ez ";s:3:"109";s:3:"mpr";s:3:"110";s:3:"o a";s:3:"111";s:3:"s a";s:3:"112";s:3:" ca";s:3:"113";s:3:" su";s:3:"114";s:3:"ion";s:3:"115";s:3:" cu";s:3:"116";s:3:" ju";s:3:"117";s:3:"an ";s:3:"118";s:3:"da ";s:3:"119";s:3:"ene";s:3:"120";s:3:"ero";s:3:"121";s:3:"na ";s:3:"122";s:3:"rec";s:3:"123";s:3:"ro ";s:3:"124";s:3:"tar";s:3:"125";s:3:" al";s:3:"126";s:3:" an";s:3:"127";s:3:"bie";s:3:"128";s:3:"e p";s:3:"129";s:3:"er ";s:3:"130";s:3:"l c";s:3:"131";s:3:"n p";s:3:"132";s:3:"omp";s:3:"133";s:3:"ten";s:3:"134";s:3:" em";s:3:"135";s:3:"ist";s:3:"136";s:3:"nes";s:3:"137";s:3:"nta";s:3:"138";s:3:"o c";s:3:"139";s:3:"so ";s:3:"140";s:3:"tes";s:3:"141";s:3:"era";s:3:"142";s:3:"l d";s:3:"143";s:3:"l m";s:3:"144";s:3:"les";s:3:"145";s:3:"ntr";s:3:"146";s:3:"o s";s:3:"147";s:3:"ore";s:3:"148";s:4:"rá ";s:3:"149";s:3:"s q";s:3:"150";s:3:"s y";s:3:"151";s:3:"sto";s:3:"152";s:3:"a a";s:3:"153";s:3:"a r";s:3:"154";s:3:"ari";s:3:"155";s:3:"des";s:3:"156";s:3:"e q";s:3:"157";s:3:"ivi";s:3:"158";s:3:"lic";s:3:"159";s:3:"lo ";s:3:"160";s:3:"n a";s:3:"161";s:3:"one";s:3:"162";s:3:"ora";s:3:"163";s:3:"per";s:3:"164";s:3:"pue";s:3:"165";s:3:"r l";s:3:"166";s:3:"re ";s:3:"167";s:3:"ren";s:3:"168";s:3:"una";s:3:"169";s:4:"ía ";s:3:"170";s:3:"ada";s:3:"171";s:3:"cas";s:3:"172";s:3:"ere";s:3:"173";s:3:"ide";s:3:"174";s:3:"min";s:3:"175";s:3:"n s";s:3:"176";s:3:"ndo";s:3:"177";s:3:"ran";s:3:"178";s:3:"rno";s:3:"179";s:3:" ac";s:3:"180";s:3:" ex";s:3:"181";s:3:" go";s:3:"182";s:3:" no";s:3:"183";s:3:"a t";s:3:"184";s:3:"aba";s:3:"185";s:3:"ble";s:3:"186";s:3:"ece";s:3:"187";s:3:"ect";s:3:"188";s:3:"l a";s:3:"189";s:3:"l g";s:3:"190";s:3:"lid";s:3:"191";s:3:"nsi";s:3:"192";s:3:"ons";s:3:"193";s:3:"rac";s:3:"194";s:3:"rio";s:3:"195";s:3:"str";s:3:"196";s:3:"uer";s:3:"197";s:3:"ust";s:3:"198";s:3:" ha";s:3:"199";s:3:" le";s:3:"200";s:3:" mi";s:3:"201";s:3:" mu";s:3:"202";s:3:" ob";s:3:"203";s:3:" pe";s:3:"204";s:3:" pu";s:3:"205";s:3:" so";s:3:"206";s:3:"a i";s:3:"207";s:3:"ale";s:3:"208";s:3:"ca ";s:3:"209";s:3:"cto";s:3:"210";s:3:"e i";s:3:"211";s:3:"e u";s:3:"212";s:3:"eso";s:3:"213";s:3:"fer";s:3:"214";s:3:"fic";s:3:"215";s:3:"gob";s:3:"216";s:3:"jo ";s:3:"217";s:3:"ma ";s:3:"218";s:3:"mpl";s:3:"219";s:3:"o p";s:3:"220";s:3:"obi";s:3:"221";s:3:"s m";s:3:"222";s:3:"sa ";s:3:"223";s:3:"sep";s:3:"224";s:3:"ste";s:3:"225";s:3:"sti";s:3:"226";s:3:"tad";s:3:"227";s:3:"tod";s:3:"228";s:3:"y s";s:3:"229";s:3:" ci";s:3:"230";s:3:"and";s:3:"231";s:3:"ces";s:3:"232";s:4:"có ";s:3:"233";s:3:"dor";s:3:"234";s:3:"e m";s:3:"235";s:3:"eci";s:3:"236";s:3:"eco";s:3:"237";s:3:"esi";s:3:"238";s:3:"int";s:3:"239";s:3:"iza";s:3:"240";s:3:"l e";s:3:"241";s:3:"lar";s:3:"242";s:3:"mie";s:3:"243";s:3:"ner";s:3:"244";s:3:"orc";s:3:"245";s:3:"rci";s:3:"246";s:3:"ria";s:3:"247";s:3:"tic";s:3:"248";s:3:"tor";s:3:"249";s:3:" as";s:3:"250";s:3:" si";s:3:"251";s:3:"ce ";s:3:"252";s:3:"den";s:3:"253";s:3:"e r";s:3:"254";s:3:"e t";s:3:"255";s:3:"end";s:3:"256";s:3:"eri";s:3:"257";s:3:"esp";s:3:"258";s:3:"ial";s:3:"259";s:3:"ido";s:3:"260";s:3:"ina";s:3:"261";s:3:"inc";s:3:"262";s:3:"mit";s:3:"263";s:3:"o l";s:3:"264";s:3:"ome";s:3:"265";s:3:"pli";s:3:"266";s:3:"ras";s:3:"267";s:3:"s t";s:3:"268";s:3:"sid";s:3:"269";s:3:"sup";s:3:"270";s:3:"tab";s:3:"271";s:3:"uen";s:3:"272";s:3:"ues";s:3:"273";s:3:"ura";s:3:"274";s:3:"vo ";s:3:"275";s:3:"vor";s:3:"276";s:3:" sa";s:3:"277";s:3:" ti";s:3:"278";s:3:"abl";s:3:"279";s:3:"ali";s:3:"280";s:3:"aso";s:3:"281";s:3:"ast";s:3:"282";s:3:"cor";s:3:"283";s:3:"cti";s:3:"284";s:3:"cue";s:3:"285";s:3:"div";s:3:"286";s:3:"duc";s:3:"287";s:3:"ens";s:3:"288";s:3:"eti";s:3:"289";s:3:"imi";s:3:"290";s:3:"ini";s:3:"291";s:3:"lec";s:3:"292";s:3:"o q";s:3:"293";s:3:"oce";s:3:"294";s:3:"ort";s:3:"295";s:3:"ral";s:3:"296";s:3:"rma";s:3:"297";s:3:"roc";s:3:"298";s:3:"rod";s:3:"299";}s:7:"swahili";a:300:{s:3:" wa";s:1:"0";s:3:"wa ";s:1:"1";s:3:"a k";s:1:"2";s:3:"a m";s:1:"3";s:3:" ku";s:1:"4";s:3:" ya";s:1:"5";s:3:"a w";s:1:"6";s:3:"ya ";s:1:"7";s:3:"ni ";s:1:"8";s:3:" ma";s:1:"9";s:3:"ka ";s:2:"10";s:3:"a u";s:2:"11";s:3:"na ";s:2:"12";s:3:"za ";s:2:"13";s:3:"ia ";s:2:"14";s:3:" na";s:2:"15";s:3:"ika";s:2:"16";s:3:"ma ";s:2:"17";s:3:"ali";s:2:"18";s:3:"a n";s:2:"19";s:3:" am";s:2:"20";s:3:"ili";s:2:"21";s:3:"kwa";s:2:"22";s:3:" kw";s:2:"23";s:3:"ini";s:2:"24";s:3:" ha";s:2:"25";s:3:"ame";s:2:"26";s:3:"ana";s:2:"27";s:3:"i n";s:2:"28";s:3:" za";s:2:"29";s:3:"a h";s:2:"30";s:3:"ema";s:2:"31";s:3:"i m";s:2:"32";s:3:"i y";s:2:"33";s:3:"kuw";s:2:"34";s:3:"la ";s:2:"35";s:3:"o w";s:2:"36";s:3:"a y";s:2:"37";s:3:"ata";s:2:"38";s:3:"sem";s:2:"39";s:3:" la";s:2:"40";s:3:"ati";s:2:"41";s:3:"chi";s:2:"42";s:3:"i w";s:2:"43";s:3:"uwa";s:2:"44";s:3:"aki";s:2:"45";s:3:"li ";s:2:"46";s:3:"eka";s:2:"47";s:3:"ira";s:2:"48";s:3:" nc";s:2:"49";s:3:"a s";s:2:"50";s:3:"iki";s:2:"51";s:3:"kat";s:2:"52";s:3:"nch";s:2:"53";s:3:" ka";s:2:"54";s:3:" ki";s:2:"55";s:3:"a b";s:2:"56";s:3:"aji";s:2:"57";s:3:"amb";s:2:"58";s:3:"ra ";s:2:"59";s:3:"ri ";s:2:"60";s:3:"rik";s:2:"61";s:3:"ada";s:2:"62";s:3:"mat";s:2:"63";s:3:"mba";s:2:"64";s:3:"mes";s:2:"65";s:3:"yo ";s:2:"66";s:3:"zi ";s:2:"67";s:3:"da ";s:2:"68";s:3:"hi ";s:2:"69";s:3:"i k";s:2:"70";s:3:"ja ";s:2:"71";s:3:"kut";s:2:"72";s:3:"tek";s:2:"73";s:3:"wan";s:2:"74";s:3:" bi";s:2:"75";s:3:"a a";s:2:"76";s:3:"aka";s:2:"77";s:3:"ao ";s:2:"78";s:3:"asi";s:2:"79";s:3:"cha";s:2:"80";s:3:"ese";s:2:"81";s:3:"eza";s:2:"82";s:3:"ke ";s:2:"83";s:3:"moj";s:2:"84";s:3:"oja";s:2:"85";s:3:" hi";s:2:"86";s:3:"a z";s:2:"87";s:3:"end";s:2:"88";s:3:"ha ";s:2:"89";s:3:"ji ";s:2:"90";s:3:"mu ";s:2:"91";s:3:"shi";s:2:"92";s:3:"wat";s:2:"93";s:3:" bw";s:2:"94";s:3:"ake";s:2:"95";s:3:"ara";s:2:"96";s:3:"bw ";s:2:"97";s:3:"i h";s:2:"98";s:3:"imb";s:2:"99";s:3:"tik";s:3:"100";s:3:"wak";s:3:"101";s:3:"wal";s:3:"102";s:3:" hu";s:3:"103";s:3:" mi";s:3:"104";s:3:" mk";s:3:"105";s:3:" ni";s:3:"106";s:3:" ra";s:3:"107";s:3:" um";s:3:"108";s:3:"a l";s:3:"109";s:3:"ate";s:3:"110";s:3:"esh";s:3:"111";s:3:"ina";s:3:"112";s:3:"ish";s:3:"113";s:3:"kim";s:3:"114";s:3:"o k";s:3:"115";s:3:" ir";s:3:"116";s:3:"a i";s:3:"117";s:3:"ala";s:3:"118";s:3:"ani";s:3:"119";s:3:"aq ";s:3:"120";s:3:"azi";s:3:"121";s:3:"hin";s:3:"122";s:3:"i a";s:3:"123";s:3:"idi";s:3:"124";s:3:"ima";s:3:"125";s:3:"ita";s:3:"126";s:3:"rai";s:3:"127";s:3:"raq";s:3:"128";s:3:"sha";s:3:"129";s:3:" ms";s:3:"130";s:3:" se";s:3:"131";s:3:"afr";s:3:"132";s:3:"ama";s:3:"133";s:3:"ano";s:3:"134";s:3:"ea ";s:3:"135";s:3:"ele";s:3:"136";s:3:"fri";s:3:"137";s:3:"go ";s:3:"138";s:3:"i i";s:3:"139";s:3:"ifa";s:3:"140";s:3:"iwa";s:3:"141";s:3:"iyo";s:3:"142";s:3:"kus";s:3:"143";s:3:"lia";s:3:"144";s:3:"lio";s:3:"145";s:3:"maj";s:3:"146";s:3:"mku";s:3:"147";s:3:"no ";s:3:"148";s:3:"tan";s:3:"149";s:3:"uli";s:3:"150";s:3:"uta";s:3:"151";s:3:"wen";s:3:"152";s:3:" al";s:3:"153";s:3:"a j";s:3:"154";s:3:"aad";s:3:"155";s:3:"aid";s:3:"156";s:3:"ari";s:3:"157";s:3:"awa";s:3:"158";s:3:"ba ";s:3:"159";s:3:"fa ";s:3:"160";s:3:"nde";s:3:"161";s:3:"nge";s:3:"162";s:3:"nya";s:3:"163";s:3:"o y";s:3:"164";s:3:"u w";s:3:"165";s:3:"ua ";s:3:"166";s:3:"umo";s:3:"167";s:3:"waz";s:3:"168";s:3:"ye ";s:3:"169";s:3:" ut";s:3:"170";s:3:" vi";s:3:"171";s:3:"a d";s:3:"172";s:3:"a t";s:3:"173";s:3:"aif";s:3:"174";s:3:"di ";s:3:"175";s:3:"ere";s:3:"176";s:3:"ing";s:3:"177";s:3:"kin";s:3:"178";s:3:"nda";s:3:"179";s:3:"o n";s:3:"180";s:3:"oa ";s:3:"181";s:3:"tai";s:3:"182";s:3:"toa";s:3:"183";s:3:"usa";s:3:"184";s:3:"uto";s:3:"185";s:3:"was";s:3:"186";s:3:"yak";s:3:"187";s:3:"zo ";s:3:"188";s:3:" ji";s:3:"189";s:3:" mw";s:3:"190";s:3:"a p";s:3:"191";s:3:"aia";s:3:"192";s:3:"amu";s:3:"193";s:3:"ang";s:3:"194";s:3:"bik";s:3:"195";s:3:"bo ";s:3:"196";s:3:"del";s:3:"197";s:3:"e w";s:3:"198";s:3:"ene";s:3:"199";s:3:"eng";s:3:"200";s:3:"ich";s:3:"201";s:3:"iri";s:3:"202";s:3:"iti";s:3:"203";s:3:"ito";s:3:"204";s:3:"ki ";s:3:"205";s:3:"kir";s:3:"206";s:3:"ko ";s:3:"207";s:3:"kuu";s:3:"208";s:3:"mar";s:3:"209";s:3:"mbo";s:3:"210";s:3:"mil";s:3:"211";s:3:"ngi";s:3:"212";s:3:"ngo";s:3:"213";s:3:"o l";s:3:"214";s:3:"ong";s:3:"215";s:3:"si ";s:3:"216";s:3:"ta ";s:3:"217";s:3:"tak";s:3:"218";s:3:"u y";s:3:"219";s:3:"umu";s:3:"220";s:3:"usi";s:3:"221";s:3:"uu ";s:3:"222";s:3:"wam";s:3:"223";s:3:" af";s:3:"224";s:3:" ba";s:3:"225";s:3:" li";s:3:"226";s:3:" si";s:3:"227";s:3:" zi";s:3:"228";s:3:"a v";s:3:"229";s:3:"ami";s:3:"230";s:3:"atu";s:3:"231";s:3:"awi";s:3:"232";s:3:"eri";s:3:"233";s:3:"fan";s:3:"234";s:3:"fur";s:3:"235";s:3:"ger";s:3:"236";s:3:"i z";s:3:"237";s:3:"isi";s:3:"238";s:3:"izo";s:3:"239";s:3:"lea";s:3:"240";s:3:"mbi";s:3:"241";s:3:"mwa";s:3:"242";s:3:"nye";s:3:"243";s:3:"o h";s:3:"244";s:3:"o m";s:3:"245";s:3:"oni";s:3:"246";s:3:"rez";s:3:"247";s:3:"saa";s:3:"248";s:3:"ser";s:3:"249";s:3:"sin";s:3:"250";s:3:"tat";s:3:"251";s:3:"tis";s:3:"252";s:3:"tu ";s:3:"253";s:3:"uin";s:3:"254";s:3:"uki";s:3:"255";s:3:"ur ";s:3:"256";s:3:"wi ";s:3:"257";s:3:"yar";s:3:"258";s:3:" da";s:3:"259";s:3:" en";s:3:"260";s:3:" mp";s:3:"261";s:3:" ny";s:3:"262";s:3:" ta";s:3:"263";s:3:" ul";s:3:"264";s:3:" we";s:3:"265";s:3:"a c";s:3:"266";s:3:"a f";s:3:"267";s:3:"ais";s:3:"268";s:3:"apo";s:3:"269";s:3:"ayo";s:3:"270";s:3:"bar";s:3:"271";s:3:"dhi";s:3:"272";s:3:"e a";s:3:"273";s:3:"eke";s:3:"274";s:3:"eny";s:3:"275";s:3:"eon";s:3:"276";s:3:"hai";s:3:"277";s:3:"han";s:3:"278";s:3:"hiy";s:3:"279";s:3:"hur";s:3:"280";s:3:"i s";s:3:"281";s:3:"imw";s:3:"282";s:3:"kal";s:3:"283";s:3:"kwe";s:3:"284";s:3:"lak";s:3:"285";s:3:"lam";s:3:"286";s:3:"mak";s:3:"287";s:3:"msa";s:3:"288";s:3:"ne ";s:3:"289";s:3:"ngu";s:3:"290";s:3:"ru ";s:3:"291";s:3:"sal";s:3:"292";s:3:"swa";s:3:"293";s:3:"te ";s:3:"294";s:3:"ti ";s:3:"295";s:3:"uku";s:3:"296";s:3:"uma";s:3:"297";s:3:"una";s:3:"298";s:3:"uru";s:3:"299";}s:7:"swedish";a:300:{s:3:"en ";s:1:"0";s:3:" de";s:1:"1";s:3:"et ";s:1:"2";s:3:"er ";s:1:"3";s:3:"tt ";s:1:"4";s:3:"om ";s:1:"5";s:4:"för";s:1:"6";s:3:"ar ";s:1:"7";s:3:"de ";s:1:"8";s:3:"att";s:1:"9";s:4:" fö";s:2:"10";s:3:"ing";s:2:"11";s:3:" in";s:2:"12";s:3:" at";s:2:"13";s:3:" i ";s:2:"14";s:3:"det";s:2:"15";s:3:"ch ";s:2:"16";s:3:"an ";s:2:"17";s:3:"gen";s:2:"18";s:3:" an";s:2:"19";s:3:"t s";s:2:"20";s:3:"som";s:2:"21";s:3:"te ";s:2:"22";s:3:" oc";s:2:"23";s:3:"ter";s:2:"24";s:3:" ha";s:2:"25";s:3:"lle";s:2:"26";s:3:"och";s:2:"27";s:3:" sk";s:2:"28";s:3:" so";s:2:"29";s:3:"ra ";s:2:"30";s:3:"r a";s:2:"31";s:3:" me";s:2:"32";s:3:"var";s:2:"33";s:3:"nde";s:2:"34";s:4:"är ";s:2:"35";s:3:" ko";s:2:"36";s:3:"on ";s:2:"37";s:3:"ans";s:2:"38";s:3:"int";s:2:"39";s:3:"n s";s:2:"40";s:3:"na ";s:2:"41";s:3:" en";s:2:"42";s:3:" fr";s:2:"43";s:4:" på";s:2:"44";s:3:" st";s:2:"45";s:3:" va";s:2:"46";s:3:"and";s:2:"47";s:3:"nte";s:2:"48";s:4:"på ";s:2:"49";s:3:"ska";s:2:"50";s:3:"ta ";s:2:"51";s:3:" vi";s:2:"52";s:3:"der";s:2:"53";s:4:"äll";s:2:"54";s:4:"örs";s:2:"55";s:3:" om";s:2:"56";s:3:"da ";s:2:"57";s:3:"kri";s:2:"58";s:3:"ka ";s:2:"59";s:3:"nst";s:2:"60";s:3:" ho";s:2:"61";s:3:"as ";s:2:"62";s:4:"stä";s:2:"63";s:3:"r d";s:2:"64";s:3:"t f";s:2:"65";s:3:"upp";s:2:"66";s:3:" be";s:2:"67";s:3:"nge";s:2:"68";s:3:"r s";s:2:"69";s:3:"tal";s:2:"70";s:4:"täl";s:2:"71";s:4:"ör ";s:2:"72";s:3:" av";s:2:"73";s:3:"ger";s:2:"74";s:3:"ill";s:2:"75";s:3:"ng ";s:2:"76";s:3:"e s";s:2:"77";s:3:"ekt";s:2:"78";s:3:"ade";s:2:"79";s:3:"era";s:2:"80";s:3:"ers";s:2:"81";s:3:"har";s:2:"82";s:3:"ll ";s:2:"83";s:3:"lld";s:2:"84";s:3:"rin";s:2:"85";s:3:"rna";s:2:"86";s:4:"säk";s:2:"87";s:3:"und";s:2:"88";s:3:"inn";s:2:"89";s:3:"lig";s:2:"90";s:3:"ns ";s:2:"91";s:3:" ma";s:2:"92";s:3:" pr";s:2:"93";s:3:" up";s:2:"94";s:3:"age";s:2:"95";s:3:"av ";s:2:"96";s:3:"iva";s:2:"97";s:3:"kti";s:2:"98";s:3:"lda";s:2:"99";s:3:"orn";s:3:"100";s:3:"son";s:3:"101";s:3:"ts ";s:3:"102";s:3:"tta";s:3:"103";s:4:"äkr";s:3:"104";s:3:" sj";s:3:"105";s:3:" ti";s:3:"106";s:3:"avt";s:3:"107";s:3:"ber";s:3:"108";s:3:"els";s:3:"109";s:3:"eta";s:3:"110";s:3:"kol";s:3:"111";s:3:"men";s:3:"112";s:3:"n d";s:3:"113";s:3:"t k";s:3:"114";s:3:"vta";s:3:"115";s:4:"år ";s:3:"116";s:3:"juk";s:3:"117";s:3:"man";s:3:"118";s:3:"n f";s:3:"119";s:3:"nin";s:3:"120";s:3:"r i";s:3:"121";s:4:"rsä";s:3:"122";s:3:"sju";s:3:"123";s:3:"sso";s:3:"124";s:4:" är";s:3:"125";s:3:"a s";s:3:"126";s:3:"ach";s:3:"127";s:3:"ag ";s:3:"128";s:3:"bac";s:3:"129";s:3:"den";s:3:"130";s:3:"ett";s:3:"131";s:3:"fte";s:3:"132";s:3:"hor";s:3:"133";s:3:"nba";s:3:"134";s:3:"oll";s:3:"135";s:3:"rnb";s:3:"136";s:3:"ste";s:3:"137";s:3:"til";s:3:"138";s:3:" ef";s:3:"139";s:3:" si";s:3:"140";s:3:"a a";s:3:"141";s:3:"e h";s:3:"142";s:3:"ed ";s:3:"143";s:3:"eft";s:3:"144";s:3:"ga ";s:3:"145";s:3:"ig ";s:3:"146";s:3:"it ";s:3:"147";s:3:"ler";s:3:"148";s:3:"med";s:3:"149";s:3:"n i";s:3:"150";s:3:"nd ";s:3:"151";s:4:"så ";s:3:"152";s:3:"tiv";s:3:"153";s:3:" bl";s:3:"154";s:3:" et";s:3:"155";s:3:" fi";s:3:"156";s:4:" sä";s:3:"157";s:3:"at ";s:3:"158";s:3:"des";s:3:"159";s:3:"e a";s:3:"160";s:3:"gar";s:3:"161";s:3:"get";s:3:"162";s:3:"lan";s:3:"163";s:3:"lss";s:3:"164";s:3:"ost";s:3:"165";s:3:"r b";s:3:"166";s:3:"r e";s:3:"167";s:3:"re ";s:3:"168";s:3:"ret";s:3:"169";s:3:"sta";s:3:"170";s:3:"t i";s:3:"171";s:3:" ge";s:3:"172";s:3:" he";s:3:"173";s:3:" re";s:3:"174";s:3:"a f";s:3:"175";s:3:"all";s:3:"176";s:3:"bos";s:3:"177";s:3:"ets";s:3:"178";s:3:"lek";s:3:"179";s:3:"let";s:3:"180";s:3:"ner";s:3:"181";s:3:"nna";s:3:"182";s:3:"nne";s:3:"183";s:3:"r f";s:3:"184";s:3:"rit";s:3:"185";s:3:"s s";s:3:"186";s:3:"sen";s:3:"187";s:3:"sto";s:3:"188";s:3:"tor";s:3:"189";s:3:"vav";s:3:"190";s:3:"ygg";s:3:"191";s:3:" ka";s:3:"192";s:4:" så";s:3:"193";s:3:" tr";s:3:"194";s:3:" ut";s:3:"195";s:3:"ad ";s:3:"196";s:3:"al ";s:3:"197";s:3:"are";s:3:"198";s:3:"e o";s:3:"199";s:3:"gon";s:3:"200";s:3:"kom";s:3:"201";s:3:"n a";s:3:"202";s:3:"n h";s:3:"203";s:3:"nga";s:3:"204";s:3:"r h";s:3:"205";s:3:"ren";s:3:"206";s:3:"t d";s:3:"207";s:3:"tag";s:3:"208";s:3:"tar";s:3:"209";s:3:"tre";s:3:"210";s:4:"ätt";s:3:"211";s:4:" få";s:3:"212";s:4:" hä";s:3:"213";s:3:" se";s:3:"214";s:3:"a d";s:3:"215";s:3:"a i";s:3:"216";s:3:"a p";s:3:"217";s:3:"ale";s:3:"218";s:3:"ann";s:3:"219";s:3:"ara";s:3:"220";s:3:"byg";s:3:"221";s:3:"gt ";s:3:"222";s:3:"han";s:3:"223";s:3:"igt";s:3:"224";s:3:"kan";s:3:"225";s:3:"la ";s:3:"226";s:3:"n o";s:3:"227";s:3:"nom";s:3:"228";s:3:"nsk";s:3:"229";s:3:"omm";s:3:"230";s:3:"r k";s:3:"231";s:3:"r p";s:3:"232";s:3:"r v";s:3:"233";s:3:"s f";s:3:"234";s:3:"s k";s:3:"235";s:3:"t a";s:3:"236";s:3:"t p";s:3:"237";s:3:"ver";s:3:"238";s:3:" bo";s:3:"239";s:3:" br";s:3:"240";s:3:" ku";s:3:"241";s:4:" nå";s:3:"242";s:3:"a b";s:3:"243";s:3:"a e";s:3:"244";s:3:"del";s:3:"245";s:3:"ens";s:3:"246";s:3:"es ";s:3:"247";s:3:"fin";s:3:"248";s:3:"ige";s:3:"249";s:3:"m s";s:3:"250";s:3:"n p";s:3:"251";s:4:"någ";s:3:"252";s:3:"or ";s:3:"253";s:3:"r o";s:3:"254";s:3:"rbe";s:3:"255";s:3:"rs ";s:3:"256";s:3:"rt ";s:3:"257";s:3:"s a";s:3:"258";s:3:"s n";s:3:"259";s:3:"skr";s:3:"260";s:3:"t o";s:3:"261";s:3:"ten";s:3:"262";s:3:"tio";s:3:"263";s:3:"ven";s:3:"264";s:3:" al";s:3:"265";s:3:" ja";s:3:"266";s:3:" p ";s:3:"267";s:3:" r ";s:3:"268";s:3:" sa";s:3:"269";s:3:"a h";s:3:"270";s:3:"bet";s:3:"271";s:3:"cke";s:3:"272";s:3:"dra";s:3:"273";s:3:"e f";s:3:"274";s:3:"e i";s:3:"275";s:3:"eda";s:3:"276";s:3:"eno";s:3:"277";s:4:"erä";s:3:"278";s:3:"ess";s:3:"279";s:3:"ion";s:3:"280";s:3:"jag";s:3:"281";s:3:"m f";s:3:"282";s:3:"ne ";s:3:"283";s:3:"nns";s:3:"284";s:3:"pro";s:3:"285";s:3:"r t";s:3:"286";s:3:"rar";s:3:"287";s:3:"riv";s:3:"288";s:4:"rät";s:3:"289";s:3:"t e";s:3:"290";s:3:"t t";s:3:"291";s:3:"ust";s:3:"292";s:3:"vad";s:3:"293";s:4:"öre";s:3:"294";s:3:" ar";s:3:"295";s:3:" by";s:3:"296";s:3:" kr";s:3:"297";s:3:" mi";s:3:"298";s:3:"arb";s:3:"299";}s:7:"tagalog";a:300:{s:3:"ng ";s:1:"0";s:3:"ang";s:1:"1";s:3:" na";s:1:"2";s:3:" sa";s:1:"3";s:3:"an ";s:1:"4";s:3:"nan";s:1:"5";s:3:"sa ";s:1:"6";s:3:"na ";s:1:"7";s:3:" ma";s:1:"8";s:3:" ca";s:1:"9";s:3:"ay ";s:2:"10";s:3:"n g";s:2:"11";s:3:" an";s:2:"12";s:3:"ong";s:2:"13";s:3:" ga";s:2:"14";s:3:"at ";s:2:"15";s:3:" pa";s:2:"16";s:3:"ala";s:2:"17";s:3:" si";s:2:"18";s:3:"a n";s:2:"19";s:3:"ga ";s:2:"20";s:3:"g n";s:2:"21";s:3:"g m";s:2:"22";s:3:"ito";s:2:"23";s:3:"g c";s:2:"24";s:3:"man";s:2:"25";s:3:"san";s:2:"26";s:3:"g s";s:2:"27";s:3:"ing";s:2:"28";s:3:"to ";s:2:"29";s:3:"ila";s:2:"30";s:3:"ina";s:2:"31";s:3:" di";s:2:"32";s:3:" ta";s:2:"33";s:3:"aga";s:2:"34";s:3:"iya";s:2:"35";s:3:"aca";s:2:"36";s:3:"g t";s:2:"37";s:3:" at";s:2:"38";s:3:"aya";s:2:"39";s:3:"ama";s:2:"40";s:3:"lan";s:2:"41";s:3:"a a";s:2:"42";s:3:"qui";s:2:"43";s:3:"a c";s:2:"44";s:3:"a s";s:2:"45";s:3:"nag";s:2:"46";s:3:" ba";s:2:"47";s:3:"g i";s:2:"48";s:3:"tan";s:2:"49";s:3:"'t ";s:2:"50";s:3:" cu";s:2:"51";s:3:"aua";s:2:"52";s:3:"g p";s:2:"53";s:3:" ni";s:2:"54";s:3:"os ";s:2:"55";s:3:"'y ";s:2:"56";s:3:"a m";s:2:"57";s:3:" n ";s:2:"58";s:3:"la ";s:2:"59";s:3:" la";s:2:"60";s:3:"o n";s:2:"61";s:3:"yan";s:2:"62";s:3:" ay";s:2:"63";s:3:"usa";s:2:"64";s:3:"cay";s:2:"65";s:3:"on ";s:2:"66";s:3:"ya ";s:2:"67";s:3:" it";s:2:"68";s:3:"al ";s:2:"69";s:3:"apa";s:2:"70";s:3:"ata";s:2:"71";s:3:"t n";s:2:"72";s:3:"uan";s:2:"73";s:3:"aha";s:2:"74";s:3:"asa";s:2:"75";s:3:"pag";s:2:"76";s:3:" gu";s:2:"77";s:3:"g l";s:2:"78";s:3:"di ";s:2:"79";s:3:"mag";s:2:"80";s:3:"aba";s:2:"81";s:3:"g a";s:2:"82";s:3:"ara";s:2:"83";s:3:"a p";s:2:"84";s:3:"in ";s:2:"85";s:3:"ana";s:2:"86";s:3:"it ";s:2:"87";s:3:"si ";s:2:"88";s:3:"cus";s:2:"89";s:3:"g b";s:2:"90";s:3:"uin";s:2:"91";s:3:"a t";s:2:"92";s:3:"as ";s:2:"93";s:3:"n n";s:2:"94";s:3:"hin";s:2:"95";s:3:" hi";s:2:"96";s:3:"a't";s:2:"97";s:3:"ali";s:2:"98";s:3:" bu";s:2:"99";s:3:"gan";s:3:"100";s:3:"uma";s:3:"101";s:3:"a d";s:3:"102";s:3:"agc";s:3:"103";s:3:"aqu";s:3:"104";s:3:"g d";s:3:"105";s:3:" tu";s:3:"106";s:3:"aon";s:3:"107";s:3:"ari";s:3:"108";s:3:"cas";s:3:"109";s:3:"i n";s:3:"110";s:3:"niy";s:3:"111";s:3:"pin";s:3:"112";s:3:"a i";s:3:"113";s:3:"gca";s:3:"114";s:3:"siy";s:3:"115";s:3:"a'y";s:3:"116";s:3:"yao";s:3:"117";s:3:"ag ";s:3:"118";s:3:"ca ";s:3:"119";s:3:"han";s:3:"120";s:3:"ili";s:3:"121";s:3:"pan";s:3:"122";s:3:"sin";s:3:"123";s:3:"ual";s:3:"124";s:3:"n s";s:3:"125";s:3:"nam";s:3:"126";s:3:" lu";s:3:"127";s:3:"can";s:3:"128";s:3:"dit";s:3:"129";s:3:"gui";s:3:"130";s:3:"y n";s:3:"131";s:3:"gal";s:3:"132";s:3:"hat";s:3:"133";s:3:"nal";s:3:"134";s:3:" is";s:3:"135";s:3:"bag";s:3:"136";s:3:"fra";s:3:"137";s:3:" fr";s:3:"138";s:3:" su";s:3:"139";s:3:"a l";s:3:"140";s:3:" co";s:3:"141";s:3:"ani";s:3:"142";s:3:" bi";s:3:"143";s:3:" da";s:3:"144";s:3:"alo";s:3:"145";s:3:"isa";s:3:"146";s:3:"ita";s:3:"147";s:3:"may";s:3:"148";s:3:"o s";s:3:"149";s:3:"sil";s:3:"150";s:3:"una";s:3:"151";s:3:" in";s:3:"152";s:3:" pi";s:3:"153";s:3:"l n";s:3:"154";s:3:"nil";s:3:"155";s:3:"o a";s:3:"156";s:3:"pat";s:3:"157";s:3:"sac";s:3:"158";s:3:"t s";s:3:"159";s:3:" ua";s:3:"160";s:3:"agu";s:3:"161";s:3:"ail";s:3:"162";s:3:"bin";s:3:"163";s:3:"dal";s:3:"164";s:3:"g h";s:3:"165";s:3:"ndi";s:3:"166";s:3:"oon";s:3:"167";s:3:"ua ";s:3:"168";s:3:" ha";s:3:"169";s:3:"ind";s:3:"170";s:3:"ran";s:3:"171";s:3:"s n";s:3:"172";s:3:"tin";s:3:"173";s:3:"ulo";s:3:"174";s:3:"eng";s:3:"175";s:3:"g f";s:3:"176";s:3:"ini";s:3:"177";s:3:"lah";s:3:"178";s:3:"lo ";s:3:"179";s:3:"rai";s:3:"180";s:3:"rin";s:3:"181";s:3:"ton";s:3:"182";s:3:"g u";s:3:"183";s:3:"inu";s:3:"184";s:3:"lon";s:3:"185";s:3:"o'y";s:3:"186";s:3:"t a";s:3:"187";s:3:" ar";s:3:"188";s:3:"a b";s:3:"189";s:3:"ad ";s:3:"190";s:3:"bay";s:3:"191";s:3:"cal";s:3:"192";s:3:"gya";s:3:"193";s:3:"ile";s:3:"194";s:3:"mat";s:3:"195";s:3:"n a";s:3:"196";s:3:"pau";s:3:"197";s:3:"ra ";s:3:"198";s:3:"tay";s:3:"199";s:3:"y m";s:3:"200";s:3:"ant";s:3:"201";s:3:"ban";s:3:"202";s:3:"i m";s:3:"203";s:3:"nas";s:3:"204";s:3:"nay";s:3:"205";s:3:"no ";s:3:"206";s:3:"sti";s:3:"207";s:3:" ti";s:3:"208";s:3:"ags";s:3:"209";s:3:"g g";s:3:"210";s:3:"ta ";s:3:"211";s:3:"uit";s:3:"212";s:3:"uno";s:3:"213";s:3:" ib";s:3:"214";s:3:" ya";s:3:"215";s:3:"a u";s:3:"216";s:3:"abi";s:3:"217";s:3:"ati";s:3:"218";s:3:"cap";s:3:"219";s:3:"ig ";s:3:"220";s:3:"is ";s:3:"221";s:3:"la'";s:3:"222";s:3:" do";s:3:"223";s:3:" pu";s:3:"224";s:3:"api";s:3:"225";s:3:"ayo";s:3:"226";s:3:"gos";s:3:"227";s:3:"gul";s:3:"228";s:3:"lal";s:3:"229";s:3:"tag";s:3:"230";s:3:"til";s:3:"231";s:3:"tun";s:3:"232";s:3:"y c";s:3:"233";s:3:"y s";s:3:"234";s:3:"yon";s:3:"235";s:3:"ano";s:3:"236";s:3:"bur";s:3:"237";s:3:"iba";s:3:"238";s:3:"isi";s:3:"239";s:3:"lam";s:3:"240";s:3:"nac";s:3:"241";s:3:"nat";s:3:"242";s:3:"ni ";s:3:"243";s:3:"nto";s:3:"244";s:3:"od ";s:3:"245";s:3:"pa ";s:3:"246";s:3:"rgo";s:3:"247";s:3:"urg";s:3:"248";s:3:" m ";s:3:"249";s:3:"adr";s:3:"250";s:3:"ast";s:3:"251";s:3:"cag";s:3:"252";s:3:"gay";s:3:"253";s:3:"gsi";s:3:"254";s:3:"i p";s:3:"255";s:3:"ino";s:3:"256";s:3:"len";s:3:"257";s:3:"lin";s:3:"258";s:3:"m g";s:3:"259";s:3:"mar";s:3:"260";s:3:"nah";s:3:"261";s:3:"to'";s:3:"262";s:3:" de";s:3:"263";s:3:"a h";s:3:"264";s:3:"cat";s:3:"265";s:3:"cau";s:3:"266";s:3:"con";s:3:"267";s:3:"iqu";s:3:"268";s:3:"lac";s:3:"269";s:3:"mab";s:3:"270";s:3:"min";s:3:"271";s:3:"og ";s:3:"272";s:3:"par";s:3:"273";s:3:"sal";s:3:"274";s:3:" za";s:3:"275";s:3:"ao ";s:3:"276";s:3:"doo";s:3:"277";s:3:"ipi";s:3:"278";s:3:"nod";s:3:"279";s:3:"nte";s:3:"280";s:3:"uha";s:3:"281";s:3:"ula";s:3:"282";s:3:" re";s:3:"283";s:3:"ill";s:3:"284";s:3:"lit";s:3:"285";s:3:"mac";s:3:"286";s:3:"nit";s:3:"287";s:3:"o't";s:3:"288";s:3:"or ";s:3:"289";s:3:"ora";s:3:"290";s:3:"sum";s:3:"291";s:3:"y p";s:3:"292";s:3:" al";s:3:"293";s:3:" mi";s:3:"294";s:3:" um";s:3:"295";s:3:"aco";s:3:"296";s:3:"ada";s:3:"297";s:3:"agd";s:3:"298";s:3:"cab";s:3:"299";}s:7:"turkish";a:300:{s:3:"lar";s:1:"0";s:3:"en ";s:1:"1";s:3:"ler";s:1:"2";s:3:"an ";s:1:"3";s:3:"in ";s:1:"4";s:3:" bi";s:1:"5";s:3:" ya";s:1:"6";s:3:"eri";s:1:"7";s:3:"de ";s:1:"8";s:3:" ka";s:1:"9";s:3:"ir ";s:2:"10";s:4:"arı";s:2:"11";s:3:" ba";s:2:"12";s:3:" de";s:2:"13";s:3:" ha";s:2:"14";s:4:"ın ";s:2:"15";s:3:"ara";s:2:"16";s:3:"bir";s:2:"17";s:3:" ve";s:2:"18";s:3:" sa";s:2:"19";s:3:"ile";s:2:"20";s:3:"le ";s:2:"21";s:3:"nde";s:2:"22";s:3:"da ";s:2:"23";s:3:" bu";s:2:"24";s:3:"ana";s:2:"25";s:3:"ini";s:2:"26";s:5:"ını";s:2:"27";s:3:"er ";s:2:"28";s:3:"ve ";s:2:"29";s:4:" yı";s:2:"30";s:3:"lma";s:2:"31";s:4:"yıl";s:2:"32";s:3:" ol";s:2:"33";s:3:"ar ";s:2:"34";s:3:"n b";s:2:"35";s:3:"nda";s:2:"36";s:3:"aya";s:2:"37";s:3:"li ";s:2:"38";s:4:"ası";s:2:"39";s:3:" ge";s:2:"40";s:3:"ind";s:2:"41";s:3:"n k";s:2:"42";s:3:"esi";s:2:"43";s:3:"lan";s:2:"44";s:3:"nla";s:2:"45";s:3:"ak ";s:2:"46";s:4:"anı";s:2:"47";s:3:"eni";s:2:"48";s:3:"ni ";s:2:"49";s:4:"nı ";s:2:"50";s:4:"rın";s:2:"51";s:3:"san";s:2:"52";s:3:" ko";s:2:"53";s:3:" ye";s:2:"54";s:3:"maz";s:2:"55";s:4:"baş";s:2:"56";s:3:"ili";s:2:"57";s:3:"rin";s:2:"58";s:4:"alı";s:2:"59";s:3:"az ";s:2:"60";s:3:"hal";s:2:"61";s:4:"ınd";s:2:"62";s:3:" da";s:2:"63";s:4:" gü";s:2:"64";s:3:"ele";s:2:"65";s:4:"ılm";s:2:"66";s:6:"ığı";s:2:"67";s:3:"eki";s:2:"68";s:4:"gün";s:2:"69";s:3:"i b";s:2:"70";s:4:"içi";s:2:"71";s:3:"den";s:2:"72";s:3:"kar";s:2:"73";s:3:"si ";s:2:"74";s:3:" il";s:2:"75";s:3:"e y";s:2:"76";s:3:"na ";s:2:"77";s:3:"yor";s:2:"78";s:3:"ek ";s:2:"79";s:3:"n s";s:2:"80";s:4:" iç";s:2:"81";s:3:"bu ";s:2:"82";s:3:"e b";s:2:"83";s:3:"im ";s:2:"84";s:3:"ki ";s:2:"85";s:3:"len";s:2:"86";s:3:"ri ";s:2:"87";s:4:"sın";s:2:"88";s:3:" so";s:2:"89";s:4:"ün ";s:2:"90";s:3:" ta";s:2:"91";s:3:"nin";s:2:"92";s:4:"iği";s:2:"93";s:3:"tan";s:2:"94";s:3:"yan";s:2:"95";s:3:" si";s:2:"96";s:3:"nat";s:2:"97";s:4:"nın";s:2:"98";s:3:"kan";s:2:"99";s:4:"rı ";s:3:"100";s:4:"çin";s:3:"101";s:5:"ğı ";s:3:"102";s:3:"eli";s:3:"103";s:3:"n a";s:3:"104";s:4:"ır ";s:3:"105";s:3:" an";s:3:"106";s:3:"ine";s:3:"107";s:3:"n y";s:3:"108";s:3:"ola";s:3:"109";s:3:" ar";s:3:"110";s:3:"al ";s:3:"111";s:3:"e s";s:3:"112";s:3:"lik";s:3:"113";s:3:"n d";s:3:"114";s:3:"sin";s:3:"115";s:3:" al";s:3:"116";s:4:" dü";s:3:"117";s:3:"anl";s:3:"118";s:3:"ne ";s:3:"119";s:3:"ya ";s:3:"120";s:4:"ım ";s:3:"121";s:4:"ına";s:3:"122";s:3:" be";s:3:"123";s:3:"ada";s:3:"124";s:3:"ala";s:3:"125";s:3:"ama";s:3:"126";s:3:"ilm";s:3:"127";s:3:"or ";s:3:"128";s:4:"sı ";s:3:"129";s:3:"yen";s:3:"130";s:3:" me";s:3:"131";s:4:"atı";s:3:"132";s:3:"di ";s:3:"133";s:3:"eti";s:3:"134";s:3:"ken";s:3:"135";s:3:"la ";s:3:"136";s:4:"lı ";s:3:"137";s:3:"oru";s:3:"138";s:4:" gö";s:3:"139";s:3:" in";s:3:"140";s:3:"and";s:3:"141";s:3:"e d";s:3:"142";s:3:"men";s:3:"143";s:3:"un ";s:3:"144";s:4:"öne";s:3:"145";s:3:"a d";s:3:"146";s:3:"at ";s:3:"147";s:3:"e a";s:3:"148";s:3:"e g";s:3:"149";s:3:"yar";s:3:"150";s:3:" ku";s:3:"151";s:4:"ayı";s:3:"152";s:3:"dan";s:3:"153";s:3:"edi";s:3:"154";s:3:"iri";s:3:"155";s:5:"ünü";s:3:"156";s:4:"ği ";s:3:"157";s:5:"ılı";s:3:"158";s:3:"eme";s:3:"159";s:4:"eği";s:3:"160";s:3:"i k";s:3:"161";s:3:"i y";s:3:"162";s:4:"ıla";s:3:"163";s:4:" ça";s:3:"164";s:3:"a y";s:3:"165";s:3:"alk";s:3:"166";s:4:"dı ";s:3:"167";s:3:"ede";s:3:"168";s:3:"el ";s:3:"169";s:4:"ndı";s:3:"170";s:3:"ra ";s:3:"171";s:4:"üne";s:3:"172";s:4:" sü";s:3:"173";s:4:"dır";s:3:"174";s:3:"e k";s:3:"175";s:3:"ere";s:3:"176";s:3:"ik ";s:3:"177";s:3:"imi";s:3:"178";s:4:"işi";s:3:"179";s:3:"mas";s:3:"180";s:3:"n h";s:3:"181";s:4:"sür";s:3:"182";s:3:"yle";s:3:"183";s:3:" ad";s:3:"184";s:3:" fi";s:3:"185";s:3:" gi";s:3:"186";s:3:" se";s:3:"187";s:3:"a k";s:3:"188";s:3:"arl";s:3:"189";s:5:"aşı";s:3:"190";s:3:"iyo";s:3:"191";s:3:"kla";s:3:"192";s:5:"lığ";s:3:"193";s:3:"nem";s:3:"194";s:3:"ney";s:3:"195";s:3:"rme";s:3:"196";s:3:"ste";s:3:"197";s:4:"tı ";s:3:"198";s:3:"unl";s:3:"199";s:3:"ver";s:3:"200";s:4:" sı";s:3:"201";s:3:" te";s:3:"202";s:3:" to";s:3:"203";s:3:"a s";s:3:"204";s:4:"aşk";s:3:"205";s:3:"ekl";s:3:"206";s:3:"end";s:3:"207";s:3:"kal";s:3:"208";s:4:"liğ";s:3:"209";s:3:"min";s:3:"210";s:4:"tır";s:3:"211";s:3:"ulu";s:3:"212";s:3:"unu";s:3:"213";s:3:"yap";s:3:"214";s:3:"ye ";s:3:"215";s:4:"ı i";s:3:"216";s:4:"şka";s:3:"217";s:5:"ştı";s:3:"218";s:4:" bü";s:3:"219";s:3:" ke";s:3:"220";s:3:" ki";s:3:"221";s:3:"ard";s:3:"222";s:3:"art";s:3:"223";s:4:"aşa";s:3:"224";s:3:"n i";s:3:"225";s:3:"ndi";s:3:"226";s:3:"ti ";s:3:"227";s:3:"top";s:3:"228";s:4:"ı b";s:3:"229";s:3:" va";s:3:"230";s:4:" ön";s:3:"231";s:3:"aki";s:3:"232";s:3:"cak";s:3:"233";s:3:"ey ";s:3:"234";s:3:"fil";s:3:"235";s:3:"isi";s:3:"236";s:3:"kle";s:3:"237";s:3:"kur";s:3:"238";s:3:"man";s:3:"239";s:3:"nce";s:3:"240";s:3:"nle";s:3:"241";s:3:"nun";s:3:"242";s:3:"rak";s:3:"243";s:4:"ık ";s:3:"244";s:3:" en";s:3:"245";s:3:" yo";s:3:"246";s:3:"a g";s:3:"247";s:3:"lis";s:3:"248";s:3:"mak";s:3:"249";s:3:"n g";s:3:"250";s:3:"tir";s:3:"251";s:3:"yas";s:3:"252";s:4:" iş";s:3:"253";s:4:" yö";s:3:"254";s:3:"ale";s:3:"255";s:3:"bil";s:3:"256";s:3:"bul";s:3:"257";s:3:"et ";s:3:"258";s:3:"i d";s:3:"259";s:3:"iye";s:3:"260";s:3:"kil";s:3:"261";s:3:"ma ";s:3:"262";s:3:"n e";s:3:"263";s:3:"n t";s:3:"264";s:3:"nu ";s:3:"265";s:3:"olu";s:3:"266";s:3:"rla";s:3:"267";s:3:"te ";s:3:"268";s:4:"yön";s:3:"269";s:5:"çık";s:3:"270";s:3:" ay";s:3:"271";s:4:" mü";s:3:"272";s:4:" ço";s:3:"273";s:5:" çı";s:3:"274";s:3:"a a";s:3:"275";s:3:"a b";s:3:"276";s:3:"ata";s:3:"277";s:3:"der";s:3:"278";s:3:"gel";s:3:"279";s:3:"i g";s:3:"280";s:3:"i i";s:3:"281";s:3:"ill";s:3:"282";s:3:"ist";s:3:"283";s:4:"ldı";s:3:"284";s:3:"lu ";s:3:"285";s:3:"mek";s:3:"286";s:3:"mle";s:3:"287";s:4:"n ç";s:3:"288";s:3:"onu";s:3:"289";s:3:"opl";s:3:"290";s:3:"ran";s:3:"291";s:3:"rat";s:3:"292";s:4:"rdı";s:3:"293";s:3:"rke";s:3:"294";s:3:"siy";s:3:"295";s:3:"son";s:3:"296";s:3:"ta ";s:3:"297";s:5:"tçı";s:3:"298";s:4:"tın";s:3:"299";}s:9:"ukrainian";a:300:{s:5:" на";s:1:"0";s:5:" за";s:1:"1";s:6:"ння";s:1:"2";s:5:"ня ";s:1:"3";s:5:"на ";s:1:"4";s:5:" пр";s:1:"5";s:6:"ого";s:1:"6";s:5:"го ";s:1:"7";s:6:"ськ";s:1:"8";s:5:" по";s:1:"9";s:4:" у ";s:2:"10";s:6:"від";s:2:"11";s:6:"ере";s:2:"12";s:5:" мі";s:2:"13";s:5:" не";s:2:"14";s:5:"их ";s:2:"15";s:5:"ть ";s:2:"16";s:6:"пер";s:2:"17";s:5:" ві";s:2:"18";s:5:"ів ";s:2:"19";s:5:" пе";s:2:"20";s:5:" що";s:2:"21";s:6:"льн";s:2:"22";s:5:"ми ";s:2:"23";s:5:"ні ";s:2:"24";s:5:"не ";s:2:"25";s:5:"ти ";s:2:"26";s:6:"ати";s:2:"27";s:6:"енн";s:2:"28";s:6:"міс";s:2:"29";s:6:"пра";s:2:"30";s:6:"ува";s:2:"31";s:6:"ник";s:2:"32";s:6:"про";s:2:"33";s:6:"рав";s:2:"34";s:6:"івн";s:2:"35";s:5:" та";s:2:"36";s:6:"буд";s:2:"37";s:6:"влі";s:2:"38";s:6:"рів";s:2:"39";s:5:" ко";s:2:"40";s:5:" рі";s:2:"41";s:6:"аль";s:2:"42";s:5:"но ";s:2:"43";s:6:"ому";s:2:"44";s:5:"що ";s:2:"45";s:5:" ви";s:2:"46";s:5:"му ";s:2:"47";s:6:"рев";s:2:"48";s:5:"ся ";s:2:"49";s:6:"інн";s:2:"50";s:5:" до";s:2:"51";s:5:" уп";s:2:"52";s:6:"авл";s:2:"53";s:6:"анн";s:2:"54";s:6:"ком";s:2:"55";s:5:"ли ";s:2:"56";s:6:"лін";s:2:"57";s:6:"ног";s:2:"58";s:6:"упр";s:2:"59";s:5:" бу";s:2:"60";s:4:" з ";s:2:"61";s:5:" ро";s:2:"62";s:5:"за ";s:2:"63";s:5:"и н";s:2:"64";s:6:"нов";s:2:"65";s:6:"оро";s:2:"66";s:6:"ост";s:2:"67";s:6:"ста";s:2:"68";s:5:"ті ";s:2:"69";s:6:"ють";s:2:"70";s:5:" мо";s:2:"71";s:5:" ні";s:2:"72";s:5:" як";s:2:"73";s:6:"бор";s:2:"74";s:5:"ва ";s:2:"75";s:6:"ван";s:2:"76";s:6:"ень";s:2:"77";s:5:"и п";s:2:"78";s:5:"нь ";s:2:"79";s:6:"ові";s:2:"80";s:6:"рон";s:2:"81";s:6:"сті";s:2:"82";s:5:"та ";s:2:"83";s:5:"у в";s:2:"84";s:6:"ько";s:2:"85";s:6:"іст";s:2:"86";s:4:" в ";s:2:"87";s:5:" ре";s:2:"88";s:5:"до ";s:2:"89";s:5:"е п";s:2:"90";s:6:"заб";s:2:"91";s:5:"ий ";s:2:"92";s:6:"нсь";s:2:"93";s:5:"о в";s:2:"94";s:5:"о п";s:2:"95";s:6:"при";s:2:"96";s:5:"і п";s:2:"97";s:5:" ку";s:2:"98";s:5:" пі";s:2:"99";s:5:" сп";s:3:"100";s:5:"а п";s:3:"101";s:6:"або";s:3:"102";s:6:"анс";s:3:"103";s:6:"аці";s:3:"104";s:6:"ват";s:3:"105";s:6:"вни";s:3:"106";s:5:"и в";s:3:"107";s:6:"ими";s:3:"108";s:5:"ка ";s:3:"109";s:6:"нен";s:3:"110";s:6:"ніч";s:3:"111";s:6:"она";s:3:"112";s:5:"ої ";s:3:"113";s:6:"пов";s:3:"114";s:6:"ьки";s:3:"115";s:6:"ьно";s:3:"116";s:6:"ізн";s:3:"117";s:6:"ічн";s:3:"118";s:5:" ав";s:3:"119";s:5:" ма";s:3:"120";s:5:" ор";s:3:"121";s:5:" су";s:3:"122";s:5:" чи";s:3:"123";s:5:" ін";s:3:"124";s:5:"а з";s:3:"125";s:5:"ам ";s:3:"126";s:5:"ає ";s:3:"127";s:6:"вне";s:3:"128";s:6:"вто";s:3:"129";s:6:"дом";s:3:"130";s:6:"ент";s:3:"131";s:6:"жит";s:3:"132";s:6:"зни";s:3:"133";s:5:"им ";s:3:"134";s:6:"итл";s:3:"135";s:5:"ла ";s:3:"136";s:6:"них";s:3:"137";s:6:"ниц";s:3:"138";s:6:"ова";s:3:"139";s:6:"ови";s:3:"140";s:5:"ом ";s:3:"141";s:6:"пор";s:3:"142";s:6:"тьс";s:3:"143";s:5:"у р";s:3:"144";s:6:"ься";s:3:"145";s:6:"ідо";s:3:"146";s:6:"іль";s:3:"147";s:6:"ісь";s:3:"148";s:5:" ва";s:3:"149";s:5:" ді";s:3:"150";s:5:" жи";s:3:"151";s:5:" че";s:3:"152";s:4:" і ";s:3:"153";s:5:"а в";s:3:"154";s:5:"а н";s:3:"155";s:6:"али";s:3:"156";s:6:"вез";s:3:"157";s:6:"вно";s:3:"158";s:6:"еве";s:3:"159";s:6:"езе";s:3:"160";s:6:"зен";s:3:"161";s:6:"ицт";s:3:"162";s:5:"ки ";s:3:"163";s:6:"ких";s:3:"164";s:6:"кон";s:3:"165";s:5:"ку ";s:3:"166";s:6:"лас";s:3:"167";s:5:"ля ";s:3:"168";s:6:"мож";s:3:"169";s:6:"нач";s:3:"170";s:6:"ним";s:3:"171";s:6:"ної";s:3:"172";s:5:"о б";s:3:"173";s:6:"ову";s:3:"174";s:6:"оди";s:3:"175";s:5:"ою ";s:3:"176";s:5:"ро ";s:3:"177";s:6:"рок";s:3:"178";s:6:"сно";s:3:"179";s:6:"спо";s:3:"180";s:6:"так";s:3:"181";s:6:"тва";s:3:"182";s:5:"ту ";s:3:"183";s:5:"у п";s:3:"184";s:6:"цтв";s:3:"185";s:6:"ьни";s:3:"186";s:5:"я з";s:3:"187";s:5:"і м";s:3:"188";s:5:"ії ";s:3:"189";s:5:" вс";s:3:"190";s:5:" гр";s:3:"191";s:5:" де";s:3:"192";s:5:" но";s:3:"193";s:5:" па";s:3:"194";s:5:" се";s:3:"195";s:5:" ук";s:3:"196";s:5:" їх";s:3:"197";s:5:"а о";s:3:"198";s:6:"авт";s:3:"199";s:6:"аст";s:3:"200";s:6:"ают";s:3:"201";s:6:"вар";s:3:"202";s:6:"ден";s:3:"203";s:5:"ди ";s:3:"204";s:5:"ду ";s:3:"205";s:6:"зна";s:3:"206";s:5:"и з";s:3:"207";s:6:"ико";s:3:"208";s:6:"ися";s:3:"209";s:6:"ити";s:3:"210";s:6:"ког";s:3:"211";s:6:"мен";s:3:"212";s:6:"ном";s:3:"213";s:5:"ну ";s:3:"214";s:5:"о н";s:3:"215";s:5:"о с";s:3:"216";s:6:"обу";s:3:"217";s:6:"ово";s:3:"218";s:6:"пла";s:3:"219";s:6:"ран";s:3:"220";s:6:"рив";s:3:"221";s:6:"роб";s:3:"222";s:6:"ска";s:3:"223";s:6:"тан";s:3:"224";s:6:"тим";s:3:"225";s:6:"тис";s:3:"226";s:5:"то ";s:3:"227";s:6:"тра";s:3:"228";s:6:"удо";s:3:"229";s:6:"чин";s:3:"230";s:6:"чни";s:3:"231";s:5:"і в";s:3:"232";s:5:"ію ";s:3:"233";s:4:" а ";s:3:"234";s:5:" во";s:3:"235";s:5:" да";s:3:"236";s:5:" кв";s:3:"237";s:5:" ме";s:3:"238";s:5:" об";s:3:"239";s:5:" ск";s:3:"240";s:5:" ти";s:3:"241";s:5:" фі";s:3:"242";s:4:" є ";s:3:"243";s:5:"а р";s:3:"244";s:5:"а с";s:3:"245";s:5:"а у";s:3:"246";s:5:"ак ";s:3:"247";s:6:"ані";s:3:"248";s:6:"арт";s:3:"249";s:6:"асн";s:3:"250";s:5:"в у";s:3:"251";s:6:"вик";s:3:"252";s:6:"віз";s:3:"253";s:6:"дов";s:3:"254";s:6:"дпо";s:3:"255";s:6:"дів";s:3:"256";s:6:"еві";s:3:"257";s:6:"енс";s:3:"258";s:5:"же ";s:3:"259";s:5:"и м";s:3:"260";s:5:"и с";s:3:"261";s:6:"ика";s:3:"262";s:6:"ичн";s:3:"263";s:5:"кі ";s:3:"264";s:6:"ків";s:3:"265";s:6:"між";s:3:"266";s:6:"нан";s:3:"267";s:6:"нос";s:3:"268";s:5:"о у";s:3:"269";s:6:"обл";s:3:"270";s:6:"одн";s:3:"271";s:5:"ок ";s:3:"272";s:6:"оло";s:3:"273";s:6:"отр";s:3:"274";s:6:"рен";s:3:"275";s:6:"рим";s:3:"276";s:6:"роз";s:3:"277";s:5:"сь ";s:3:"278";s:5:"сі ";s:3:"279";s:6:"тла";s:3:"280";s:6:"тів";s:3:"281";s:5:"у з";s:3:"282";s:6:"уго";s:3:"283";s:6:"уді";s:3:"284";s:5:"чи ";s:3:"285";s:5:"ше ";s:3:"286";s:5:"я н";s:3:"287";s:5:"я у";s:3:"288";s:6:"ідп";s:3:"289";s:5:"ій ";s:3:"290";s:6:"іна";s:3:"291";s:5:"ія ";s:3:"292";s:5:" ка";s:3:"293";s:5:" ни";s:3:"294";s:5:" ос";s:3:"295";s:5:" си";s:3:"296";s:5:" то";s:3:"297";s:5:" тр";s:3:"298";s:5:" уг";s:3:"299";}s:4:"urdu";a:300:{s:5:"یں ";s:1:"0";s:5:" کی";s:1:"1";s:5:"کے ";s:1:"2";s:5:" کے";s:1:"3";s:5:"نے ";s:1:"4";s:5:" کہ";s:1:"5";s:5:"ے ک";s:1:"6";s:5:"کی ";s:1:"7";s:6:"میں";s:1:"8";s:5:" می";s:1:"9";s:5:"ہے ";s:2:"10";s:5:"وں ";s:2:"11";s:5:"کہ ";s:2:"12";s:5:" ہے";s:2:"13";s:5:"ان ";s:2:"14";s:6:"ہیں";s:2:"15";s:5:"ور ";s:2:"16";s:5:" کو";s:2:"17";s:5:"یا ";s:2:"18";s:5:" ان";s:2:"19";s:5:" نے";s:2:"20";s:5:"سے ";s:2:"21";s:5:" سے";s:2:"22";s:5:" کر";s:2:"23";s:6:"ستا";s:2:"24";s:5:" او";s:2:"25";s:6:"اور";s:2:"26";s:6:"تان";s:2:"27";s:5:"ر ک";s:2:"28";s:5:"ی ک";s:2:"29";s:5:" اس";s:2:"30";s:5:"ے ا";s:2:"31";s:5:" پا";s:2:"32";s:5:" ہو";s:2:"33";s:5:" پر";s:2:"34";s:5:"رف ";s:2:"35";s:5:" کا";s:2:"36";s:5:"ا ک";s:2:"37";s:5:"ی ا";s:2:"38";s:5:" ہی";s:2:"39";s:5:"در ";s:2:"40";s:5:"کو ";s:2:"41";s:5:" ای";s:2:"42";s:5:"ں ک";s:2:"43";s:5:" مش";s:2:"44";s:5:" مل";s:2:"45";s:5:"ات ";s:2:"46";s:6:"صدر";s:2:"47";s:6:"اکس";s:2:"48";s:6:"شرف";s:2:"49";s:6:"مشر";s:2:"50";s:6:"پاک";s:2:"51";s:6:"کست";s:2:"52";s:5:"ی م";s:2:"53";s:5:" دی";s:2:"54";s:5:" صد";s:2:"55";s:5:" یہ";s:2:"56";s:5:"ا ہ";s:2:"57";s:5:"ن ک";s:2:"58";s:6:"وال";s:2:"59";s:5:"یہ ";s:2:"60";s:5:"ے و";s:2:"61";s:5:" بھ";s:2:"62";s:5:" دو";s:2:"63";s:5:"اس ";s:2:"64";s:5:"ر ا";s:2:"65";s:6:"نہی";s:2:"66";s:5:"کا ";s:2:"67";s:5:"ے س";s:2:"68";s:5:"ئی ";s:2:"69";s:5:"ہ ا";s:2:"70";s:5:"یت ";s:2:"71";s:5:"ے ہ";s:2:"72";s:5:"ت ک";s:2:"73";s:5:" سا";s:2:"74";s:5:"لے ";s:2:"75";s:5:"ہا ";s:2:"76";s:5:"ے ب";s:2:"77";s:5:" وا";s:2:"78";s:5:"ار ";s:2:"79";s:5:"نی ";s:2:"80";s:6:"کہا";s:2:"81";s:5:"ی ہ";s:2:"82";s:5:"ے م";s:2:"83";s:5:" سی";s:2:"84";s:5:" لی";s:2:"85";s:6:"انہ";s:2:"86";s:6:"انی";s:2:"87";s:5:"ر م";s:2:"88";s:5:"ر پ";s:2:"89";s:6:"ریت";s:2:"90";s:5:"ن م";s:2:"91";s:5:"ھا ";s:2:"92";s:5:"یر ";s:2:"93";s:5:" جا";s:2:"94";s:5:" جن";s:2:"95";s:5:"ئے ";s:2:"96";s:5:"پر ";s:2:"97";s:5:"ں ن";s:2:"98";s:5:"ہ ک";s:2:"99";s:5:"ی و";s:3:"100";s:5:"ے د";s:3:"101";s:5:" تو";s:3:"102";s:5:" تھ";s:3:"103";s:5:" گی";s:3:"104";s:6:"ایک";s:3:"105";s:5:"ل ک";s:3:"106";s:5:"نا ";s:3:"107";s:5:"کر ";s:3:"108";s:5:"ں م";s:3:"109";s:5:"یک ";s:3:"110";s:5:" با";s:3:"111";s:5:"ا ت";s:3:"112";s:5:"دی ";s:3:"113";s:5:"ن س";s:3:"114";s:6:"کیا";s:3:"115";s:6:"یوں";s:3:"116";s:5:"ے ج";s:3:"117";s:5:"ال ";s:3:"118";s:5:"تو ";s:3:"119";s:5:"ں ا";s:3:"120";s:5:"ے پ";s:3:"121";s:5:" چا";s:3:"122";s:5:"ام ";s:3:"123";s:6:"بھی";s:3:"124";s:5:"تی ";s:3:"125";s:5:"تے ";s:3:"126";s:6:"دوس";s:3:"127";s:5:"س ک";s:3:"128";s:6:"ملک";s:3:"129";s:5:"ن ا";s:3:"130";s:6:"ہور";s:3:"131";s:5:"یے ";s:3:"132";s:5:" مو";s:3:"133";s:5:" وک";s:3:"134";s:6:"ائی";s:3:"135";s:6:"ارت";s:3:"136";s:6:"الے";s:3:"137";s:6:"بھا";s:3:"138";s:6:"ردی";s:3:"139";s:5:"ری ";s:3:"140";s:5:"وہ ";s:3:"141";s:6:"ویز";s:3:"142";s:5:"ں د";s:3:"143";s:5:"ھی ";s:3:"144";s:5:"ی س";s:3:"145";s:5:" رہ";s:3:"146";s:5:" من";s:3:"147";s:5:" نہ";s:3:"148";s:5:" ور";s:3:"149";s:5:" وہ";s:3:"150";s:5:" ہن";s:3:"151";s:5:"ا ا";s:3:"152";s:6:"است";s:3:"153";s:5:"ت ا";s:3:"154";s:5:"ت پ";s:3:"155";s:5:"د ک";s:3:"156";s:5:"ز م";s:3:"157";s:5:"ند ";s:3:"158";s:6:"ورد";s:3:"159";s:6:"وکل";s:3:"160";s:5:"گی ";s:3:"161";s:6:"گیا";s:3:"162";s:5:"ہ پ";s:3:"163";s:5:"یز ";s:3:"164";s:5:"ے ت";s:3:"165";s:5:" اع";s:3:"166";s:5:" اپ";s:3:"167";s:5:" جس";s:3:"168";s:5:" جم";s:3:"169";s:5:" جو";s:3:"170";s:5:" سر";s:3:"171";s:6:"اپن";s:3:"172";s:6:"اکث";s:3:"173";s:6:"تھا";s:3:"174";s:6:"ثری";s:3:"175";s:6:"دیا";s:3:"176";s:5:"ر د";s:3:"177";s:5:"رت ";s:3:"178";s:6:"روی";s:3:"179";s:5:"سی ";s:3:"180";s:6:"ملا";s:3:"181";s:6:"ندو";s:3:"182";s:6:"وست";s:3:"183";s:6:"پرو";s:3:"184";s:6:"چاہ";s:3:"185";s:6:"کثر";s:3:"186";s:6:"کلا";s:3:"187";s:5:"ہ ہ";s:3:"188";s:6:"ہند";s:3:"189";s:5:"ہو ";s:3:"190";s:5:"ے ل";s:3:"191";s:5:" اک";s:3:"192";s:5:" دا";s:3:"193";s:5:" سن";s:3:"194";s:5:" وز";s:3:"195";s:5:" پی";s:3:"196";s:5:"ا چ";s:3:"197";s:5:"اء ";s:3:"198";s:6:"اتھ";s:3:"199";s:6:"اقا";s:3:"200";s:5:"اہ ";s:3:"201";s:5:"تھ ";s:3:"202";s:5:"دو ";s:3:"203";s:5:"ر ب";s:3:"204";s:6:"روا";s:3:"205";s:5:"رے ";s:3:"206";s:6:"سات";s:3:"207";s:5:"ف ک";s:3:"208";s:6:"قات";s:3:"209";s:5:"لا ";s:3:"210";s:6:"لاء";s:3:"211";s:5:"م م";s:3:"212";s:5:"م ک";s:3:"213";s:5:"من ";s:3:"214";s:6:"نوں";s:3:"215";s:5:"و ا";s:3:"216";s:6:"کرن";s:3:"217";s:5:"ں ہ";s:3:"218";s:6:"ھار";s:3:"219";s:6:"ہوئ";s:3:"220";s:5:"ہی ";s:3:"221";s:5:"یش ";s:3:"222";s:5:" ام";s:3:"223";s:5:" لا";s:3:"224";s:5:" مس";s:3:"225";s:5:" پو";s:3:"226";s:5:" پہ";s:3:"227";s:6:"انے";s:3:"228";s:5:"ت م";s:3:"229";s:5:"ت ہ";s:3:"230";s:5:"ج ک";s:3:"231";s:6:"دون";s:3:"232";s:6:"زیر";s:3:"233";s:5:"س س";s:3:"234";s:5:"ش ک";s:3:"235";s:5:"ف ن";s:3:"236";s:5:"ل ہ";s:3:"237";s:6:"لاق";s:3:"238";s:5:"لی ";s:3:"239";s:6:"وری";s:3:"240";s:6:"وزی";s:3:"241";s:6:"ونو";s:3:"242";s:6:"کھن";s:3:"243";s:5:"گا ";s:3:"244";s:5:"ں س";s:3:"245";s:5:"ں گ";s:3:"246";s:6:"ھنے";s:3:"247";s:5:"ھے ";s:3:"248";s:5:"ہ ب";s:3:"249";s:5:"ہ ج";s:3:"250";s:5:"ہر ";s:3:"251";s:5:"ی آ";s:3:"252";s:5:"ی پ";s:3:"253";s:5:" حا";s:3:"254";s:5:" وف";s:3:"255";s:5:" گا";s:3:"256";s:5:"ا ج";s:3:"257";s:5:"ا گ";s:3:"258";s:5:"اد ";s:3:"259";s:6:"ادی";s:3:"260";s:6:"اعظ";s:3:"261";s:6:"اہت";s:3:"262";s:5:"جس ";s:3:"263";s:6:"جمہ";s:3:"264";s:5:"جو ";s:3:"265";s:5:"ر س";s:3:"266";s:5:"ر ہ";s:3:"267";s:6:"رنے";s:3:"268";s:5:"س م";s:3:"269";s:5:"سا ";s:3:"270";s:6:"سند";s:3:"271";s:6:"سنگ";s:3:"272";s:5:"ظم ";s:3:"273";s:6:"عظم";s:3:"274";s:5:"ل م";s:3:"275";s:6:"لیے";s:3:"276";s:5:"مل ";s:3:"277";s:6:"موہ";s:3:"278";s:6:"مہو";s:3:"279";s:6:"نگھ";s:3:"280";s:5:"و ص";s:3:"281";s:6:"ورٹ";s:3:"282";s:6:"وہن";s:3:"283";s:5:"کن ";s:3:"284";s:5:"گھ ";s:3:"285";s:5:"گے ";s:3:"286";s:5:"ں ج";s:3:"287";s:5:"ں و";s:3:"288";s:5:"ں ی";s:3:"289";s:5:"ہ د";s:3:"290";s:5:"ہن ";s:3:"291";s:6:"ہوں";s:3:"292";s:5:"ے ح";s:3:"293";s:5:"ے گ";s:3:"294";s:5:"ے ی";s:3:"295";s:5:" اگ";s:3:"296";s:5:" بع";s:3:"297";s:5:" رو";s:3:"298";s:5:" شا";s:3:"299";}s:5:"uzbek";a:300:{s:5:"ан ";s:1:"0";s:6:"ган";s:1:"1";s:6:"лар";s:1:"2";s:5:"га ";s:1:"3";s:5:"нг ";s:1:"4";s:6:"инг";s:1:"5";s:6:"нин";s:1:"6";s:5:"да ";s:1:"7";s:5:"ни ";s:1:"8";s:6:"ида";s:1:"9";s:6:"ари";s:2:"10";s:6:"ига";s:2:"11";s:6:"ини";s:2:"12";s:5:"ар ";s:2:"13";s:5:"ди ";s:2:"14";s:5:" би";s:2:"15";s:6:"ани";s:2:"16";s:5:" бо";s:2:"17";s:6:"дан";s:2:"18";s:6:"лга";s:2:"19";s:5:" ҳа";s:2:"20";s:5:" ва";s:2:"21";s:5:" са";s:2:"22";s:5:"ги ";s:2:"23";s:6:"ила";s:2:"24";s:5:"н б";s:2:"25";s:5:"и б";s:2:"26";s:5:" кў";s:2:"27";s:5:" та";s:2:"28";s:5:"ир ";s:2:"29";s:5:" ма";s:2:"30";s:6:"ага";s:2:"31";s:6:"ала";s:2:"32";s:6:"бир";s:2:"33";s:5:"ри ";s:2:"34";s:6:"тга";s:2:"35";s:6:"лан";s:2:"36";s:6:"лик";s:2:"37";s:5:"а к";s:2:"38";s:6:"аги";s:2:"39";s:6:"ати";s:2:"40";s:5:"та ";s:2:"41";s:6:"ади";s:2:"42";s:6:"даг";s:2:"43";s:6:"рга";s:2:"44";s:5:" йи";s:2:"45";s:5:" ми";s:2:"46";s:5:" па";s:2:"47";s:5:" бў";s:2:"48";s:5:" қа";s:2:"49";s:5:" қи";s:2:"50";s:5:"а б";s:2:"51";s:6:"илл";s:2:"52";s:5:"ли ";s:2:"53";s:6:"аси";s:2:"54";s:5:"и т";s:2:"55";s:5:"ик ";s:2:"56";s:6:"или";s:2:"57";s:6:"лла";s:2:"58";s:6:"ард";s:2:"59";s:6:"вчи";s:2:"60";s:5:"ва ";s:2:"61";s:5:"иб ";s:2:"62";s:6:"ири";s:2:"63";s:6:"лиг";s:2:"64";s:6:"нга";s:2:"65";s:6:"ран";s:2:"66";s:5:" ке";s:2:"67";s:5:" ўз";s:2:"68";s:5:"а с";s:2:"69";s:6:"ахт";s:2:"70";s:6:"бўл";s:2:"71";s:6:"иги";s:2:"72";s:6:"кўр";s:2:"73";s:6:"рда";s:2:"74";s:6:"рни";s:2:"75";s:5:"са ";s:2:"76";s:5:" бе";s:2:"77";s:5:" бу";s:2:"78";s:5:" да";s:2:"79";s:5:" жа";s:2:"80";s:5:"а т";s:2:"81";s:6:"ази";s:2:"82";s:6:"ери";s:2:"83";s:5:"и а";s:2:"84";s:6:"илг";s:2:"85";s:6:"йил";s:2:"86";s:6:"ман";s:2:"87";s:6:"пах";s:2:"88";s:6:"рид";s:2:"89";s:5:"ти ";s:2:"90";s:6:"увч";s:2:"91";s:6:"хта";s:2:"92";s:5:" не";s:2:"93";s:5:" со";s:2:"94";s:5:" уч";s:2:"95";s:6:"айт";s:2:"96";s:6:"лли";s:2:"97";s:6:"тла";s:2:"98";s:5:" ай";s:2:"99";s:5:" фр";s:3:"100";s:5:" эт";s:3:"101";s:5:" ҳо";s:3:"102";s:5:"а қ";s:3:"103";s:6:"али";s:3:"104";s:6:"аро";s:3:"105";s:6:"бер";s:3:"106";s:6:"бил";s:3:"107";s:6:"бор";s:3:"108";s:6:"ими";s:3:"109";s:6:"ист";s:3:"110";s:5:"он ";s:3:"111";s:6:"рин";s:3:"112";s:6:"тер";s:3:"113";s:6:"тил";s:3:"114";s:5:"ун ";s:3:"115";s:6:"фра";s:3:"116";s:6:"қил";s:3:"117";s:5:" ба";s:3:"118";s:5:" ол";s:3:"119";s:6:"анс";s:3:"120";s:6:"ефт";s:3:"121";s:6:"зир";s:3:"122";s:6:"кат";s:3:"123";s:6:"мил";s:3:"124";s:6:"неф";s:3:"125";s:6:"саг";s:3:"126";s:5:"чи ";s:3:"127";s:6:"ўра";s:3:"128";s:5:" на";s:3:"129";s:5:" те";s:3:"130";s:5:" эн";s:3:"131";s:5:"а э";s:3:"132";s:5:"ам ";s:3:"133";s:6:"арн";s:3:"134";s:5:"ат ";s:3:"135";s:5:"иш ";s:3:"136";s:5:"ма ";s:3:"137";s:6:"нла";s:3:"138";s:6:"рли";s:3:"139";s:6:"чил";s:3:"140";s:6:"шга";s:3:"141";s:5:" иш";s:3:"142";s:5:" му";s:3:"143";s:5:" ўқ";s:3:"144";s:6:"ара";s:3:"145";s:6:"ваз";s:3:"146";s:5:"и у";s:3:"147";s:5:"иқ ";s:3:"148";s:6:"моқ";s:3:"149";s:6:"рим";s:3:"150";s:6:"учу";s:3:"151";s:6:"чун";s:3:"152";s:5:"ши ";s:3:"153";s:6:"энг";s:3:"154";s:6:"қув";s:3:"155";s:6:"ҳам";s:3:"156";s:5:" сў";s:3:"157";s:5:" ши";s:3:"158";s:6:"бар";s:3:"159";s:6:"бек";s:3:"160";s:6:"дам";s:3:"161";s:5:"и ҳ";s:3:"162";s:6:"иши";s:3:"163";s:6:"лад";s:3:"164";s:6:"оли";s:3:"165";s:6:"олл";s:3:"166";s:6:"ори";s:3:"167";s:6:"оқд";s:3:"168";s:5:"р б";s:3:"169";s:5:"ра ";s:3:"170";s:6:"рла";s:3:"171";s:6:"уни";s:3:"172";s:5:"фт ";s:3:"173";s:6:"ўлг";s:3:"174";s:6:"ўқу";s:3:"175";s:5:" де";s:3:"176";s:5:" ка";s:3:"177";s:5:" қў";s:3:"178";s:5:"а ў";s:3:"179";s:6:"аба";s:3:"180";s:6:"амм";s:3:"181";s:6:"атл";s:3:"182";s:5:"б к";s:3:"183";s:6:"бош";s:3:"184";s:6:"збе";s:3:"185";s:5:"и в";s:3:"186";s:5:"им ";s:3:"187";s:5:"ин ";s:3:"188";s:6:"ишл";s:3:"189";s:6:"лаб";s:3:"190";s:6:"лей";s:3:"191";s:6:"мин";s:3:"192";s:5:"н д";s:3:"193";s:6:"нда";s:3:"194";s:5:"оқ ";s:3:"195";s:5:"р м";s:3:"196";s:6:"рил";s:3:"197";s:6:"сид";s:3:"198";s:6:"тал";s:3:"199";s:6:"тан";s:3:"200";s:6:"тид";s:3:"201";s:6:"тон";s:3:"202";s:6:"ўзб";s:3:"203";s:5:" ам";s:3:"204";s:5:" ки";s:3:"205";s:5:"а ҳ";s:3:"206";s:6:"анг";s:3:"207";s:6:"анд";s:3:"208";s:6:"арт";s:3:"209";s:6:"аёт";s:3:"210";s:6:"дир";s:3:"211";s:6:"ент";s:3:"212";s:5:"и д";s:3:"213";s:5:"и м";s:3:"214";s:5:"и о";s:3:"215";s:5:"и э";s:3:"216";s:6:"иро";s:3:"217";s:6:"йти";s:3:"218";s:6:"нсу";s:3:"219";s:6:"оди";s:3:"220";s:5:"ор ";s:3:"221";s:5:"си ";s:3:"222";s:6:"тиш";s:3:"223";s:6:"тоб";s:3:"224";s:6:"эти";s:3:"225";s:6:"қар";s:3:"226";s:6:"қда";s:3:"227";s:5:" бл";s:3:"228";s:5:" ге";s:3:"229";s:5:" до";s:3:"230";s:5:" ду";s:3:"231";s:5:" но";s:3:"232";s:5:" пр";s:3:"233";s:5:" ра";s:3:"234";s:5:" фо";s:3:"235";s:5:" қо";s:3:"236";s:5:"а м";s:3:"237";s:5:"а о";s:3:"238";s:6:"айд";s:3:"239";s:6:"ало";s:3:"240";s:6:"ама";s:3:"241";s:6:"бле";s:3:"242";s:5:"г н";s:3:"243";s:6:"дол";s:3:"244";s:6:"ейр";s:3:"245";s:5:"ек ";s:3:"246";s:6:"ерг";s:3:"247";s:6:"жар";s:3:"248";s:6:"зид";s:3:"249";s:5:"и к";s:3:"250";s:5:"и ф";s:3:"251";s:5:"ий ";s:3:"252";s:6:"ило";s:3:"253";s:6:"лди";s:3:"254";s:6:"либ";s:3:"255";s:6:"лин";s:3:"256";s:5:"ми ";s:3:"257";s:6:"мма";s:3:"258";s:5:"н в";s:3:"259";s:5:"н к";s:3:"260";s:5:"н ў";s:3:"261";s:5:"н ҳ";s:3:"262";s:6:"ози";s:3:"263";s:6:"ора";s:3:"264";s:6:"оси";s:3:"265";s:6:"рас";s:3:"266";s:6:"риш";s:3:"267";s:6:"рка";s:3:"268";s:6:"роқ";s:3:"269";s:6:"сто";s:3:"270";s:6:"тин";s:3:"271";s:6:"хат";s:3:"272";s:6:"шир";s:3:"273";s:5:" ав";s:3:"274";s:5:" рў";s:3:"275";s:5:" ту";s:3:"276";s:5:" ўт";s:3:"277";s:5:"а п";s:3:"278";s:6:"авт";s:3:"279";s:6:"ада";s:3:"280";s:6:"аза";s:3:"281";s:6:"анл";s:3:"282";s:5:"б б";s:3:"283";s:6:"бой";s:3:"284";s:5:"бу ";s:3:"285";s:6:"вто";s:3:"286";s:5:"г э";s:3:"287";s:6:"гин";s:3:"288";s:6:"дар";s:3:"289";s:6:"ден";s:3:"290";s:6:"дун";s:3:"291";s:6:"иде";s:3:"292";s:6:"ион";s:3:"293";s:6:"ирл";s:3:"294";s:6:"ишг";s:3:"295";s:6:"йха";s:3:"296";s:6:"кел";s:3:"297";s:6:"кўп";s:3:"298";s:6:"лио";s:3:"299";}s:10:"vietnamese";a:300:{s:3:"ng ";s:1:"0";s:3:" th";s:1:"1";s:3:" ch";s:1:"2";s:3:"g t";s:1:"3";s:3:" nh";s:1:"4";s:4:"ông";s:1:"5";s:3:" kh";s:1:"6";s:3:" tr";s:1:"7";s:3:"nh ";s:1:"8";s:4:" cô";s:1:"9";s:4:"côn";s:2:"10";s:3:" ty";s:2:"11";s:3:"ty ";s:2:"12";s:3:"i t";s:2:"13";s:3:"n t";s:2:"14";s:3:" ng";s:2:"15";s:5:"ại ";s:2:"16";s:3:" ti";s:2:"17";s:3:"ch ";s:2:"18";s:3:"y l";s:2:"19";s:5:"ền ";s:2:"20";s:5:" đư";s:2:"21";s:3:"hi ";s:2:"22";s:5:" gở";s:2:"23";s:5:"gởi";s:2:"24";s:5:"iền";s:2:"25";s:5:"tiề";s:2:"26";s:5:"ởi ";s:2:"27";s:3:" gi";s:2:"28";s:3:" le";s:2:"29";s:3:" vi";s:2:"30";s:3:"cho";s:2:"31";s:3:"ho ";s:2:"32";s:4:"khá";s:2:"33";s:4:" và";s:2:"34";s:4:"hác";s:2:"35";s:3:" ph";s:2:"36";s:3:"am ";s:2:"37";s:4:"hàn";s:2:"38";s:4:"ách";s:2:"39";s:4:"ôi ";s:2:"40";s:3:"i n";s:2:"41";s:6:"ược";s:2:"42";s:5:"ợc ";s:2:"43";s:4:" tô";s:2:"44";s:4:"chú";s:2:"45";s:5:"iệt";s:2:"46";s:4:"tôi";s:2:"47";s:4:"ên ";s:2:"48";s:4:"úng";s:2:"49";s:5:"ệt ";s:2:"50";s:4:" có";s:2:"51";s:3:"c t";s:2:"52";s:4:"có ";s:2:"53";s:4:"hún";s:2:"54";s:5:"việ";s:2:"55";s:7:"đượ";s:2:"56";s:3:" na";s:2:"57";s:3:"g c";s:2:"58";s:3:"i c";s:2:"59";s:3:"n c";s:2:"60";s:3:"n n";s:2:"61";s:3:"t n";s:2:"62";s:4:"và ";s:2:"63";s:3:"n l";s:2:"64";s:4:"n đ";s:2:"65";s:4:"àng";s:2:"66";s:4:"ác ";s:2:"67";s:5:"ất ";s:2:"68";s:3:"h l";s:2:"69";s:3:"nam";s:2:"70";s:4:"ân ";s:2:"71";s:4:"ăm ";s:2:"72";s:4:" hà";s:2:"73";s:4:" là";s:2:"74";s:4:" nă";s:2:"75";s:3:" qu";s:2:"76";s:5:" tạ";s:2:"77";s:3:"g m";s:2:"78";s:4:"năm";s:2:"79";s:5:"tại";s:2:"80";s:5:"ới ";s:2:"81";s:5:" lẹ";s:2:"82";s:3:"ay ";s:2:"83";s:3:"e g";s:2:"84";s:3:"h h";s:2:"85";s:3:"i v";s:2:"86";s:4:"i đ";s:2:"87";s:3:"le ";s:2:"88";s:5:"lẹ ";s:2:"89";s:5:"ều ";s:2:"90";s:5:"ời ";s:2:"91";s:4:"hân";s:2:"92";s:3:"nhi";s:2:"93";s:3:"t t";s:2:"94";s:5:" củ";s:2:"95";s:5:" mộ";s:2:"96";s:5:" về";s:2:"97";s:4:" đi";s:2:"98";s:3:"an ";s:2:"99";s:5:"của";s:3:"100";s:4:"là ";s:3:"101";s:5:"một";s:3:"102";s:5:"về ";s:3:"103";s:4:"ành";s:3:"104";s:5:"ết ";s:3:"105";s:5:"ột ";s:3:"106";s:5:"ủa ";s:3:"107";s:3:" bi";s:3:"108";s:4:" cá";s:3:"109";s:3:"a c";s:3:"110";s:3:"anh";s:3:"111";s:4:"các";s:3:"112";s:3:"h c";s:3:"113";s:5:"iều";s:3:"114";s:3:"m t";s:3:"115";s:5:"ện ";s:3:"116";s:3:" ho";s:3:"117";s:3:"'s ";s:3:"118";s:3:"ave";s:3:"119";s:3:"e's";s:3:"120";s:3:"el ";s:3:"121";s:3:"g n";s:3:"122";s:3:"le'";s:3:"123";s:3:"n v";s:3:"124";s:3:"o c";s:3:"125";s:3:"rav";s:3:"126";s:3:"s t";s:3:"127";s:3:"thi";s:3:"128";s:3:"tra";s:3:"129";s:3:"vel";s:3:"130";s:5:"ận ";s:3:"131";s:5:"ến ";s:3:"132";s:3:" ba";s:3:"133";s:3:" cu";s:3:"134";s:3:" sa";s:3:"135";s:5:" đó";s:3:"136";s:6:" đế";s:3:"137";s:3:"c c";s:3:"138";s:3:"chu";s:3:"139";s:5:"hiề";s:3:"140";s:3:"huy";s:3:"141";s:3:"khi";s:3:"142";s:4:"nhâ";s:3:"143";s:4:"như";s:3:"144";s:3:"ong";s:3:"145";s:3:"ron";s:3:"146";s:3:"thu";s:3:"147";s:4:"thư";s:3:"148";s:3:"tro";s:3:"149";s:3:"y c";s:3:"150";s:4:"ày ";s:3:"151";s:6:"đến";s:3:"152";s:6:"ười";s:3:"153";s:6:"ườn";s:3:"154";s:5:"ề v";s:3:"155";s:5:"ờng";s:3:"156";s:5:" vớ";s:3:"157";s:5:"cuộ";s:3:"158";s:4:"g đ";s:3:"159";s:5:"iết";s:3:"160";s:5:"iện";s:3:"161";s:4:"ngà";s:3:"162";s:3:"o t";s:3:"163";s:3:"u c";s:3:"164";s:5:"uộc";s:3:"165";s:5:"với";s:3:"166";s:4:"à c";s:3:"167";s:4:"ài ";s:3:"168";s:4:"ơng";s:3:"169";s:5:"ươn";s:3:"170";s:5:"ải ";s:3:"171";s:5:"ộc ";s:3:"172";s:5:"ức ";s:3:"173";s:3:" an";s:3:"174";s:5:" lậ";s:3:"175";s:3:" ra";s:3:"176";s:5:" sẽ";s:3:"177";s:5:" số";s:3:"178";s:5:" tổ";s:3:"179";s:3:"a k";s:3:"180";s:5:"biế";s:3:"181";s:3:"c n";s:3:"182";s:4:"c đ";s:3:"183";s:5:"chứ";s:3:"184";s:3:"g v";s:3:"185";s:3:"gia";s:3:"186";s:4:"gày";s:3:"187";s:4:"hán";s:3:"188";s:4:"hôn";s:3:"189";s:4:"hư ";s:3:"190";s:5:"hức";s:3:"191";s:3:"i g";s:3:"192";s:3:"i h";s:3:"193";s:3:"i k";s:3:"194";s:3:"i p";s:3:"195";s:4:"iên";s:3:"196";s:4:"khô";s:3:"197";s:5:"lập";s:3:"198";s:3:"n k";s:3:"199";s:3:"ra ";s:3:"200";s:4:"rên";s:3:"201";s:5:"sẽ ";s:3:"202";s:3:"t c";s:3:"203";s:4:"thà";s:3:"204";s:4:"trê";s:3:"205";s:5:"tổ ";s:3:"206";s:3:"u n";s:3:"207";s:3:"y t";s:3:"208";s:4:"ình";s:3:"209";s:5:"ấy ";s:3:"210";s:5:"ập ";s:3:"211";s:5:"ổ c";s:3:"212";s:4:" má";s:3:"213";s:6:" để";s:3:"214";s:3:"ai ";s:3:"215";s:3:"c s";s:3:"216";s:6:"gườ";s:3:"217";s:3:"h v";s:3:"218";s:3:"hoa";s:3:"219";s:5:"hoạ";s:3:"220";s:3:"inh";s:3:"221";s:3:"m n";s:3:"222";s:4:"máy";s:3:"223";s:3:"n g";s:3:"224";s:4:"ngư";s:3:"225";s:5:"nhậ";s:3:"226";s:3:"o n";s:3:"227";s:3:"oa ";s:3:"228";s:4:"oàn";s:3:"229";s:3:"p c";s:3:"230";s:5:"số ";s:3:"231";s:4:"t đ";s:3:"232";s:3:"y v";s:3:"233";s:4:"ào ";s:3:"234";s:4:"áy ";s:3:"235";s:4:"ăn ";s:3:"236";s:5:"đó ";s:3:"237";s:6:"để ";s:3:"238";s:6:"ước";s:3:"239";s:5:"ần ";s:3:"240";s:5:"ển ";s:3:"241";s:5:"ớc ";s:3:"242";s:4:" bá";s:3:"243";s:4:" cơ";s:3:"244";s:5:" cả";s:3:"245";s:5:" cầ";s:3:"246";s:5:" họ";s:3:"247";s:5:" kỳ";s:3:"248";s:3:" li";s:3:"249";s:5:" mạ";s:3:"250";s:5:" sở";s:3:"251";s:5:" tặ";s:3:"252";s:4:" vé";s:3:"253";s:5:" vụ";s:3:"254";s:6:" đạ";s:3:"255";s:4:"a đ";s:3:"256";s:3:"bay";s:3:"257";s:4:"cơ ";s:3:"258";s:3:"g s";s:3:"259";s:3:"han";s:3:"260";s:5:"hươ";s:3:"261";s:3:"i s";s:3:"262";s:5:"kỳ ";s:3:"263";s:3:"m c";s:3:"264";s:3:"n m";s:3:"265";s:3:"n p";s:3:"266";s:3:"o b";s:3:"267";s:5:"oại";s:3:"268";s:3:"qua";s:3:"269";s:5:"sở ";s:3:"270";s:3:"tha";s:3:"271";s:4:"thá";s:3:"272";s:5:"tặn";s:3:"273";s:4:"vào";s:3:"274";s:4:"vé ";s:3:"275";s:5:"vụ ";s:3:"276";s:3:"y b";s:3:"277";s:4:"àn ";s:3:"278";s:4:"áng";s:3:"279";s:4:"ơ s";s:3:"280";s:5:"ầu ";s:3:"281";s:5:"ật ";s:3:"282";s:5:"ặng";s:3:"283";s:5:"ọc ";s:3:"284";s:5:"ở t";s:3:"285";s:5:"ững";s:3:"286";s:3:" du";s:3:"287";s:3:" lu";s:3:"288";s:3:" ta";s:3:"289";s:3:" to";s:3:"290";s:5:" từ";s:3:"291";s:5:" ở ";s:3:"292";s:3:"a v";s:3:"293";s:3:"ao ";s:3:"294";s:3:"c v";s:3:"295";s:5:"cả ";s:3:"296";s:3:"du ";s:3:"297";s:3:"g l";s:3:"298";s:5:"giả";s:3:"299";}s:5:"welsh";a:300:{s:3:"yn ";s:1:"0";s:3:"dd ";s:1:"1";s:3:" yn";s:1:"2";s:3:" y ";s:1:"3";s:3:"ydd";s:1:"4";s:3:"eth";s:1:"5";s:3:"th ";s:1:"6";s:3:" i ";s:1:"7";s:3:"aet";s:1:"8";s:3:"d y";s:1:"9";s:3:"ch ";s:2:"10";s:3:"od ";s:2:"11";s:3:"ol ";s:2:"12";s:3:"edd";s:2:"13";s:3:" ga";s:2:"14";s:3:" gw";s:2:"15";s:3:"'r ";s:2:"16";s:3:"au ";s:2:"17";s:3:"ddi";s:2:"18";s:3:"ad ";s:2:"19";s:3:" cy";s:2:"20";s:3:" gy";s:2:"21";s:3:" ei";s:2:"22";s:3:" o ";s:2:"23";s:3:"iad";s:2:"24";s:3:"yr ";s:2:"25";s:3:"an ";s:2:"26";s:3:"bod";s:2:"27";s:3:"wed";s:2:"28";s:3:" bo";s:2:"29";s:3:" dd";s:2:"30";s:3:"el ";s:2:"31";s:3:"n y";s:2:"32";s:3:" am";s:2:"33";s:3:"di ";s:2:"34";s:3:"edi";s:2:"35";s:3:"on ";s:2:"36";s:3:" we";s:2:"37";s:3:" ym";s:2:"38";s:3:" ar";s:2:"39";s:3:" rh";s:2:"40";s:3:"odd";s:2:"41";s:3:" ca";s:2:"42";s:3:" ma";s:2:"43";s:3:"ael";s:2:"44";s:3:"oed";s:2:"45";s:3:"dae";s:2:"46";s:3:"n a";s:2:"47";s:3:"dda";s:2:"48";s:3:"er ";s:2:"49";s:3:"h y";s:2:"50";s:3:"all";s:2:"51";s:3:"ei ";s:2:"52";s:3:" ll";s:2:"53";s:3:"am ";s:2:"54";s:3:"eu ";s:2:"55";s:3:"fod";s:2:"56";s:3:"fyd";s:2:"57";s:3:"l y";s:2:"58";s:3:"n g";s:2:"59";s:3:"wyn";s:2:"60";s:3:"d a";s:2:"61";s:3:"i g";s:2:"62";s:3:"mae";s:2:"63";s:3:"neu";s:2:"64";s:3:"os ";s:2:"65";s:3:" ne";s:2:"66";s:3:"d i";s:2:"67";s:3:"dod";s:2:"68";s:3:"dol";s:2:"69";s:3:"n c";s:2:"70";s:3:"r h";s:2:"71";s:3:"wyd";s:2:"72";s:3:"wyr";s:2:"73";s:3:"ai ";s:2:"74";s:3:"ar ";s:2:"75";s:3:"in ";s:2:"76";s:3:"rth";s:2:"77";s:3:" fy";s:2:"78";s:3:" he";s:2:"79";s:3:" me";s:2:"80";s:3:" yr";s:2:"81";s:3:"'n ";s:2:"82";s:3:"dia";s:2:"83";s:3:"est";s:2:"84";s:3:"h c";s:2:"85";s:3:"hai";s:2:"86";s:3:"i d";s:2:"87";s:3:"id ";s:2:"88";s:3:"r y";s:2:"89";s:3:"y b";s:2:"90";s:3:" dy";s:2:"91";s:3:" ha";s:2:"92";s:3:"ada";s:2:"93";s:3:"i b";s:2:"94";s:3:"n i";s:2:"95";s:3:"ote";s:2:"96";s:3:"rot";s:2:"97";s:3:"tes";s:2:"98";s:3:"y g";s:2:"99";s:3:"yd ";s:3:"100";s:3:" ad";s:3:"101";s:3:" mr";s:3:"102";s:3:" un";s:3:"103";s:3:"cyn";s:3:"104";s:3:"dau";s:3:"105";s:3:"ddy";s:3:"106";s:3:"edo";s:3:"107";s:3:"i c";s:3:"108";s:3:"i w";s:3:"109";s:3:"ith";s:3:"110";s:3:"lae";s:3:"111";s:3:"lla";s:3:"112";s:3:"nd ";s:3:"113";s:3:"oda";s:3:"114";s:3:"ryd";s:3:"115";s:3:"tho";s:3:"116";s:3:" a ";s:3:"117";s:3:" dr";s:3:"118";s:3:"aid";s:3:"119";s:3:"ain";s:3:"120";s:3:"ddo";s:3:"121";s:3:"dyd";s:3:"122";s:3:"fyn";s:3:"123";s:3:"gyn";s:3:"124";s:3:"hol";s:3:"125";s:3:"io ";s:3:"126";s:3:"o a";s:3:"127";s:3:"wch";s:3:"128";s:3:"wyb";s:3:"129";s:3:"ybo";s:3:"130";s:3:"ych";s:3:"131";s:3:" br";s:3:"132";s:3:" by";s:3:"133";s:3:" di";s:3:"134";s:3:" fe";s:3:"135";s:3:" na";s:3:"136";s:3:" o'";s:3:"137";s:3:" pe";s:3:"138";s:3:"art";s:3:"139";s:3:"byd";s:3:"140";s:3:"dro";s:3:"141";s:3:"gal";s:3:"142";s:3:"l e";s:3:"143";s:3:"lai";s:3:"144";s:3:"mr ";s:3:"145";s:3:"n n";s:3:"146";s:3:"r a";s:3:"147";s:3:"rhy";s:3:"148";s:3:"wn ";s:3:"149";s:3:"ynn";s:3:"150";s:3:" on";s:3:"151";s:3:" r ";s:3:"152";s:3:"cae";s:3:"153";s:3:"d g";s:3:"154";s:3:"d o";s:3:"155";s:3:"d w";s:3:"156";s:3:"gan";s:3:"157";s:3:"gwy";s:3:"158";s:3:"n d";s:3:"159";s:3:"n f";s:3:"160";s:3:"n o";s:3:"161";s:3:"ned";s:3:"162";s:3:"ni ";s:3:"163";s:3:"o'r";s:3:"164";s:3:"r d";s:3:"165";s:3:"ud ";s:3:"166";s:3:"wei";s:3:"167";s:3:"wrt";s:3:"168";s:3:" an";s:3:"169";s:3:" cw";s:3:"170";s:3:" da";s:3:"171";s:3:" ni";s:3:"172";s:3:" pa";s:3:"173";s:3:" pr";s:3:"174";s:3:" wy";s:3:"175";s:3:"d e";s:3:"176";s:3:"dai";s:3:"177";s:3:"dim";s:3:"178";s:3:"eud";s:3:"179";s:3:"gwa";s:3:"180";s:3:"idd";s:3:"181";s:3:"im ";s:3:"182";s:3:"iri";s:3:"183";s:3:"lwy";s:3:"184";s:3:"n b";s:3:"185";s:3:"nol";s:3:"186";s:3:"r o";s:3:"187";s:3:"rwy";s:3:"188";s:3:" ch";s:3:"189";s:3:" er";s:3:"190";s:3:" fo";s:3:"191";s:3:" ge";s:3:"192";s:3:" hy";s:3:"193";s:3:" i'";s:3:"194";s:3:" ro";s:3:"195";s:3:" sa";s:3:"196";s:3:" tr";s:3:"197";s:3:"bob";s:3:"198";s:3:"cwy";s:3:"199";s:3:"cyf";s:3:"200";s:3:"dio";s:3:"201";s:3:"dyn";s:3:"202";s:3:"eit";s:3:"203";s:3:"hel";s:3:"204";s:3:"hyn";s:3:"205";s:3:"ich";s:3:"206";s:3:"ll ";s:3:"207";s:3:"mdd";s:3:"208";s:3:"n r";s:3:"209";s:3:"ond";s:3:"210";s:3:"pro";s:3:"211";s:3:"r c";s:3:"212";s:3:"r g";s:3:"213";s:3:"red";s:3:"214";s:3:"rha";s:3:"215";s:3:"u a";s:3:"216";s:3:"u c";s:3:"217";s:3:"u y";s:3:"218";s:3:"y c";s:3:"219";s:3:"ymd";s:3:"220";s:3:"ymr";s:3:"221";s:3:"yw ";s:3:"222";s:3:" ac";s:3:"223";s:3:" be";s:3:"224";s:3:" bl";s:3:"225";s:3:" co";s:3:"226";s:3:" os";s:3:"227";s:3:"adw";s:3:"228";s:3:"ae ";s:3:"229";s:3:"af ";s:3:"230";s:3:"d p";s:3:"231";s:3:"efn";s:3:"232";s:3:"eic";s:3:"233";s:3:"en ";s:3:"234";s:3:"eol";s:3:"235";s:3:"es ";s:3:"236";s:3:"fer";s:3:"237";s:3:"gel";s:3:"238";s:3:"h g";s:3:"239";s:3:"hod";s:3:"240";s:3:"ied";s:3:"241";s:3:"ir ";s:3:"242";s:3:"laf";s:3:"243";s:3:"n h";s:3:"244";s:3:"na ";s:3:"245";s:3:"nyd";s:3:"246";s:3:"odo";s:3:"247";s:3:"ofy";s:3:"248";s:3:"rdd";s:3:"249";s:3:"rie";s:3:"250";s:3:"ros";s:3:"251";s:3:"stw";s:3:"252";s:3:"twy";s:3:"253";s:3:"yda";s:3:"254";s:3:"yng";s:3:"255";s:3:" at";s:3:"256";s:3:" de";s:3:"257";s:3:" go";s:3:"258";s:3:" id";s:3:"259";s:3:" oe";s:3:"260";s:4:" â ";s:3:"261";s:3:"'ch";s:3:"262";s:3:"ac ";s:3:"263";s:3:"ach";s:3:"264";s:3:"ae'";s:3:"265";s:3:"al ";s:3:"266";s:3:"bl ";s:3:"267";s:3:"d c";s:3:"268";s:3:"d l";s:3:"269";s:3:"dan";s:3:"270";s:3:"dde";s:3:"271";s:3:"ddw";s:3:"272";s:3:"dir";s:3:"273";s:3:"dla";s:3:"274";s:3:"ed ";s:3:"275";s:3:"ela";s:3:"276";s:3:"ell";s:3:"277";s:3:"ene";s:3:"278";s:3:"ewn";s:3:"279";s:3:"gyd";s:3:"280";s:3:"hau";s:3:"281";s:3:"hyw";s:3:"282";s:3:"i a";s:3:"283";s:3:"i f";s:3:"284";s:3:"iol";s:3:"285";s:3:"ion";s:3:"286";s:3:"l a";s:3:"287";s:3:"l i";s:3:"288";s:3:"lia";s:3:"289";s:3:"med";s:3:"290";s:3:"mon";s:3:"291";s:3:"n s";s:3:"292";s:3:"no ";s:3:"293";s:3:"obl";s:3:"294";s:3:"ola";s:3:"295";s:3:"ref";s:3:"296";s:3:"rn ";s:3:"297";s:3:"thi";s:3:"298";s:3:"un ";s:3:"299";}}s:18:"trigram-unicodemap";a:13:{s:11:"Basic Latin";a:38:{s:8:"albanian";i:661;s:5:"azeri";i:653;s:7:"bengali";i:1;s:7:"cebuano";i:750;s:8:"croatian";i:733;s:5:"czech";i:652;s:6:"danish";i:734;s:5:"dutch";i:741;s:7:"english";i:723;s:8:"estonian";i:739;s:7:"finnish";i:743;s:6:"french";i:733;s:6:"german";i:750;s:5:"hausa";i:752;s:8:"hawaiian";i:751;s:9:"hungarian";i:693;s:9:"icelandic";i:662;s:10:"indonesian";i:776;s:7:"italian";i:741;s:5:"latin";i:764;s:7:"latvian";i:693;s:10:"lithuanian";i:738;s:9:"mongolian";i:19;s:9:"norwegian";i:742;s:6:"pidgin";i:702;s:6:"polish";i:701;s:10:"portuguese";i:726;s:8:"romanian";i:714;s:6:"slovak";i:677;s:7:"slovene";i:740;s:6:"somali";i:755;s:7:"spanish";i:749;s:7:"swahili";i:770;s:7:"swedish";i:717;s:7:"tagalog";i:767;s:7:"turkish";i:673;s:10:"vietnamese";i:503;s:5:"welsh";i:728;}s:18:"Latin-1 Supplement";a:21:{s:8:"albanian";i:68;s:5:"azeri";i:10;s:5:"czech";i:51;s:6:"danish";i:13;s:8:"estonian";i:19;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:9:"hungarian";i:72;s:9:"icelandic";i:80;s:7:"italian";i:3;s:9:"norwegian";i:5;s:6:"polish";i:6;s:10:"portuguese";i:18;s:8:"romanian";i:9;s:6:"slovak";i:37;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:25;s:10:"vietnamese";i:56;s:5:"welsh";i:1;}s:14:"[Malformatted]";a:42:{s:8:"albanian";i:68;s:6:"arabic";i:724;s:5:"azeri";i:109;s:7:"bengali";i:1472;s:9:"bulgarian";i:750;s:8:"croatian";i:10;s:5:"czech";i:78;s:6:"danish";i:13;s:8:"estonian";i:19;s:5:"farsi";i:706;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:5:"hausa";i:8;s:5:"hindi";i:1386;s:9:"hungarian";i:74;s:9:"icelandic";i:80;s:7:"italian";i:3;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:6:"nepali";i:1514;s:9:"norwegian";i:5;s:6:"pashto";i:677;s:6:"polish";i:45;s:10:"portuguese";i:18;s:8:"romanian";i:31;s:7:"russian";i:759;s:7:"serbian";i:757;s:6:"slovak";i:45;s:7:"slovene";i:10;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:87;s:9:"ukrainian";i:748;s:4:"urdu";i:682;s:5:"uzbek";i:773;s:10:"vietnamese";i:289;s:5:"welsh";i:1;}s:6:"Arabic";a:4:{s:6:"arabic";i:724;s:5:"farsi";i:706;s:6:"pashto";i:677;s:4:"urdu";i:682;}s:16:"Latin Extended-B";a:3:{s:5:"azeri";i:73;s:5:"hausa";i:8;s:10:"vietnamese";i:19;}s:16:"Latin Extended-A";a:12:{s:5:"azeri";i:25;s:8:"croatian";i:10;s:5:"czech";i:27;s:9:"hungarian";i:2;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:6:"polish";i:39;s:8:"romanian";i:22;s:6:"slovak";i:8;s:7:"slovene";i:10;s:7:"turkish";i:62;s:10:"vietnamese";i:20;}s:27:"Combining Diacritical Marks";a:1:{s:5:"azeri";i:1;}s:7:"Bengali";a:1:{s:7:"bengali";i:714;}s:8:"Gujarati";a:1:{s:7:"bengali";i:16;}s:8:"Gurmukhi";a:1:{s:7:"bengali";i:6;}s:8:"Cyrillic";a:9:{s:9:"bulgarian";i:750;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:7:"russian";i:759;s:7:"serbian";i:757;s:9:"ukrainian";i:748;s:5:"uzbek";i:773;}s:10:"Devanagari";a:2:{s:5:"hindi";i:693;s:6:"nepali";i:757;}s:25:"Latin Extended Additional";a:1:{s:10:"vietnamese";i:97;}}}
      \ No newline at end of file
      diff --git a/php/lib/Text_LanguageDetect/data/unicode_blocks.dat b/php/lib/Text_LanguageDetect/data/unicode_blocks.dat
      new file mode 100644
      index 00000000..3b24cd2c
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/data/unicode_blocks.dat
      @@ -0,0 +1 @@
      +a:145:{i:0;a:3:{i:0;s:6:"0x0000";i:1;s:6:"0x007F";i:2;s:11:"Basic Latin";}i:1;a:3:{i:0;s:6:"0x0080";i:1;s:6:"0x00FF";i:2;s:18:"Latin-1 Supplement";}i:2;a:3:{i:0;s:6:"0x0100";i:1;s:6:"0x017F";i:2;s:16:"Latin Extended-A";}i:3;a:3:{i:0;s:6:"0x0180";i:1;s:6:"0x024F";i:2;s:16:"Latin Extended-B";}i:4;a:3:{i:0;s:6:"0x0250";i:1;s:6:"0x02AF";i:2;s:14:"IPA Extensions";}i:5;a:3:{i:0;s:6:"0x02B0";i:1;s:6:"0x02FF";i:2;s:24:"Spacing Modifier Letters";}i:6;a:3:{i:0;s:6:"0x0300";i:1;s:6:"0x036F";i:2;s:27:"Combining Diacritical Marks";}i:7;a:3:{i:0;s:6:"0x0370";i:1;s:6:"0x03FF";i:2;s:16:"Greek and Coptic";}i:8;a:3:{i:0;s:6:"0x0400";i:1;s:6:"0x04FF";i:2;s:8:"Cyrillic";}i:9;a:3:{i:0;s:6:"0x0500";i:1;s:6:"0x052F";i:2;s:19:"Cyrillic Supplement";}i:10;a:3:{i:0;s:6:"0x0530";i:1;s:6:"0x058F";i:2;s:8:"Armenian";}i:11;a:3:{i:0;s:6:"0x0590";i:1;s:6:"0x05FF";i:2;s:6:"Hebrew";}i:12;a:3:{i:0;s:6:"0x0600";i:1;s:6:"0x06FF";i:2;s:6:"Arabic";}i:13;a:3:{i:0;s:6:"0x0700";i:1;s:6:"0x074F";i:2;s:6:"Syriac";}i:14;a:3:{i:0;s:6:"0x0750";i:1;s:6:"0x077F";i:2;s:17:"Arabic Supplement";}i:15;a:3:{i:0;s:6:"0x0780";i:1;s:6:"0x07BF";i:2;s:6:"Thaana";}i:16;a:3:{i:0;s:6:"0x0900";i:1;s:6:"0x097F";i:2;s:10:"Devanagari";}i:17;a:3:{i:0;s:6:"0x0980";i:1;s:6:"0x09FF";i:2;s:7:"Bengali";}i:18;a:3:{i:0;s:6:"0x0A00";i:1;s:6:"0x0A7F";i:2;s:8:"Gurmukhi";}i:19;a:3:{i:0;s:6:"0x0A80";i:1;s:6:"0x0AFF";i:2;s:8:"Gujarati";}i:20;a:3:{i:0;s:6:"0x0B00";i:1;s:6:"0x0B7F";i:2;s:5:"Oriya";}i:21;a:3:{i:0;s:6:"0x0B80";i:1;s:6:"0x0BFF";i:2;s:5:"Tamil";}i:22;a:3:{i:0;s:6:"0x0C00";i:1;s:6:"0x0C7F";i:2;s:6:"Telugu";}i:23;a:3:{i:0;s:6:"0x0C80";i:1;s:6:"0x0CFF";i:2;s:7:"Kannada";}i:24;a:3:{i:0;s:6:"0x0D00";i:1;s:6:"0x0D7F";i:2;s:9:"Malayalam";}i:25;a:3:{i:0;s:6:"0x0D80";i:1;s:6:"0x0DFF";i:2;s:7:"Sinhala";}i:26;a:3:{i:0;s:6:"0x0E00";i:1;s:6:"0x0E7F";i:2;s:4:"Thai";}i:27;a:3:{i:0;s:6:"0x0E80";i:1;s:6:"0x0EFF";i:2;s:3:"Lao";}i:28;a:3:{i:0;s:6:"0x0F00";i:1;s:6:"0x0FFF";i:2;s:7:"Tibetan";}i:29;a:3:{i:0;s:6:"0x1000";i:1;s:6:"0x109F";i:2;s:7:"Myanmar";}i:30;a:3:{i:0;s:6:"0x10A0";i:1;s:6:"0x10FF";i:2;s:8:"Georgian";}i:31;a:3:{i:0;s:6:"0x1100";i:1;s:6:"0x11FF";i:2;s:11:"Hangul Jamo";}i:32;a:3:{i:0;s:6:"0x1200";i:1;s:6:"0x137F";i:2;s:8:"Ethiopic";}i:33;a:3:{i:0;s:6:"0x1380";i:1;s:6:"0x139F";i:2;s:19:"Ethiopic Supplement";}i:34;a:3:{i:0;s:6:"0x13A0";i:1;s:6:"0x13FF";i:2;s:8:"Cherokee";}i:35;a:3:{i:0;s:6:"0x1400";i:1;s:6:"0x167F";i:2;s:37:"Unified Canadian Aboriginal Syllabics";}i:36;a:3:{i:0;s:6:"0x1680";i:1;s:6:"0x169F";i:2;s:5:"Ogham";}i:37;a:3:{i:0;s:6:"0x16A0";i:1;s:6:"0x16FF";i:2;s:5:"Runic";}i:38;a:3:{i:0;s:6:"0x1700";i:1;s:6:"0x171F";i:2;s:7:"Tagalog";}i:39;a:3:{i:0;s:6:"0x1720";i:1;s:6:"0x173F";i:2;s:7:"Hanunoo";}i:40;a:3:{i:0;s:6:"0x1740";i:1;s:6:"0x175F";i:2;s:5:"Buhid";}i:41;a:3:{i:0;s:6:"0x1760";i:1;s:6:"0x177F";i:2;s:8:"Tagbanwa";}i:42;a:3:{i:0;s:6:"0x1780";i:1;s:6:"0x17FF";i:2;s:5:"Khmer";}i:43;a:3:{i:0;s:6:"0x1800";i:1;s:6:"0x18AF";i:2;s:9:"Mongolian";}i:44;a:3:{i:0;s:6:"0x1900";i:1;s:6:"0x194F";i:2;s:5:"Limbu";}i:45;a:3:{i:0;s:6:"0x1950";i:1;s:6:"0x197F";i:2;s:6:"Tai Le";}i:46;a:3:{i:0;s:6:"0x1980";i:1;s:6:"0x19DF";i:2;s:11:"New Tai Lue";}i:47;a:3:{i:0;s:6:"0x19E0";i:1;s:6:"0x19FF";i:2;s:13:"Khmer Symbols";}i:48;a:3:{i:0;s:6:"0x1A00";i:1;s:6:"0x1A1F";i:2;s:8:"Buginese";}i:49;a:3:{i:0;s:6:"0x1D00";i:1;s:6:"0x1D7F";i:2;s:19:"Phonetic Extensions";}i:50;a:3:{i:0;s:6:"0x1D80";i:1;s:6:"0x1DBF";i:2;s:30:"Phonetic Extensions Supplement";}i:51;a:3:{i:0;s:6:"0x1DC0";i:1;s:6:"0x1DFF";i:2;s:38:"Combining Diacritical Marks Supplement";}i:52;a:3:{i:0;s:6:"0x1E00";i:1;s:6:"0x1EFF";i:2;s:25:"Latin Extended Additional";}i:53;a:3:{i:0;s:6:"0x1F00";i:1;s:6:"0x1FFF";i:2;s:14:"Greek Extended";}i:54;a:3:{i:0;s:6:"0x2000";i:1;s:6:"0x206F";i:2;s:19:"General Punctuation";}i:55;a:3:{i:0;s:6:"0x2070";i:1;s:6:"0x209F";i:2;s:27:"Superscripts and Subscripts";}i:56;a:3:{i:0;s:6:"0x20A0";i:1;s:6:"0x20CF";i:2;s:16:"Currency Symbols";}i:57;a:3:{i:0;s:6:"0x20D0";i:1;s:6:"0x20FF";i:2;s:39:"Combining Diacritical Marks for Symbols";}i:58;a:3:{i:0;s:6:"0x2100";i:1;s:6:"0x214F";i:2;s:18:"Letterlike Symbols";}i:59;a:3:{i:0;s:6:"0x2150";i:1;s:6:"0x218F";i:2;s:12:"Number Forms";}i:60;a:3:{i:0;s:6:"0x2190";i:1;s:6:"0x21FF";i:2;s:6:"Arrows";}i:61;a:3:{i:0;s:6:"0x2200";i:1;s:6:"0x22FF";i:2;s:22:"Mathematical Operators";}i:62;a:3:{i:0;s:6:"0x2300";i:1;s:6:"0x23FF";i:2;s:23:"Miscellaneous Technical";}i:63;a:3:{i:0;s:6:"0x2400";i:1;s:6:"0x243F";i:2;s:16:"Control Pictures";}i:64;a:3:{i:0;s:6:"0x2440";i:1;s:6:"0x245F";i:2;s:29:"Optical Character Recognition";}i:65;a:3:{i:0;s:6:"0x2460";i:1;s:6:"0x24FF";i:2;s:22:"Enclosed Alphanumerics";}i:66;a:3:{i:0;s:6:"0x2500";i:1;s:6:"0x257F";i:2;s:11:"Box Drawing";}i:67;a:3:{i:0;s:6:"0x2580";i:1;s:6:"0x259F";i:2;s:14:"Block Elements";}i:68;a:3:{i:0;s:6:"0x25A0";i:1;s:6:"0x25FF";i:2;s:16:"Geometric Shapes";}i:69;a:3:{i:0;s:6:"0x2600";i:1;s:6:"0x26FF";i:2;s:21:"Miscellaneous Symbols";}i:70;a:3:{i:0;s:6:"0x2700";i:1;s:6:"0x27BF";i:2;s:8:"Dingbats";}i:71;a:3:{i:0;s:6:"0x27C0";i:1;s:6:"0x27EF";i:2;s:36:"Miscellaneous Mathematical Symbols-A";}i:72;a:3:{i:0;s:6:"0x27F0";i:1;s:6:"0x27FF";i:2;s:21:"Supplemental Arrows-A";}i:73;a:3:{i:0;s:6:"0x2800";i:1;s:6:"0x28FF";i:2;s:16:"Braille Patterns";}i:74;a:3:{i:0;s:6:"0x2900";i:1;s:6:"0x297F";i:2;s:21:"Supplemental Arrows-B";}i:75;a:3:{i:0;s:6:"0x2980";i:1;s:6:"0x29FF";i:2;s:36:"Miscellaneous Mathematical Symbols-B";}i:76;a:3:{i:0;s:6:"0x2A00";i:1;s:6:"0x2AFF";i:2;s:35:"Supplemental Mathematical Operators";}i:77;a:3:{i:0;s:6:"0x2B00";i:1;s:6:"0x2BFF";i:2;s:32:"Miscellaneous Symbols and Arrows";}i:78;a:3:{i:0;s:6:"0x2C00";i:1;s:6:"0x2C5F";i:2;s:10:"Glagolitic";}i:79;a:3:{i:0;s:6:"0x2C80";i:1;s:6:"0x2CFF";i:2;s:6:"Coptic";}i:80;a:3:{i:0;s:6:"0x2D00";i:1;s:6:"0x2D2F";i:2;s:19:"Georgian Supplement";}i:81;a:3:{i:0;s:6:"0x2D30";i:1;s:6:"0x2D7F";i:2;s:8:"Tifinagh";}i:82;a:3:{i:0;s:6:"0x2D80";i:1;s:6:"0x2DDF";i:2;s:17:"Ethiopic Extended";}i:83;a:3:{i:0;s:6:"0x2E00";i:1;s:6:"0x2E7F";i:2;s:24:"Supplemental Punctuation";}i:84;a:3:{i:0;s:6:"0x2E80";i:1;s:6:"0x2EFF";i:2;s:23:"CJK Radicals Supplement";}i:85;a:3:{i:0;s:6:"0x2F00";i:1;s:6:"0x2FDF";i:2;s:15:"Kangxi Radicals";}i:86;a:3:{i:0;s:6:"0x2FF0";i:1;s:6:"0x2FFF";i:2;s:34:"Ideographic Description Characters";}i:87;a:3:{i:0;s:6:"0x3000";i:1;s:6:"0x303F";i:2;s:27:"CJK Symbols and Punctuation";}i:88;a:3:{i:0;s:6:"0x3040";i:1;s:6:"0x309F";i:2;s:8:"Hiragana";}i:89;a:3:{i:0;s:6:"0x30A0";i:1;s:6:"0x30FF";i:2;s:8:"Katakana";}i:90;a:3:{i:0;s:6:"0x3100";i:1;s:6:"0x312F";i:2;s:8:"Bopomofo";}i:91;a:3:{i:0;s:6:"0x3130";i:1;s:6:"0x318F";i:2;s:25:"Hangul Compatibility Jamo";}i:92;a:3:{i:0;s:6:"0x3190";i:1;s:6:"0x319F";i:2;s:6:"Kanbun";}i:93;a:3:{i:0;s:6:"0x31A0";i:1;s:6:"0x31BF";i:2;s:17:"Bopomofo Extended";}i:94;a:3:{i:0;s:6:"0x31C0";i:1;s:6:"0x31EF";i:2;s:11:"CJK Strokes";}i:95;a:3:{i:0;s:6:"0x31F0";i:1;s:6:"0x31FF";i:2;s:28:"Katakana Phonetic Extensions";}i:96;a:3:{i:0;s:6:"0x3200";i:1;s:6:"0x32FF";i:2;s:31:"Enclosed CJK Letters and Months";}i:97;a:3:{i:0;s:6:"0x3300";i:1;s:6:"0x33FF";i:2;s:17:"CJK Compatibility";}i:98;a:3:{i:0;s:6:"0x3400";i:1;s:6:"0x4DBF";i:2;s:34:"CJK Unified Ideographs Extension A";}i:99;a:3:{i:0;s:6:"0x4DC0";i:1;s:6:"0x4DFF";i:2;s:23:"Yijing Hexagram Symbols";}i:100;a:3:{i:0;s:6:"0x4E00";i:1;s:6:"0x9FFF";i:2;s:22:"CJK Unified Ideographs";}i:101;a:3:{i:0;s:6:"0xA000";i:1;s:6:"0xA48F";i:2;s:12:"Yi Syllables";}i:102;a:3:{i:0;s:6:"0xA490";i:1;s:6:"0xA4CF";i:2;s:11:"Yi Radicals";}i:103;a:3:{i:0;s:6:"0xA700";i:1;s:6:"0xA71F";i:2;s:21:"Modifier Tone Letters";}i:104;a:3:{i:0;s:6:"0xA800";i:1;s:6:"0xA82F";i:2;s:12:"Syloti Nagri";}i:105;a:3:{i:0;s:6:"0xAC00";i:1;s:6:"0xD7AF";i:2;s:16:"Hangul Syllables";}i:106;a:3:{i:0;s:6:"0xD800";i:1;s:6:"0xDB7F";i:2;s:15:"High Surrogates";}i:107;a:3:{i:0;s:6:"0xDB80";i:1;s:6:"0xDBFF";i:2;s:27:"High Private Use Surrogates";}i:108;a:3:{i:0;s:6:"0xDC00";i:1;s:6:"0xDFFF";i:2;s:14:"Low Surrogates";}i:109;a:3:{i:0;s:6:"0xE000";i:1;s:6:"0xF8FF";i:2;s:16:"Private Use Area";}i:110;a:3:{i:0;s:6:"0xF900";i:1;s:6:"0xFAFF";i:2;s:28:"CJK Compatibility Ideographs";}i:111;a:3:{i:0;s:6:"0xFB00";i:1;s:6:"0xFB4F";i:2;s:29:"Alphabetic Presentation Forms";}i:112;a:3:{i:0;s:6:"0xFB50";i:1;s:6:"0xFDFF";i:2;s:27:"Arabic Presentation Forms-A";}i:113;a:3:{i:0;s:6:"0xFE00";i:1;s:6:"0xFE0F";i:2;s:19:"Variation Selectors";}i:114;a:3:{i:0;s:6:"0xFE10";i:1;s:6:"0xFE1F";i:2;s:14:"Vertical Forms";}i:115;a:3:{i:0;s:6:"0xFE20";i:1;s:6:"0xFE2F";i:2;s:20:"Combining Half Marks";}i:116;a:3:{i:0;s:6:"0xFE30";i:1;s:6:"0xFE4F";i:2;s:23:"CJK Compatibility Forms";}i:117;a:3:{i:0;s:6:"0xFE50";i:1;s:6:"0xFE6F";i:2;s:19:"Small Form Variants";}i:118;a:3:{i:0;s:6:"0xFE70";i:1;s:6:"0xFEFF";i:2;s:27:"Arabic Presentation Forms-B";}i:119;a:3:{i:0;s:6:"0xFF00";i:1;s:6:"0xFFEF";i:2;s:29:"Halfwidth and Fullwidth Forms";}i:120;a:3:{i:0;s:6:"0xFFF0";i:1;s:6:"0xFFFF";i:2;s:8:"Specials";}i:121;a:3:{i:0;s:7:"0x10000";i:1;s:7:"0x1007F";i:2;s:18:"Linear B Syllabary";}i:122;a:3:{i:0;s:7:"0x10080";i:1;s:7:"0x100FF";i:2;s:18:"Linear B Ideograms";}i:123;a:3:{i:0;s:7:"0x10100";i:1;s:7:"0x1013F";i:2;s:14:"Aegean Numbers";}i:124;a:3:{i:0;s:7:"0x10140";i:1;s:7:"0x1018F";i:2;s:21:"Ancient Greek Numbers";}i:125;a:3:{i:0;s:7:"0x10300";i:1;s:7:"0x1032F";i:2;s:10:"Old Italic";}i:126;a:3:{i:0;s:7:"0x10330";i:1;s:7:"0x1034F";i:2;s:6:"Gothic";}i:127;a:3:{i:0;s:7:"0x10380";i:1;s:7:"0x1039F";i:2;s:8:"Ugaritic";}i:128;a:3:{i:0;s:7:"0x103A0";i:1;s:7:"0x103DF";i:2;s:11:"Old Persian";}i:129;a:3:{i:0;s:7:"0x10400";i:1;s:7:"0x1044F";i:2;s:7:"Deseret";}i:130;a:3:{i:0;s:7:"0x10450";i:1;s:7:"0x1047F";i:2;s:7:"Shavian";}i:131;a:3:{i:0;s:7:"0x10480";i:1;s:7:"0x104AF";i:2;s:7:"Osmanya";}i:132;a:3:{i:0;s:7:"0x10800";i:1;s:7:"0x1083F";i:2;s:17:"Cypriot Syllabary";}i:133;a:3:{i:0;s:7:"0x10A00";i:1;s:7:"0x10A5F";i:2;s:10:"Kharoshthi";}i:134;a:3:{i:0;s:7:"0x1D000";i:1;s:7:"0x1D0FF";i:2;s:25:"Byzantine Musical Symbols";}i:135;a:3:{i:0;s:7:"0x1D100";i:1;s:7:"0x1D1FF";i:2;s:15:"Musical Symbols";}i:136;a:3:{i:0;s:7:"0x1D200";i:1;s:7:"0x1D24F";i:2;s:30:"Ancient Greek Musical Notation";}i:137;a:3:{i:0;s:7:"0x1D300";i:1;s:7:"0x1D35F";i:2;s:21:"Tai Xuan Jing Symbols";}i:138;a:3:{i:0;s:7:"0x1D400";i:1;s:7:"0x1D7FF";i:2;s:33:"Mathematical Alphanumeric Symbols";}i:139;a:3:{i:0;s:7:"0x20000";i:1;s:7:"0x2A6DF";i:2;s:34:"CJK Unified Ideographs Extension B";}i:140;a:3:{i:0;s:7:"0x2F800";i:1;s:7:"0x2FA1F";i:2;s:39:"CJK Compatibility Ideographs Supplement";}i:141;a:3:{i:0;s:7:"0xE0000";i:1;s:7:"0xE007F";i:2;s:4:"Tags";}i:142;a:3:{i:0;s:7:"0xE0100";i:1;s:7:"0xE01EF";i:2;s:30:"Variation Selectors Supplement";}i:143;a:3:{i:0;s:7:"0xF0000";i:1;s:7:"0xFFFFF";i:2;s:32:"Supplementary Private Use Area-A";}i:144;a:3:{i:0;s:8:"0x100000";i:1;s:8:"0x10FFFF";i:2;s:32:"Supplementary Private Use Area-B";}}
      \ No newline at end of file
      diff --git a/php/lib/Text_LanguageDetect/docs/example_clui.php b/php/lib/Text_LanguageDetect/docs/example_clui.php
      new file mode 100644
      index 00000000..8e7d8577
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/docs/example_clui.php
      @@ -0,0 +1,35 @@
      +getLanguages();
      +sort($langs);
      +echo join(', ', $langs);
      +
      +echo "\ntotal ", count($langs), "\n\n";
      +
      +while ($line = fgets($stdin)) {
      +    $result = $l->detect($line, 4);
      +    print_r($result);
      +    $blocks = $l->detectUnicodeBlocks($line, true);
      +    print_r($blocks);
      +}
      +
      +fclose($stdin);
      +unset($l);
      +
      +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
      +
      +?>
      diff --git a/php/lib/Text_LanguageDetect/docs/example_web.php b/php/lib/Text_LanguageDetect/docs/example_web.php
      new file mode 100644
      index 00000000..1e155fef
      --- /dev/null
      +++ b/php/lib/Text_LanguageDetect/docs/example_web.php
      @@ -0,0 +1,72 @@
      +
      +
      +
      +Text_LanguageDetect demonstration
      +
      +
      +

      Text_LanguageDetect

      +Supported languages:\n"; +$langs = $l->getLanguages(); +sort($langs); +foreach ($langs as $lang) { + echo ucfirst($lang), ', '; + $i++; +} + +echo "
      total $i

      "; + +?> + +Enter text to identify language (at least a couple of sentences):
      + +
      + + +utf8strlen($q); + if ($len < 20) { // this value picked somewhat arbitrarily + echo "Warning: string not very long ($len chars)
      \n"; + } + + $result = $l->detectConfidence($q); + + if ($result == null) { + echo "Text_LanguageDetect cannot identify this piece of text.

      \n"; + } else { + echo "Text_LanguageDetect thinks this text is written in {$result['language']} ({$result['similarity']}, {$result['confidence']})

      \n"; + } + + $result = $l->detectUnicodeBlocks($q, false); + if (!empty($result)) { + arsort($result); + echo "Unicode blocks present: ", join(', ', array_keys($result)), "\n

      "; + } +} + +unset($l); + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +?> + diff --git a/php/lib/Text_LanguageDetect/docs/iso.php b/php/lib/Text_LanguageDetect/docs/iso.php new file mode 100644 index 00000000..6d7ec1d2 --- /dev/null +++ b/php/lib/Text_LanguageDetect/docs/iso.php @@ -0,0 +1,21 @@ +setNameMode(2); +echo $l->detectSimple('Das ist ein kleiner Text') . "\n"; + +//will output the ISO 639-2 three-letter language code +// "deu" +$l->setNameMode(3); +echo $l->detectSimple('Das ist ein kleiner Text') . "\n"; + +?> \ No newline at end of file diff --git a/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php b/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php new file mode 100644 index 00000000..bbf4dd77 --- /dev/null +++ b/php/lib/Text_LanguageDetect/tests/Text_LanguageDetectTest.php @@ -0,0 +1,2056 @@ +x = new Text_LanguageDetect(); + } + + function tearDown () + { + unset($this->x); + } + + function test_get_data_locAbsolute() + { + $this->assertEquals( + '/path/to/file', + $this->x->_get_data_loc('/path/to/file') + ); + } + + function test_get_data_locPearPath() + { + $this->x->_data_dir = '/path/to/pear/data'; + $this->assertEquals( + '/path/to/pear/data/Text_LanguageDetect/file', + $this->x->_get_data_loc('file') + ); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database does not exist: + */ + function test_readdbNonexistingFile() + { + $this->x->_readdb('thisfiledoesnotexist'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database is not readable: + */ + function test_readdbUnreadableFile() + { + $name = tempnam(sys_get_temp_dir(), 'unittest-Text_LanguageDetect-'); + chmod($name, 0000); + $this->x->_readdb($name); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database has no elements. + */ + function test_checkTrigramEmpty() + { + $this->x->_checkTrigram(array()); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Language database is not an array + */ + function test_checkTrigramNoArray() + { + $this->x->_checkTrigram('foo'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Error loading database. Try turning magic_quotes_runtime off + */ + function test_checkTrigramNoArrayMagicQuotes() + { + if (version_compare(PHP_VERSION, '5.4.0-dev') >= 0) { + $this->markTestSkipped('5.4.0 has no magic quotes anymore'); + } + ini_set('magic_quotes_runtime', 1); + $this->x->_checkTrigram('foo'); + } + + function test_splitter () + { + $str = 'hello'; + + $result = $this->x->_trigram($str); + + $this->assertEquals(array(' he' => 1, 'hel' => 1, 'ell' => 1, 'llo' => 1, 'lo ' => 1), $result); + + $str = 'aa aa whatever'; + + $result = $this->x->_trigram($str); + $this->assertEquals(2, $result[' aa']); + $this->assertEquals(2, $result['aa ']); + $this->assertEquals(1, $result['a a']); + + $str = 'aa aa'; + $result = $this->x->_trigram($str); + $this->assertArrayNotHasKey(' a', $result, ' a'); + $this->assertArrayNotHasKey('a ', $result, 'a '); + } + + function test_splitter2 () + { + $str = 'resumé'; + + $result = $this->x->_trigram($str); + + $this->assertTrue(isset($result['mé ']), 'mé '); + $this->assertTrue(isset($result['umé']), 'umé'); + $this->assertTrue(!isset($result['é ']), 'é'); + + // tests lower-casing accented characters + $str = 'resumÉ'; + + $result = $this->x->_trigram($str); + + $this->assertTrue(isset($result['mé ']),'mé '); + $this->assertTrue(isset($result['umé']),'umé'); + $this->assertTrue(!isset($result['é ']),'é'); + } + + function test_sort () + { + $arr = array('a' => 1, 'b' => 2, 'c' => 2); + $this->x->_bub_sort($arr); + + $final_arr = array('b' => 2, 'c' => 2, 'a' => 1); + + $this->assertEquals($final_arr, $arr); + } + + function test_error () + { + // this test passes the object a series of bad strings to see how it handles them + + $result = $this->x->detectSimple(""); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple("\n"); + + $this->assertTrue(!$result); + + // should fail on extremely short strings + $result = $this->x->detectSimple("a"); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple("aa"); + + $this->assertTrue(!$result); + + $result = $this->x->detectSimple('xxxxxxxxxxxxxxxxxxx'); + + $this->assertEquals(null, $result); + } + + function testOmitLanguages() + { + $str = 'This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.'; + + $myobj = new Text_LanguageDetect; + + $myobj->_use_unicode_narrowing = false; + + $count = $myobj->getLanguageCount(); + $returnval = $myobj->omitLanguages('english'); + $newcount = $myobj->getLanguageCount(); + + $this->assertEquals(1, $returnval); + $this->assertEquals(1, $count - $newcount); + + $result = strtolower($myobj->detectSimple($str)); + + $this->assertTrue($result != 'english', $result); + + $myobj = new Text_LanguageDetect; + + $count = $myobj->getLanguageCount(); + $returnval = $myobj->omitLanguages(array('danish', 'italian'), true); + $newcount = $myobj->getLanguageCount(); + + $this->assertEquals($count - $newcount, $returnval); + $this->assertEquals($count - $returnval, $newcount); + + $result = strtolower($myobj->detectSimple($str)); + + $this->assertTrue($result == 'danish' || $result == 'italian', $result); + + $result = $myobj->detect($str); + + $this->assertEquals(2, count($result)); + $this->assertTrue(isset($result['danish'])); + $this->assertTrue(isset($result['italian'])); + + unset($myobj); + } + + function testOmitLanguagesNameMode2() + { + $this->x->setNameMode(2); + $this->assertEquals(1, $this->x->omitLanguages('en')); + } + + function testOmitLanguagesIncludeString() + { + $this->assertGreaterThan(1, $this->x->omitLanguages('english', true)); + $langs = $this->x->getLanguages(); + $this->assertEquals(1, count($langs)); + $this->assertContains('english', $langs); + } + + function testOmitLanguagesClearsClusterCache() + { + $this->x->omitLanguages(array('english', 'german'), true); + $this->assertNull($this->x->_clusters); + $this->x->clusterLanguages(); + $this->assertNotNull($this->x->_clusters); + $this->x->omitLanguages('german'); + $this->assertNull($this->x->_clusters, 'cluster cache be empty now'); + } + + function test_perl_compatibility() + { + // if this test fails, then many of the others will + + $myobj = new Text_LanguageDetect; + $myobj->setPerlCompatible(true); + + $testtext = "hello"; + + $result = $myobj->_trigram($testtext); + + $this->assertTrue(!isset($result[' he'])); + } + + function test_french_db () + { + + $safe_model = array( + "es " => 0, " de" => 1, "de " => 2, " le" => 3, "ent" => 4, + "le " => 5, "nt " => 6, "la " => 7, "s d" => 8, " la" => 9, + "ion" => 10, "on " => 11, "re " => 12, " pa" => 13, "e l" => 14, + "e d" => 15, " l'" => 16, "e p" => 17, " co" => 18, " pr" => 19, + "tio" => 20, "ns " => 21, " en" => 22, "ne " => 23, "que" => 24, + "r l" => 25, "les" => 26, "ur " => 27, "en " => 28, "ati" => 29, + "ue " => 30, " po" => 31, " d'" => 32, "par" => 33, " a " => 34, + "et " => 35, "it " => 36, " qu" => 37, "men" => 38, "ons" => 39, + "te " => 40, " et" => 41, "t d" => 42, " re" => 43, "des" => 44, + " un" => 45, "ie " => 46, "s l" => 47, " su" => 48, "pou" => 49, + " au" => 50, " à " => 51, "con" => 52, "er " => 53, " no" => 54, + "ait" => 55, "e c" => 56, "se " => 57, "té " => 58, "du " => 59, + " du" => 60, " dé" => 61, "ce " => 62, "e e" => 63, "is " => 64, + "n d" => 65, "s a" => 66, " so" => 67, "e r" => 68, "e s" => 69, + "our" => 70, "res" => 71, "ssi" => 72, "eur" => 73, " se" => 74, + "eme" => 75, "est" => 76, "us " => 77, "sur" => 78, "ant" => 79, + "iqu" => 80, "s p" => 81, "une" => 82, "uss" => 83, "l'a" => 84, + "pro" => 85, "ter" => 86, "tre" => 87, "end" => 88, "rs " => 89, + " ce" => 90, "e a" => 91, "t p" => 92, "un " => 93, " ma" => 94, + " ru" => 95, " ré" => 96, "ous" => 97, "ris" => 98, "rus" => 99, + "sse" => 100, "ans" => 101, "ar " => 102, "com" => 103, "e m" => 104, + "ire" => 105, "nce" => 106, "nte" => 107, "t l" => 108, " av" => 109, + " mo" => 110, " te" => 111, "il " => 112, "me " => 113, "ont" => 114, + "ten" => 115, "a p" => 116, "dan" => 117, "pas" => 118, "qui" => 119, + "s e" => 120, "s s" => 121, " in" => 122, "ist" => 123, "lle" => 124, + "nou" => 125, "pré" => 126, "'un" => 127, "air" => 128, "d'a" => 129, + "ir " => 130, "n e" => 131, "rop" => 132, "ts " => 133, " da" => 134, + "a s" => 135, "as " => 136, "au " => 137, "den" => 138, "mai" => 139, + "mis" => 140, "ori" => 141, "out" => 142, "rme" => 143, "sio" => 144, + "tte" => 145, "ux " => 146, "a d" => 147, "ien" => 148, "n a" => 149, + "ntr" => 150, "omm" => 151, "ort" => 152, "ouv" => 153, "s c" => 154, + "son" => 155, "tes" => 156, "ver" => 157, "ère" => 158, " il" => 159, + " m " => 160, " sa" => 161, " ve" => 162, "a r" => 163, "ais" => 164, + "ava" => 165, "di " => 166, "n p" => 167, "sti" => 168, "ven" => 169, + " mi" => 170, "ain" => 171, "enc" => 172, "for" => 173, "ité" => 174, + "lar" => 175, "oir" => 176, "rem" => 177, "ren" => 178, "rro" => 179, + "rés" => 180, "sie" => 181, "t a" => 182, "tur" => 183, " pe" => 184, + " to" => 185, "d'u" => 186, "ell" => 187, "err" => 188, "ers" => 189, + "ide" => 190, "ine" => 191, "iss" => 192, "mes" => 193, "por" => 194, + "ran" => 195, "sit" => 196, "st " => 197, "t r" => 198, "uti" => 199, + "vai" => 200, "é l" => 201, "ési" => 202, " di" => 203, " n'" => 204, + " ét" => 205, "a c" => 206, "ass" => 207, "e t" => 208, "in " => 209, + "nde" => 210, "pre" => 211, "rat" => 212, "s m" => 213, "ste" => 214, + "tai" => 215, "tch" => 216, "ui " => 217, "uro" => 218, "ès " => 219, + " es" => 220, " fo" => 221, " tr" => 222, "'ad" => 223, "app" => 224, + "aux" => 225, "e à" => 226, "ett" => 227, "iti" => 228, "lit" => 229, + "nal" => 230, "opé" => 231, "r d" => 232, "ra " => 233, "rai" => 234, + "ror" => 235, "s r" => 236, "tat" => 237, "uté" => 238, "à l" => 239, + " af" => 240, "anc" => 241, "ara" => 242, "art" => 243, "bre" => 244, + "ché" => 245, "dre" => 246, "e f" => 247, "ens" => 248, "lem" => 249, + "n r" => 250, "n t" => 251, "ndr" => 252, "nne" => 253, "onn" => 254, + "pos" => 255, "s t" => 256, "tiq" => 257, "ure" => 258, " tu" => 259, + "ale" => 260, "and" => 261, "ave" => 262, "cla" => 263, "cou" => 264, + "e n" => 265, "emb" => 266, "ins" => 267, "jou" => 268, "mme" => 269, + "rie" => 270, "rès" => 271, "sem" => 272, "str" => 273, "t i" => 274, + "ues" => 275, "uni" => 276, "uve" => 277, "é d" => 278, "ée " => 279, + " ch" => 280, " do" => 281, " eu" => 282, " fa" => 283, " lo" => 284, + " ne" => 285, " ra" => 286, "arl" => 287, "att" => 288, "ec " => 289, + "ica" => 290, "l a" => 291, "l'o" => 292, "l'é" => 293, "mmi" => 294, + "nta" => 295, "orm" => 296, "ou " => 297, "r u" => 298, "rle" => 299 + ); + + + $my_arr = $this->x->_lang_db['french']; + + foreach ($safe_model as $key => $value) { + $this->assertTrue(isset($my_arr[$key]),$key); + if (isset($my_arr[$key])) { + $this->assertEquals($value, $my_arr[$key], $key); + } + } + } + + function test_english_db () + { + + $realdb = array( + " th" => 0, "the" => 1, "he " => 2, "ed " => 3, " to" => 4, + " in" => 5, "er " => 6, "ing" => 7, "ng " => 8, " an" => 9, + "nd " => 10, " of" => 11, "and" => 12, "to " => 13, "of " => 14, + " co" => 15, "at " => 16, "on " => 17, "in " => 18, " a " => 19, + "d t" => 20, " he" => 21, "e t" => 22, "ion" => 23, "es " => 24, + " re" => 25, "re " => 26, "hat" => 27, " sa" => 28, " st" => 29, + " ha" => 30, "her" => 31, "tha" => 32, "tio" => 33, "or " => 34, + " ''" => 35, "en " => 36, " wh" => 37, "e s" => 38, "ent" => 39, + "n t" => 40, "s a" => 41, "as " => 42, "for" => 43, "is " => 44, + "t t" => 45, " be" => 46, "ld " => 47, "e a" => 48, "rs " => 49, + " wa" => 50, "ut " => 51, "ve " => 52, "ll " => 53, "al " => 54, + " ma" => 55, "e i" => 56, " fo" => 57, "'s " => 58, "an " => 59, + "est" => 60, " hi" => 61, " mo" => 62, " se" => 63, " pr" => 64, + "s t" => 65, "ate" => 66, "st " => 67, "ter" => 68, "ere" => 69, + "ted" => 70, "nt " => 71, "ver" => 72, "d a" => 73, " wi" => 74, + "se " => 75, "e c" => 76, "ect" => 77, "ns " => 78, " on" => 79, + "ly " => 80, "tol" => 81, "ey " => 82, "r t" => 83, " ca" => 84, + "ati" => 85, "ts " => 86, "all" => 87, " no" => 88, "his" => 89, + "s o" => 90, "ers" => 91, "con" => 92, "e o" => 93, "ear" => 94, + "f t" => 95, "e w" => 96, "was" => 97, "ons" => 98, "sta" => 99, + "'' " => 100, "sti" => 101, "n a" => 102, "sto" => 103, "t h" => 104, + " we" => 105, "id " => 106, "th " => 107, " it" => 108, "ce " => 109, + " di" => 110, "ave" => 111, "d h" => 112, "cou" => 113, "pro" => 114, + "ad " => 115, "oll" => 116, "ry " => 117, "d s" => 118, "e m" => 119, + " so" => 120, "ill" => 121, "cti" => 122, "te " => 123, "tor" => 124, + "eve" => 125, "g t" => 126, "it " => 127, " ch" => 128, " de" => 129, + "hav" => 130, "oul" => 131, "ty " => 132, "uld" => 133, "use" => 134, + " al" => 135, "are" => 136, "ch " => 137, "me " => 138, "out" => 139, + "ove" => 140, "wit" => 141, "ys " => 142, "chi" => 143, "t a" => 144, + "ith" => 145, "oth" => 146, " ab" => 147, " te" => 148, " wo" => 149, + "s s" => 150, "res" => 151, "t w" => 152, "tin" => 153, "e b" => 154, + "e h" => 155, "nce" => 156, "t s" => 157, "y t" => 158, "e p" => 159, + "ele" => 160, "hin" => 161, "s i" => 162, "nte" => 163, " li" => 164, + "le " => 165, " do" => 166, "aid" => 167, "hey" => 168, "ne " => 169, + "s w" => 170, " as" => 171, " fr" => 172, " tr" => 173, "end" => 174, + "sai" => 175, " el" => 176, " ne" => 177, " su" => 178, "'t " => 179, + "ay " => 180, "hou" => 181, "ive" => 182, "lec" => 183, "n't" => 184, + " ye" => 185, "but" => 186, "d o" => 187, "o t" => 188, "y o" => 189, + " ho" => 190, " me" => 191, "be " => 192, "cal" => 193, "e e" => 194, + "had" => 195, "ple" => 196, " at" => 197, " bu" => 198, " la" => 199, + "d b" => 200, "s h" => 201, "say" => 202, "t i" => 203, " ar" => 204, + "e f" => 205, "ght" => 206, "hil" => 207, "igh" => 208, "int" => 209, + "not" => 210, "ren" => 211, " is" => 212, " pa" => 213, " sh" => 214, + "ays" => 215, "com" => 216, "n s" => 217, "r a" => 218, "rin" => 219, + "y a" => 220, " un" => 221, "n c" => 222, "om " => 223, "thi" => 224, + " mi" => 225, "by " => 226, "d i" => 227, "e d" => 228, "e n" => 229, + "t o" => 230, " by" => 231, "e r" => 232, "eri" => 233, "old" => 234, + "ome" => 235, "whe" => 236, "yea" => 237, " gr" => 238, "ar " => 239, + "ity" => 240, "mpl" => 241, "oun" => 242, "one" => 243, "ow " => 244, + "r s" => 245, "s f" => 246, "tat" => 247, " ba" => 248, " vo" => 249, + "bou" => 250, "sam" => 251, "tim" => 252, "vot" => 253, "abo" => 254, + "ant" => 255, "ds " => 256, "ial" => 257, "ine" => 258, "man" => 259, + "men" => 260, " or" => 261, " po" => 262, "amp" => 263, "can" => 264, + "der" => 265, "e l" => 266, "les" => 267, "ny " => 268, "ot " => 269, + "rec" => 270, "tes" => 271, "tho" => 272, "ica" => 273, "ild" => 274, + "ir " => 275, "nde" => 276, "ose" => 277, "ous" => 278, "pre" => 279, + "ste" => 280, "era" => 281, "per" => 282, "r o" => 283, "red" => 284, + "rie" => 285, " bo" => 286, " le" => 287, "ali" => 288, "ars" => 289, + "ore" => 290, "ric" => 291, "s m" => 292, "str" => 293, " fa" => 294, + "ess" => 295, "ie " => 296, "ist" => 297, "lat" => 298, "uri" => 299, + ); + + $mod = $this->x->_lang_db['english']; + + foreach ($realdb as $key => $value) { + $this->assertTrue(isset($mod[$key]), $key); + if (isset($mod[$key])) { + $this->assertEquals($value, $mod[$key], $key); + } + } + + foreach ($mod as $key => $value) { + $this->assertTrue(isset($realdb[$key])); + if (isset($realdb[$key])) { + $this->assertEquals($value, $realdb[$key], $key); + } + } + } + + function test_confidence () + { + $str = 'The next thing to notice is the Content-length header. The Content-length header notifies the server of the size of the data that you intend to send. This prevents unexpected end-of-data errors from the server when dealing with binary data, because the server will read the specified number of bytes from the data stream regardless of any spurious end-of-data characters.'; + + $result = $this->x->detectConfidence($str); + + $this->assertEquals(3, count($result)); + $this->assertTrue(isset($result['language']), 'language'); + $this->assertTrue(isset($result['similarity']), 'similarity'); + $this->assertTrue(isset($result['confidence']), 'confidence'); + $this->assertEquals('english', $result['language']); + $this->assertTrue($result['similarity'] <= 300 && $result['similarity'] >= 0, $result['similarity']); + $this->assertTrue($result['confidence'] <= 1 && $result['confidence'] >= 0, $result['confidence']); + + // todo: tests for Danish and Norwegian should have lower confidence + } + + function test_long_example () + { + // an example that is more than 300 trigrams long + $str = 'The Italian Renaissance began the opening phase of the Renaissance, a period of great cultural change and achievement from the 14th to the 16th century. The word renaissance means "rebirth," and the era is best known for the renewed interest in the culture of classical antiquity. The Italian Renaissance began in northern Italy, centering in Florence. It then spread south, having an especially significant impact on Rome, which was largely rebuilt by the Renaissance popes. The Italian Renaissance is best known for its cultural achievements. This includes works of literature by such figures as Petrarch, Castiglione, and Machiavelli; artists such as Michaelangelo and Leonardo da Vinci, and great works of architecture such as The Duomo in Florence and St. Peter\'s Basilica in Rome. At the same time, present-day historians also see the era as one of economic regression and of little progress in science. Furthermore, some historians argue that the lot of the peasants and urban poor, the majority of the population, worsened during this period.'; + + $this->x->setPerlCompatible(); + $tri = $this->x->_trigram($str); + + $exp_tri = array( + ' th', + 'the', + 'he ', + ' an', + ' re', + ' of', + 'ce ', + 'nce', + 'of ', + 'ren', + ' in', + 'and', + 'nd ', + 'an ', + 'san', + ' it', + 'ais', + 'anc', + 'ena', + 'in ', + 'iss', + 'nai', + 'ssa', + 'tur', + ' pe', + 'as ', + 'ch ', + 'ent', + 'ian', + 'me ', + 'n r', + 'res', + ' as', + ' be', + ' wo', + 'at ', + 'chi', + 'e i', + 'e o', + 'e p', + 'gre', + 'his', + 'ing', + 'is ', + 'ita', + 'n f', + 'ng ', + 're ', + 's a', + 'st ', + 'tal', + 'ter', + 'th ', + 'ts ', + 'ure', + 'wor', + ' ar', + ' cu', + ' po', + ' su', + 'ach', + 'al ', + 'ali', + 'ans', + 'ant', + 'cul', + 'e b', + 'e r', + 'e t', + 'enc', + 'era', + 'eri', + 'es ', + 'est', + 'f t', + 'ica', + 'ion', + 'ist', + 'lia', + 'ltu', + 'ly ', + 'ns ', + 'nt ', + 'ome', + 'on ', + 'or ', + 'ore', + 'ori', + 'rea', + 'rom', + 'rth', + 's b', + 's o', + 'suc', + 't t', + 'uch', + 'ult', + ' ac', + ' by', + ' ce', + ' da', + ' du', + ' er', + ' fl', + ' fo', + ' gr', + ' hi', + ' is', + ' kn', + ' li', + ' ma', + ' on', + ' pr', + ' ro', + ' so', + 'a i', + 'ang', + 'arc', + 'arg', + 'beg', + 'bes', + 'by ', + 'cen', + 'cha', + 'd o', + 'd s', + 'e a', + 'e e', + 'e m', + 'e s', + 'eat', + 'ed ', + 'ega', + 'eme', + 'ene', + 'ess', + 'eve', + 'f l', + 'flo', + 'for', + 'gan', + 'gel', + 'h a', + 'her', + 'hie', + 'ich', + 'iev', + 'inc', + 'iod', + 'ite', + 'ity', + 'kno', + 'ks ', + 'l a', + 'lit', + 'lor', + 'men', + 'mic', + 'n i', + 'n s', + 'n t', + 'ne ', + 'nge', + 'now', + 'nte', + 'nts', + 'od ', + 'one', + 'ope', + 'ork', + 'own', + 'per', + 'pet', + 'pop', + 'pre', + 'ra ', + 'ral', + 'rch', + 'reb', + 'ria', + 'rin', + 'rio', + 'rks', + 's i', + 's p', + 'sen', + 'ssi', + 'sto', + 't i', + 't k', + 't o', + 'thi', + 'tor', + 'ty ', + 'ura', + 'vem', + 'vin', + 'wn ', + 'y s', + ' a ', + ' al', + ' at', + ' ba', + ' ca', + ' ch', + ' cl', + ' ec', + ' es', + ' fi', + ' fr', + ' fu', + ' ha', + ' im', + ' la', + ' le', + ' lo', + ' me', + ' mi', + ' no', + ' op', + ' ph', + ' sa', + ' sc', + ' se', + ' si', + ' sp', + ' st', + ' ti', + ' to', + ' ur', + ' vi', + ' wa', + ' wh', + '\'s ', + 'a a', + 'a p', + 'a v', + 'act', + 'ad ', + 'ael', + 'ajo', + 'all', + 'als', + 'aly', + 'ame', + 'ard', + 'art', + 'asa', + 'ase', + 'asi', + 'ass', + 'ast', + 'ati', + 'atu', + 'ave', + 'avi', + 'ay ', + 'ban', + 'bas', + 'bir', + 'bui', + 'c r', + 'ca ', + 'cal', + 'can', + 'cas', + 'ci ', + 'cia', + 'cie', + 'cla', + 'clu', + 'con', + 'ct ', + 'ctu', + 'd a', + 'd d', + 'd g', + 'd i', + 'd l', + 'd m', + 'd r', + 'd t', + 'd u', + 'da ', + 'day', + 'des', + 'do ', + 'duo', + 'dur', + 'e c', + 'e d', + 'e h', + 'e l', + 'e w', + 'ead', + 'ean', + 'eas', + 'ebi', + 'ebu', + 'eci', + 'eco', + 'ect', + 'ee ', + 'egr', + 'ela', + 'ell', + 'elo', + 'ely', + 'en ', + 'eni', + 'eon', + 'er\'', + 'ere', + 'erm', + 'ern', + 'ese', + 'esp', + 'ete', + 'etr', + 'ewe', + 'f a', + 'f c', + 'f e', + 'f g', + 'fic', + 'fig', + 'fro', + 'fur', + 'g a', + 'g i', + 'g p', + 'g t', + 'ge ', + 'gli', + 'gni', + 'gue', + 'gur', + 'h c', + 'h f', + 'h t', + 'h w', + 'hae', + 'han', + 'has', + 'hat', + 'hav', + 'hen', + 'hia', + 'hic', + 'hit', + 'ial', + 'iav', + 'ic ', + 'ien', + 'ifi', + 'igl', + 'ign', + 'igu', + 'ili', + 'ilt', + 'ime', + 'imp', + 'int', + 'iqu', + 'irt', + 'it ', + 'its', + 'itt', + 'jor', + 'l c', + 'lan', + 'lar', + 'las', + 'lat', + 'le ', + 'leo', + 'li ', + 'lic', + 'lio', + 'lli', + 'lly', + 'lo ', + 'lot', + 'lso', + 'lt ', + 'lud', + 'm t', + 'mac', + 'maj', + 'mea', + 'mo ', + 'mor', + 'mpa', + 'n a', + 'n e', + 'n n', + 'n p', + 'nar', + 'nci', + 'ncl', + 'ned', + 'new', + 'nif', + 'nin', + 'nom', + 'nor', + 'nti', + 'ntu', + 'o a', + 'o d', + 'o i', + 'o s', + 'o t', + 'ogr', + 'om ', + 'omi', + 'omo', + 'ona', + 'ono', + 'oor', + 'opu', + 'ord', + 'ors', + 'ort', + 'ot ', + 'out', + 'pac', + 'pea', + 'pec', + 'pen', + 'pes', + 'pha', + 'poo', + 'pro', + 'pul', + 'qui', + 'r i', + 'r t', + 'r\'s', + 'rar', + 'rat', + 'rba', + 'rd ', + 'rdo', + 'reg', + 'rge', + 'rgu', + 'rit', + 'rmo', + 'rn ', + 'rog', + 'rse', + 'rti', + 'ry ', + 's c', + 's l', + 's m', + 's s', + 's t', + 's w', + 'sam', + 'sci', + 'se ', + 'see', + 'sic', + 'sig', + 'sil', + 'sio', + 'so ', + 'som', + 'sou', + 'spe', + 'spr', + 'ss ', + 'sti', + 'sts', + 't b', + 't c', + 't d', + 't f', + 't w', + 'tec', + 'tha', + 'tig', + 'tim', + 'tio', + 'tiq', + 'tis', + 'tle', + 'to ', + 'tra', + 'ttl', + 'ude', + 'ue ', + 'uil', + 'uit', + 'ula', + 'uom', + 'urb', + 'uri', + 'urt', + 'ury', + 'uth', + 'vel', + 'was', + 'wed', + 'whi', + 'y h', + 'y o', + 'y r', + 'y t' + ); + + $differences = array_diff(array_keys($tri), $exp_tri); + $this->assertEquals(0, count($differences)); + $this->assertEquals(0, count(array_diff($exp_tri, array_keys($tri)))); + $this->assertEquals(count($exp_tri), count($tri)); + //print_r(array_diff($exp_tri, array_keys($tri))); + //print_r(array_diff(array_keys($tri), $exp_tri)); + + // tests the bubble sort mechanism + $this->x->_bub_sort($tri); + $this->assertEquals($exp_tri, array_keys($tri)); + + $true_differences = array( + "cas" => array('change' => 300, 'baserank' => 265, 'refrank' => null), "s i" => array('change' => 21, 'baserank' => 183, 'refrank' => 162), + "e b" => array('change' => 88, 'baserank' => 66, 'refrank' => 154), "ent" => array('change' => 12, 'baserank' => 27, 'refrank' => 39), + "ome" => array('change' => 152, 'baserank' => 83, 'refrank' => 235), "ral" => array('change' => 300, 'baserank' => 176, 'refrank' => null), + "ita" => array('change' => 300, 'baserank' => 44, 'refrank' => null), "bas" => array('change' => 300, 'baserank' => 258, 'refrank' => null), + " ar" => array('change' => 148, 'baserank' => 56, 'refrank' => 204), " in" => array('change' => 5, 'baserank' => 10, 'refrank' => 5), + " ti" => array('change' => 300, 'baserank' => 227, 'refrank' => null), "ty " => array('change' => 61, 'baserank' => 193, 'refrank' => 132), + "tur" => array('change' => 300, 'baserank' => 23, 'refrank' => null), "iss" => array('change' => 300, 'baserank' => 20, 'refrank' => null), + "ria" => array('change' => 300, 'baserank' => 179, 'refrank' => null), " me" => array('change' => 25, 'baserank' => 216, 'refrank' => 191), + "t k" => array('change' => 300, 'baserank' => 189, 'refrank' => null), " es" => array('change' => 300, 'baserank' => 207, 'refrank' => null), + "ren" => array('change' => 202, 'baserank' => 9, 'refrank' => 211), "in " => array('change' => 1, 'baserank' => 19, 'refrank' => 18), + "ly " => array('change' => 0, 'baserank' => 80, 'refrank' => 80), "st " => array('change' => 18, 'baserank' => 49, 'refrank' => 67), + "ne " => array('change' => 8, 'baserank' => 161, 'refrank' => 169), "all" => array('change' => 154, 'baserank' => 241, 'refrank' => 87), + "vin" => array('change' => 300, 'baserank' => 196, 'refrank' => null), " op" => array('change' => 300, 'baserank' => 219, 'refrank' => null), + "chi" => array('change' => 107, 'baserank' => 36, 'refrank' => 143), "e w" => array('change' => 197, 'baserank' => 293, 'refrank' => 96), + " ro" => array('change' => 300, 'baserank' => 113, 'refrank' => null), "act" => array('change' => 300, 'baserank' => 237, 'refrank' => null), + "d r" => array('change' => 300, 'baserank' => 280, 'refrank' => null), "nt " => array('change' => 11, 'baserank' => 82, 'refrank' => 71), + "can" => array('change' => 0, 'baserank' => 264, 'refrank' => 264), "rea" => array('change' => 300, 'baserank' => 88, 'refrank' => null), + "ssa" => array('change' => 300, 'baserank' => 22, 'refrank' => null), " fo" => array('change' => 47, 'baserank' => 104, 'refrank' => 57), + "eas" => array('change' => 300, 'baserank' => 296, 'refrank' => null), "mic" => array('change' => 300, 'baserank' => 157, 'refrank' => null), + "cul" => array('change' => 300, 'baserank' => 65, 'refrank' => null), " an" => array('change' => 6, 'baserank' => 3, 'refrank' => 9), + "n t" => array('change' => 120, 'baserank' => 160, 'refrank' => 40), "arg" => array('change' => 300, 'baserank' => 118, 'refrank' => null), + " it" => array('change' => 93, 'baserank' => 15, 'refrank' => 108), "ebi" => array('change' => 300, 'baserank' => 297, 'refrank' => null), + " re" => array('change' => 21, 'baserank' => 4, 'refrank' => 25), "res" => array('change' => 120, 'baserank' => 31, 'refrank' => 151), + " be" => array('change' => 13, 'baserank' => 33, 'refrank' => 46), "rom" => array('change' => 300, 'baserank' => 89, 'refrank' => null), + "'s " => array('change' => 175, 'baserank' => 233, 'refrank' => 58), "arc" => array('change' => 300, 'baserank' => 117, 'refrank' => null), + " su" => array('change' => 119, 'baserank' => 59, 'refrank' => 178), "s p" => array('change' => 300, 'baserank' => 184, 'refrank' => null), + "ich" => array('change' => 300, 'baserank' => 145, 'refrank' => null), "d d" => array('change' => 300, 'baserank' => 275, 'refrank' => null), + "cal" => array('change' => 70, 'baserank' => 263, 'refrank' => 193), "ci " => array('change' => 300, 'baserank' => 266, 'refrank' => null), + "ssi" => array('change' => 300, 'baserank' => 186, 'refrank' => null), "bes" => array('change' => 300, 'baserank' => 120, 'refrank' => null), + "des" => array('change' => 300, 'baserank' => 285, 'refrank' => null), "e s" => array('change' => 91, 'baserank' => 129, 'refrank' => 38), + "ch " => array('change' => 111, 'baserank' => 26, 'refrank' => 137), "san" => array('change' => 300, 'baserank' => 14, 'refrank' => null), + "asi" => array('change' => 300, 'baserank' => 249, 'refrank' => null), "ajo" => array('change' => 300, 'baserank' => 240, 'refrank' => null), + "ase" => array('change' => 300, 'baserank' => 248, 'refrank' => null), " wa" => array('change' => 181, 'baserank' => 231, 'refrank' => 50), + "vem" => array('change' => 300, 'baserank' => 195, 'refrank' => null), "ed " => array('change' => 128, 'baserank' => 131, 'refrank' => 3), + "ant" => array('change' => 191, 'baserank' => 64, 'refrank' => 255), "a p" => array('change' => 300, 'baserank' => 235, 'refrank' => null), + "lor" => array('change' => 300, 'baserank' => 155, 'refrank' => null), "kno" => array('change' => 300, 'baserank' => 151, 'refrank' => null), + "ais" => array('change' => 300, 'baserank' => 16, 'refrank' => null), " pe" => array('change' => 300, 'baserank' => 24, 'refrank' => null), + "or " => array('change' => 51, 'baserank' => 85, 'refrank' => 34), "e i" => array('change' => 19, 'baserank' => 37, 'refrank' => 56), + " sp" => array('change' => 300, 'baserank' => 225, 'refrank' => null), "ad " => array('change' => 123, 'baserank' => 238, 'refrank' => 115), + " kn" => array('change' => 300, 'baserank' => 108, 'refrank' => null), "ega" => array('change' => 300, 'baserank' => 132, 'refrank' => null), + " ba" => array('change' => 46, 'baserank' => 202, 'refrank' => 248), "d t" => array('change' => 261, 'baserank' => 281, 'refrank' => 20), + "ork" => array('change' => 300, 'baserank' => 169, 'refrank' => null), "lia" => array('change' => 300, 'baserank' => 78, 'refrank' => null), + "ard" => array('change' => 300, 'baserank' => 245, 'refrank' => null), "iev" => array('change' => 300, 'baserank' => 146, 'refrank' => null), + "of " => array('change' => 6, 'baserank' => 8, 'refrank' => 14), " cu" => array('change' => 300, 'baserank' => 57, 'refrank' => null), + "day" => array('change' => 300, 'baserank' => 284, 'refrank' => null), "cen" => array('change' => 300, 'baserank' => 122, 'refrank' => null), + "re " => array('change' => 21, 'baserank' => 47, 'refrank' => 26), "ist" => array('change' => 220, 'baserank' => 77, 'refrank' => 297), + " fl" => array('change' => 300, 'baserank' => 103, 'refrank' => null), "anc" => array('change' => 300, 'baserank' => 17, 'refrank' => null), + "at " => array('change' => 19, 'baserank' => 35, 'refrank' => 16), "rch" => array('change' => 300, 'baserank' => 177, 'refrank' => null), + "ang" => array('change' => 300, 'baserank' => 116, 'refrank' => null), " mi" => array('change' => 8, 'baserank' => 217, 'refrank' => 225), + "y s" => array('change' => 300, 'baserank' => 198, 'refrank' => null), "ca " => array('change' => 300, 'baserank' => 262, 'refrank' => null), + " ma" => array('change' => 55, 'baserank' => 110, 'refrank' => 55), " lo" => array('change' => 300, 'baserank' => 215, 'refrank' => null), + "rin" => array('change' => 39, 'baserank' => 180, 'refrank' => 219), " im" => array('change' => 300, 'baserank' => 212, 'refrank' => null), + " er" => array('change' => 300, 'baserank' => 102, 'refrank' => null), "ce " => array('change' => 103, 'baserank' => 6, 'refrank' => 109), + "bui" => array('change' => 300, 'baserank' => 260, 'refrank' => null), "lit" => array('change' => 300, 'baserank' => 154, 'refrank' => null), + "iod" => array('change' => 300, 'baserank' => 148, 'refrank' => null), "ame" => array('change' => 300, 'baserank' => 244, 'refrank' => null), + "ter" => array('change' => 17, 'baserank' => 51, 'refrank' => 68), "e a" => array('change' => 78, 'baserank' => 126, 'refrank' => 48), + "f l" => array('change' => 300, 'baserank' => 137, 'refrank' => null), "eri" => array('change' => 162, 'baserank' => 71, 'refrank' => 233), + "ra " => array('change' => 300, 'baserank' => 175, 'refrank' => null), "ng " => array('change' => 38, 'baserank' => 46, 'refrank' => 8), + "d i" => array('change' => 50, 'baserank' => 277, 'refrank' => 227), "asa" => array('change' => 300, 'baserank' => 247, 'refrank' => null), + "wn " => array('change' => 300, 'baserank' => 197, 'refrank' => null), " at" => array('change' => 4, 'baserank' => 201, 'refrank' => 197), + "now" => array('change' => 300, 'baserank' => 163, 'refrank' => null), " by" => array('change' => 133, 'baserank' => 98, 'refrank' => 231), + "n s" => array('change' => 58, 'baserank' => 159, 'refrank' => 217), " li" => array('change' => 55, 'baserank' => 109, 'refrank' => 164), + "l a" => array('change' => 300, 'baserank' => 153, 'refrank' => null), "da " => array('change' => 300, 'baserank' => 283, 'refrank' => null), + "ean" => array('change' => 300, 'baserank' => 295, 'refrank' => null), "tal" => array('change' => 300, 'baserank' => 50, 'refrank' => null), + "d a" => array('change' => 201, 'baserank' => 274, 'refrank' => 73), "ct " => array('change' => 300, 'baserank' => 272, 'refrank' => null), + "ali" => array('change' => 226, 'baserank' => 62, 'refrank' => 288), "ian" => array('change' => 300, 'baserank' => 28, 'refrank' => null), + " sa" => array('change' => 193, 'baserank' => 221, 'refrank' => 28), "do " => array('change' => 300, 'baserank' => 286, 'refrank' => null), + "t o" => array('change' => 40, 'baserank' => 190, 'refrank' => 230), "ure" => array('change' => 300, 'baserank' => 54, 'refrank' => null), + "e c" => array('change' => 213, 'baserank' => 289, 'refrank' => 76), "ing" => array('change' => 35, 'baserank' => 42, 'refrank' => 7), + "d o" => array('change' => 63, 'baserank' => 124, 'refrank' => 187), " ha" => array('change' => 181, 'baserank' => 211, 'refrank' => 30), + "ts " => array('change' => 33, 'baserank' => 53, 'refrank' => 86), "rth" => array('change' => 300, 'baserank' => 90, 'refrank' => null), + "cla" => array('change' => 300, 'baserank' => 269, 'refrank' => null), " ac" => array('change' => 300, 'baserank' => 97, 'refrank' => null), + "th " => array('change' => 55, 'baserank' => 52, 'refrank' => 107), "rio" => array('change' => 300, 'baserank' => 181, 'refrank' => null), + "al " => array('change' => 7, 'baserank' => 61, 'refrank' => 54), "sto" => array('change' => 84, 'baserank' => 187, 'refrank' => 103), + "e o" => array('change' => 55, 'baserank' => 38, 'refrank' => 93), "bir" => array('change' => 300, 'baserank' => 259, 'refrank' => null), + " pr" => array('change' => 48, 'baserank' => 112, 'refrank' => 64), " le" => array('change' => 73, 'baserank' => 214, 'refrank' => 287), + "nai" => array('change' => 300, 'baserank' => 21, 'refrank' => null), "t i" => array('change' => 15, 'baserank' => 188, 'refrank' => 203), + " po" => array('change' => 204, 'baserank' => 58, 'refrank' => 262), "f t" => array('change' => 21, 'baserank' => 74, 'refrank' => 95), + "ban" => array('change' => 300, 'baserank' => 257, 'refrank' => null), "an " => array('change' => 46, 'baserank' => 13, 'refrank' => 59), + "wor" => array('change' => 300, 'baserank' => 55, 'refrank' => null), "pet" => array('change' => 300, 'baserank' => 172, 'refrank' => null), + "ael" => array('change' => 300, 'baserank' => 239, 'refrank' => null), "ura" => array('change' => 300, 'baserank' => 194, 'refrank' => null), + "eve" => array('change' => 11, 'baserank' => 136, 'refrank' => 125), "ion" => array('change' => 53, 'baserank' => 76, 'refrank' => 23), + "nge" => array('change' => 300, 'baserank' => 162, 'refrank' => null), "cha" => array('change' => 300, 'baserank' => 123, 'refrank' => null), + "ity" => array('change' => 90, 'baserank' => 150, 'refrank' => 240), " se" => array('change' => 160, 'baserank' => 223, 'refrank' => 63), + " on" => array('change' => 32, 'baserank' => 111, 'refrank' => 79), "s b" => array('change' => 300, 'baserank' => 91, 'refrank' => null), + "ans" => array('change' => 300, 'baserank' => 63, 'refrank' => null), "own" => array('change' => 300, 'baserank' => 170, 'refrank' => null), + " si" => array('change' => 300, 'baserank' => 224, 'refrank' => null), "e r" => array('change' => 165, 'baserank' => 67, 'refrank' => 232), + "est" => array('change' => 13, 'baserank' => 73, 'refrank' => 60), "hie" => array('change' => 300, 'baserank' => 144, 'refrank' => null), + "aly" => array('change' => 300, 'baserank' => 243, 'refrank' => null), "and" => array('change' => 1, 'baserank' => 11, 'refrank' => 12), + "beg" => array('change' => 300, 'baserank' => 119, 'refrank' => null), "dur" => array('change' => 300, 'baserank' => 288, 'refrank' => null), + "reb" => array('change' => 300, 'baserank' => 178, 'refrank' => null), "e e" => array('change' => 67, 'baserank' => 127, 'refrank' => 194), + "men" => array('change' => 104, 'baserank' => 156, 'refrank' => 260), " la" => array('change' => 14, 'baserank' => 213, 'refrank' => 199), + "con" => array('change' => 179, 'baserank' => 271, 'refrank' => 92), " fu" => array('change' => 300, 'baserank' => 210, 'refrank' => null), + "e l" => array('change' => 26, 'baserank' => 292, 'refrank' => 266), "s a" => array('change' => 7, 'baserank' => 48, 'refrank' => 41), + "art" => array('change' => 300, 'baserank' => 246, 'refrank' => null), "ltu" => array('change' => 300, 'baserank' => 79, 'refrank' => null), + "a i" => array('change' => 300, 'baserank' => 115, 'refrank' => null), "ctu" => array('change' => 300, 'baserank' => 273, 'refrank' => null), + "tor" => array('change' => 68, 'baserank' => 192, 'refrank' => 124), "ach" => array('change' => 300, 'baserank' => 60, 'refrank' => null), + "d g" => array('change' => 300, 'baserank' => 276, 'refrank' => null), "od " => array('change' => 300, 'baserank' => 166, 'refrank' => null), + "nte" => array('change' => 1, 'baserank' => 164, 'refrank' => 163), "ena" => array('change' => 300, 'baserank' => 18, 'refrank' => null), + "d l" => array('change' => 300, 'baserank' => 278, 'refrank' => null), "ene" => array('change' => 300, 'baserank' => 134, 'refrank' => null), + "e h" => array('change' => 136, 'baserank' => 291, 'refrank' => 155), "era" => array('change' => 211, 'baserank' => 70, 'refrank' => 281), + "on " => array('change' => 67, 'baserank' => 84, 'refrank' => 17), " ce" => array('change' => 300, 'baserank' => 99, 'refrank' => null), + "ay " => array('change' => 76, 'baserank' => 256, 'refrank' => 180), " da" => array('change' => 300, 'baserank' => 100, 'refrank' => null), + "ori" => array('change' => 300, 'baserank' => 87, 'refrank' => null), "atu" => array('change' => 300, 'baserank' => 253, 'refrank' => null), + "ave" => array('change' => 143, 'baserank' => 254, 'refrank' => 111), "rks" => array('change' => 300, 'baserank' => 182, 'refrank' => null), + "e d" => array('change' => 62, 'baserank' => 290, 'refrank' => 228), "ns " => array('change' => 3, 'baserank' => 81, 'refrank' => 78), + " ca" => array('change' => 119, 'baserank' => 203, 'refrank' => 84), "d s" => array('change' => 7, 'baserank' => 125, 'refrank' => 118), + "uch" => array('change' => 300, 'baserank' => 95, 'refrank' => null), "a v" => array('change' => 300, 'baserank' => 236, 'refrank' => null), + "nce" => array('change' => 149, 'baserank' => 7, 'refrank' => 156), "his" => array('change' => 48, 'baserank' => 41, 'refrank' => 89), + "flo" => array('change' => 300, 'baserank' => 138, 'refrank' => null), "ead" => array('change' => 300, 'baserank' => 294, 'refrank' => null), + " vi" => array('change' => 300, 'baserank' => 230, 'refrank' => null), "me " => array('change' => 109, 'baserank' => 29, 'refrank' => 138), + "suc" => array('change' => 300, 'baserank' => 93, 'refrank' => null), "e p" => array('change' => 120, 'baserank' => 39, 'refrank' => 159), + "eci" => array('change' => 300, 'baserank' => 299, 'refrank' => null), "eme" => array('change' => 300, 'baserank' => 133, 'refrank' => null), + "sen" => array('change' => 300, 'baserank' => 185, 'refrank' => null), "ks " => array('change' => 300, 'baserank' => 152, 'refrank' => null), + " to" => array('change' => 224, 'baserank' => 228, 'refrank' => 4), " gr" => array('change' => 133, 'baserank' => 105, 'refrank' => 238), + " ch" => array('change' => 76, 'baserank' => 204, 'refrank' => 128), "ati" => array('change' => 167, 'baserank' => 252, 'refrank' => 85), + " th" => array('change' => 0, 'baserank' => 0, 'refrank' => 0), " ec" => array('change' => 300, 'baserank' => 206, 'refrank' => null), + " wo" => array('change' => 115, 'baserank' => 34, 'refrank' => 149), "ope" => array('change' => 300, 'baserank' => 168, 'refrank' => null), + " a " => array('change' => 180, 'baserank' => 199, 'refrank' => 19), "one" => array('change' => 76, 'baserank' => 167, 'refrank' => 243), + "n f" => array('change' => 300, 'baserank' => 45, 'refrank' => null), "eat" => array('change' => 300, 'baserank' => 130, 'refrank' => null), + "ica" => array('change' => 198, 'baserank' => 75, 'refrank' => 273), "inc" => array('change' => 300, 'baserank' => 147, 'refrank' => null), + "enc" => array('change' => 300, 'baserank' => 69, 'refrank' => null), "ore" => array('change' => 204, 'baserank' => 86, 'refrank' => 290), + "is " => array('change' => 1, 'baserank' => 43, 'refrank' => 44), " as" => array('change' => 139, 'baserank' => 32, 'refrank' => 171), + "nts" => array('change' => 300, 'baserank' => 165, 'refrank' => null), "d m" => array('change' => 300, 'baserank' => 279, 'refrank' => null), + "her" => array('change' => 112, 'baserank' => 143, 'refrank' => 31), " al" => array('change' => 65, 'baserank' => 200, 'refrank' => 135), + " is" => array('change' => 105, 'baserank' => 107, 'refrank' => 212), "e t" => array('change' => 46, 'baserank' => 68, 'refrank' => 22), + "c r" => array('change' => 300, 'baserank' => 261, 'refrank' => null), " hi" => array('change' => 45, 'baserank' => 106, 'refrank' => 61), + "cia" => array('change' => 300, 'baserank' => 267, 'refrank' => null), " fr" => array('change' => 37, 'baserank' => 209, 'refrank' => 172), + "ult" => array('change' => 300, 'baserank' => 96, 'refrank' => null), "e m" => array('change' => 9, 'baserank' => 128, 'refrank' => 119), + "ass" => array('change' => 300, 'baserank' => 250, 'refrank' => null), "s o" => array('change' => 2, 'baserank' => 92, 'refrank' => 90), + "pop" => array('change' => 300, 'baserank' => 173, 'refrank' => null), "nd " => array('change' => 2, 'baserank' => 12, 'refrank' => 10), + "the" => array('change' => 0, 'baserank' => 1, 'refrank' => 1), " st" => array('change' => 197, 'baserank' => 226, 'refrank' => 29), + " no" => array('change' => 130, 'baserank' => 218, 'refrank' => 88), "ast" => array('change' => 300, 'baserank' => 251, 'refrank' => null), + " fi" => array('change' => 300, 'baserank' => 208, 'refrank' => null), "ess" => array('change' => 160, 'baserank' => 135, 'refrank' => 295), + "gre" => array('change' => 300, 'baserank' => 40, 'refrank' => null), "h a" => array('change' => 300, 'baserank' => 142, 'refrank' => null), + "duo" => array('change' => 300, 'baserank' => 287, 'refrank' => null), " so" => array('change' => 6, 'baserank' => 114, 'refrank' => 120), + "es " => array('change' => 48, 'baserank' => 72, 'refrank' => 24), "for" => array('change' => 96, 'baserank' => 139, 'refrank' => 43), + "gan" => array('change' => 300, 'baserank' => 140, 'refrank' => null), "per" => array('change' => 111, 'baserank' => 171, 'refrank' => 282), + "thi" => array('change' => 33, 'baserank' => 191, 'refrank' => 224), " of" => array('change' => 6, 'baserank' => 5, 'refrank' => 11), + " cl" => array('change' => 300, 'baserank' => 205, 'refrank' => null), " sc" => array('change' => 300, 'baserank' => 222, 'refrank' => null), + "t t" => array('change' => 49, 'baserank' => 94, 'refrank' => 45), "als" => array('change' => 300, 'baserank' => 242, 'refrank' => null), + "avi" => array('change' => 300, 'baserank' => 255, 'refrank' => null), "cie" => array('change' => 300, 'baserank' => 268, 'refrank' => null), + " du" => array('change' => 300, 'baserank' => 101, 'refrank' => null), "pre" => array('change' => 105, 'baserank' => 174, 'refrank' => 279), + "as " => array('change' => 17, 'baserank' => 25, 'refrank' => 42), "a a" => array('change' => 300, 'baserank' => 234, 'refrank' => null), + "gel" => array('change' => 300, 'baserank' => 141, 'refrank' => null), "ite" => array('change' => 300, 'baserank' => 149, 'refrank' => null), + "n r" => array('change' => 300, 'baserank' => 30, 'refrank' => null), "by " => array('change' => 105, 'baserank' => 121, 'refrank' => 226), + "d u" => array('change' => 300, 'baserank' => 282, 'refrank' => null), "clu" => array('change' => 300, 'baserank' => 270, 'refrank' => null), + " ur" => array('change' => 300, 'baserank' => 229, 'refrank' => null), "ebu" => array('change' => 300, 'baserank' => 298, 'refrank' => null), + "n i" => array('change' => 300, 'baserank' => 158, 'refrank' => null), "he " => array('change' => 0, 'baserank' => 2, 'refrank' => 2), + " wh" => array('change' => 195, 'baserank' => 232, 'refrank' => 37), " ph" => array('change' => 300, 'baserank' => 220, 'refrank' => null), + ); + + $ranked = $this->x->_arr_rank($this->x->_trigram($str)); + $results = $this->x->detect($str); + + $count = count($ranked); + $sum = 0; + + //foreach ($this->x->_lang_db['english'] as $key => $value) { + foreach ($ranked as $key => $value) { + if (isset($ranked[$key]) && isset($this->x->_lang_db['english'][$key])) { + $difference = abs($this->x->_lang_db['english'][$key] - $ranked[$key]); + } else { + $difference = 300; + } + + $this->assertTrue(isset($true_differences[$key]), "'$key'"); + if (isset($true_differences[$key])) { + $this->assertEquals($true_differences[$key]['change'], $difference, "'$key'"); + } + $sum += $difference; + } + + $this->assertEquals(300, $count); + $this->assertEquals(59490, $sum); + + $this->assertEquals('english', key($results)); + $this->assertEquals(198, floor(current($results))); + next($results); + $this->assertEquals('italian', key($results)); + $this->assertEquals(228, floor(current($results))); + } + + function test_french () + { + $this->x->setPerlCompatible(); + $str = "Verifions que le détecteur de langues marche"; + + $trigrams = $this->x->_trigram($str); + $this->assertEquals(42, count($trigrams)); + // verified in Language::Guess + + $ranked = $this->x->_arr_rank($trigrams); + $this->assertEquals(0, $ranked['e l']); + + $correct_ranks = array( + ' de' => 1, + "éte" => 41, + "dét" => 12, + 'fio' => 18, + 'de ' => 11, + 'ons' => 28, + 'ect' => 14, + 'le ' => 24, + 'arc' => 8, + 'lan' => 23, + 'es ' => 16, + 'mar' => 25, + " dé" => 2, + 'ifi' => 21, + 'gue' => 19, + 'ur ' => 39, + 'rch' => 31, + 'ang' => 7, + 'que' => 29, + 'ngu' => 26, + 'e d' => 13, + 'rif' => 32, + ' ma' => 5, + 'tec' => 35, + 'ns ' => 27, + ' la' => 3, + ' le' => 4, + 'r d' => 30, + 'e l' => 0, + 'che' => 9, + 's m' => 33, + 'ue ' => 37, + 'ver' => 40, + 'teu' => 36, + 'eri' => 15, + 'cte' => 10, + 'ues' => 38, + 's q' => 34, + 'eur' => 17, + ' qu' => 6, + 'he ' => 20, + 'ion' => 22 + ); + + + $this->assertEquals(count($correct_ranks), count($ranked), "different number of trigrams found"); + + $distances = array( + ' de' => array('change' => 0, 'baserank' => 1, 'refrank' => 1), + 'éte' => array('change' => 300, 'baserank' => 41, 'refrank' => null), + 'dét' => array('change' => 300, 'baserank' => 12, 'refrank' => null), + 'fio' => array('change' => 300, 'baserank' => 18, 'refrank' => null), + 'de ' => array('change' => 9, 'baserank' => 11, 'refrank' => 2), + 'ons' => array('change' => 11, 'baserank' => 28, 'refrank' => 39), + 'ect' => array('change' => 300, 'baserank' => 14, 'refrank' => null), + 'le ' => array('change' => 19, 'baserank' => 24, 'refrank' => 5), + 'arc' => array('change' => 300, 'baserank' => 8, 'refrank' => null), + 'lan' => array('change' => 300, 'baserank' => 23, 'refrank' => null), + 'es ' => array('change' => 16, 'baserank' => 16, 'refrank' => 0), + 'mar' => array('change' => 300, 'baserank' => 25, 'refrank' => null), + ' dé' => array('change' => 59, 'baserank' => 2, 'refrank' => 61), + 'ifi' => array('change' => 300, 'baserank' => 21, 'refrank' => null), + 'gue' => array('change' => 300, 'baserank' => 19, 'refrank' => null), + 'ur ' => array('change' => 12, 'baserank' => 39, 'refrank' => 27), + 'rch' => array('change' => 300, 'baserank' => 31, 'refrank' => null), + 'ang' => array('change' => 300, 'baserank' => 7, 'refrank' => null), + 'que' => array('change' => 5, 'baserank' => 29, 'refrank' => 24), + 'ngu' => array('change' => 300, 'baserank' => 26, 'refrank' => null), + 'e d' => array('change' => 2, 'baserank' => 13, 'refrank' => 15), + 'rif' => array('change' => 300, 'baserank' => 32, 'refrank' => null), + ' ma' => array('change' => 89, 'baserank' => 5, 'refrank' => 94), + 'tec' => array('change' => 300, 'baserank' => 35, 'refrank' => null), + 'ns ' => array('change' => 6, 'baserank' => 27, 'refrank' => 21), + ' la' => array('change' => 6, 'baserank' => 3, 'refrank' => 9), + ' le' => array('change' => 1, 'baserank' => 4, 'refrank' => 3), + 'r d' => array('change' => 202, 'baserank' => 30, 'refrank' => 232), + 'e l' => array('change' => 14, 'baserank' => 0, 'refrank' => 14), + 'che' => array('change' => 300, 'baserank' => 9, 'refrank' => null), + 's m' => array('change' => 180, 'baserank' => 33, 'refrank' => 213), + 'ue ' => array('change' => 7, 'baserank' => 37, 'refrank' => 30), + 'ver' => array('change' => 117, 'baserank' => 40, 'refrank' => 157), + 'teu' => array('change' => 300, 'baserank' => 36, 'refrank' => null), + 'eri' => array('change' => 300, 'baserank' => 15, 'refrank' => null), + 'cte' => array('change' => 300, 'baserank' => 10, 'refrank' => null), + 'ues' => array('change' => 237, 'baserank' => 38, 'refrank' => 275), + 's q' => array('change' => 300, 'baserank' => 34, 'refrank' => null), + 'eur' => array('change' => 56, 'baserank' => 17, 'refrank' => 73), + ' qu' => array('change' => 31, 'baserank' => 6, 'refrank' => 37), + 'he ' => array('change' => 300, 'baserank' => 20, 'refrank' => null), + 'ion' => array('change' => 12, 'baserank' => 22, 'refrank' => 10), + ); + + + + $french_ranks = $this->x->_lang_db['french']; + + $sumchange = 0; + foreach ($ranked as $key => $value) { + if (isset($french_ranks[$key])) { + $difference = abs($french_ranks[$key] - $ranked[$key]); + } else { + $difference = 300; + } + $this->assertTrue(isset($distances[$key]), $key); + if (isset($distances[$key])) { + $this->assertEquals($distances[$key]['baserank'], $ranked[$key], "baserank for $key"); + if ($distances[$key]['refrank'] === null) { + $this->assertArrayNotHasKey($key, $french_ranks); + } else { + $this->assertEquals($distances[$key]['refrank'], $french_ranks[$key], "refrank for $key"); + } + $this->assertEquals($distances[$key]['change'], $difference, "difference for $key"); + } + + $sumchange += $difference; + } + + $actual_result = $this->x->_distance($french_ranks, $ranked); + $this->assertEquals($sumchange, $actual_result); + $this->assertEquals(7091, $actual_result); + $this->assertEquals(168, floor($sumchange/count($trigrams))); + + $final_result = $this->x->detect($str); + $this->assertEquals(168, floor($final_result['french'])); + $this->assertEquals(211, $final_result['spanish']); + } + + function test_russian () + { + $str = 'авай проверить узнает ли наш угадатель русски язык'; + + $this->x->setPerlCompatible(); + $trigrams = $this->x->_trigram($str); + $ranked = $this->x->_arr_rank($trigrams); + + $correct_ranks = array( + ' ру' => array('change' => 300, 'baserank' => 3, 'refrank' => null), + 'ай ' => array('change' => 300, 'baserank' => 10, 'refrank' => null), + 'ада' => array('change' => 300, 'baserank' => 8, 'refrank' => null), + ' пр' => array('change' => 1, 'baserank' => 2, 'refrank' => 1), + ' яз' => array('change' => 300, 'baserank' => 6, 'refrank' => null), + 'ить' => array('change' => 300, 'baserank' => 24, 'refrank' => null), + ' на' => array('change' => 1, 'baserank' => 1, 'refrank' => 0), + 'зна' => array('change' => 153, 'baserank' => 20, 'refrank' => 173), + 'вай' => array('change' => 300, 'baserank' => 13, 'refrank' => null), + 'ш у' => array('change' => 300, 'baserank' => 44, 'refrank' => null), + 'ль ' => array('change' => 300, 'baserank' => 28, 'refrank' => null), + ' ли' => array('change' => 300, 'baserank' => 0, 'refrank' => null), + 'сск' => array('change' => 300, 'baserank' => 37, 'refrank' => null), + 'ть ' => array('change' => 31, 'baserank' => 40, 'refrank' => 9), + 'ава' => array('change' => 300, 'baserank' => 7, 'refrank' => null), + 'про' => array('change' => 18, 'baserank' => 32, 'refrank' => 14), + 'гад' => array('change' => 300, 'baserank' => 15, 'refrank' => null), + 'усс' => array('change' => 300, 'baserank' => 43, 'refrank' => null), + 'ык ' => array('change' => 300, 'baserank' => 45, 'refrank' => null), + 'ель' => array('change' => 64, 'baserank' => 17, 'refrank' => 81), + 'язы' => array('change' => 300, 'baserank' => 47, 'refrank' => null), + ' уг' => array('change' => 300, 'baserank' => 4, 'refrank' => null), + 'ате' => array('change' => 152, 'baserank' => 11, 'refrank' => 163), + 'и н' => array('change' => 63, 'baserank' => 22, 'refrank' => 85), + 'и я' => array('change' => 300, 'baserank' => 23, 'refrank' => null), + 'ает' => array('change' => 152, 'baserank' => 9, 'refrank' => 161), + 'узн' => array('change' => 300, 'baserank' => 42, 'refrank' => null), + 'ери' => array('change' => 300, 'baserank' => 18, 'refrank' => null), + 'ли ' => array('change' => 23, 'baserank' => 27, 'refrank' => 4), + 'т л' => array('change' => 300, 'baserank' => 38, 'refrank' => null), + ' уз' => array('change' => 300, 'baserank' => 5, 'refrank' => null), + 'дат' => array('change' => 203, 'baserank' => 16, 'refrank' => 219), + 'зык' => array('change' => 300, 'baserank' => 21, 'refrank' => null), + 'ров' => array('change' => 59, 'baserank' => 34, 'refrank' => 93), + 'рит' => array('change' => 300, 'baserank' => 33, 'refrank' => null), + 'ь р' => array('change' => 300, 'baserank' => 46, 'refrank' => null), + 'ет ' => array('change' => 19, 'baserank' => 19, 'refrank' => 38), + 'ки ' => array('change' => 116, 'baserank' => 26, 'refrank' => 142), + 'рус' => array('change' => 300, 'baserank' => 35, 'refrank' => null), + 'тел' => array('change' => 16, 'baserank' => 39, 'refrank' => 23), + 'нае' => array('change' => 300, 'baserank' => 29, 'refrank' => null), + 'й п' => array('change' => 300, 'baserank' => 25, 'refrank' => null), + 'наш' => array('change' => 300, 'baserank' => 30, 'refrank' => null), + 'уга' => array('change' => 300, 'baserank' => 41, 'refrank' => null), + 'ове' => array('change' => 214, 'baserank' => 31, 'refrank' => 245), + 'ски' => array('change' => 112, 'baserank' => 36, 'refrank' => 148), + 'вер' => array('change' => 31, 'baserank' => 14, 'refrank' => 45), + 'аш ' => array('change' => 300, 'baserank' => 12, 'refrank' => null), + ); + + $this->assertEquals(48, count($ranked)); + + + $russian = $this->x->_lang_db['russian']; + + $sumchange = 0; + foreach ($ranked as $key => $value) { + if (isset($russian[$key])) { + $difference = abs($russian[$key] - $ranked[$key]); + } else { + $difference = 300; + } + $this->assertTrue(isset($correct_ranks[$key], $key)); + if (isset($correct_ranks[$key])) { + $this->assertEquals($correct_ranks[$key]['baserank'], $ranked[$key], "baserank for $key"); + if ($correct_ranks[$key]['refrank'] === null) { + $this->assertArrayNotHasKey($key, $russian); + } else { + $this->assertEquals($correct_ranks[$key]['refrank'], $russian[$key], "refrank for $key"); + } + $this->assertEquals($correct_ranks[$key]['change'], $difference, "difference for $key"); + } + + $sumchange += $difference; + } + + $actual_result = $this->x->_distance($russian, $ranked); + $this->assertEquals($sumchange, $actual_result); + $this->assertEquals(10428, $actual_result); + $this->assertEquals(217, floor($sumchange/count($trigrams))); + + $final_result = $this->x->detect($str); + $this->assertEquals(217,floor($final_result['russian'])); + } + + function test_ranker () + { + $str = 'is it s i'; + + $result = $this->x->_arr_rank($this->x->_trigram($str)); + + $this->assertEquals(0, $result['s i']); + } + + + function test_count () + { + $langs = $this->x->getLanguages(); + + $count = $this->x->getLanguageCount(); + + $this->assertEquals(count($langs), $count); + + foreach ($langs as $lang) { + $this->assertTrue($this->x->languageExists($lang), $lang); + } + } + + function testLanguageExistsNameMode2() + { + $this->x->setNameMode(2); + $this->assertTrue($this->x->languageExists('en')); + $this->assertFalse($this->x->languageExists('english')); + } + + function testLanguageExistsArrayNameMode2() + { + $this->x->setNameMode(2); + $this->assertTrue($this->x->languageExists(array('en', 'de'))); + $this->assertFalse($this->x->languageExists(array('en', 'doesnotexist'))); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Unsupported parameter type passed to languageExists() + */ + function testLanguageExistsUnsupportedType() + { + $this->x->languageExists(1.23); + } + + function testGetLanguages() + { + $langs = $this->x->getLanguages(); + $this->assertContains('english', $langs); + $this->assertContains('swedish', $langs); + } + + function testGetLanguagesNameMode2() + { + $this->x->setNameMode(2); + $langs = $this->x->getLanguages(); + $this->assertContains('en', $langs); + $this->assertContains('sv', $langs); + } + + function testDetect() + { + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('array', $scores); + $this->assertGreaterThan(5, count($scores)); + + list($key, $value) = each($scores); + $this->assertEquals('german', $key, 'text is german'); + } + + function testDetectNameMode2() + { + $this->x->setNameMode(2); + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle'); + list($key, $value) = each($scores); + $this->assertEquals('de', $key, 'text is german'); + } + + function testDetectNameMode2Limit() + { + $this->x->setNameMode(2); + $scores = $this->x->detect('Das ist ein kleiner Text für euch alle', 1); + list($key, $value) = each($scores); + $this->assertEquals('de', $key, 'text is german'); + } + + function testDetectSimple() + { + $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('string', $lang); + $this->assertEquals('german', $lang, 'text is german'); + } + + function testDetectSimpleNameMode2() + { + $this->x->setNameMode(2); + $lang = $this->x->detectSimple('Das ist ein kleiner Text für euch alle'); + $this->assertInternalType('string', $lang); + $this->assertEquals('de', $lang, 'text is german'); + } + + function testDetectSimpleNoLanguages() + { + $this->x->omitLanguages('english', true); + $this->x->omitLanguages('english', false); + $this->assertNull( + $this->x->detectSimple('Das ist ein kleiner Text für euch alle') + ); + } + + function testLanguageSimilarity() + { + $this->x->setPerlCompatible(true); + $eng_dan = $this->x->languageSimilarity('english', 'danish'); + $nor_dan = $this->x->languageSimilarity('norwegian', 'danish'); + $swe_dan = $this->x->languageSimilarity('swedish', 'danish'); + + // remember, lower means more similar + $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is + $this->assertTrue($eng_dan > $swe_dan); // english is less similar to danish than swedish is + $this->assertTrue($nor_dan < $swe_dan); // norwegian is more similar to danish than swedish + + // test the range of the results + $this->assertTrue($eng_dan <= 300, $eng_dan); + $this->assertTrue($eng_dan >= 0, $eng_dan); + + // test it in perl compatible mode + $this->x->setPerlCompatible(false); + + $eng_dan = $this->x->languageSimilarity('english', 'danish'); + $nor_dan = $this->x->languageSimilarity('norwegian', 'danish'); + $swe_dan = $this->x->languageSimilarity('swedish', 'danish'); + + // now higher is more similar + $this->assertTrue($eng_dan < $nor_dan); + $this->assertTrue($eng_dan < $swe_dan); + $this->assertTrue($nor_dan > $swe_dan); + + $this->assertTrue($eng_dan <= 1, $eng_dan); + $this->assertTrue($eng_dan >= 0, $eng_dan); + + $this->x->setPerlCompatible(true); + + $eng_all = $this->x->languageSimilarity('english'); + $this->assertEquals($this->x->getLanguageCount() - 1, count($eng_all)); + $this->assertTrue(!isset($eng_all['english'])); + + $this->assertTrue($eng_all['italian'] < $eng_all['turkish']); + $this->assertTrue($eng_all['french'] < $eng_all['kyrgyz']); + + $all = $this->x->languageSimilarity(); + $this->assertTrue(!isset($all['english']['english'])); + $this->assertTrue($all['french']['spanish'] < $all['french']['mongolian']); + $this->assertTrue($all['spanish']['latin'] < $all['hindi']['finnish']); + $this->assertTrue($all['russian']['uzbek'] < $all['russian']['english']); + } + + + function testLanguageSimilarityNameMode2() + { + $this->x->setNameMode(2); + $this->x->setPerlCompatible(true); + $eng_dan = $this->x->languageSimilarity('en', 'dk'); + $nor_dan = $this->x->languageSimilarity('no', 'dk'); + + // remember, lower means more similar + $this->assertTrue($eng_dan > $nor_dan); // english is less similar to danish than norwegian is + } + + function testLanguageSimilarityUnknownLanguage() + { + $this->assertNull($this->x->languageSimilarity('doesnotexist')); + } + + function testLanguageSimilarityUnknownLanguage2() + { + $this->assertNull($this->x->languageSimilarity('english', 'doesnotexist')); + } + + function test_compatibility () + { + $str = "I am the very model of a modern major general."; + + + $this->x->setPerlCompatible(false); + $result = $this->x->detectConfidence($str); + + $this->assertTrue(!is_null($result)); + $this->assertTrue(is_array($result)); + extract($result); + $this->assertEquals('english', $language); + $this->assertTrue($similarity <= 1 && $similarity >= 0, $similarity); + $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence); + + $this->x->setPerlCompatible(true); + $result = $this->x->detectConfidence($str); + extract($result, EXTR_OVERWRITE); + + $this->assertEquals('english', $language); + + // technically the lowest possible score is 0 but it's extremely unlikely to hit that + $this->assertTrue($similarity <= 300 && $similarity >= 1, $similarity); + $this->assertTrue($confidence <= 1 && $confidence >= 0, $confidence); + + } + + function testDetectConfidenceNoText() + { + $this->assertNull($this->x->detectConfidence('')); + } + + function test_omit_error () + { + $str = 'On January 29, 1737, Thomas Paine was born in Thetford, England. His father, a corseter, had grand visions for his son, but by the age of 12, Thomas had failed out of school. The young Paine began apprenticing for his father, but again, he failed.'; + + $myobj = new Text_LanguageDetect; + + $result = $myobj->detectSimple($str); + $this->assertEquals('english', $result); + + // omit all languages and you should get an error + $myobj->omitLanguages($myobj->getLanguages()); + + $result = $myobj->detectSimple($str); + + $this->assertNull($result, gettype($result)); + } + + function test_cyrillic () + { + // tests whether the cyrillic lower-casing works + + $uppercased = 'А Б В Г Д Е Ж З И Й К Л М Н О П' + . 'Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я'; + + $lowercased = 'а б в г д е ж з и й к л м н о п' + . 'р с т у ф х ц ч ш щ ъ ы ь э ю я'; + + $this->assertEquals(strlen($uppercased), strlen($lowercased)); + + $i = 0; + $j = 0; + $new_u = ''; + while ($i < strlen($uppercased)) { + $u = Text_LanguageDetect::_next_char($uppercased, $i, true); + $l = Text_LanguageDetect::_next_char($lowercased, $j, true); + $this->assertEquals($u, $l); + + $new_u .= $u; + } + + $this->assertEquals($i, $j); + $this->assertEquals($i, strlen($lowercased)); + if (function_exists('mb_strtolower')) { + $this->assertEquals($new_u, mb_strtolower($uppercased, 'UTF-8')); + } + } + + function test_block_detection() + { + $exp_output = << 37 + [CJK Unified Ideographs] => 2 + [Hiragana] => 1 + [Latin-1 Supplement] => 4 +) +EOF; + $teststr = 'lsdkfj あ 葉 叶 slskdfj s Åj;sdklf ÿjs;kdjåf î'; + $result = $this->x->detectUnicodeBlocks($teststr, false); + + ksort($result); + ob_start(); + print_r($result); + $str_result = ob_get_contents(); + ob_end_clean(); + $this->assertEquals(trim($exp_output), trim($str_result)); + + // test whether skipping the spaces reduces the basic latin count + $result2 = $this->x->detectUnicodeBlocks($teststr, true); + $this->assertTrue($result2['Basic Latin'] < $result['Basic Latin']); + + $result3 = $this->x->unicodeBlockName('и'); + $this->assertEquals('Cyrillic', $result3); + + $this->assertEquals('Basic Latin', $this->x->unicodeBlockName('A')); + + // see what happens when you try an unassigned range + $utf8 = $this->code2utf(0x0800); + + $this->assertEquals(false, $this->x->unicodeBlockName($utf8)); + + // try unicode vals in several different ranges + $unicode['Supplementary Private Use Area-A'] = 0xF0001; + $unicode['Supplementary Private Use Area-B'] = 0x100001; + $unicode['CJK Unified Ideographs Extension B'] = 0x20001; + $unicode['Ugaritic'] = 0x10381; + $unicode['Gothic'] = 0x10331; + $unicode['Low Surrogates'] = 0xDC01; + $unicode['CJK Unified Ideographs'] = 0x4E00; + $unicode['Glagolitic'] = 0x2C00; + $unicode['Latin Extended Additional'] = 0x1EFF; + $unicode['Devanagari'] = 0x0900; + $unicode['Hebrew'] = 0x0590; + $unicode['Latin Extended-B'] = 0x024F; + $unicode['Latin-1 Supplement'] = 0x00FF; + $unicode['Basic Latin'] = 0x007F; + + foreach ($unicode as $range => $codepoint) { + $result = $this->x->unicodeBlockName($this->code2utf($codepoint)); + $this->assertEquals($range, $result, $codepoint); + } + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Pass a single char only to this method + */ + function testUnicodeBlockNameParamString() + { + $this->x->unicodeBlockName('foo bar baz'); + } + + /** + * @expectedException Text_LanguageDetect_Exception + * @expectedExceptionMessage Input must be of type string or int + */ + function testUnicodeBlockNameUnsupportedParamType() + { + $this->x->unicodeBlockName(1.23); + } + + + // utility function + // found in http://www.php.net/manual/en/function.utf8-encode.php#49336 + function code2utf($num) + { + if ($num < 128) { + return chr($num); + + } elseif ($num < 2048) { + return chr(($num >> 6) + 192) . chr(($num & 63) + 128); + + } elseif ($num < 65536) { + return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + + } elseif ($num < 2097152) { + return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + } else { + return ''; + } + } + + function test_utf8len() + { + $str = 'Iñtërnâtiônàlizætiøn'; + $this->assertEquals(20, $this->x->utf8strlen($str), utf8_decode($str)); + + $str = '時期日'; + $this->assertEquals(3, $this->x->utf8strlen($str), utf8_decode($str)); + } + + function test_unicode() + { + // test whether it can get the right unicode values for utf8 chars + + $chars['ת'] = 0x5EA; + + $chars['ç'] = 0x00E7; + + $chars['a'] = 0x0061; + + $chars['Φ'] = 0x03A6; + + $chars['И'] = 0x0418; + + $chars['ڰ'] = 0x6B0; + + $chars['Ụ'] = 0x1EE4; + + $chars['놔'] = 0xB194; + + $chars['遮'] = 0x906E; + + $chars['怀'] = 0x6000; + + $chars['ฤ'] = 0x0E24; + + $chars['Я'] = 0x042F; + + $chars['ü'] = 0x00FC; + + $chars['Đ'] = 0x0110; + + $chars['א'] = 0x05D0; + + + foreach ($chars as $utf8 => $unicode) { + $this->assertEquals($unicode, $this->x->_utf8char2unicode($utf8), $utf8); + } + } + + function test_unicode_off() + { + + // see what happens when you turn the unicode setting off + + $myobj = new Text_LanguageDetect; + + $str = 'This is a delightful sample of English text'; + + $myobj->useUnicodeBlocks(true); + $result1 = $myobj->detectConfidence($str); + + $myobj->useUnicodeBlocks(false); + $result2 = $myobj->detectConfidence($str); + + $this->assertEquals($result1, $result2); + + // note this test doesn't tell if unicode narrowing was actually used or not + } + + + function test_detection() + { + + // WARNING: the below lines may make your terminal go ape! be warned + + + + + + + + + + + + + + + + + + + + + + + + // test strings from the test module used by perl's Language::Guess + + $testarr = array( + "english" => "This is a test of the language checker", + "french" => "Verifions que le détecteur de langues marche", + "polish" => "Sprawdźmy, czy odgadywacz języków pracuje", + "russian" => "Давай проверим узнает ли нашь угадыватель русский язык", + "spanish" => "La respuesta de los acreedores a la oferta argentina para salir del default no ha sido muy positiv", + "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei privind organizarea scrutinului nu au fost soluţionate", + "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.", + "danish" => "På denne side bringer vi billeder fra de mange forskellige forberedelser til arrangementet, efterhånden som vi får dem ", + "swedish" => "Vi säger att Frälsningen är en gåva till alla, fritt och för intet. Men som vi nämnt så finns det två villkor som måste", + "norwegian" => "Nominasjonskomiteen i Akershus KrF har skviset ut Einar Holstad fra stortingslisten. Ytre Enebakk-mannen har plass p Stortinget s lenge Valgerd Svarstad Haugland sitter i", + "finnish" => "on julkishallinnon verkkopalveluiden yhteinen osoite. Kansalaisten arkielämää helpottavaa tietoa on koottu eri aihealueisiin", + "estonian" => "Ennetamaks reisil ebameeldivaid vahejuhtumeid vii end kurssi reisidokumentide ja viisade reeglitega ning muu praktilise informatsiooniga", + "hungarian" => "Hiába jön létre az önkéntes magyar haderő, hiába nem lesz többé bevonulás, változatlanul fennmarad a hadkötelezettség intézménye", + "uzbek" => "милиция ва уч солиқ идораси ходимлари яраланган. Шаҳарда хавфсизлик чоралари кучайтирилган.", + + + "czech" => "Francouzský ministr financí zmírnil výhrady vůči nízkým firemním daním v nových členských státech EU", + "dutch" => "Die kritiek was volgens hem bitter hard nodig, omdat Nederland binnen een paar jaar in een soort Belfast zou dreigen te nderen", + + "croatian" => "biće prilično izjednačena, sugerišu najnovije ankete. Oba kandidata tvrde da su sposobni da dobiju rat protiv terorizma", + + "romanian" => "în acest sens aparţinînd Adunării Generale a organizaţiei, în ciuda faptului că mai multe dintre solicitările organizaţiei ivind organizarea scrutinului nu au fost soluţionate", + + "turkish" => "yakın tarihin en çekişmeli başkanlık seçiminde oy verme işlemi sürerken, katılımda rekor bekleniyor.", + + "kyrgyz" => "көрбөгөндөй элдик толкундоо болуп, Кокон шаарынын көчөлөрүндө бир нече миң киши нааразылык билдирди.", + + + "albanian" => "kaluan ditën e fundit të fushatës në shtetet kryesore për të siguruar sa më shumë votues.", + + + "azeri" => "Daxil olan xəbərlərdə deyilir ki, 6 nəfər Bağdadın mərkəzində yerləşən Təhsil Nazirliyinin binası yaxınlığında baş vermiş partlayış zamanı həlak olub.", + + + "macedonian" => "на јавното мислење покажуваат дека трката е толку тесна, што се очекува двајцата соперници да ја прекршат традицијата и да се појават и на самиот изборен ден.", + + + + "kazakh" => "Сайлау нәтижесінде дауыстардың басым бөлігін ел премьер министрі Виктор Янукович пен оның қарсыласы, оппозиция жетекшісі Виктор Ющенко алды.", + + + "bulgarian" => " е готов да даде гаранции, че няма да прави ядрено оръжие, ако му се разреши мирна атомна програма", + + + "arabic" => " ملايين الناخبين الأمريكيين يدلون بأصواتهم وسط إقبال قياسي على انتخابات هي الأشد تنافسا منذ عقود", + + ); + + + + + + + + + + + + + + + + + + + + + + + + + + // should be safe at this point + + + $languages = $this->x->getLanguages(); + foreach (array_keys($testarr) as $key) { + $this->assertTrue(in_array($key, $languages), "$key was not in known languages"); + } + + foreach ($testarr as $key=>$value) { + $this->assertEquals($key, $this->x->detectSimple($value)); + } + } + + + public function test_convertFromNameMode0() + { + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('english') + ); + } + + public function test_convertFromNameMode2String() + { + $this->x->setNameMode(2); + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('en') + ); + } + + public function test_convertFromNameMode3String() + { + $this->x->setNameMode(3); + $this->assertEquals( + 'english', + $this->x->_convertFromNameMode('eng') + ); + } + + public function test_convertFromNameMode2ArrayVal() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('english', 'german'), + $this->x->_convertFromNameMode(array('en', 'de')) + ); + } + + public function test_convertFromNameMode2ArrayKey() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('english' => 'foo', 'german' => 'test'), + $this->x->_convertFromNameMode( + array('en' => 'foo', 'de' => 'test'), + true + ) + ); + } + + public function test_convertFromNameMode3ArrayVal() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('english', 'german'), + $this->x->_convertFromNameMode(array('eng', 'deu')) + ); + } + + public function test_convertFromNameMode3ArrayKey() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('english' => 'foo', 'german' => 'test'), + $this->x->_convertFromNameMode( + array('eng' => 'foo', 'deu' => 'test'), + true + ) + ); + } + + public function test_convertToNameMode0() + { + $this->assertEquals( + 'english', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode2String() + { + $this->x->setNameMode(2); + $this->assertEquals( + 'en', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode3String() + { + $this->x->setNameMode(3); + $this->assertEquals( + 'eng', + $this->x->_convertToNameMode('english') + ); + } + + public function test_convertToNameMode2ArrayVal() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('en', 'de'), + $this->x->_convertToNameMode(array('english', 'german')) + ); + } + + public function test_convertToNameMode2ArrayKey() + { + $this->x->setNameMode(2); + $this->assertEquals( + array('en' => 'foo', 'de' => 'test'), + $this->x->_convertToNameMode( + array('english' => 'foo', 'german' => 'test'), + true + ) + ); + } + + public function test_convertToNameMode3ArrayVal() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('eng', 'deu'), + $this->x->_convertToNameMode(array('english', 'german')) + ); + } + + public function test_convertToNameMode3ArrayKey() + { + $this->x->setNameMode(3); + $this->assertEquals( + array('eng' => 'foo', 'deu' => 'test'), + $this->x->_convertToNameMode( + array('english' => 'foo', 'german' => 'test'), + true + ) + ); + } +} diff --git a/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php b/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php new file mode 100644 index 00000000..e01d715e --- /dev/null +++ b/php/lib/Text_LanguageDetect/tests/Text_LanguageDetect_ISO639Test.php @@ -0,0 +1,72 @@ +assertEquals( + 'de', + Text_LanguageDetect_ISO639::nameToCode2('german') + ); + } + + public function testNameToCode2Fail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::nameToCode2('doesnotexist') + ); + } + + public function testNameToCode3() + { + $this->assertEquals( + 'fra', + Text_LanguageDetect_ISO639::nameToCode3('french') + ); + } + + public function testNameToCode3Fail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::nameToCode3('doesnotexist') + ); + } + + public function testCode2ToName() + { + $this->assertEquals( + 'english', + Text_LanguageDetect_ISO639::code2ToName('en') + ); + } + + public function testCode2ToNameFail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::code2ToName('nx') + ); + } + + public function testCode3ToName() + { + $this->assertEquals( + 'romanian', + Text_LanguageDetect_ISO639::code3ToName('rom') + ); + } + + public function testCode3ToNameFail() + { + $this->assertNull( + Text_LanguageDetect_ISO639::code3ToName('nxx') + ); + } + +} + +?> \ No newline at end of file diff --git a/php/lime-config.php b/php/lime-config.php index bc8f19ef..67487844 100644 --- a/php/lime-config.php +++ b/php/lime-config.php @@ -48,7 +48,7 @@ define('EXIST_ADMIN_USER', 'admin'); // the exist admin password -define('EXIST_ADMIN_PASSWORD', 'existPassword'); +define('EXIST_ADMIN_PASSWORD', 'exist'); // the exist db base url define('EXIST_URL','http://localhost:8080/exist/'); @@ -59,4 +59,4 @@ // absolute path to AbiWord utility define('ABIWORD_PATH', '/usr/bin/abiword'); -?> \ No newline at end of file +?> diff --git a/php/parsers/MetaParser.php b/php/parsers/MetaParser.php new file mode 100644 index 00000000..571497bf --- /dev/null +++ b/php/parsers/MetaParser.php @@ -0,0 +1,290 @@ +lang = $lang; + $this->docType = $docType; + $this->content = $content; + } + + public function parseDocument() { + $return = array(); + + $dateRes = $this->parseDate(); + $structureRes = $this->parseStructure(); + $bodyRes = $this->parseBody(); + $quoteRes = $this->parseQuote(); + $referenceRes = $this->parseReference(); + $docRes = $this->parseDocNum(); + $docTypeRes = $this->parseDocType(); + + //print_r($structureRes); + + $this->handleParserDocTypeResult($docTypeRes, $return); + $this->handleParserDocNumResult($docRes, $return); + $this->handleParserRefResult($referenceRes, $return); + $this->handleParserQuoteResult($quoteRes, $return); + $this->handleParserStructureResult($structureRes, $return); + $this->handleParserDateResult($dateRes, $return); + + $this->handleParserBodyResult($bodyRes, $return); + + $this->normalizeOffsets($return); + return json_encode($return); + } + + public function parseStructure() { + $parser = new StructureParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseBody() { + $parser = new BodyParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseQuote() { + $parser = new QuoteParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseList() { + $parser = new ListParser($this->lang); + return $parser->parse($this->content); + } + + public function parseReference() { + $parser = new ReferenceParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + public function parseDocNum() { + $parser = new DocNumParser($this->lang); + return $parser->parse($this->content); + } + + public function parseDate() { + $parser = new DateParser($this->lang); + return $parser->parse($this->content); + } + + public function parseDocType() { + $parser = new DocTypeParser($this->lang, $this->docType); + return $parser->parse($this->content); + } + + private function handleParserResult($name, $result, &$completeResult) { + $completeResult[$name] = $result; + } + + private function handleParserDocTypeResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $completeResult[] = array_merge(Array("name"=> "docType"), $match); + } + } + + private function handleParserDocNumResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $match["string"] = $match["match"]; + unset($match["match"]); + $completeResult[] = array_merge(Array("name"=> "docNum"), $match); + } + } + + private function handleParserRefResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $match["string"] = $match["ref"]; + unset($match["ref"]); + $completeResult[] = array_merge(Array("name"=> "ref"), $match); + } + } + + private function handleParserQuoteResult($result, &$completeResult) { + foreach ($result["response"] as $match) { + $completeResult[] = Array("name"=> "quotedText", + "start" => $match["start"]["offset"], + "end" => $match["end"]["offset"]+strlen($match["end"]["string"]), + "string" => $match["quoted"]["string"]); + /*"startQuote" => $match["start"]["string"], + "endQuote" => $match["end"]["string"],*/ + } + } + + private function handleParserDateResult($result, &$completeResult) { + if(array_key_exists("dates", $result["response"])) { + foreach ($result["response"]["dates"] as $key => $match) { + foreach($match["offsets"] as $offset) { + $completeResult[] = Array("name"=> "date", + "string" => $match["match"], + "date" => $match["date"], + "start" => $offset["start"], + "end" => $offset["end"]); + } + } + } + } + + private function handleParserStructureResult($result, &$completeResult) { + $tmpArray = Array(); + if($result["response"]["success"]) { + foreach($result["response"]["structure"] as $key => $element) { + $newElement = Array("name"=> $element, + "string" => (array_key_exists("value", $result["response"][$element])) + ? $result["response"][$element]["value"] : "", + "end" => (array_key_exists("end", $result["response"][$element])) + ? $result["response"][$element]["end"] : ""); + if(!empty($newElement["string"]) && empty($tmpArray)) { + $newElement["start"] = 0; + } else { + $lastElement = end($tmpArray); + if(!empty($lastElement["string"])) { + $newElement["start"] = $lastElement["end"]; + } + if($key == (count($result["response"]["structure"])-1)) { + $newElement["end"] = strlen($this->content); + } + } + if(array_key_exists("start", $newElement)) { + $tmpArray[] = $newElement; + $completeResult[] = $newElement; + } + } + } + } + + private function handleParserBodyResult($result, &$completeResult) { + foreach ($result["response"] as $elementName => $elements) { + $nums = Array(); + foreach ($elements as $element) { + $newElement = Array("name"=> "num", + "string" => $element["value"], + "start" => $element["start"], + "end" => $element["start"]+strlen($element["value"])); + $nums[] = $newElement; + $completeResult[] = $newElement; + } + foreach ($nums as $key => $num) { + $parent = $this->getElementParent($num, $completeResult); + $parentIndex = array_search($parent, $completeResult); + if($parent["name"] == "quotedText") { + $completeResult[$parentIndex]["name"] = "quotedStructure"; + } + $end = $parent["end"]; + if(array_key_exists($key+1, $nums)) { + $parentNext = $this->getElementParent($nums[$key+1], $completeResult); + if($parentNext === $parent) { + $end = $nums[$key+1]["start"]; + } else { + $nextSibling = $this->getElementWithSameParent($num, $parent, $completeResult); + if(!empty($nextSibling)) { + $end = $nextSibling[0]["start"]; + } + } + } + if($end != 0) { + $newElement = Array("name"=> $elementName, + "start" => $num["start"], + "end" => $end); + $completeResult[] = $newElement; + } + + } + } + } + + private function getElementWithSameParent($element, $parent, $completeResult) { + $elements = array_filter($completeResult, function($res) use ($element, $parent, $completeResult) { + return ($res != $element && $res["name"] == $element["name"]); + }); + $siblings = Array(); + foreach ($elements as $el) { + $parentNext = $this->getElementParent($el, $completeResult); + if($parentNext === $parent) { + $siblings[] = $el; + } + } + return $siblings; + } + + private function getElementParent($element, $completeResult) { + $parents = array_filter($completeResult, function($res) use ($element) { + return ($res != $element && $res["start"] <= $element["start"] && $res["end"]>=$element["end"]); + }); + usort($parents , function($a, $b) use ($element) { + if ($a == $b) { + return 0; + } + return ($a["end"] < $b["end"]) ? -1 : 1; + }); + + return (!empty($parents)) ? $parents[0] : NULL; + } + + private function normalizeOffsets(&$completeResult) { + $encoding = mb_detect_encoding($this->content); + foreach ($completeResult as &$element) { + $subStr = substr($this->content, 0, $element["start"]); + $element["start"] = mb_strlen($subStr, $encoding); + $subStr = substr($this->content, 0, $element["end"]); + $element["end"] = mb_strlen($subStr, $encoding); + } + } +} + +?> \ No newline at end of file diff --git a/php/parsers/body/BodyParser.php b/php/parsers/body/BodyParser.php new file mode 100644 index 00000000..e2bfd7f8 --- /dev/null +++ b/php/parsers/body/BodyParser.php @@ -0,0 +1,118 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $return = $this->parse_ricorsive($content, 0); + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function parse_ricorsive($content, $hierarchyIndex) { + $return = array(); + $hierarchy = array_slice($this->parserRules["hierarchy"], $hierarchyIndex); + foreach($hierarchy as $key => $value) { + if(array_key_exists($value, $this->parserRules)) { + $resolved = resolveRegex($this->parserRules[$value], $this->parserRules, + $this->lang,$this->docType, $this->dirName); + + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + $return[$value] = array(); + $offsets = array(); + $values = array(); + foreach($result["0"] as $index => $match) { + $values[] = $match[0]; + $offsets[] = $match[1]; + } + $pairs = arrayToPairsArray($offsets, strlen($content)); + for($i = 0; $i < count($pairs); $i++) { + $pair = $pairs[$i]; + $valueArray = array(); + $subString = substr($content, $pair[0], ($pair[1]-$pair[0])); + $valueArray["value"] = $values[$i]; + $valueArray["start"] = $offsets[$i]; + $valueArray["contains"] = $this->parse_ricorsive($subString,$hierarchyIndex+$key+1); + $return[$value][] = $valueArray; + } + break; + } + } + } + return $return; + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/php/parsers/body/conf.php b/php/parsers/body/conf.php new file mode 100644 index 00000000..db9e79f5 --- /dev/null +++ b/php/parsers/body/conf.php @@ -0,0 +1,59 @@ + "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + //"number" => "\d+|{{roman}}+", + "number" => "\d+", + "title" => "/({{titleList}})\s*({{number}})/", + "chapter" => "/({{chapterList}})\s*({{number}})/", + "article" => "/({{articleList}})\s*({{number}}\s*[º°\.]*)/", + "section" => "/({{sectionList}})\s*({{number}}\s*[º°]*\.)/", + "book" => "/({{bookList}})\s*({{number}}\s*[º°]*\.)/" +); + +?> \ No newline at end of file diff --git a/php/parsers/body/docType/act/conf.php b/php/parsers/body/docType/act/conf.php new file mode 100644 index 00000000..b65118e4 --- /dev/null +++ b/php/parsers/body/docType/act/conf.php @@ -0,0 +1,52 @@ + Array("book","title","section","chapter","article") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/docType/bill/conf.php b/php/parsers/body/docType/bill/conf.php new file mode 100644 index 00000000..d0d4c934 --- /dev/null +++ b/php/parsers/body/docType/bill/conf.php @@ -0,0 +1,53 @@ + Array("book","title","section","chapter","article") +); + + +?> \ No newline at end of file diff --git a/php/parsers/body/index.php b/php/parsers/body/index.php new file mode 100644 index 00000000..9b7ccc2f --- /dev/null +++ b/php/parsers/body/index.php @@ -0,0 +1,61 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/deu/act/conf.php b/php/parsers/body/lang/deu/act/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/php/parsers/body/lang/deu/act/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/deu/bill/conf.php b/php/parsers/body/lang/deu/bill/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/php/parsers/body/lang/deu/bill/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/eng/act/conf.php b/php/parsers/body/lang/eng/act/conf.php new file mode 100644 index 00000000..742050c2 --- /dev/null +++ b/php/parsers/body/lang/eng/act/conf.php @@ -0,0 +1,52 @@ + Array("Section","SECTION","SEC\.","Sec\."), +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/eng/bill/conf.php b/php/parsers/body/lang/eng/bill/conf.php new file mode 100644 index 00000000..742050c2 --- /dev/null +++ b/php/parsers/body/lang/eng/bill/conf.php @@ -0,0 +1,52 @@ + Array("Section","SECTION","SEC\.","Sec\."), +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/esp/act/conf.php b/php/parsers/body/lang/esp/act/conf.php new file mode 100644 index 00000000..7be99f7f --- /dev/null +++ b/php/parsers/body/lang/esp/act/conf.php @@ -0,0 +1,56 @@ + Array("LIBRO","Libro"), + "titleList" => Array("T(Í|í|i)tulo","T(I|Í)TULO"), + "sectionList" => Array("Secci(ó|o)n","SECCION"), + "articleList" => Array("Art(I|Í|i|í)culo", "Art\.","ART(I|Í)CULO"), + "chapterList" => Array("Cap(í|i)tulo","CAPÍTULO") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/esp/bill/conf.php b/php/parsers/body/lang/esp/bill/conf.php new file mode 100644 index 00000000..7be99f7f --- /dev/null +++ b/php/parsers/body/lang/esp/bill/conf.php @@ -0,0 +1,56 @@ + Array("LIBRO","Libro"), + "titleList" => Array("T(Í|í|i)tulo","T(I|Í)TULO"), + "sectionList" => Array("Secci(ó|o)n","SECCION"), + "articleList" => Array("Art(I|Í|i|í)culo", "Art\.","ART(I|Í)CULO"), + "chapterList" => Array("Cap(í|i)tulo","CAPÍTULO") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/fra/act/conf.php b/php/parsers/body/lang/fra/act/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/php/parsers/body/lang/fra/act/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/fra/bill/conf.php b/php/parsers/body/lang/fra/bill/conf.php new file mode 100644 index 00000000..37ac49ae --- /dev/null +++ b/php/parsers/body/lang/fra/bill/conf.php @@ -0,0 +1,52 @@ + Array("Art\.") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/ita/act/conf.php b/php/parsers/body/lang/ita/act/conf.php new file mode 100644 index 00000000..959614ae --- /dev/null +++ b/php/parsers/body/lang/ita/act/conf.php @@ -0,0 +1,54 @@ + Array("Titolo","TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo") +); + +?> \ No newline at end of file diff --git a/php/parsers/body/lang/ita/bill/conf.php b/php/parsers/body/lang/ita/bill/conf.php new file mode 100644 index 00000000..7862399a --- /dev/null +++ b/php/parsers/body/lang/ita/bill/conf.php @@ -0,0 +1,55 @@ + Array("Titolo","TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo") +); + +?> \ No newline at end of file diff --git a/php/parsers/date/DateParser.php b/php/parsers/date/DateParser.php new file mode 100644 index 00000000..40942519 --- /dev/null +++ b/php/parsers/date/DateParser.php @@ -0,0 +1,189 @@ +lang = $lang; + $this->loadConfiguration($lang); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $preg_result = array(); + $element = array(); + foreach ($this->patterns as $key => $value) { + $success = preg_match_all($value, $content, $n, PREG_OFFSET_CAPTURE); + if ($success) { + $preg_result[] = $n; + $element[] = $key; + /*To avoid another pattern match with the same string remove it*/ + $content = preg_replace($value, "", $content); + } + } + + if (isset($preg_result[0])) { + //if exist the first of result than success + $return['dates'] = array(); + foreach ($preg_result as $key => $n) { + $counter = array(); + foreach ($n["0"] as $k => $value) { + $offset = $n["0"][$k][1]; + $match = $n["0"][$k][0]; + if (!isset($counter[$match])) + $counter[$match] = 0; + $counter[$match]++; + if (!isset($return['dates'][$match])) + $return['dates'][$match] = array(); + if (!isset($return['dates'][$match]["offsets"])) + $return['dates'][$match]["offsets"] = array(); + $return['dates'][$match]["offsets"][] = Array("start" => $offset, + "end" => $offset+strlen($match)); + if ($counter[$match] == 1) { + $return['dates'][$match]['rule'] = $element[$key]; + $return['dates'][$match]['match'] = $match; + /*if ($debug) { + $return['dates'][$match]['pattern'] = $this->patterns[$element[$key]]; + }*/ + if (isset($n['day'][$k][0])) { + $tmp_day = $n['day'][$k][0]; + } + if (isset($n['month'][$k][0])) { + $tmp_month = $n['month'][$k][0]; + if (!is_numeric($tmp_month)) { + $mouthNumber = (array_search(strtolower($tmp_month), $this->monthsNames)); + /* check if the case is a month with multiple different names */ + if ($mouthNumber === FALSE) { + for ($i = 0; $i < count($this->monthsNames); $i++) { + if (stristr($this->monthsNames[$i], $tmp_month) !== FALSE) { + $mouthNumber = $i; + break; + } + } + } + $tmp_month = $mouthNumber + 1; + } + } + if (isset($n['year'][$k][0])) { + $tmp_year = $n['year'][$k][0]; + } + /* Relax the rule, a date without day is ok, we assume that the day is the first day */ + if (!$tmp_day) { + $tmp_day = "1"; + } + if ($tmp_month && $tmp_year) { + $return['dates'][$match]['day'] = $tmp_day; + $return['dates'][$match]['month'] = $n['month'][$k][0]; + $return['dates'][$match]['year'] = $n['year'][$k][0]; + + if (!checkdate($tmp_month, $tmp_day, $tmp_year)) { + $return['dates'][$match]['date'] = "invalid date"; + } else { + $datetime = new DateTime($tmp_year . "/" . $tmp_month . "/" . $tmp_day); + $return['dates'][$match]['date'] = $datetime -> format('Y-m-d'); + } + } + } + $return['dates'][$match]['counter'] = $counter[$match]; + + } + + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + + } + + public function loadConfiguration() { + global $patterns, $monthsNames; + global $day,$year,$num_month,$date_sep; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + $day = "(\d){1,2}"; + $year = "(\d){4}"; + $num_month = "(\d){1,2}"; + $date_sep = "(?:\\\\|\\/|-|\.)"; + + require_once "standard.php"; + if (isset($vocs[$this->lang])) { + require_once $vocs[$this->lang]; + } + + $months = implode("|", $monthsNames); + if($this->lang != "ita") { + $patterns = array("(day) month-name year" => "/((?P$day)\W?\s+)?(?P$months)\W?\s+(?P$year)/i", + "month-name (day) year" => "/(?P$months)\W?\s+((?P$day)\W?\s+)?(?P$year)/i", + "month-name year (day)" => "/(?P$months)\W?\s+(?P$year)\W?\s+((?P$day))?/i"); + + } else { + $patterns = array("(day) month-name year" => "/((?P$day)\W?\s+)?(?P$months)\W?\s+(?P$year)/i"); + } + + if (isset($localpatterns) && $this->lang != "ita") { + $patterns = array_merge($localpatterns, $patterns); + $patterns = $localpatterns; + } + + $this->patterns = $patterns; + $this->monthsNames = $monthsNames; + } +} + +?> \ No newline at end of file diff --git a/php/parsers/date/english.php b/php/parsers/date/english.php new file mode 100644 index 00000000..64bf6e71 --- /dev/null +++ b/php/parsers/date/english.php @@ -0,0 +1,65 @@ + +
    • 14 july 2011
    • +
    • 14 July 2011
    • +
    • 03-17-2000
    • +
    • January, 01, 2010
    • + +END; + + +$localpatterns = array( + "dayth month-name year"=> "/(?P$day)th\s+(?P$months)\W?\s+(?P$year)/i", + "mm dd yyyy" => "/(?P$num_month)\s*$date_sep\s*(?P$day)\s*$date_sep\s*(?P$year)/i" +) ; + +?> \ No newline at end of file diff --git a/php/parsers/date/espanol.php b/php/parsers/date/espanol.php new file mode 100644 index 00000000..841826c8 --- /dev/null +++ b/php/parsers/date/espanol.php @@ -0,0 +1,80 @@ + "setiembre" +); +*/ +$months = implode("|",$monthsNames); + +$localpatterns = array( + "day de month-name de year"=> "/(?P$day)\s+de\s+(?P$months)\s+de\s+(?P$year)/i", + "month-name (day) de year"=> "/(?P$months)\s+((?P$day)\s+)?de\s+(?P$year)/i" + +) ; +$examples = <<28 Octubre 2012 +
    • 14 noviembre 2012
    • +
    • Octubre noviembre 14 noviembre 2012 Enero Octubre, 01, 2012
    • +END; + +?> \ No newline at end of file diff --git a/php/parsers/date/index.php b/php/parsers/date/index.php new file mode 100644 index 00000000..ec152bfe --- /dev/null +++ b/php/parsers/date/index.php @@ -0,0 +1,58 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/php/parsers/date/italian.php b/php/parsers/date/italian.php new file mode 100644 index 00000000..ee5b92fa --- /dev/null +++ b/php/parsers/date/italian.php @@ -0,0 +1,81 @@ + "/(?P$day)\s*$date_sep\s*(?P$num_month)\s*$date_sep\s*(?P$year)/i" +) ; + + +$examples = <<28 giugno 2012 +
    • 28 Maggio 2012
    • +
    • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
    • +
    • 17-03-2000
    • +
    • Agosto 12, 2012
    • +
    • Agosto 2012, 12
    • +
    • Agosto 2012 12
    • +
    • Agosto 12 2012
    • +
    • 12 Agosto, 2012
    • +
    • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
    • +END; + +?> \ No newline at end of file diff --git a/php/parsers/date/standard.php b/php/parsers/date/standard.php new file mode 100644 index 00000000..f6af0bac --- /dev/null +++ b/php/parsers/date/standard.php @@ -0,0 +1,63 @@ + \ No newline at end of file diff --git a/php/parsers/date/test.js b/php/parsers/date/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/php/parsers/date/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for dates + + + + + + +
      +
      +
      +

      Test Unit per il parser di date

      + +

      Il servizio prende in input un testo contenente delle date in diversi formati + e restituisce un JSON con tutte le date trovate, le date valide vengono trasformate nel formato aaaa-mm-dd.

      + +
      +
      + + + + + + + + + + + + + + + + + + +
      ExamplesResult
      +
      + +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
      Try it out
      +

      + + +

      +

      + + + + + + + + + + +

      +
      +

      Request format:

      +
        +
      • POST http://www.site.com/dir/date/
      • +
      + + + + + + diff --git a/php/parsers/docNum/DocNumParser.php b/php/parsers/docNum/DocNumParser.php new file mode 100644 index 00000000..da6bab6a --- /dev/null +++ b/php/parsers/docNum/DocNumParser.php @@ -0,0 +1,110 @@ +lang = $lang; + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $success = false ; + while (!$success && $element = each($this->patterns)) { + $success = preg_match_all($element['value'], $content, $n, PREG_OFFSET_CAPTURE) ; + } + + if ($success) { + if (isset($n['num'])) { + foreach($n["match"] as $k => $value){ + $match = $n["match"][$k][0]; + $num = intval($n['num'][$k][0]); + $offset = $n["match"][$k][1]; + $return[] = array("match" =>$match, + "numVal" => $num, + "start"=> $offset, + "end"=> $offset+strlen($match)); + } + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + global $patterns, $decorations; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + require_once "standard.php" ; + if (isset($vocs[$this->lang])) { + require_once $vocs[$this->lang] ; + } + $decs = isset($decorations)?'|'.implode("|",$decorations):''; + $patterns = array( + "n|num" => "/(^|>|\s)(?P(n|num|no|nr$decs)(\.|º|°|\s)\s*(?P(\d+)\s*[.-\/]?\s*(\d+)?))/i", + ); + if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + } + + $this->patterns = $patterns; + } +} + +?> \ No newline at end of file diff --git a/php/parsers/docNum/english.php b/php/parsers/docNum/english.php new file mode 100644 index 00000000..53cb19ee --- /dev/null +++ b/php/parsers/docNum/english.php @@ -0,0 +1,59 @@ + +
    • 14 july 2011
    • +
    • 14 July 2011
    • +
    • 03-17-2000
    • +
    • January, 01, 2010
    • + +END; +?> diff --git a/php/parsers/docNum/espanol.php b/php/parsers/docNum/espanol.php new file mode 100644 index 00000000..6d95956b --- /dev/null +++ b/php/parsers/docNum/espanol.php @@ -0,0 +1,54 @@ +28 Octubre 2012 +
    • 14 noviembre 2012
    • +
    • Octubre noviembre 14 noviembre 2012 Enero Octubre, 01, 2012
    • +END; + +?> diff --git a/php/parsers/docNum/index.php b/php/parsers/docNum/index.php new file mode 100644 index 00000000..42ddf8fb --- /dev/null +++ b/php/parsers/docNum/index.php @@ -0,0 +1,62 @@ +parse($string, TRUE); + +?> diff --git a/php/parsers/docNum/italian.php b/php/parsers/docNum/italian.php new file mode 100644 index 00000000..137daf29 --- /dev/null +++ b/php/parsers/docNum/italian.php @@ -0,0 +1,65 @@ +28 giugno 2012 +
    • 28 Maggio 2012
    • +
    • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
    • +
    • 17-03-2000
    • +
    • Agosto 12, 2012
    • +
    • Agosto 2012, 12
    • +
    • Agosto 2012 12
    • +
    • Agosto 12 2012
    • +
    • 12 Agosto, 2012
    • +
    • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
    • +END; + +?> diff --git a/php/parsers/docNum/standard.php b/php/parsers/docNum/standard.php new file mode 100644 index 00000000..acffa7d3 --- /dev/null +++ b/php/parsers/docNum/standard.php @@ -0,0 +1,48 @@ + diff --git a/php/parsers/docNum/test.js b/php/parsers/docNum/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/php/parsers/docNum/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for dates + + + + + + +
      +
      +
      +

      Test Unit per il parser di date

      + +

      Il servizio prende in input un testo contenente delle date in diversi formati + e restituisce un JSON con tutte le date trovate, le date valide vengono trasformate nel formato aaaa-mm-dd.

      + + + + + + + + + + + + + + + + + + + + +
      ExamplesResult
      +
      + +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
        + +
      +
      +
      +
      Try it out
      +

      + + +

      +

      + + + + + + + + + + +

      +
      +

      Request format:

      +
        +
      • POST http://www.site.com/dir/date/
      • +
      + + +
      + + + diff --git a/php/parsers/doctype/DocTypeParser.php b/php/parsers/doctype/DocTypeParser.php new file mode 100644 index 00000000..9fb7c90a --- /dev/null +++ b/php/parsers/doctype/DocTypeParser.php @@ -0,0 +1,98 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $resolved = resolveRegex($this->parserRules['main'],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + for ($i = 0; $i < $success; $i++) { + $match = $result["doctype"][$i][0]; + $offset = $result["doctype"][$i][1]; + $entry = Array ( + "string" => $match, + "start" => $offset, + "end" => $offset+strlen($match) + ); + + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/php/parsers/doctype/conf.php b/php/parsers/doctype/conf.php new file mode 100644 index 00000000..b00a7440 --- /dev/null +++ b/php/parsers/doctype/conf.php @@ -0,0 +1,52 @@ + "/({{doctype}})/", +); + +?> \ No newline at end of file diff --git a/php/parsers/doctype/index.php b/php/parsers/doctype/index.php new file mode 100644 index 00000000..264124ad --- /dev/null +++ b/php/parsers/doctype/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/php/parsers/doctype/lang/esp/conf.php b/php/parsers/doctype/lang/esp/conf.php new file mode 100644 index 00000000..0058dad7 --- /dev/null +++ b/php/parsers/doctype/lang/esp/conf.php @@ -0,0 +1,54 @@ + Array("PROYECTO DE LEY", + "Proyecto (D|d)e (L|l)ey", + "Exposición de motivos") +); + +?> \ No newline at end of file diff --git a/php/parsers/framework/aknssg.css b/php/parsers/framework/aknssg.css new file mode 100644 index 00000000..d6796e18 --- /dev/null +++ b/php/parsers/framework/aknssg.css @@ -0,0 +1,138 @@ +body { + background-color: #CD1006; + color: #444444; + font-size: 10pt; + font-family: "Lucida Grande",Verdana,Lucida,Helvetica,Arial,sans-serif +} + +div#portal-top { + background-image: url('http://akn.web.cs.unibo.it/resolver/img/akoma_banner.jpg'); + margin-left: auto; + margin-right: auto; + width: 800px; + height: 100px; +} + +div#portal-divisor { + background-image: url('http://akn.web.cs.unibo.it/resolver/img/image-header.png'); + margin-left: auto; + margin-right: auto; + width: 800px; + height: 25px; +} + +div#main-container { + background-color: #ffffff; +} + +h1 { + text-align: center; + color: #DC0808; + font-size: 200%; +} + +h2 { + margin-top: -15px; + text-align: center; + color: #DC0808; + font-size: 130%; +} + +p.content { + margin-left: 25px; + margin-right: 25px; + line-height: 1.2em; +} + +div.copyright { + margin-left: 25px; + margin-right: 25px; + text-align: left; + font-size: 9pt; + line-height: 1.2em; + color: #7C7C7C; + margin-top: 30px; + padding-bottom: 10px; +} + +th { + background-color: #CDC197; + height: 1.8em; + line-height: 1.5em; + font-size: 94%; + padding-top: 0.1em; + text-align: center; +} + +table { + border: 1px solid #CDC197; + margin-left: 25px; + margin-right: 25px; + font-size: 10pt; +} + +a { + color: #CD1006; +} + +.item { + font-size: 100%; +} + +.moduleName { + font-size: 85%; + font-style: italic; + color: #777777; +} + +.elementName { + font-size: 90%; + font-family: courier, fixed, monospace +} + +.description { + margin-left: 30px; + margin-right: 30px; + font-size: 8pt; + background-color: #ffffdd; + border: solid #ffff99 thin; + margin-top: -10px; + padding: 2pt; +} + +li { + margin-left: 20px; + line-height: 1.2em; +} + +.subModules { + margin-top: -8px; + margin-left: 30px; + margin-right: 30px; + font-size: 95%; +} + +.details { + font-size: 80%; +} + +.buttons { + text-align: center; +} +.spacer { + width: 50pt; +} + +#selectionShown { + font-family: courier, fixed, monospace; + font-size: 90%; +} + +#submit { + margin-left: 50px; +} + +.code { + font-family:'courier new'; + white-space:pre-wrap; +} diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 00000000..5b5dab2a Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 00000000..ad3d6346 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 00000000..42ccba26 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 00000000..5a46b47c Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 00000000..86c2baa6 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png new file mode 100644 index 00000000..e65ca129 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_glass_75_ffffff_1x400.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 00000000..7c9fa6c6 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png new file mode 100644 index 00000000..0e05810f Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png new file mode 100644 index 00000000..b273ff11 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_222222_256x240.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 00000000..09d1cdc8 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_2e83ff_256x240.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png new file mode 100644 index 00000000..59bd45b9 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_454545_256x240.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png new file mode 100644 index 00000000..6d02426c Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_888888_256x240.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 00000000..2ab019b7 Binary files /dev/null and b/php/parsers/framework/jquery-ui/css/fv/images/ui-icons_cd0a0a_256x240.png differ diff --git a/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css b/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css new file mode 100644 index 00000000..abb818d1 --- /dev/null +++ b/php/parsers/framework/jquery-ui/css/fv/jquery-ui-1.8.8.custom.css @@ -0,0 +1,572 @@ +/* + * jQuery UI CSS Framework 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault= + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: ; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Resizable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; }/* + * jQuery UI Autocomplete 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.8 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/php/parsers/framework/jquery-ui/index.html b/php/parsers/framework/jquery-ui/index.html new file mode 100644 index 00000000..22074b1e --- /dev/null +++ b/php/parsers/framework/jquery-ui/index.html @@ -0,0 +1,367 @@ + + + + + jQuery UI Example Page + + + + + + + +

      Welcome to jQuery UI!

      +

      This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.7.custom.min.js), and css/ui-lightness/jquery-ui-1.8.7.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

      +

      You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

      + +

      YOUR COMPONENTS:

      + + +

      Accordion

      +
      +
      +

      First

      +
      Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
      +
      +
      +

      Second

      +
      Phasellus mattis tincidunt nibh.
      +
      +
      +

      Third

      +
      Nam dui erat, auctor a, dignissim quis.
      +
      +
      + + +

      Tabs

      +
      + +
      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
      +
      Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
      +
      Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
      +
      + + +

      Dialog

      +

      Open Dialog

      + + +

      Overlay and Shadow Classes (not currently used in UI widgets)

      +
      +

      Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

      Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

      Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

      Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

      Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

      Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

      + + +
      +
      +
      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

      +
      +
      + +
      + + + +
      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

      +
      + + + +

      Framework Icons (content color preview)

      +
        + +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • + +
      • +
      • +
      • +
      • +
      • +
      + + + +

      Slider

      +
      + + +

      Datepicker

      +
      + + +

      Progressbar

      +
      + + +

      Highlight / Error

      +
      +
      +

      + Hey! Sample ui-state-highlight style.

      +
      +
      +
      +
      +
      +

      + Alert: Sample ui-state-error style.

      +
      +
      + + + + + diff --git a/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js b/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js new file mode 100644 index 00000000..8f3ca2e2 --- /dev/null +++ b/php/parsers/framework/jquery-ui/js/jquery-1.4.4.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
      a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
      ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
      t
      ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

      ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
      ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
      ","
      "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
      ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js b/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js new file mode 100644 index 00000000..b03a87e8 --- /dev/null +++ b/php/parsers/framework/jquery-ui/js/jquery-ui-1.8.7.custom.min.js @@ -0,0 +1,781 @@ +/*! + * jQuery UI 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.7",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+parseInt(c.curCSS(this,"marginRight",true))||0,w=m+q+parseInt(c.curCSS(this,"marginBottom",true))||0,i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=m/2; +i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, +b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
      ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable, +{version:"1.8.7"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize, +function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n= +(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition= +false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left- +a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize", +b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top", +"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset, +f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left= +a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+ +a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&& +e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative", +height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width= +d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
      ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", +null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): +d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute|| +"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")}, +_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!= +this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a= +this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable"); +if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h= +0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width= +this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f}, +update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b= +null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this)); +this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])? +g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive", +g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over= +0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(g){return a._keydown(g)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ +a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j, +down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})}); +f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.7",animations:{slide:function(a, +b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:a._move("previousPage", +c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay); +break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
        ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| +"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"), +h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){f=this.options.source;this.source= +function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}}); +d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0); +a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a, +c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.7",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
        ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.7"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
        ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
      • #{label}
      • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.7"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.7"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
        ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, +_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= +d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, +c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& +d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", +function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= +-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, +"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]}, +_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e- +g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]? +b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= +false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= +d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); +else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames, +j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y", +RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
        '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
        ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
        '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
        ';var A=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
        '+this._get(a,"weekHeader")+"
        '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
        "+(l?""+(i[0]>0&&D==i[1]-1?'
        ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
        ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
        ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.7";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
        ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.7"})})(jQuery); +;/* + * jQuery UI Effects 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){f.queue(this,"fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l= +h.splice(h.length-1,1)[0];h.splice(1,0,l);f.dequeue(this)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c}, +b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.7",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%", +background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* +f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.7 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/php/parsers/heading/english.php b/php/parsers/heading/english.php new file mode 100644 index 00000000..d2ae56ac --- /dev/null +++ b/php/parsers/heading/english.php @@ -0,0 +1,67 @@ + "/^(?PTEST)\W+(?P.*)$/i" +) ; + +$examples = << +
      • Art. 12 Heading of the article
      • +
      • Article 14 bis - Heading of the article
      • +
      • Tome XV + Another heading
      • +
      • 14) Some text
      • +
      • c - Other text
      • +
      • Section 123 - Even more text
      • +
      • Sect. 123 a: More and more text
      • +
      • Section (43)
      • + +END; + + +?> \ No newline at end of file diff --git a/php/parsers/heading/espanol.php b/php/parsers/heading/espanol.php new file mode 100644 index 00000000..d97536d7 --- /dev/null +++ b/php/parsers/heading/espanol.php @@ -0,0 +1,58 @@ + "/^(?PPRUEVA)\W+(?P.*)$/i" +) ; + +$examples = << + +END; + + +?> \ No newline at end of file diff --git a/php/parsers/heading/index.php b/php/parsers/heading/index.php new file mode 100644 index 00000000..9b1c7d2e --- /dev/null +++ b/php/parsers/heading/index.php @@ -0,0 +1,263 @@ + "Fabio Vitali", + "name" => "Heading parser", + "date" => "14/06/2012", + "desc" => "A parser for the headings of legislative documents", + "copyright" => "© 2012 Fabio Vitali, all rights reserved", +); +$return = array() ; + +$debug = isset($_GET['debug'])?true:false ; +debug("*** START ***"); +$string = stripcslashes(isset($_GET['s'])?$_GET['s']:"") ; +debug("string: ".$string); +$format = isset($_GET['f'])?$_GET['f']:"json" ; +debug("format: ".$format); +$voc = isset($_GET['l'])?$_GET['l']:"standard" ; +debug("voc: ".$voc); + +$vocs = array( + "ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", +); + + +require_once "standard.php" ; +debug("Loaded standard vocabulary") ; +if (isset($vocs[$voc])) { + require_once $vocs[$voc] ; + debug("Loaded ".$voc." vocabulary") ; +} + +$digit = "(\d+)" ; +$roman = "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))"; +$letter = "([a-ZA-Z]+)" ; + +$decs = implode("|",$decorations); +$parts = implode("|",array_keys($partNames)) ; +$pts = implode("\.|",array_keys($abbreviations))."\." ; + +$patterns = array( + "base: part num [dec] - heading" => "/^(?P$parts)\W+(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "abbreviated: pt. num [dec] - heading" => "/^(?P$pts)\W+(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "no part name: num [dec] - heading" => "/^(?P$digit|$roman)\W*((?P$decs){0,1}\W+)(?P.*)$/i" , + "no heading: part num" => "/^(?P\w+)\W+(?P\w+)$/i", + "all heading" => "/^(?P.*)$/" +) ; +debug("Loaded standard patterns") ; +if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + debug("Loaded ".$voc." patterns") ; +} + +$success = false ; +while (!$success && $element = each($patterns)) { + $success = preg_match($element['value'], $string, $n) ; + debug($element['value'].": ".$string." - ".($success?"correct":"incorrect")) ; +} +debug("Patterns completed with ".($success?"success":"no success")) ; + +if ($success) { + $return['rule'] = $element['key']; + if ($debug) { + $return['pattern'] = $element['value']; + } + if (isset($n['part'])) { + $return['partString'] = $n['part'] ; + $val = strtolower($n['part']) ; + if (isset($partNames[$val])) { + $return['part'] = $partNames[$val] ; + } elseif (isset($abbreviations[substr($val,0,strlen($val)-1)])) { + $return['part'] = $abbreviations[substr($val,0,strlen($val)-1)] ; + } else { + $return['part'] = "" ; + } + } + if (isset($n['num'])) { + $return['numString'] = $n['num'] ; + if (is_numeric($n['num'])) { + $return['numType'] = 'number'; + $return['numValue'] = intval($n['num']) ; + debug("Number is numeric:".$return['numValue']) ; + } else { + $val = romanValue($n['num']) ; + if ($val>0) { + $return['numType'] = 'roman'; + $return['numValue'] = $val ; + debug("Number is roman:".$val) ; + } else { + $return['numType'] = 'letter'; + $return['numValue'] = letterValue($n['num']) ; + debug("Number is letter:".$val) ; + } + } + } + if (isset($n['dec']) && $n['dec']!="") { + $return['decoration'] = $n['dec'] ; + } + if (isset($n['heading']) && $n['heading']!="") { + $return['heading'] = $n['heading'] ; + } + if ($debug) { + $return['match'] = $n ; + } +} +debug("Return value created") ; + + +$ret = array( + "response" => $return, + "request" => $_REQUEST, + "metadata" => $meta +) ; + +if ($debug) { + $ret["debug"]=$debugInfo ; +} + +if ($format=="json") { +// header('Content-type: application/json'); + echo json_encode($ret) ; +} else { + $simple = toXml($ret, 'data') ; + $dom = dom_import_simplexml($simple)->ownerDocument; + $dom->formatOutput = true; +// header ("Content-Type:text/xml"); + echo stripcslashes($dom->saveXML()) ; +} + +// ------------------------------------- // + +function romanValue($s) { + $romans = array( + 'M' => 1000, + 'CM' => 900, + 'D' => 500, + 'CD' => 400, + 'C' => 100, + 'XC' => 90, + 'L' => 50, + 'XL' => 40, + 'X' => 10, + 'IX' => 9, + 'V' => 5, + 'IV' => 4, + 'I' => 1, + 'm' => 1000, + 'cm' => 900, + 'd' => 500, + 'cd' => 400, + 'c' => 100, + 'xc' => 90, + 'l' => 50, + 'xl' => 40, + 'x' => 10, + 'ix' => 9, + 'v' => 5, + 'iv' => 4, + 'i' => 1, + ); + + $result = 0; + + foreach ($romans as $key => $value) { + while (strpos($s, $key) === 0) { + $result += $value; + $s = substr($s, strlen($key)); + } + } + return $result ; +} + +function letterValue($s) { + return ord($s) - ord('a') +1 ; +} + +function toXml($data, $r = 'data', &$xml=null) { + if (ini_get('zend.ze1_compatibility_mode') == 1) { + ini_set ('zend.ze1_compatibility_mode', 0); + } + + if (is_null($xml) || !isset($xml)) { + $xml = simplexml_load_string("<".$r."/>"); + } + + foreach($data as $key => $value) { + if (is_numeric($key)) { + $key = $r; + } + $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key); + if (is_array($value)) { + $node = isAssoc($value) ? $xml->addChild($key) : $xml; + toXml($value, $key, $node); + } else { + $value = htmlentities($value); + $xml->addChild($key,$value); + } + } + return $xml; +} + +function isAssoc( $array ) { + return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array))))); +} + +function debug($t) { + global $debug, $debugInfo; + if ($debug) { + if (!isset($debugInfo)) + $debugInfo = array() ; +// echo $t."\n" ; + array_push($debugInfo,$t) ; + } +} +?> \ No newline at end of file diff --git a/php/parsers/heading/italian.php b/php/parsers/heading/italian.php new file mode 100644 index 00000000..2395ffc7 --- /dev/null +++ b/php/parsers/heading/italian.php @@ -0,0 +1,108 @@ + "clause" , + "sezione" => "section" , + "parte" => "part" , + "paragrafo" => "paragraph" , + "capitolo" => "chapter" , + "titolo" => "title" , + "articolo" => "article" , + "libro" => "book" , + "tomo" => "tome" , + "divisione" => "division" , + "lista" => "list" , + "punto" => "point" , + "lettera" => "indent" , + "numero" => "alinea" , + "subsezione" => "subsection" , + "subparte" => "subpart" , + "subparagrafo" => "subparagraph" , + "subcapitolo" => "subchapter" , + "subtitolo" => "subtitle" , + "subccomma" => "subclause" , + "sublista" => "sublist" +) ; + +$abbreviations = array( + "c" => "clause" , + "sez" => "section" , + "pt" => "part" , + "par" => "paragraph" , + "cap" => "chapter" , + "tit" => "title" , + "art" => "article" , + "div" => "division" , +) ; + +$decorations = array( + "bis", + "ter", + "quater", + "quinquies", + "[a-z]{1,2}" +) ; + +$localpatterns = array( + "solo italiano: PROVA - heading" => "/^(?PPROVA)\W+(?P.*)$/i" +) ; + +$examples = <<Art. 12 Rubrica dell'articolo +
      • Articolo 14 bis - Rubrica dell'articolo
      • +
      • Tomo XV + Altra rubrica dell'articolo
      • +
      • 14) Del testo
      • +
      • c - Dell'altro testo
      • +
      • Sezione 123 - Ancora testo
      • +
      • Sez. 123 a: Dell'altro testo
      • +
      • Libro XXVII: Del matrimonio
      • +
      • Tomo ii: questo è sbagliato
      • +END; + +?> \ No newline at end of file diff --git a/php/parsers/heading/standard.php b/php/parsers/heading/standard.php new file mode 100644 index 00000000..12f96a32 --- /dev/null +++ b/php/parsers/heading/standard.php @@ -0,0 +1,92 @@ + "clause" , + "section" => "section" , + "part" => "part" , + "paragraph" => "paragraph" , + "chapter" => "chapter" , + "title" => "title" , + "article" => "article" , + "book" => "book" , + "tome" => "tome" , + "division" => "division" , + "list" => "list" , + "point" => "point" , + "indent" => "indent" , + "alinea" => "alinea" , + "subsection" => "subsection" , + "subpart" => "subpart" , + "subparagraph" => "subparagraph" , + "subchapter" => "subchapter" , + "subtitle" => "subtitle" , + "subclause" => "subclause" , + "sublist" => "sublist" +) ; + +$abbreviations = array( + "cl" => "clause" , + "sect" => "section" , + "pt" => "part" , + "par" => "paragraph" , + "chp" => "chapter" , + "tit" => "title" , + "art" => "article" , + "div" => "division" , +) ; + +$decorations = array( + "bis", + "ter", + "quater", + "quinquies", + "[a-z]{1,2}" +) ; + +?> \ No newline at end of file diff --git a/php/parsers/heading/test.html b/php/parsers/heading/test.html new file mode 100644 index 00000000..46ba91b2 --- /dev/null +++ b/php/parsers/heading/test.html @@ -0,0 +1,205 @@ + + + + + Test page: parser for headings + + + + + + + + +
        +
        +
        +

        Test Unit per il parser di heading

        + +

        Il servizio prende in input una stringa della forma "Art 12 bis - Rubrica dell'articolo" + e restituisce un JSON con nome della parte, numero, decorazione, rubrica (eventualmente vuoti). Gestisce un elenco fisso di nomi di parti, numeri interi, lettere e numeri romani, e una varietà di separatori.

        + + + + + + + + + + + + + + + + + + + + +
        ExamplesResult
        +
        + +
        +
          +
        • Art. 12 Heading of the article
        • +
        • Article 14 bis - Heading of the article
        • +
        • Tome XV + Another heading
        • +
        • 14) Some text
        • +
        • c - Other text
        • +
        • Section 123 - Even more text
        • +
        • Sect. 123 a: More and more text
        • +
        • Section (43)
        • +
        +
        +
        +
          +
        • Art. 12 Rubrica dell'articolo
        • +
        • Articolo 14 bis - Rubrica dell'articolo
        • +
        • Tomo XV + Altra rubrica dell'articolo
        • +
        • 14) Del testo
        • +
        • c - Dell'altro testo
        • +
        • Sezione 123 - Ancora testo
        • +
        • Sez. 123 a: Dell'altro testo
        • +
        • Libro XXVII: Del matrimonio
        • +
        +
        +
        Try it outCorresponding Akoma Ntoso snippet
        +

        + + +

        +

        + + + + + + + + + + +

        +
        +

        Request format:

        +
          +
        • GET http://www.site.com/dir/heading/?s=art+12+bis+-+Rubrica+dell'articolo
        • +
        • GET http://www.site.com/dir/heading/?s=art%2012%20bis%20-%20Rubrica%20dell'articolo
        • +
        + + +
        + + + diff --git a/php/parsers/heading/test.js b/php/parsers/heading/test.js new file mode 100644 index 00000000..adc4e6a3 --- /dev/null +++ b/php/parsers/heading/test.js @@ -0,0 +1,97 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?s=xxx&l=yyy&f=zzz" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + url: serviceURI.replace("xxx",encodeURI(t)).replace("yyy",l).replace("zzz",f)+(d?"&debug":"") , + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for headings + + + + + + +
        +
        +
        +

        Test Unit per il parser di heading

        + +

        Il servizio prende in input una stringa della forma "Art 12 bis - Rubrica dell'articolo" + e restituisce un JSON con nome della parte, numero, decorazione, rubrica (eventualmente vuoti). Gestisce un elenco fisso di nomi di parti, numeri interi, lettere e numeri romani, e una varietà di separatori.

        + + + + + + + + + + + + + + + + + + + + +
        ExamplesResult
        +
        + +
        +
          + +
        +
        +
        +
          + +
        +
        +
        +
          + +
        +
        +
        +
        Try it outCorresponding Akoma Ntoso snippet
        +

        + + +

        +

        + + + + + + + + + + +

        +
        +

        Request format:

        +
          +
        • GET http://www.site.com/dir/heading/?s=art+12+bis+-+Rubrica+dell'articolo
        • +
        • GET http://www.site.com/dir/heading/?s=art%2012%20bis%20-%20Rubrica%20dell'articolo
        • +
        + + +
        + + + diff --git a/php/parsers/index.php b/php/parsers/index.php new file mode 100644 index 00000000..b49d07d1 --- /dev/null +++ b/php/parsers/index.php @@ -0,0 +1,94 @@ +parseDocument(); + break; + case 'body': + echo $metaParser->parseBody(); + break; + case 'date': + echo $metaParser->parseDate(); + break; + case 'docnum': + echo $metaParser->parseDocNum(); + break; + case 'doctype': + echo $metaParser->parseDocType(); + break; + case 'list': + echo $metaParser->parseList(); + break; + case 'quote': + echo $metaParser->parseQuote(); + break; + case 'reference': + echo $metaParser->parseReference(); + break; + case 'structure': + echo $metaParser->parseStructure(); + break; + default: + http_response_code(406); + break; + } +} else { + http_response_code(406); +} + +?> \ No newline at end of file diff --git a/php/parsers/list/ListParser.php b/php/parsers/list/ListParser.php new file mode 100644 index 00000000..8952a2f3 --- /dev/null +++ b/php/parsers/list/ListParser.php @@ -0,0 +1,145 @@ +lang = $lang; + $this->loadConfiguration($lang); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + $preg_result = array(); + $element = array(); + $success = false ; + while (!$success && $element = each($this->patterns)) { + $success = preg_match_all($element['value'], $content, $n) ; + } + + if ($success) { + $return['items']=array(); + $tmpResult = array(); + $matches = $n['0']; + for($i=0;$i $match, "str" => $myStr); + } + + $intro = substr($content,0,$tmpResult[0]['pos']); + if($intro != ""){ + $return['intro'] = $intro; + } + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + public function loadConfiguration() { + global $patterns, $monthsNames,$monthsNamesExceptions; + $vocs = array("ita" => "italian.php", + "eng" => "english.php", + "esp" => "espanol.php", + "spa" => "espanol.php",); + + $day = "(\d){1,2}"; + $year = "(\d){4}"; + $num_month = "(\d){1,2}"; + + require_once "standard.php" ; + /*debug("Loaded standard vocabulary") ; + if (isset($vocs[$voc])) { + require_once $vocs[$voc] ; + debug("Loaded ".$voc." vocabulary") ; + } + */ + $digit = "(?:\d+[-]?\w*)"; + //$roman = "(?i:M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))"; questo è giusto ma fa match anche con la stringa vuota + $roman = "(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})"; + //$roman = "(?i:[IVXLCDM]+)"; + //$number = "$digit|$roman"; + $number = $digit; + + $patterns = array( + "num" => "/[\(\[]?(?P(($number)(?:\s*[e,]\s*$number))|$number)\s*[\)\]]/i", + "letter" => "/[\(\[]?(?P[a-zA-Z]+)\s*[\)\]]/i" + ); + + if (isset($localpatterns)) { + $patterns = array_merge($localpatterns,$patterns); + } + + $this->patterns = $patterns; + } +} + +?> \ No newline at end of file diff --git a/php/parsers/list/english.php b/php/parsers/list/english.php new file mode 100644 index 00000000..66b77c2d --- /dev/null +++ b/php/parsers/list/english.php @@ -0,0 +1,64 @@ + +
      • 14 july 2011
      • +
      • 14 July 2011
      • +
      • 03-17-2000
      • +
      • January, 01, 2010
      • + +END; + + +$localpatterns = array( + "dayth month-name(,) year"=> "/(?P$day)th\s*(?P$months),*\s*(?P$year)/i" +) ; + +?> \ No newline at end of file diff --git a/php/parsers/list/espanol.php b/php/parsers/list/espanol.php new file mode 100644 index 00000000..25953a91 --- /dev/null +++ b/php/parsers/list/espanol.php @@ -0,0 +1,81 @@ + "setiembre" +); +*/ +$months = implode("|",$monthsNames); + +$localpatterns = array( + "month-name day de year"=> "/(?P$months)\s(?P$day)\sde\s(?P$year)/i", + "day de month-name de year"=> "/(?P$day)\sde\s(?P$months)\sde\s(?P$year)/i" +) ; +$examples = <<- En virtud de lo dispuesto en los artÍculos 1º y 2º de la presente ley: + +A) Toda intervención judicial que haya sido interrumpida, suspendida y/o archivada por aplicación de la Ley Nº 15.848, de 22 de diciembre de 1986, continuará de oficio, por la mera solicitud del interesado o del Ministerio Público y no se podrá invocar la validez de dicha ley ni de actos administrativos que se hubieran dictado en su aplicación, con el fin de obstaculizar, impedir o archivar, o mantener suspendidas y/o archivadas, indagatorias o acciones penales. + +B) Sin perjuicio de los delitos imprescriptibles, cuando se tratara de delitos de naturaleza prescriptibles, hayan o no sido incluidos en la caducidad establecida en el artÍculo 1º de la Ley Nº 15.848, de 22 de diciembre de 1986, no se computará en ningún caso para el tÉrmino de prescripción, el comprendido entre el 22 de diciembre de 1986 y la fecha de promulgación de la presente ley. +END; + +?> diff --git a/php/parsers/list/index.php b/php/parsers/list/index.php new file mode 100644 index 00000000..d66deeb6 --- /dev/null +++ b/php/parsers/list/index.php @@ -0,0 +1,58 @@ +parse($string, TRUE); +?> diff --git a/php/parsers/list/italian.php b/php/parsers/list/italian.php new file mode 100644 index 00000000..2c9eba79 --- /dev/null +++ b/php/parsers/list/italian.php @@ -0,0 +1,105 @@ + "clause" , + "sezione" => "section" , + "parte" => "part" , + "paragrafo" => "paragraph" , + "capitolo" => "chapter" , + "titolo" => "title" , + "articolo" => "article" , + "libro" => "book" , + "tomo" => "tome" , + "divisione" => "division" , + "lista" => "list" , + "punto" => "point" , + "lettera" => "indent" , + "numero" => "alinea" , + "subsezione" => "subsection" , + "subparte" => "subpart" , + "subparagrafo" => "subparagraph" , + "subcapitolo" => "subchapter" , + "subtitolo" => "subtitle" , + "subccomma" => "subclause" , + "sublista" => "sublist" +) ; + +$monthsNames = array( + "gennaio", + "febbraio", + "marzo", + "aprile", + "maggio", + "giugno", + "luglio", + "agosto", + "settembre", + "ottobre", + "novembre", + "dicembre" +); + +$localpatterns = array( + "ISO dd-mm-yyyy" => "/(?P$day)-(?P$num_month)-(?P$year)$/i" +) ; + + +$examples = <<28 giugno 2012 +
      • 28 Maggio 2012
      • +
      • Delle date.. 28 giugno 2012 28 maggio 2012 aprile, 12, 2012
      • +
      • 17-03-2000
      • +
      • Agosto 12, 2012
      • +
      • Agosto 2012, 12
      • +
      • Agosto 2012 12
      • +
      • Agosto 12 2012
      • +
      • 12 Agosto, 2012
      • +
      • Riconosce molte date insieme Agosto 12, 2012 dopo Agosto 2012, 12 e anche Agosto 2012 12 poi 12 Agosto, 2012
      • +END; + +?> \ No newline at end of file diff --git a/php/parsers/list/standard.php b/php/parsers/list/standard.php new file mode 100644 index 00000000..dd98e075 --- /dev/null +++ b/php/parsers/list/standard.php @@ -0,0 +1,89 @@ + "clause" , + "section" => "section" , + "part" => "part" , + "paragraph" => "paragraph" , + "chapter" => "chapter" , + "title" => "title" , + "article" => "article" , + "book" => "book" , + "tome" => "tome" , + "division" => "division" , + "list" => "list" , + "point" => "point" , + "indent" => "indent" , + "alinea" => "alinea" , + "subsection" => "subsection" , + "subpart" => "subpart" , + "subparagraph" => "subparagraph" , + "subchapter" => "subchapter" , + "subtitle" => "subtitle" , + "subclause" => "subclause" , + "sublist" => "sublist" +) ; + +$monthsNames = array( + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october|oct.", + "november", + "december" +); + + +?> \ No newline at end of file diff --git a/php/parsers/list/test.js b/php/parsers/list/test.js new file mode 100644 index 00000000..6399db62 --- /dev/null +++ b/php/parsers/list/test.js @@ -0,0 +1,99 @@ +var idStr = { + "clause": "cla" , + "section": "sec" , + "part": "prt" , + "paragraph": "par" , + "chapter": "chp" , + "title": "tit" , + "article": "art" , + "book": "bok" , + "tome": "tom" , + "division": "div" , + "list": "lst" , + "point": "pnt" , + "indent": "ind" , + "alinea": "aln" , + "subsection": "ssc" , + "subpart": "spt" , + "subparagraph": "spa" , + "subchapter": "sch" , + "subtitle": "stt" , + "subclause": "scl" , + "sublist": "sls" +} +var pattern = "<$part id='$id'>\n\t$num\n\t$heading\n\t...\n\n" +var serviceURI = "index.php?" + + $(function(){ + $('#tabs').tabs(); + $( "#language" ).buttonset(); + $( "#format" ).buttonset(); + $( "#debug" ).button(); + $( "#parse" ).button(); + }) ; + + $(document).ready(function(){ + $('#examplesEng li').each(function(index) { + var id = '"exEng'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesIta li').each(function(index) { + var id = '"exIta'+index+'"' + $(this).html(""+$(this).html()+"") + }) + $('#examplesEsp li').each(function(index) { + var id = '"exEsp'+index+'"' + $(this).html(""+$(this).html()+"") + }) + }) + + function show(x,l) { + t = $("#"+x).val()!=""?$("#"+x).val():$("#"+x).text() + if (l==undefined) l=$('input[name="language"]:checked').val() + f=$('input[name="format"]:checked').val() + d=$('#debug').is(":checked") + $.ajax({ + type:'POST', + url: serviceURI+(d?"&debug":""), + data: { l: l, s: t, f:f}, + success: function(data,r,s) { + update(data) + }, + error: function(r) { + alert("Error "+r.status+" on resource '"+this.url+"':\n\n"+r.statusText); + } + }) + } + + function update(j) { + if (j.indexOf(" + + + + Test page: parser for lists + + + + + + +
        +
        +
        +

        Test Unit per il parser di liste

        + +

        Il servizio prende in input un testo e restituisce gli elementi che riconosce come elementi di una lista.

        + + + + + + + + + + + + + + + + + + + + +
        ExamplesResult
        +
        + +
        +
          + +
        +
        +
        +
          + +
        +
        +
        +
          + +
        +
        +
        +
        Try it out
        +

        + + +

        +

        + + + + + + + + + + +

        +
        +

        Request format:

        +
          +
        • POST http://www.site.com/dir/list/
        • +
        + + +
        + + + diff --git a/php/parsers/quote/QuoteParser.php b/php/parsers/quote/QuoteParser.php new file mode 100644 index 00000000..22d86da2 --- /dev/null +++ b/php/parsers/quote/QuoteParser.php @@ -0,0 +1,110 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $resolved = resolveRegex($this->parserRules['quote'],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) { + for ($i = 0; $i < $success; $i++) { + $struct = FALSE; + if ($this->isStructure($result["quoted"][$i][0])) $struct = TRUE; + + $entry = Array ( + "start" => Array("string" => $result["start"][$i][0], + "offset" => $result["start"][$i][1]), + + "quoted" => Array("string" => $result["quoted"][$i][0], + "offset" => $result["quoted"][$i][1]), + + "struct" => $struct, + + "end" => Array("string" => $result["end"][$i][0], + "offset" => $result["end"][$i][1]) + ); + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function isStructure($content) { + $resolved = resolveRegex($this->parserRules['struct'],$this->parserRules,$this->lang, $this->docType); + return preg_match_all($resolved["value"],$content,$result,PREG_OFFSET_CAPTURE); + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/php/parsers/quote/conf.php b/php/parsers/quote/conf.php new file mode 100644 index 00000000..b78652c3 --- /dev/null +++ b/php/parsers/quote/conf.php @@ -0,0 +1,53 @@ + "/(?P[\"])(?P[^\"^\”]+)(?P[\"\”])/", + "struct" => "/|<\/?p>/" +); + +?> \ No newline at end of file diff --git a/php/parsers/quote/index.php b/php/parsers/quote/index.php new file mode 100644 index 00000000..25231890 --- /dev/null +++ b/php/parsers/quote/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/php/parsers/reference/ReferenceParser.php b/php/parsers/reference/ReferenceParser.php new file mode 100644 index 00000000..d460309d --- /dev/null +++ b/php/parsers/reference/ReferenceParser.php @@ -0,0 +1,124 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $references = $this->parserRules['references']; + + foreach($references as $ref) { + $resolved = resolveRegex($this->parserRules[$ref],$this->parserRules,$this->lang, $this->docType, $this->dirName); + $success = preg_match_all($resolved["value"], $content, $result, PREG_OFFSET_CAPTURE); + if ($success) + for ($i = 0; $i < $success; $i++) { + $match = $result[0][$i][0]; + $offset = $result[0][$i][1]; + $entry = Array( + "ref" => $match, + "start" => $offset, + "end" => $offset+strlen($match) + ); + + if (array_key_exists("type", $result)) { + if(is_array($result["type"])) { + $result["type"] = $result["type"][$i][0]; + } + } + + if (array_key_exists("date", $result)) { + $date = $this->requestDate($result["date"][$i][0]); + if(array_key_exists("dates", $date['response'])) { + $date = $date['response']['dates']; + if(!empty($date)) { + $last = end($date); + $entry["date"] = $last['date']; + } + } + } + + $return[] = $entry; + } + } + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function requestDate($content) { + $parser = new DateParser($this->lang); + return $parser->parse($content); + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/php/parsers/reference/conf.php b/php/parsers/reference/conf.php new file mode 100644 index 00000000..8292fb76 --- /dev/null +++ b/php/parsers/reference/conf.php @@ -0,0 +1,51 @@ + Array() +); + +?> \ No newline at end of file diff --git a/php/parsers/reference/index.php b/php/parsers/reference/index.php new file mode 100644 index 00000000..c6053bee --- /dev/null +++ b/php/parsers/reference/index.php @@ -0,0 +1,59 @@ +parse($string, TRUE); + +?> \ No newline at end of file diff --git a/php/parsers/reference/lang/esp/conf.php b/php/parsers/reference/lang/esp/conf.php new file mode 100644 index 00000000..2e18360a --- /dev/null +++ b/php/parsers/reference/lang/esp/conf.php @@ -0,0 +1,69 @@ + Array("ref_1","ref_2"), + "ref_1" => "/{{type}}\s+Nº\s+\d+\.?\d*\,?\s*{{date}}/", + "ref_2" => "/{{partition}}\s+\d+(\s+(de la|del|de)\s+{{source}})?/", + + "type" => Array("Ley", + "LEY", + "Decreto Ley"), + + "date" => "[\w\d\s]+\d{4}", + + "partition" => Array("artículo", + "inciso"), + + "source" => Array("Constitución de la República", + "Constitución", + "Carta", + "Código Penal") +); + +?> \ No newline at end of file diff --git a/php/parsers/reference/lang/ita/authorities b/php/parsers/reference/lang/ita/authorities new file mode 100644 index 00000000..94286fc3 --- /dev/null +++ b/php/parsers/reference/lang/ita/authorities @@ -0,0 +1,437 @@ +agenzia del demanio +agenzia del territorio +agenzia delle dogane +agenzia delle entrate +agenzia italiana del farmaco +agenzia per la rappresentanza negoziale delle pubbliche amministrazioni +agenzia per le erogazioni in agricoltura +agenzia spaziale italiana +alto commissario per l'alimentazione +alto commissario per l'igiene e la sanit\u00e0 pubblica +alto commissario per il coordinamento della protezione civile +amministrazione autonoma dei monopoli di stato +assessorato regionale all'assetto del territorio +automobile club d'italia +autorit\u00e0 garante della concorrenza e del mercato +autorit\u00e0 di bacino dei fiumi isonzo, tagliamento, livenza, piave, brenta-bacchiglione +autorit\u00e0 di bacino dei fiumi liri-garigliano e volturno +autorit\u00e0 di bacino del fiume adige +autorit\u00e0 di bacino del fiume arno +autorit\u00e0 di bacino del fiume po +autorit\u00e0 di bacino della basilicata +autorit\u00e0 di bacino della puglia +autorit\u00e0 di bacino interregionale dei fiumi trigno, biferno e minori, saccione e fortore +autorit\u00e0 di bacino interregionale del fiume fiora +autorit\u00e0 di bacino interregionale del fiume sele +autorit\u00e0 di bacino interregionale del fiume tevere +autorit\u00e0 di bacino interregionale del fiume magra +autorit\u00e0 di bacino interregionale del reno +autorit\u00e0 di bacino interregionale marecchia e conca +autorit\u00e0 di bacino pilota del fiume serchio +autorit\u00e0 per l'informatica nella pubblica amministrazione +autorit\u00e0 per l'energia elettrica e il gas +autorit\u00e0 per la vigilanza sui contratti pubblici di lavoro, servizi e forniture +autorit\u00e0 per la vigilanza sui lavori pubblici +autorit\u00e0 per le garanzie nelle comunicazioni +avvocatura generale dello stato +azienda nazionale autonoma delle strade +azienda di stato per gli interventi nel mercato agricolo +banca centrale europea +banca d'italia +capo del governo +capo provvisorio dello stato +camera dei deputati +cassa depositi e prestiti +cassa di compensazione e garanzia +centro europeo dell'educazione +centro nazionale per l'informatica nella pubblica amministrazione +comitato interministeriale dei prezzi +comitato interministeriale per il credito e il risparmio +comitato interministeriale per il coordinamento della politica industriale +comitato interministeriale per la programmazione economica +comitato interministeriale per la programmazione economica nel trasporto +comitato nazionale dell'albo delle imprese esercenti servizi di smaltimento dei rifiuti +comitato nazionale di parit\u00e0 e pari opportunit\u00e0 nel lavoro +comitato centrale per l'albo nazionale delle persone fisiche e giuridiche che esercitano l'autotrasporto di cose per conto di terzi +comitato dei ministri per il mezzogiorno e le zone depresse +comitato dei ministri per l'esecuzione di opere straordinarie di pubblico interesse nell'italia settentrionale e centrale +comitato dei ministri per l'esecuzione di opere straordinarie per l'italia settentrionale e centrale +comitato dei ministri per la cassa per il mezzogiorno +comitato economico e sociale europeo +comitato dei ministri per la cassa per il mezzogiorno e le zone depresse +comitato nazionale per la bioetica +comitato per le aree naturali protette +commissario straordinario di governo per l'anagrafe nazionale bovina +commissario straordinario di governo per l'emergenza bse +commissario del governo nella regione friuli-venezia giulia +commissario delegato per la sicurezza dei materiali nucleari +commissario delegato per l'emergenza alluvione in sardegna del 6/12/2004 +commissario governativo per l'emergenza idrica in sardegna +commissario prefettizio +commissione nazionale per le societ\u00e0 e la borsa +commissione tributaria regionale del lazio +commissione tributaria regionale del veneto +commissione tributaria regionale dell'emilia romagna +commissione tributaria regionale della lombardia +commissione tributaria regionale della sardegna +commissione di vigilanza sui fondi pensione +commissione di garanzia dell'attuazione della legge sullo sciopero nei servizi pubblici essenziali +commissione parlamentare per l'indirizzo generale e la vigilanza dei servizi radio televisivi +commissione per le adozioni internazionali +commissione unica del farmaco +commissione comunit\u00e0 europea +commissione comunit\u00e0 europee +commissione unione europea +comune di roma +comunit\u00e0 europea +comunit\u00e0 economica europea +comunita europea carbone e acciaio +comunita europea energia atomica +conferenza unificata +conferenza unificata stato-regioni e stato-citt\u00e0 ed autonomie locali + "norm": "conferenza.presidenti.regioni.province.autonome +conferenza dei presidenti delle regioni e delle province autonome + "norm": "conferenza.permanente.rapporti.stato.regioni.province.autonome.trento.bolzano +conferenza permanente per i rapporti tra lo stato, le regioni e le province autonome di trento e di bolzano +consiglio comunale +consiglio comunit\u00e0 europea +consiglio regionale +consiglio d'europa +consiglio della magistratura militare +consiglio delle comunit\u00e0 europee +consiglio di cooperazione doganale +consiglio di presidenza della giustizia amministrativa +consiglio di presidenza della giustizia tributaria +consiglio di sicurezza dell'o.n.u. +consiglio di stato +consiglio nazionale del notariato +consiglio nazionale delle ricerche +consiglio per la ricerca e la sperimentazione in agricoltura +consiglio superiore dei lavori pubblici +consiglio superiore della magistratura +consiglio unione europea +consorzio per l'area di ricerca scientifica e tecnologica di trieste +corte costituzionale +corte dei conti +corte di giustizia dell'unione europea +corte di giustizia delle comunit\u00e0 europee +corte suprema di cassazione +corte suprema di cassazione - ufficio centrale per il referendum +corte suprema di cassazione - ufficio elettorale centrale nazionale +ente nazionale per l'assistenza al volo +ente nazionale per l'aviazione civile +ente nazionale per le strade +ente per le nuove tecnologie, l'energia e l'ambiente +ente poste fino al 97 (v. del. cipe 18-12) +federazione nazionale degli ordini dei medici chirurghi e degli odontoiatri +garante per la protezione dei dati personali +garante per la radiodiffusione e l'editoria +garante per la tutela delle persone e di altri soggetti rispetto al trattamento dei dati personali +gestore della rete di trasmissione nazionale +giunta comunale +giunta regionale +guardia di finanza +iuav - universit\u00e0 degli studi +istituto elettrotecnico nazionale galileo ferraris +istituto italiano di scienze umane di firenze +istituto italiano di studi germanici +istituto nazionale della previdenza sociale +istituto nazionale di alta matematica francesco severi +istituto nazionale di astrofisica +istituto nazionale di fisica nucleare +istituto nazionale di geofisica e vulcanologia +istituto nazionale di previdenza per i dipendenti dell'amministrazione pubblica +istituto nazionale di previdenza per i dirigenti di aziende industriali +istituto nazionale di ricerca metrologica +istituto nazionale per studi ed esperienze di architettura navale +istituto nazionale per l'assicurazione contro gli infortuni sul lavoro +istituto nazionale per l'assistenza ai dipendenti locali +istituto nazionale per la valutazione del sistema dell'istruzione +istituto nazionale per la valutazione del sistema educativo di istruzione e di formazione +istituto nazionale per la fisica della materia +istituto superiore di sanit\u00e0 +istituto superiore per la prevenzione e la sicurezza del lavoro +istituto universitario orientale di napoli +istituto universitario suor orsola benincasa +istituto universitario di architettura di venezia +istituto universitario di lingue moderne +istituto di previdenza per il settore marittimo +istituto nazionale di oceanografia e di geofisica sperimentale +istituto nazionale di oceanografia e di geofisica sperimentale - ogs +istituto nazionale di statistica +istituto nazionale per il commercio estero +istituto nazionale per la fauna selvatica +istituto per la vigilanza sulle assicurazioni private e di interesse collettivo +libera universit\u00e0 internazionale degli studi sociali +libera universit\u00e0 internazionale degli studi sociali guido carli +libera universit\u00e0 vita-salute san raffaele +libera universit\u00e0 di bolzano +libera universit\u00e0 di lingue e comunicazione iulm +libera universit\u00e0 \"maria s.s. assunta\" di roma +libero istituto universitario campus bio-medico +luiss - libera universit\u00e0 internazionale degli studi sociali guido carli +ministero degli affari esteri +ministero dei lavori pubblici +ministero dei trasporti +ministero dei trasporti e dell'aviazione civile +ministero dei trasporti e della marina mercantile +ministero dei trasporti e della navigazione +ministero del bilancio +ministero del bilancio e della programmazione economica +ministero del commercio con l'estero +ministero del commercio internazionale +ministero del lavoro e della previdenza sociale +ministero del lavoro e delle politiche sociali +ministero del tesoro +ministero del tesoro, del bilancio e della programmazione economica +ministero del turismo e dello spettacolo +ministero dell'industria e del commercio +ministero dell'industria, del commercio e artigianato e del commercio estero +ministero dell'industria, del commercio e dell'artigianato +ministero dell'africa italiana +ministero dell'agricoltura e foreste +ministero dell'ambiente +ministero dell'ambiente e della tutela del territorio +ministero dell'ambiente e della tutela del territorio e del mare +ministero dell'ambiente e delle aree urbane +ministero dell'economia e delle finanze +ministero dell'interno +ministero dell'industria, del commercio e del lavoro +ministero dell'istruzione +ministero dell'istruzione, dell'universit\u00e0 e della ricerca +ministero dell'universit\u00e0 e della ricerca +ministero dell'universit\u00e0 e della ricerca scientifica +ministero dell'universit\u00e0 e della ricerca scientifica e tecnologica +ministero dell'universit\u00e0 e della ricerca tecnologica e scientifica +ministero della difesa +ministero della giustizia +ministero della marina mercantile +ministero della pubblica istruzione +ministero della pubblica istruzione e dell'universit\u00e0 e della ricerca scientifica e tecnologica +ministero della salute +ministero della sanit\u00e0 +ministero della solidariet\u00e0 sociale +ministero delle comunicazioni +ministero delle finanze +ministero delle infrastrutture +ministero delle infrastrutture e dei trasporti +ministero delle partecipazioni statali +ministero delle politiche agricole e forestali +ministero delle politiche agricole, alimentari e forestali +ministero delle poste e delle telecomunicazioni +ministero delle risorse agricole +ministero delle risorse agricole alimentari e forestali +ministero delle finanze e del tesoro +ministero dell'industria +ministero dell'industria, del commercio e del lavoro +ministero dello sviluppo economico +ministero di grazia e giustizia +ministero per i beni culturali +ministero per i beni culturali e ambientali +ministero per i beni e le attivit\u00e0 culturali +ministero per la famiglia e la solidariet\u00e0 sociale +ministero per le attivit\u00e0 produttive +ministero per le corporazioni +ministero per le politiche agricole +ministro con incarichi speciali +ministro dei beni culturali +ministro dei beni culturali e dell'ambiente +ministro dell'ambiente +ministro dell'ecologia +ministro per compiti politici particolari e di coordinamento, speciale riguardo alla presidenza della delegazione italiana all'onu +ministro per compiti politici, con particolare riguardo agli enti vigilati dalla presidenza del consiglio +ministro per gli affari regionali +ministro per gli affari regionali e i problemi istituzionali +ministro per gli affari regionali e la funzione pubblica +ministro per gli affari regionali e le autonomie locali +ministro per gli affari sociali +ministro per gli interventi straordinari nel mezzogiorno +ministro per gli interventi straordinari nel mezzogiorno e le zone depresse del centro-nord +ministro per gli italiani nel mondo +ministro per i diritti e le pari opportunit\u00e0 +ministro per i problemi della giovent\u00f9 +ministro per i problemi delle aree urbane +ministro per i problemi relativi all'attuazione delle regioni +ministro per i problemi relativi alle regioni +ministro per i rapporti con il parlamento +ministro per i rapporti con il parlamento e le riforme istituzionali +ministro per i rapporti fra il governo e il parlamento +ministro per il coordinamento della protezione civile +ministro per il coordinamento delle iniziative per la ricerca scientifica e tecnologica +ministro per il coordinamento delle politiche comunitarie +ministro per il coordinamento delle politiche comunitarie e degli affari regionali +ministro per il coordinamento delle politiche dell'unione europea +ministro per il coordinamento interno delle politiche comunitarie +ministro per il turismo e per lo spettacolo +ministro per il turismo e per lo sport +ministro per l'attuazione del programma di governo +ministro per l'immigrazione +ministro per l'innovazione e le tecnologie +ministro per l'organizzazione della pubblica amministrazione +ministro per l'organizzazione della pubblica amministrazione e delle regioni +ministro per la cassa del mezzogiorno +ministro per la famiglia e la solidariet\u00e0 sociale +ministro per la funzione pubblica +ministro per la funzione pubblica e per gli affari regionali +ministro per la politica comunitaria +ministro per la ricerca scientifica +ministro per la ricerca scientifica e tecnologica +ministro per la riforma amministrativa +ministro per la riforma burocratica +ministro per la riforma della pubblica amministrazione +ministro per la riforma della pubblica amministrazione e per l'attuazione della costituzione +ministro per la solidariet\u00e0 sociale +ministero per le corporazioni +ministro per le pari opportunit\u00e0 +ministro per le politiche comunitarie +ministro per le politiche europee +ministro per le politiche giovanili e le attivit\u00e0 sportive +ministro per le politiche per la famiglia +ministro per le privatizzazioni +ministro per le riforme e le innovazioni nella pubblica amministrazione +ministro per le riforme elettorali e istituzionali +ministro per le riforme istituzionali +ministro per le riforme istituzionali e la devoluzione +museo storico della fisica e centro studi e ricerche \"enrico fermi\" +organizzazione marittima internazionale +organizzazione mondiale per il commercio +osservatorio astrofisico di catania +osservatorio astronomico di bologna +osservatorio astronomico di brera +osservatorio astronomico di capodimonte +osservatorio astronomico di collurania-teramo +osservatorio astronomico di padova +osservatorio astronomico di palermo +osservatorio astronomico di roma +osservatorio astronomico di torino +osservatorio astronomico di trieste +osservatorio vesuviano +parlamento +parlamento europeo +parlamento europeo e consiglio +parti sociali +podest\u00e0 +politecnico di bari +politecnico di milano +prefettura di sondrio +presidente del consiglio dei ministri +presidente del senato della repubblica +presidente della camera dei deputati +presidente della repubblica +presidenza del consiglio dei ministri +presidenza della repubblica +provincia autonoma di bolzano +provincia autonoma di trento +regione abruzzo +regione basilicata +regione calabria +regione campania +regione emilia-romagna +regione friuli-venezia-giulia +regione lazio +regione liguria +regione lombardia +regione marche +regione molise +regione piemonte +regione puglia +regione sardegna +regione sicilia +regione toscana +regione trentino-alto-adige +regione umbria +regione valle d'aosta +regione veneto +registro aeronautico italiano +scuola imt alti studi di lucca +scuola internazionale superiore di studi avanzati +scuola normale superiore di pisa +seconda universit\u00e0 statale degli studi di milano +seconda universit\u00e0 degli studi di napoli +segretariato generale della giustizia amministrativa +senato della repubblica +sindaco +stato +stazione astronomica di cagliari-carloforte +stazione zoologica \"anthon dohrn\" di napoli +ufficio italiano dei cambi +unione europea +universit\u00e0 ca' foscari di venezia +universit\u00e0 cattolica del sacro cuore +universit\u00e0 commerciale \"luigi bocconi\" di milano +universit\u00e0 degli studi g. d'annunzio di chieti +universit\u00e0 degli studi mediterranea di reggio calabria +universit\u00e0 degli studi roma tre +universit\u00e0 degli studi del molise +universit\u00e0 degli studi del piemonte orientale amedeo avogadro +universit\u00e0 degli studi del sannio +universit\u00e0 degli studi dell'aquila +universit\u00e0 degli studi dell'insubria +universit\u00e0 degli studi della basilicata +universit\u00e0 degli studi della tuscia +universit\u00e0 degli studi di ancona +universit\u00e0 degli studi di bologna +universit\u00e0 degli studi di cagliari +universit\u00e0 degli studi di camerino +universit\u00e0 degli studi di cassino +universit\u00e0 degli studi di catania +universit\u00e0 degli studi di ferrara +universit\u00e0 degli studi di firenze +universit\u00e0 degli studi di foggia +universit\u00e0 degli studi di genova +universit\u00e0 degli studi di lecce +universit\u00e0 degli studi di macerata +universit\u00e0 degli studi di messina +universit\u00e0 degli studi di milano - bicocca +universit\u00e0 degli studi di modena +universit\u00e0 degli studi di modena e reggio emilia +universit\u00e0 degli studi di napoli federico ii +universit\u00e0 degli studi di napoli parthenope +universit\u00e0 degli studi di napoli l'orientale +universit\u00e0 degli studi di padova +universit\u00e0 degli studi di palermo +universit\u00e0 degli studi di parma +universit\u00e0 degli studi di pavia +universit\u00e0 degli studi di perugia +universit\u00e0 degli studi di pisa +universit\u00e0 degli studi di reggio calabria +universit\u00e0 degli studi di roma tor vergata +universit\u00e0 degli studi di salerno +universit\u00e0 degli studi di siena +universit\u00e0 degli studi di teramo +universit\u00e0 degli studi di trieste +universit\u00e0 degli studi di udine +universit\u00e0 degli studi di urbino +universit\u00e0 degli studi di urbino carlo bo +universit\u00e0 degli studi di verona +universit\u00e0 del salento +universit\u00e0 della calabria +universit\u00e0 della valle d'aosta +universit\u00e0 di bari +universit\u00e0 di milano +universit\u00e0 di bergamo +universit\u00e0 di scienze gastronomiche +universit\u00e0 di torino +universit\u00e0 italiana per stranieri di perugia +universit\u00e0 per stranieri di perugia +universit\u00e0 politecnica delle marche +universit\u00e0 telematica delle scienze umane +universit\u00e0 telematica internazionale \"uninettuno\" +universit\u00e0 telematica giustino fortunato +universit\u00e0 telematica guglielmo marconi +universit\u00e0 suor orsola benincasa +corte suprema di cassazione - prima sezione civile +corte suprema di cassazione -\u00a0seconda sezione civile +corte suprema di cassazione -\u00a0terza sezione civile +corte suprema di cassazione - sezioni unite civili +corte suprema di cassazione -\u00a0quinta sezione civile (sezione tributaria) +corte suprema di cassazione -\u00a0sezione lavoro +corte suprema di cassazione - prima sezione penale +corte suprema di cassazione - seconda sezione penale +corte suprema di cassazione - terza sezione penale +corte suprema di cassazione - quarta sezione penale +corte suprema di cassazione - quinta sezione penale +corte suprema di cassazione - sesta sezione penale +corte suprema di cassazione - settima sezione penale +corte suprema di cassazione -\u00a0sezioni\u00a0unite penali +tribunale\u00a0penale di messina \ No newline at end of file diff --git a/php/parsers/reference/lang/ita/conf.php b/php/parsers/reference/lang/ita/conf.php new file mode 100644 index 00000000..0e2f671a --- /dev/null +++ b/php/parsers/reference/lang/ita/conf.php @@ -0,0 +1,68 @@ + Array("ref_1"),#,"ref_2"), + "ref_1" => "/{{type}}\s+{{date}}\s*(,\s*n\.\s*\d+)/", + "ref_2" => "/{{partition}}\s+\d+\s+{{prep}}\s+{{type}}\s+({{prep}}\s+{{authorities}}\s+)?{{date}}\s*(,\s*n\.\s*\d+)?/", + + "type" => Array("legge", + "decreto", + "decreti", + "decreto legislativo", + "decreto del Presidente della Repubblica"), + + "date" => "[\w\d\s]+\d{4}", + + "partition" => Array("articolo", + "art\."), + + "prep" => Array("de","del","della","dello","dei","degli","delle") +); + +?> \ No newline at end of file diff --git a/php/parsers/reference/lang/ita/type b/php/parsers/reference/lang/ita/type new file mode 100644 index 00000000..4f1d1fd9 --- /dev/null +++ b/php/parsers/reference/lang/ita/type @@ -0,0 +1,59 @@ +accordo +accordo collettivo nazionale +accordo procedimentale interministeriale +accordo programma +atto regolazione +autorizzazione +avviso rettifica +circolare +codice +comunicato +comunicato di rettifica +comunicazione +contratto collettivo nazionale del lavoro +contratto collettivo nazionale lavoro personale non dirigente cassa depositi prestiti +convenzione +costituzione +decisione +decreto +decreto legge +decreto legislativo +decreto legislativo luogotenenziale +decreto luogotenenziale +delibera +determinazione +direttiva +disposizione +documento +entrata in vigore +errata corrige +estratto decreto +intesa +istruzione +istruzioni +legge +legge costituzionale +mancata conversione +memorandum d'intesa +ordinanza +parere +protocollo +protocollo di adesione +protocollo intesa +provvedimento +raccomandazione +regio decreto +regio decreto legge +regio decreto legislativo +regolamento +regolamento modificativo +relazione +relazione decreto +ripubblicazione +risoluzione +testo aggiornato +testo coordinato +testo unico +trattato +sentenza +statuto \ No newline at end of file diff --git a/php/parsers/structure/StructureParser.php b/php/parsers/structure/StructureParser.php new file mode 100644 index 00000000..a6c56b8e --- /dev/null +++ b/php/parsers/structure/StructureParser.php @@ -0,0 +1,125 @@ +lang = $lang; + $this->docType = $docType; + $this->dirName = dirname(__FILE__); + + $this->loadConfiguration(); + } + + public function parse($content, $jsonOutput = FALSE) { + $return = array(); + if($this->lang && $this->docType && !empty($this->parserRules)) { + $structure = $this->parserRules["structure"]; + $initOffset = 0; + $successSum = FALSE; + + foreach($structure as $key => $value) { + $subString = substr($content, $initOffset, (strlen($content)-$initOffset)); + $return[$value] = array(); + if(array_key_exists($value, $this->parserRules)) { + $resolved = resolveRegex($this->parserRules[$value], $this->parserRules, + $this->lang, $this->docType, $this->dirName); + + $success = preg_match_all($resolved["value"], $subString, $result, PREG_OFFSET_CAPTURE); + if ($success) { + $successSum = TRUE; + /*echo $value; + print_r($result);*/ + $lastMatch = end($result[0]); + $delimiter = $lastMatch[0]; + $endOffset = $lastMatch[1]; + $valueArray = Array( + "value" => $delimiter, + "end" => $initOffset+$endOffset + ); + if(isset($resolved["flags"])) { + foreach($resolved["flags"] as $matchedPart => $flags) { + if(isset($result[$matchedPart]) && $result[$matchedPart][0][1] != -1){ + $valueArray["flags"] = $flags; + if(strpos("i", $flags) !== FALSE) { + $valueArray["end"] += strlen($valueArray["value"]); + } + } + } + } + $return[$value] = $valueArray; + } + } else { + $valueArray = array(); + $return[$value] = $valueArray; + } + } + $return["structure"] = $structure; + $return["success"] = $successSum; + } else { + $return = Array('success' => FALSE); + } + + $ret = array("response" => $return); + if($jsonOutput) { + return json_encode($ret); + } else { + return $ret; + } + } + + private function loadConfiguration() { + $this->parserRules = importParserConfiguration($this->lang,$this->docType, $this->dirName); + } +} + +?> \ No newline at end of file diff --git a/php/parsers/structure/conf.php b/php/parsers/structure/conf.php new file mode 100644 index 00000000..90ba9273 --- /dev/null +++ b/php/parsers/structure/conf.php @@ -0,0 +1,55 @@ + "/{{preambleInitList}}|{{preambleEndList}}[:]?/", + */ + +$rules = Array( + "preface" => "/{{preambleInitList}}[:]?/", + "preamble" => "/{{preambleEndList#i}}[:]?/" +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/docType/act/conf.php b/php/parsers/structure/docType/act/conf.php new file mode 100644 index 00000000..e375eaa3 --- /dev/null +++ b/php/parsers/structure/docType/act/conf.php @@ -0,0 +1,52 @@ + "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "body", "conclusions") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/docType/bill/conf.php b/php/parsers/structure/docType/bill/conf.php new file mode 100644 index 00000000..e375eaa3 --- /dev/null +++ b/php/parsers/structure/docType/bill/conf.php @@ -0,0 +1,52 @@ + "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "body", "conclusions") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/docType/doc/conf.php b/php/parsers/structure/docType/doc/conf.php new file mode 100644 index 00000000..110b7970 --- /dev/null +++ b/php/parsers/structure/docType/doc/conf.php @@ -0,0 +1,53 @@ + "/{{preambleEndList#i}}[:]?|{{mainBodyInitList}}/", + "mainBody" => "/{{conclusionsInitList}}/", + "structure" => Array("preface", "preamble", "mainBody", "conclusions") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/index.php b/php/parsers/structure/index.php new file mode 100644 index 00000000..5b0d73c7 --- /dev/null +++ b/php/parsers/structure/index.php @@ -0,0 +1,60 @@ +parse($string, TRUE); + + +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/eng/act/conf.php b/php/parsers/structure/lang/eng/act/conf.php new file mode 100644 index 00000000..9d206301 --- /dev/null +++ b/php/parsers/structure/lang/eng/act/conf.php @@ -0,0 +1,54 @@ + Array("An Act"), + "preambleEndList" => Array("Be it enacted"), + "conclusionsInitList" => Array("Approved[\s\w\d,]+") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/eng/bill/conf.php b/php/parsers/structure/lang/eng/bill/conf.php new file mode 100644 index 00000000..5f7782d9 --- /dev/null +++ b/php/parsers/structure/lang/eng/bill/conf.php @@ -0,0 +1,52 @@ + Array("LEGISLATIVE COUNSEL", "Legislative Counsel", "Legislative counsel"), + "preambleEndList" => Array("The people of", "do enact as follows") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/esp/act/conf.php b/php/parsers/structure/lang/esp/act/conf.php new file mode 100644 index 00000000..b3c64521 --- /dev/null +++ b/php/parsers/structure/lang/esp/act/conf.php @@ -0,0 +1,61 @@ + Array("El Senado y la Cámara de Representantes de la República", + "Honorable Cámara de Diputados", + "La Cámara de Representantes", + "Creación", + "CÁMARA DE SENADORES", + "Modificaciones de la Cámara de Senadores"), + + "conclusionsInitList" => Array("Dios guarde a V.E.,", + "Sala de Sesiones de la Cámara de Representantes", + "Sala de Sesiones de la Cámara de Senadores", + "Sala de Sesiones de la Asamblea General") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/esp/act/preambleEndList b/php/parsers/structure/lang/esp/act/preambleEndList new file mode 100644 index 00000000..d788c701 --- /dev/null +++ b/php/parsers/structure/lang/esp/act/preambleEndList @@ -0,0 +1,35 @@ +Asunto +Carpeta +Repartido +Distribuido +Proyecto de ley +Informe +Informe en mayor�a +Informe en minor�a +Exposici�n de Motivos +Mensaje +Diario de Sesiones +Proyecto de Resoluci�n +Resoluci�n +Observaciones +Mensaje Complementario +Mensaje Sustitutivo +Ley +Decreto Ley +Comunicaci�n de CSS a CRR +Comunicaci�n de CRR a CSS +Comunicaci�n de AG a CSS +Comunicaci�n de AG a CRR +Comunicaci�n de CSS a Ag +Comunicaci�n de CRR a AG +Comunicaci�n de CRR a Pe +Comunicaci�n de CSS a Pe +Comunicaci�n de AG a Pe +PROYECTO DE LEY +DECRETAN +TEXTO APROBADO +EXPOSICI�N DE MOTIVOS +INFORME +MODIFICACIONES AL PROYECTO DE LEY +CÁMARA DE REPRESENTANTES +Proyecto de Resolución diff --git a/php/parsers/structure/lang/esp/bill/conf.php b/php/parsers/structure/lang/esp/bill/conf.php new file mode 100644 index 00000000..d965d978 --- /dev/null +++ b/php/parsers/structure/lang/esp/bill/conf.php @@ -0,0 +1,69 @@ + Array("Honorable Cámara de Diputados", + "La Cámara de Representantes", + "Creación", + "CÁMARA DE SENADORES", + "Modificaciones de la Cámara de Senadores"), + + /* + "preambleEndList" => Array("PROYECTO DE LEY", + "TEXTO APROBADO", + "PROYECTO DE LEY SUSTITUTIVO", + "EXPOSICIÓN DE MOTIVOS", + "INFORME"), + */ + + "conclusionsInitList" => Array("Dios guarde a V.E.,", + "Sala de Sesiones de la Cámara de Representantes", + "Sala de Sesiones de la Cámara de Senadores", + "Sala de Sesiones de la Asamblea General", + "Sala de la Comisiòn","Sala de la Comisión") +); + +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/esp/bill/preambleEndList b/php/parsers/structure/lang/esp/bill/preambleEndList new file mode 100644 index 00000000..d788c701 --- /dev/null +++ b/php/parsers/structure/lang/esp/bill/preambleEndList @@ -0,0 +1,35 @@ +Asunto +Carpeta +Repartido +Distribuido +Proyecto de ley +Informe +Informe en mayor�a +Informe en minor�a +Exposici�n de Motivos +Mensaje +Diario de Sesiones +Proyecto de Resoluci�n +Resoluci�n +Observaciones +Mensaje Complementario +Mensaje Sustitutivo +Ley +Decreto Ley +Comunicaci�n de CSS a CRR +Comunicaci�n de CRR a CSS +Comunicaci�n de AG a CSS +Comunicaci�n de AG a CRR +Comunicaci�n de CSS a Ag +Comunicaci�n de CRR a AG +Comunicaci�n de CRR a Pe +Comunicaci�n de CSS a Pe +Comunicaci�n de AG a Pe +PROYECTO DE LEY +DECRETAN +TEXTO APROBADO +EXPOSICI�N DE MOTIVOS +INFORME +MODIFICACIONES AL PROYECTO DE LEY +CÁMARA DE REPRESENTANTES +Proyecto de Resolución diff --git a/php/parsers/structure/lang/ita/act/conf.php b/php/parsers/structure/lang/ita/act/conf.php new file mode 100644 index 00000000..968f818f --- /dev/null +++ b/php/parsers/structure/lang/ita/act/conf.php @@ -0,0 +1,74 @@ + "/(?<=\>)({{titleList}}|{{chapterList}}|{{articleList}})\s*({{number}})|{{preambleEndList#i}}/m", + "roman" => "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + "number" => "\d+|{{roman}}+", + "titleList" => Array("Titolo", "TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo"), + + "preambleInitList" => Array("Il Presidente della Repubblica", + "IL PRESIDENTE DELLA REPUBBLICA", + "Attesto che"), + + "preambleEndList" => Array ("Emana il seguente decreto legislativo", + "Attesto che", + "\s*E\s*m\s*a\s*n\s*a\s*.*({{followingDoctype}}:)?", + "EMANA\s*({{followingDoctype}}:)?", + "Promulga\s*({{followingDoctype}}:)?"), + + "followingDoctype" => Array("(I|i)l\*seguente\s*(R|r)egolamento)", + "(I|i)l seguente decreto legislativo", + "la seguente legge"), + + "conclusionsInitList" => Array("Il presente decreto,", + "IL PRESIDENTE") + +); +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/ita/bill/conf.php b/php/parsers/structure/lang/ita/bill/conf.php new file mode 100644 index 00000000..968f818f --- /dev/null +++ b/php/parsers/structure/lang/ita/bill/conf.php @@ -0,0 +1,74 @@ + "/(?<=\>)({{titleList}}|{{chapterList}}|{{articleList}})\s*({{number}})|{{preambleEndList#i}}/m", + "roman" => "(M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))", + "number" => "\d+|{{roman}}+", + "titleList" => Array("Titolo", "TITOLO"), + "chapterList" => Array("Capo","Capitolo"), + "articleList" => Array("Art\.","Articolo"), + + "preambleInitList" => Array("Il Presidente della Repubblica", + "IL PRESIDENTE DELLA REPUBBLICA", + "Attesto che"), + + "preambleEndList" => Array ("Emana il seguente decreto legislativo", + "Attesto che", + "\s*E\s*m\s*a\s*n\s*a\s*.*({{followingDoctype}}:)?", + "EMANA\s*({{followingDoctype}}:)?", + "Promulga\s*({{followingDoctype}}:)?"), + + "followingDoctype" => Array("(I|i)l\*seguente\s*(R|r)egolamento)", + "(I|i)l seguente decreto legislativo", + "la seguente legge"), + + "conclusionsInitList" => Array("Il presente decreto,", + "IL PRESIDENTE") + +); +?> \ No newline at end of file diff --git a/php/parsers/structure/lang/ita/doc/conf.php b/php/parsers/structure/lang/ita/doc/conf.php new file mode 100644 index 00000000..fb0c95fb --- /dev/null +++ b/php/parsers/structure/lang/ita/doc/conf.php @@ -0,0 +1,67 @@ + Array("PREMESSO CHE", + "Premesso", + "PREMESSO", + "Premesso e considerato", + "PREMESSO E CONSIDERATO CHE", + "Considerato"), + + "preambleEndList" => Array("TUTTO CI.+ PREMESSO E CONSIDERATO", + "TUTTO CI.+ VISTO E PREMESSO", + "TUTTO CI.+ CONSIDERATO E PREMESSO", + "TUTTO CI.+ PREMESSO", + "SI INTERPELLA", + "INTERROGANO"), + + "mainBodyInitList" => Array("Tutt.+ ci.+ premesso e considerato,"), + + "conclusionsInitList" => Array("I CONSIGLIERI SOTTOSCRITTORI") +); + +?> \ No newline at end of file diff --git a/php/parsers/utils.php b/php/parsers/utils.php new file mode 100644 index 00000000..28335e6c --- /dev/null +++ b/php/parsers/utils.php @@ -0,0 +1,280 @@ + implode("|", $value)); + } + + $flags = Array(); + $success = preg_match_all($keyRe, $value, $result); + if ($success) { + foreach($result["0"] as $k => $toBeReplaced) { + $keyword = $result["1"][$k]; + if (strlen($result["2"][$k])) { + $flags[$keyword] = $result["2"][$k]; + } + if(array_key_exists($keyword, $configArray)) { + $resolved = resolveRegex($configArray[$keyword], $configArray, + $lang,$documentType, $directory); + } else { + // get parser's configuration by document language + $standardLang = array( + "spa" => "esp" + ); + $lang = array_key_exists($lang, $standardLang) ? $standardLang[$lang] : $lang; + /////////////////////////////////////////////////// + + $localFileName = $directory . "/lang/" . $lang . "/" . $documentType . "/" . $keyword; + $localFileName2 = $directory . "/lang/" . $lang . "/" . $keyword; + if(file_exists($localFileName)) { + $resolved = resolveRegex(file($localFileName), + $configArray,$lang,$documentType, $directory); + + } else if(file_exists($localFileName2)) { + $resolved = resolveRegex(file($localFileName), + $configArray,$lang,$documentType, $directory); + } else { + $commonFileName = $directory . "/../common/lang/" . $lang . "/" . $keyword; + if(file_exists($commonFileName)) { + $resolved = resolveRegex(file($commonFileName), + $configArray,$lang,$documentType, $directory); + } + } + } + + if(isset($resolved['flags'])) { + $flags = array_merge($flags,$resolved['flags']); + } + if(isset($resolved['value'])) { + $regexPart = sprintf("(?P<%s>%s)", $keyword, $resolved['value']); + $value = str_replace($toBeReplaced, $regexPart, $value); + } + } + } + + $resolved = Array('value' => $value); + if(count($flags)) $resolved['flags'] = $flags; + return $resolved; +} + +function arrayToPairsArray($array, $max) { + $result = array(); + for($i = 0; $i < count($array); $i++) { + $pair = array(); + $pair[0] = $array[$i]; + if($i == count($array)-1) { + $pair[1] = $max; + } else { + $pair[1] = $array[$i+1]; + } + $result[] = $pair; + } + return $result; +} + +function importParserConfiguration($lang, $documentType, $directory = "") { + + $parserRules = Array(); + $directory = empty($directory) ? getcwd() : $directory; + // get parser's common configuration + $filename = $directory . "/../common/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's standard configuration + $filename = $directory . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's configuration by document type + $filename = $directory . "/docType/" . $documentType . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + // get parser's configuration by document language + $standardLang = array( + "spa" => "esp" + ); + $lang = array_key_exists($lang, $standardLang) ? $standardLang[$lang] : $lang; + /////////////////////////////////////////////////// + + $filename = $directory . "/lang/" . $lang . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + $filename = $directory . "/lang/" . $lang . "/" . $documentType . "/conf.php"; + if (file_exists($filename)) { + require_once($filename); + $parserRules = array_merge($parserRules, $rules); + } + + return $parserRules; +} + + +function toXml($data, $r = 'data', &$xml = null) { + if (ini_get('zend.ze1_compatibility_mode') == 1) { + ini_set('zend.ze1_compatibility_mode', 0); + } + + if (is_null($xml) || !isset($xml)) { + $xml = simplexml_load_string("<" . $r . "/>"); + } + + foreach ($data as $key => $value) { + if (is_numeric($key)) { + $key = $r; + } + $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key); + if (is_array($value)) { + $node = isAssoc($value) ? $xml -> addChild($key) : $xml; + toXml($value, $key, $node); + } else { + $value = htmlentities($value); + $xml -> addChild($key, $value); + } + } + return $xml; +} + +function isAssoc($array) { + return (is_array($array) && 0 !== count(array_diff_key($array, array_keys(array_keys($array))))); +} + +function debug($t, $debug, $debugInfo) { + if ($debug) { + if (!isset($debugInfo)) + $debugInfo = array(); + // echo $t."\n" ; + array_push($debugInfo, $t); + } +} + +if (!function_exists('http_response_code')) { + function http_response_code($code = NULL) { + + if ($code !== NULL) { + + switch ($code) { + case 100: $text = 'Continue'; break; + case 101: $text = 'Switching Protocols'; break; + case 200: $text = 'OK'; break; + case 201: $text = 'Created'; break; + case 202: $text = 'Accepted'; break; + case 203: $text = 'Non-Authoritative Information'; break; + case 204: $text = 'No Content'; break; + case 205: $text = 'Reset Content'; break; + case 206: $text = 'Partial Content'; break; + case 300: $text = 'Multiple Choices'; break; + case 301: $text = 'Moved Permanently'; break; + case 302: $text = 'Moved Temporarily'; break; + case 303: $text = 'See Other'; break; + case 304: $text = 'Not Modified'; break; + case 305: $text = 'Use Proxy'; break; + case 400: $text = 'Bad Request'; break; + case 401: $text = 'Unauthorized'; break; + case 402: $text = 'Payment Required'; break; + case 403: $text = 'Forbidden'; break; + case 404: $text = 'Not Found'; break; + case 405: $text = 'Method Not Allowed'; break; + case 406: $text = 'Not Acceptable'; break; + case 407: $text = 'Proxy Authentication Required'; break; + case 408: $text = 'Request Time-out'; break; + case 409: $text = 'Conflict'; break; + case 410: $text = 'Gone'; break; + case 411: $text = 'Length Required'; break; + case 412: $text = 'Precondition Failed'; break; + case 413: $text = 'Request Entity Too Large'; break; + case 414: $text = 'Request-URI Too Large'; break; + case 415: $text = 'Unsupported Media Type'; break; + case 500: $text = 'Internal Server Error'; break; + case 501: $text = 'Not Implemented'; break; + case 502: $text = 'Bad Gateway'; break; + case 503: $text = 'Service Unavailable'; break; + case 504: $text = 'Gateway Time-out'; break; + case 505: $text = 'HTTP Version not supported'; break; + default: + exit('Unknown http status code "' . htmlentities($code) . '"'); + break; + } + + $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); + + header($protocol . ' ' . $code . ' ' . $text); + + $GLOBALS['http_response_code'] = $code; + + } else { + + $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); + + } + + return $code; + } +} + +?> \ No newline at end of file diff --git a/php/setup/index.php b/php/setup/index.php index 4d94cf19..3e7121f1 100644 --- a/php/setup/index.php +++ b/php/setup/index.php @@ -53,8 +53,7 @@ $condition = TRUE; $init_db = TRUE; -$host = 'http://'.$_SERVER['HTTP_HOST'] . substr($_SERVER['REQUEST_URI'], 0, - strrpos($_SERVER['REQUEST_URI'],'/php/')); +$host = 'http://'.$_SERVER['SERVER_NAME']; $dbhost = 'http://'.$_SERVER['HTTP_HOST'].':8080/exist/'; $uname = 'admin'; $pwd = 'exist'; $abipath = '/path/to/AbiWord'; @@ -64,7 +63,8 @@ if($_POST){ $host = $_POST['host'];$dbhost = $_POST['dbhost']; $uname = $_POST['uname']; $pwd = $_POST['pwd']; $abipath = $_POST['abipath']; - if(write_lime_config()) header( 'Location: ' . $host); + if(write_lime_config()) header( 'Location: ' . $host . substr($_SERVER['REQUEST_URI'], 0, + strrpos($_SERVER['REQUEST_URI'],'/php/'))); }; ////////////////////////////////////////////////////////////////////////////////// @@ -86,8 +86,8 @@ function check_tmp_permission() { chmod($TMPFOLDER, 0700); if(!is_writable($TMPFOLDER)) { global $condition;$condition = FALSE; - return '

        Please set the folder ' . realpath($TMPFOLDER) . - ' writable.'; + return '

        Please set the php LIME folder + to have writable permission for the web server user (example: apache) '; } } @@ -172,7 +172,7 @@ function check_db() {

        - diff --git a/php/utils.php b/php/utils.php index 155882d5..2c089258 100644 --- a/php/utils.php +++ b/php/utils.php @@ -46,6 +46,7 @@ */ require_once('config.php'); +require_once('lib/Text_LanguageDetect/Text/LanguageDetect.php'); function aknToHtml($input,$stylesheet=FALSE,$language=FALSE, $fullOutput=FALSE, $akn2xsl=FALSE, $akn3xsl=FALSE) { @@ -71,6 +72,7 @@ function aknToHtml($input,$stylesheet=FALSE,$language=FALSE, $fullOutput=FALSE, // or custom stylesheet if ($stylesheet) $xsl -> load($stylesheet); else $xsl -> load($akn3xsl); + $language = 'akoma3.0'; $xpath = new DOMXPath($doc); foreach( $xpath->query('namespace::*', $doc -> documentElement) as $node ) { @@ -122,4 +124,57 @@ function XMLToJSON ($xml,$container=NULL) { return $json; } +function cssFileToArray($path) { + $cssRules = array(); + $cssContent = file_get_contents($path); + if($cssContent) { + $cssContent = preg_replace('/}(?!$)/', '}||', preg_replace('/\s+/', '', $cssContent)); + $blocks = explode("||", $cssContent); + foreach($blocks as $block) { + preg_match('/(?P[^{]+){(?P[^}]+)/',$block,$matches); + $tmpRules = explode(";", $matches["rules"]); + $rules = array(); + foreach($tmpRules as $rule) { + $values = explode(":", $rule); + if(count($values) == 2) { + $rules[$values[0]] = $values[1]; + } + } + if(array_key_exists($matches["selector"], $cssRules)) { + $cssRules[$matches["selector"]] = array_merge($cssRules[$matches["selector"]], $rules); + } else { + $cssRules[$matches["selector"]] = $rules; + } + } + } + return $cssRules; +} + +function createAttributeSet($dom, $selector, $rules) { + $name = preg_replace('/\./', '', $selector); + $attributeSet = $dom->createElementNS("http://www.w3.org/1999/XSL/Transform", "xsl:attribute-set"); + $attributeSet->setAttribute("name", $name); + foreach($rules as $rule => $value) { + $attribute = $dom->createElementNS("http://www.w3.org/1999/XSL/Transform", "xsl:attribute", $value); + $attribute->setAttribute("name", $rule); + $attributeSet->appendChild($attribute); + } + return $attributeSet; +} + +function detectLanguage($text, $length = 2) { + $l = new Text_LanguageDetect(); + + try { + $l->setNameMode($length); + + $result = $l->detect($text, 1); + $languages = array_keys($result); + return (count($languages)) ? $languages[0] : NULL; + } catch (Text_LanguageDetect_Exception $e) { + return NULL; + } +} + + ?> \ No newline at end of file diff --git a/plugins/ux/Iframe.js b/plugins/ux/Iframe.js index 7ab148db..fe79fa96 100644 --- a/plugins/ux/Iframe.js +++ b/plugins/ux/Iframe.js @@ -56,7 +56,7 @@ Ext.define('Ext.ux.Iframe', { alias: 'plugin.iframe', - src : " ", + src : "", loadingHtml : '
        ', @@ -79,6 +79,24 @@ Ext.define('Ext.ux.Iframe', { } }, + setRawSrc: function(url, callback) { + var iframe = this.getIframe(), + onLoad = function() { + iframe.removeEventListener( 'load', onLoad ); + callback(this.contentDocument); + }; + if(url){ + if(Ext.isFunction(callback)) { + iframe = this.getIframe(); + if(iframe) { + iframe.addEventListener( 'load', onLoad ); + } + } + iframe.setAttribute("src", url); + this.url = url; + } + }, + getIframe: function() { return this.cmp.body.down("iframe", true); }, @@ -93,7 +111,7 @@ Ext.define('Ext.ux.Iframe', { setLoading : function() { var iframe = this.getIframe(); - if (iframe.doc) { + if (iframe && iframe.doc) { iframe.doc.body.innerHTML = this.loadingHtml; } }, diff --git a/plugins/ux/form/field/TinyMCE.js b/plugins/ux/form/field/TinyMCE.js index a110717a..8f01712f 100644 --- a/plugins/ux/form/field/TinyMCE.js +++ b/plugins/ux/form/field/TinyMCE.js @@ -18,7 +18,7 @@ Ext.define("Ext.ux.form.field.TinyMCE", { config: { height: 170 }, - cicciobello: 1, + hideBorder: false, inProgress: false, diff --git a/resources/stylesheets/extjs4.viewport.css b/resources/stylesheets/extjs4.viewport.css index 092375de..2c4a2429 100644 --- a/resources/stylesheets/extjs4.viewport.css +++ b/resources/stylesheets/extjs4.viewport.css @@ -96,4 +96,12 @@ /* Temporary trick to hide codemirror errors */ .cm-s-default span.cm-error { color: #117700; +} + +.forbidden-row .x-grid-cell { + color: #B5BCB5; +} + +.forbidden-cell .x-grid-cell { + color: #FF0000; } \ No newline at end of file diff --git a/resources/tiny_mce/css/content.css b/resources/tiny_mce/css/content.css index 55a892d1..480f1008 100644 --- a/resources/tiny_mce/css/content.css +++ b/resources/tiny_mce/css/content.css @@ -8,11 +8,30 @@ } */ +body { + font-size: .8em; +} + .breaking { + border: 0; margin : 2px; - padding-bottom: 10px; + background-color: rgba(0,0,0,0); + display: block; +} + +hr[data-mce-selected] { + outline: 0px solid black; +} + +.breaking:hover { } .bill { -webkit-overflow-scrolling: touch; -} \ No newline at end of file +} + +*[focused = 'true'] { + -webkit-box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); + -moz-box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); + box-shadow: 0px 0px 10px 2px rgba(105,105,105,1); +} diff --git a/resources/xslt/AknAttributesNormalizer.xsl b/resources/xslt/AknAttributesNormalizer.xsl index 89eb2e12..8838d887 100644 --- a/resources/xslt/AknAttributesNormalizer.xsl +++ b/resources/xslt/AknAttributesNormalizer.xsl @@ -18,6 +18,11 @@ version="1.0"> + + + + + diff --git a/resources/xslt/AknToPdfCh.xsl b/resources/xslt/AknToPdfCh.xsl new file mode 100644 index 00000000..0ee98dd3 --- /dev/null +++ b/resources/xslt/AknToPdfCh.xsl @@ -0,0 +1,1203 @@ + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 13pt + 11pt + + + + + bold + + + + + + + + + 13pt + 11pt + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 13pt + 11pt + + + + bold + + + + + + + + + 13pt + 11pt + + + + bold + + + + + + + + + + + + + + + x + + + + + + + EMPTY DOCUMENT. + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100pt + + + + + + + + + + + + + + + 14pt + 14pt + + + 17pt + 17pt + + + + + + + + + + + + + + + + + + + + + + + + + 100px + 85px + + + + + + + + + + + + + + + + + + + + + + + + + + normal + italic + + + bold + normal + + + + + + + + + italic + + + normal + + + + + + + + + + + + + + + + 14px + 20px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 680 + 436 + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + + + + + + 0px + 0px + + + 3px + 3px + + + + + + + + 1px solid black + + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + 1px solid black + + + + + + 1px solid black + + 1px solid black + + + + + + 120% + + + 80% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + + + 0pt + 2pt + 10pt + + + + + + + + + 11.5pt + 12.5pt + + + + + + italic + + + + + right + right + right + right + right + left + justify + + + + + + + + + + 25% + 50% + + + + + 75% + 50% + + + + + 110px + 230px + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 75% + 50% + + + + + 110px + 230px + 0px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0px + 1pt + + + + + + + + + + + + + + + + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + diff --git a/resources/xslt/AknToPdfGeneric.xsl b/resources/xslt/AknToPdfGeneric.xsl new file mode 100644 index 00000000..01f587fb --- /dev/null +++ b/resources/xslt/AknToPdfGeneric.xsl @@ -0,0 +1,144 @@ + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/xslt/AknToPdfSemiGeneric.xsl b/resources/xslt/AknToPdfSemiGeneric.xsl new file mode 100644 index 00000000..bbd47250 --- /dev/null +++ b/resources/xslt/AknToPdfSemiGeneric.xsl @@ -0,0 +1,507 @@ + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + EMPTY DOCUMENT. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + + + + + 120% + + + 80% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + italic + + + + + right + right + right + right + right + left + justify + + + + + + + + + + 25% + 50% + + + + + 75% + 50% + + + + + 110px + 230px + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/xslt/AknToXhtml30.xsl b/resources/xslt/AknToXhtml30.xsl index 343f2359..f04b5071 100644 --- a/resources/xslt/AknToXhtml30.xsl +++ b/resources/xslt/AknToXhtml30.xsl @@ -3,7 +3,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD08" + xmlns:akn="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD10" exclude-result-prefixes="xs" version="1.0"> @@ -120,10 +120,13 @@ akn:amendmentJustification | akn:introduction | akn:background | + akn:collectionBody | + akn:component | akn:arguments | akn:remedias | akn:motivation | akn:decision | + akn:mod | akn:fragmentBody ">
        @@ -189,7 +192,8 @@ - +
        @@ -271,8 +275,7 @@ - + + +
        + + + + + +

        +
        +
        + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/xslt/CleanConvertedHtml.xsl b/resources/xslt/CleanConvertedHtml.xsl index c02de5e1..e97fd956 100644 --- a/resources/xslt/CleanConvertedHtml.xsl +++ b/resources/xslt/CleanConvertedHtml.xsl @@ -6,18 +6,34 @@ - + + + + + + + + + + + +
        - + + +
        +
        + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/xslt/HtmlToAkn3.0.xsl b/resources/xslt/HtmlToAkn3.0.xsl index e24ebfd0..51823809 100644 --- a/resources/xslt/HtmlToAkn3.0.xsl +++ b/resources/xslt/HtmlToAkn3.0.xsl @@ -38,6 +38,13 @@
        + + + + + + + @@ -115,6 +122,41 @@
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sass/example/bootstrap.js b/sass/example/bootstrap.js index 776f123c..a03f8aa6 100644 --- a/sass/example/bootstrap.js +++ b/sass/example/bootstrap.js @@ -896,6 +896,8 @@ Ext.ClassManager.addNameAlternateMappings({ "LIME.Utilities": [ "Utilities" ], + "LIME.controller.ContextInfoManager": [], + "LIME.controller.ContextMenu": [], "LIME.controller.CustomizationManager": [], "LIME.controller.DocumentUploader": [], "LIME.controller.Editor": [], @@ -909,6 +911,7 @@ Ext.ClassManager.addNameAlternateMappings({ "LIME.controller.PreferencesManager": [], "LIME.controller.ProgressWindow": [], "LIME.controller.Storage": [], + "LIME.controller.WidgetManager": [], "LIME.model.Json": [], "LIME.model.OpenFile": [], "LIME.store.DocumentLanguages": [], @@ -935,8 +938,10 @@ Ext.ClassManager.addNameAlternateMappings({ "LIME.view.ProgressWindow": [], "LIME.view.Viewport": [], "LIME.view.generic.MetadataForm": [], + "LIME.view.main.ContextPanel": [], "LIME.view.main.Editor": [], "LIME.view.main.editor.Path": [], + "LIME.view.main.editor.Uri": [], "LIME.view.maintoolbar.DocumentMenuButton": [], "LIME.view.maintoolbar.EditMenuButton": [], "LIME.view.maintoolbar.FileMenuButton": [], @@ -953,11 +958,9 @@ Ext.ClassManager.addNameAlternateMappings({ "LIME.view.maintoolbar.UserButton": [], "LIME.view.maintoolbar.WindowMenuButton": [], "LIME.view.markingmenu.TreeButton": [], - "LIME.view.markingmenu.menuwidgets.MenuWidget": [], "LIME.view.markingmenu.treebutton.Children": [], "LIME.view.markingmenu.treebutton.Expander": [], "LIME.view.markingmenu.treebutton.Name": [], - "LIME.view.markingmenu.treebutton.Widgets": [], "LIME.view.modal.Login": [], "LIME.view.modal.NewDocument": [], "LIME.view.modal.Registration": [], @@ -975,7 +978,8 @@ Ext.ClassManager.addNameAlternateMappings({ "LIME.view.modal.newSavefile.VersionSelector": [], "LIME.view.modal.newSavefile.toolbar.CancelButton": [], "LIME.view.modal.newSavefile.toolbar.ContextualButton": [], - "LIME.view.modal.newSavefile.toolbar.SaveButton": [] + "LIME.view.modal.newSavefile.toolbar.SaveButton": [], + "LIME.view.widgets.MarkedElementWidget": [] }); Ext.ClassManager.addNameAliasMappings({ "Ext.AbstractComponent": [], @@ -2000,6 +2004,8 @@ Ext.ClassManager.addNameAliasMappings({ "LIME.Locale": [], "LIME.Statics": [], "LIME.Utilities": [], + "LIME.controller.ContextInfoManager": [], + "LIME.controller.ContextMenu": [], "LIME.controller.CustomizationManager": [], "LIME.controller.DocumentUploader": [], "LIME.controller.Editor": [], @@ -2013,6 +2019,7 @@ Ext.ClassManager.addNameAliasMappings({ "LIME.controller.PreferencesManager": [], "LIME.controller.ProgressWindow": [], "LIME.controller.Storage": [], + "LIME.controller.WidgetManager": [], "LIME.model.Json": [], "LIME.model.OpenFile": [], "LIME.store.DocumentLanguages": [], @@ -2067,12 +2074,18 @@ Ext.ClassManager.addNameAliasMappings({ "LIME.view.generic.MetadataForm": [ "widget.metadataForm" ], + "LIME.view.main.ContextPanel": [ + "widget.contextPanel" + ], "LIME.view.main.Editor": [ "widget.mainEditor" ], "LIME.view.main.editor.Path": [ "widget.mainEditorPath" ], + "LIME.view.main.editor.Uri": [ + "widget.mainEditorUri" + ], "LIME.view.maintoolbar.DocumentMenuButton": [ "widget.documentMenuButton" ], @@ -2121,9 +2134,6 @@ Ext.ClassManager.addNameAliasMappings({ "LIME.view.markingmenu.TreeButton": [ "widget.treeButton" ], - "LIME.view.markingmenu.menuwidgets.MenuWidget": [ - "widget.menuWidget" - ], "LIME.view.markingmenu.treebutton.Children": [ "widget.treeButtonChildren" ], @@ -2133,9 +2143,6 @@ Ext.ClassManager.addNameAliasMappings({ "LIME.view.markingmenu.treebutton.Name": [ "widget.treeButtonName" ], - "LIME.view.markingmenu.treebutton.Widgets": [ - "widget.treeButtonWidgets" - ], "LIME.view.modal.Login": [ "widget.login" ], @@ -2189,6 +2196,9 @@ Ext.ClassManager.addNameAliasMappings({ ], "LIME.view.modal.newSavefile.toolbar.SaveButton": [ "widget.newSavefileToolbarOpenButton" + ], + "LIME.view.widgets.MarkedElementWidget": [ + "widget.markedElementWidget" ] }); Ext.setVersion("ext-theme-base", "4.2.1");
        +