Hébergeur de fichiers indépendant

freeboxos.min.js.js

À propos

Type de fichier
Fichier JS de 2.5 Mo (text/plain)
Confidentialité
Fichier public, envoyé le 14 juillet 2019 à 21:13, depuis l'adresse IP 78.239.x.x (France)
Sécurité
Ne contient aucun Virus ou Malware connus - Dernière vérification: 14/07/19
Statistiques
La présente page de téléchargement a été vue 65 fois depuis l'envoi du fichier
Page de téléchargement

Aperçu du fichier


var Ext=Ext||{};Ext._startTime=(new Date).getTime(),function(){var i,ExtApp,global=this,objectPrototype=Object.prototype,toString=objectPrototype.toString,enumerables=!0,enumerablesTest={toString:1},emptyFn=function(){},callOverrideParent=function(){var method=callOverrideParent.caller.caller;return method.$owner.prototype[method.$name].apply(this,arguments)},nonWhitespaceRe=/\S/,iterableRe=/\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/;Ext.global=global;for(i in enumerablesTest)enumerables=null;enumerables&&(enumerables=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"]),Ext.enumerables=enumerables,Ext.apply=function(object,config,defaults){if(defaults&&Ext.apply(object,defaults),object&&config&&"object"==typeof config){var i,j,k;for(i in config)object[i]=config[i];if(enumerables)for(j=enumerables.length;j--;)k=enumerables[j],config.hasOwnProperty(k)&&(object[k]=config[k])}return object},Ext.buildSettings=Ext.apply({baseCSSPrefix:"x-"},Ext.buildSettings||{}),Ext.apply(Ext,{name:Ext.sandboxName||"Ext",emptyFn:emptyFn,identityFn:function(o){return o},emptyString:new String,baseCSSPrefix:Ext.buildSettings.baseCSSPrefix,applyIf:function(object,config){var property;if(object)for(property in config)void 0===object[property]&&(object[property]=config[property]);return object},iterate:function(object,fn,scope){Ext.isEmpty(object)||(void 0===scope&&(scope=object),Ext.isIterable(object)?Ext.Array.each.call(Ext.Array,object,fn,scope):Ext.Object.each.call(Ext.Object,object,fn,scope))}}),Ext.apply(Ext,{extend:function(){var objectConstructor=objectPrototype.constructor,inlineOverrides=function(o){for(var m in o)o.hasOwnProperty(m)&&(this[m]=o[m])};return function(subclass,superclass,overrides){Ext.isObject(superclass)&&(overrides=superclass,superclass=subclass,subclass=overrides.constructor!==objectConstructor?overrides.constructor:function(){superclass.apply(this,arguments)}),superclass||Ext.Error.raise({sourceClass:"Ext",sourceMethod:"extend",msg:"Attempting to extend from a class which has not been loaded on the page."});var subclassProto,F=function(){},superclassProto=superclass.prototype;return F.prototype=superclassProto,subclassProto=subclass.prototype=new F,subclassProto.constructor=subclass,subclass.superclass=superclassProto,superclassProto.constructor===objectConstructor&&(superclassProto.constructor=superclass),subclass.override=function(overrides){Ext.override(subclass,overrides)},subclassProto.override=inlineOverrides,subclassProto.proto=subclassProto,subclass.override(overrides),subclass.extend=function(o){return Ext.extend(subclass,o)},subclass}}(),override:function(target,overrides){if(target.$isClass)target.override(overrides);else if("function"==typeof target)Ext.apply(target.prototype,overrides);else{var name,value,owner=target.self;if(owner&&owner.$isClass)for(name in overrides)overrides.hasOwnProperty(name)&&(value=overrides[name],"function"==typeof value&&(owner.$className&&(value.displayName=owner.$className+"#"+name),value.$name=name,value.$owner=owner,value.$previous=target.hasOwnProperty(name)?target[name]:callOverrideParent),target[name]=value);else Ext.apply(target,overrides)}return target}}),Ext.apply(Ext,{valueFrom:function(value,defaultValue,allowBlank){return Ext.isEmpty(value,allowBlank)?defaultValue:value},typeOf:function(value){var type;if(null===value)return"null";if("undefined"===(type=typeof value)||"string"===type||"number"===type||"boolean"===type)return type;switch(toString.call(value)){case"[object Array]":return"array";case"[object Date]":return"date";case"[object Boolean]":return"boolean";case"[object Number]":return"number";case"[object RegExp]":return"regexp"}return"function"===type?"function":"object"===type?void 0!==value.nodeType?3===value.nodeType?nonWhitespaceRe.test(value.nodeValue)?"textnode":"whitespace":"element":"object":void Ext.Error.raise({sourceClass:"Ext",sourceMethod:"typeOf",msg:'Failed to determine the type of the specified value "'+value+'". This is most likely a bug.'})},coerce:function(from,to){var fromType=Ext.typeOf(from),toType=Ext.typeOf(to),isString="string"==typeof from;if(fromType!==toType)switch(toType){case"string":return String(from);case"number":return Number(from);case"boolean":return!(isString&&(!from||"false"===from))&&Boolean(from);case"null":return!isString||from&&"null"!==from?from:null;case"undefined":return!isString||from&&"undefined"!==from?from:void 0;case"date":return isString&&isNaN(from)?Ext.Date.parse(from,Ext.Date.defaultFormat):Date(Number(from))}return from},isEmpty:function(value,allowEmptyString){return null===value||void 0===value||!allowEmptyString&&""===value||Ext.isArray(value)&&0===value.length},isArray:"isArray"in Array?Array.isArray:function(value){return"[object Array]"===toString.call(value)},isDate:function(value){return"[object Date]"===toString.call(value)},isObject:"[object Object]"===toString.call(null)?function(value){return null!==value&&void 0!==value&&"[object Object]"===toString.call(value)&&void 0===value.ownerDocument}:function(value){return"[object Object]"===toString.call(value)},isSimpleObject:function(value){return value instanceof Object&&value.constructor===Object},isPrimitive:function(value){var type=typeof value;return"string"===type||"number"===type||"boolean"===type},isFunction:"undefined"!=typeof document&&"function"==typeof document.getElementsByTagName("body")?function(value){return!!value&&"[object Function]"===toString.call(value)}:function(value){return!!value&&"function"==typeof value},isNumber:function(value){return"number"==typeof value&&isFinite(value)},isNumeric:function(value){return!isNaN(parseFloat(value))&&isFinite(value)},isString:function(value){return"string"==typeof value},isBoolean:function(value){return"boolean"==typeof value},isElement:function(value){return!!value&&1===value.nodeType},isTextNode:function(value){return!!value&&"#text"===value.nodeName},isDefined:function(value){return void 0!==value},isIterable:function(value){return!(!value||"number"!=typeof value.length||"string"==typeof value||Ext.isFunction(value))&&(value.propertyIsEnumerable?!(!value.hasOwnProperty("length")||value.propertyIsEnumerable("length"))||iterableRe.test(toString.call(value)):!!value.item)}}),Ext.apply(Ext,{clone:function(item){var type,i,j,k,clone,key;if(null===item||void 0===item)return item;if(item.nodeType&&item.cloneNode)return item.cloneNode(!0);if("[object Date]"===(type=toString.call(item)))return new Date(item.getTime());if("[object Array]"===type)for(i=item.length,clone=[];i--;)clone[i]=Ext.clone(item[i]);else if("[object Object]"===type&&item.constructor===Object){clone={};for(key in item)clone[key]=Ext.clone(item[key]);if(enumerables)for(j=enumerables.length;j--;)k=enumerables[j],item.hasOwnProperty(k)&&(clone[k]=item[k])}return clone||item},getUniqueGlobalNamespace:function(){var i,uniqueGlobalNamespace=this.uniqueGlobalNamespace;if(void 0===uniqueGlobalNamespace){i=0;do{uniqueGlobalNamespace="ExtBox"+ ++i}while(void 0!==Ext.global[uniqueGlobalNamespace]);Ext.global[uniqueGlobalNamespace]=Ext,this.uniqueGlobalNamespace=uniqueGlobalNamespace}return uniqueGlobalNamespace},functionFactoryCache:{},cacheableFunctionFactory:function(){var idx,fn,ln,me=this,args=Array.prototype.slice.call(arguments),cache=me.functionFactoryCache;return Ext.isSandboxed&&(ln=args.length)>0&&(ln--,args[ln]="var Ext=window."+Ext.name+";"+args[ln]),idx=args.join(""),fn=cache[idx],fn||(fn=Function.prototype.constructor.apply(Function.prototype,args),cache[idx]=fn),fn},functionFactory:function(){var ln,args=Array.prototype.slice.call(arguments);return Ext.isSandboxed&&(ln=args.length)>0&&(ln--,args[ln]="var Ext=window."+Ext.name+";"+args[ln]),Function.prototype.constructor.apply(Function.prototype,args)},Logger:{verbose:emptyFn,log:emptyFn,info:emptyFn,warn:emptyFn,error:function(message){throw new Error(message)},deprecate:emptyFn}}),Ext.type=Ext.typeOf,ExtApp=Ext.app,ExtApp||(ExtApp=Ext.app={}),Ext.apply(ExtApp,{namespaces:{},collectNamespaces:function(paths){var path,namespaces=Ext.app.namespaces;for(path in paths)paths.hasOwnProperty(path)&&(namespaces[path]=!0)},addNamespaces:function(ns){var i,l,namespaces=Ext.app.namespaces;for(Ext.isArray(ns)||(ns=[ns]),i=0,l=ns.length;i<l;i++)namespaces[ns[i]]=!0},clearNamespaces:function(){Ext.app.namespaces={}},getNamespace:function(className){var prefix,namespaces=Ext.app.namespaces,deepestPrefix="";for(prefix in namespaces)namespaces.hasOwnProperty(prefix)&&prefix.length>deepestPrefix.length&&prefix+"."===className.substring(0,prefix.length+1)&&(deepestPrefix=prefix);return""===deepestPrefix?void 0:deepestPrefix}})}(),Ext.globalEval=Ext.global.execScript?function(code){execScript(code)}:function($$code){!function(){var Ext=this.Ext;eval($$code)}()};!function(){var Version,checkVerTemp=[""],endOfVersionRe=/([^\d\.])/,notDigitsRe=/[^\d]/g,plusMinusRe=/[\-+]/g,stripRe=/\s/g,underscoreRe=/_/g;Ext.Version=Version=Ext.extend(Object,{isVersion:!0,padModes:{"~":NaN,"^":1/0},release:"",constructor:function(version,defaultMode){var ch,i,pad,parts,release,releaseStartIndex,ver,me=this,padModes=me.padModes;if(version.isVersion)return version;me.version=ver=String(version).toLowerCase().replace(underscoreRe,".").replace(plusMinusRe,""),ch=ver.charAt(0),ch in padModes?(ver=ver.substring(1),pad=padModes[ch]):pad=defaultMode?padModes[defaultMode]:0,me.pad=pad,releaseStartIndex=ver.search(endOfVersionRe),me.shortVersion=ver,-1!==releaseStartIndex&&(me.release=release=ver.substr(releaseStartIndex,version.length),me.shortVersion=ver.substr(0,releaseStartIndex),release=Version.releaseValueMap[release]||release),me.releaseValue=release||pad,me.shortVersion=me.shortVersion.replace(notDigitsRe,""),me.parts=parts=ver.split(".");for(i=parts.length;i--;)parts[i]=parseInt(parts[i],10);return pad===1/0&&parts.push(pad),me.major=parts[0]||pad,me.minor=parts[1]||pad,me.patch=parts[2]||pad,me.build=parts[3]||pad,me},compareTo:function(other){var i,lhs,rhs,me=this,lhsPad=me.pad,lhsParts=me.parts,lhsLength=lhsParts.length,rhsVersion=other.isVersion?other:new Version(other),rhsPad=rhsVersion.pad,rhsParts=rhsVersion.parts,rhsLength=rhsParts.length,length=Math.max(lhsLength,rhsLength);for(i=0;i<length;i++){if(lhs=i<lhsLength?lhsParts[i]:lhsPad,rhs=i<rhsLength?rhsParts[i]:rhsPad,lhs<rhs)return-1;if(lhs>rhs)return 1}return lhs=me.releaseValue,rhs=rhsVersion.releaseValue,lhs<rhs?-1:lhs>rhs?1:0},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major},getMinor:function(){return this.minor},getPatch:function(){return this.patch},getBuild:function(){return this.build},getRelease:function(){return this.release},getReleaseValue:function(){return this.releaseValue},isGreaterThan:function(target){return this.compareTo(target)>0},isGreaterThanOrEqual:function(target){return this.compareTo(target)>=0},isLessThan:function(target){return this.compareTo(target)<0},isLessThanOrEqual:function(target){return this.compareTo(target)<=0},equals:function(target){return 0===this.compareTo(target)},match:function(target){return target=String(target),this.version.substr(0,target.length)===target},toArray:function(){var me=this;return[me.getMajor(),me.getMinor(),me.getPatch(),me.getBuild(),me.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(target){return this.compareTo(target)>0},lt:function(target){return this.compareTo(target)<0},gtEq:function(target){return this.compareTo(target)>=0},ltEq:function(target){return this.compareTo(target)<=0}}),Ext.apply(Version,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(value){return value?isNaN(value)?this.releaseValueMap[value]||value:parseInt(value,10):0},compare:function(current,target){return(current.isVersion?current:new Version(current)).compareTo(target)}}),Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(packageName,version){return Ext.lastRegisteredVersion=Ext.versions[packageName]=new Version(version),this},getVersion:function(packageName){return void 0===packageName?Ext.lastRegisteredVersion:Ext.versions[packageName]},checkVersion:function(specs,matchAll){var i,index,matches,minVer,maxVer,spec,range,ver,isArray=Ext.isArray(specs),compat=isArray?specs:checkVerTemp,length=compat.length,versions=Ext.versions,frameworkVer=versions.ext||versions.touch;for(isArray||(checkVerTemp[0]=specs),i=0;i<length;++i){if(Ext.isString(spec=compat[i])){if(spec.indexOf(" ")>=0&&(spec=spec.replace(stripRe,"")),(index=spec.indexOf("@"))<0)range=spec,ver=frameworkVer;else{if(!(ver=versions[spec.substring(0,index)])){if(matchAll)return!1;continue}range=spec.substring(index+1)}index=range.indexOf("-"),index<0?"+"===range.charAt(index=range.length-1)?(minVer=range.substring(0,index),maxVer=null):minVer=maxVer=range:index>0?(minVer=range.substring(0,index),maxVer=range.substring(index+1)):(minVer=null,maxVer=range.substring(index+1)),matches=!0,minVer&&(minVer=new Version(minVer,"~"),matches=minVer.ltEq(ver)),matches&&maxVer&&(maxVer=new Version(maxVer,"~"),matches=maxVer.gtEq(ver))}else matches=Ext.checkVersion(spec.and||spec.or,!spec.or),spec.not&&(matches=!matches);if(matches){if(!matchAll)return!0}else if(matchAll)return!1}return!!matchAll},deprecate:function(packageName,since,closure,scope){Version.compare(Ext.getVersion(packageName),since)<1&&closure.call(scope)}}),Ext.setVersion("core","4.2.2.1144")}();Ext.String=function(){var charToEntity,entityToChar,charToEntityRegex,entityToCharRegex,trimRegex=/^[\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,escapeRe=/('|\\)/g,formatRe=/\{(\d+)\}/g,escapeRegexRe=/([-.*+?\^${}()|\[\]\/\\])/g,basicTrimRe=/^\s+|\s+$/g,whitespaceRe=/\s+/,varReplace=/(^[^a-z]*|[^\w])/gi,htmlEncodeReplaceFn=function(match,capture){return charToEntity[capture]},htmlDecodeReplaceFn=function(match,capture){return capture in entityToChar?entityToChar[capture]:String.fromCharCode(parseInt(capture.substr(2),10))},boundsCheck=function(s,other){return null!==s&&void 0!==s&&null!==other&&void 0!==other&&other.length<=s.length};return{insert:function(s,value,index){if(!s)return value;if(!value)return s;var len=s.length;return index||0===index||(index=len),index<0&&(index*=-1,index=index>=len?0:len-index),0===index?s=value+s:index>=s.length?s+=value:s=s.substr(0,index)+value+s.substr(index),s},startsWith:function(s,start,ignoreCase){var result=boundsCheck(s,start);return result&&(ignoreCase&&(s=s.toLowerCase(),start=start.toLowerCase()),result=0===s.lastIndexOf(start,0)),result},endsWith:function(s,end,ignoreCase){var result=boundsCheck(s,end);return result&&(ignoreCase&&(s=s.toLowerCase(),end=end.toLowerCase()),result=-1!==s.indexOf(end,s.length-end.length)),result},createVarName:function(s){return s.replace(varReplace,"")},htmlEncode:function(value){return value?String(value).replace(charToEntityRegex,htmlEncodeReplaceFn):value},htmlDecode:function(value){return value?String(value).replace(entityToCharRegex,htmlDecodeReplaceFn):value},hasHtmlCharacters:function(s){return charToEntityRegex.test(s)},addCharacterEntities:function(newEntities){var key,echar,charKeys=[],entityKeys=[];for(key in newEntities)echar=newEntities[key],entityToChar[key]=echar,charToEntity[echar]=key,charKeys.push(echar),entityKeys.push(key);charToEntityRegex=new RegExp("("+charKeys.join("|")+")","g"),entityToCharRegex=new RegExp("("+entityKeys.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){charToEntity={},entityToChar={},this.addCharacterEntities({"&amp;":"&","&gt;":">","&lt;":"<","&quot;":'"',"&#39;":"'"})},urlAppend:function(url,string){return Ext.isEmpty(string)?url:url+(-1===url.indexOf("?")?"?":"&")+string},trim:function(string){return string.replace(trimRegex,"")},capitalize:function(string){return string.charAt(0).toUpperCase()+string.substr(1)},uncapitalize:function(string){return string.charAt(0).toLowerCase()+string.substr(1)},ellipsis:function(value,len,word){if(value&&value.length>len){if(word){var vs=value.substr(0,len-2),index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));if(-1!==index&&index>=len-15)return vs.substr(0,index)+"..."}return value.substr(0,len-3)+"..."}return value},escapeRegex:function(string){return string.replace(escapeRegexRe,"\\$1")},escape:function(string){return string.replace(escapeRe,"\\$1")},toggle:function(string,value,other){return string===value?other:value},leftPad:function(string,size,character){var result=String(string);for(character=character||" ";result.length<size;)result=character+result;return result},format:function(format){var args=Ext.Array.toArray(arguments,1);return format.replace(formatRe,function(m,i){return args[i]})},repeat:function(pattern,count,sep){count<1&&(count=0);for(var buf=[],i=count;i--;)buf.push(pattern);return buf.join(sep||"")},splitWords:function(words){return words&&"string"==typeof words?words.replace(basicTrimRe,"").split(whitespaceRe):words||[]}}}(),Ext.String.resetCharacterEntities(),Ext.htmlEncode=Ext.String.htmlEncode,Ext.htmlDecode=Ext.String.htmlDecode,Ext.urlAppend=Ext.String.urlAppend;Ext.Number=new function(){var me=this,isToFixedBroken="1"!==.9.toFixed(),math=Math;Ext.apply(this,{constrain:function(number,min,max){var x=parseFloat(number);return x<min?min:x>max?max:x},snap:function(value,increment,minValue,maxValue){var m;return void 0===value||value<minValue?minValue||0:(increment&&0!==(m=value%increment)&&(value-=m,2*m>=increment?value+=increment:2*m<-increment&&(value-=increment)),me.constrain(value,minValue,maxValue))},snapInRange:function(value,increment,minValue,maxValue){var tween;return minValue=minValue||0,void 0===value||value<minValue?minValue:(increment&&(tween=(value-minValue)%increment)&&(value-=tween,(tween*=2)>=increment&&(value+=increment)),void 0!==maxValue&&value>(maxValue=me.snapInRange(maxValue,increment,minValue))&&(value=maxValue),value)},toFixed:isToFixedBroken?function(value,precision){precision=precision||0;var pow=math.pow(10,precision);return(math.round(value*pow)/pow).toFixed(precision)}:function(value,precision){return value.toFixed(precision)},from:function(value,defaultValue){return isFinite(value)&&(value=parseFloat(value)),isNaN(value)?defaultValue:value},randomInt:function(from,to){return math.floor(math.random()*(to-from+1)+from)},correctFloat:function(n){return parseFloat(n.toPrecision(14))}}),Ext.num=function(){return me.from.apply(this,arguments)}};!function(){function fixArrayIndex(array,index){return index<0?Math.max(0,array.length+index):Math.min(array.length,index)}function replaceSim(array,index,removeCount,insert){var remove,tailOldPos,tailNewPos,tailCount,lengthAfterRemove,i,add=insert?insert.length:0,length=array.length,pos=fixArrayIndex(array,index);if(pos===length)add&&array.push.apply(array,insert);else{if(remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove,tailNewPos<tailOldPos)for(i=0;i<tailCount;++i)array[tailNewPos+i]=array[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)array[tailNewPos+i]=array[tailOldPos+i];if(add&&pos===lengthAfterRemove)array.length=lengthAfterRemove,array.push.apply(array,insert);else for(array.length=lengthAfterRemove+add,i=0;i<add;++i)array[pos+i]=insert[i]}return array}function replaceNative(array,index,removeCount,insert){return insert&&insert.length?0!==index||removeCount?index<array.length?array.splice.apply(array,[index,removeCount].concat(insert)):array.push.apply(array,insert):array.unshift.apply(array,insert):array.splice(index,removeCount),array}function eraseSim(array,index,removeCount){return replaceSim(array,index,removeCount)}function eraseNative(array,index,removeCount){return array.splice(index,removeCount),array}function spliceSim(array,index,removeCount){var pos=fixArrayIndex(array,index),removed=array.slice(index,fixArrayIndex(array,pos+removeCount));return arguments.length<4?replaceSim(array,pos,removeCount):replaceSim(array,pos,removeCount,slice.call(arguments,3)),removed}function spliceNative(array){return array.splice.apply(array,slice.call(arguments,1))}var ExtArray,erase,replace,splice,arrayPrototype=Array.prototype,slice=arrayPrototype.slice,supportsSplice=function(){var lengthBefore,array=[],j=20;if(!array.splice)return!1;for(;j--;)array.push("A");return array.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F"),lengthBefore=array.length,array.splice(13,0,"XXX"),lengthBefore+1==array.length}(),supportsForEach="forEach"in arrayPrototype,supportsMap="map"in arrayPrototype,supportsIndexOf="indexOf"in arrayPrototype,supportsEvery="every"in arrayPrototype,supportsSome="some"in arrayPrototype,supportsFilter="filter"in arrayPrototype,supportsSort=function(){var a=[1,2,3,4,5].sort(function(){return 0});return 1===a[0]&&2===a[1]&&3===a[2]&&4===a[3]&&5===a[4]}(),supportsSliceOnNodeList=!0;try{"undefined"!=typeof document&&slice.call(document.getElementsByTagName("body"))}catch(e){supportsSliceOnNodeList=!1}erase=supportsSplice?eraseNative:eraseSim,replace=supportsSplice?replaceNative:replaceSim,splice=supportsSplice?spliceNative:spliceSim,ExtArray=Ext.Array={each:function(array,fn,scope,reverse){array=ExtArray.from(array);var i,ln=array.length;if(!0!==reverse){for(i=0;i<ln;i++)if(!1===fn.call(scope||array[i],array[i],i,array))return i}else for(i=ln-1;i>-1;i--)if(!1===fn.call(scope||array[i],array[i],i,array))return i;return!0},forEach:supportsForEach?function(array,fn,scope){array.forEach(fn,scope)}:function(array,fn,scope){for(var i=0,ln=array.length;i<ln;i++)fn.call(scope,array[i],i,array)},indexOf:supportsIndexOf?function(array,item,from){return arrayPrototype.indexOf.call(array,item,from)}:function(array,item,from){var i,length=array.length;for(i=from<0?Math.max(0,length+from):from||0;i<length;i++)if(array[i]===item)return i;return-1},contains:supportsIndexOf?function(array,item){return-1!==arrayPrototype.indexOf.call(array,item)}:function(array,item){var i,ln;for(i=0,ln=array.length;i<ln;i++)if(array[i]===item)return!0;return!1},toArray:function(iterable,start,end){if(!iterable||!iterable.length)return[];if("string"==typeof iterable&&(iterable=iterable.split("")),supportsSliceOnNodeList)return slice.call(iterable,start||0,end||iterable.length);var i,array=[];for(start=start||0,end=end?end<0?iterable.length+end:end:iterable.length,i=start;i<end;i++)array.push(iterable[i]);return array},pluck:function(array,propertyName){var i,ln,item,ret=[];for(i=0,ln=array.length;i<ln;i++)item=array[i],ret.push(item[propertyName]);return ret},map:supportsMap?function(array,fn,scope){return fn||Ext.Error.raise("Ext.Array.map must have a callback function passed as second argument."),array.map(fn,scope)}:function(array,fn,scope){fn||Ext.Error.raise("Ext.Array.map must have a callback function passed as second argument.");for(var results=[],i=0,len=array.length;i<len;i++)results[i]=fn.call(scope,array[i],i,array);return results},every:supportsEvery?function(array,fn,scope){return fn||Ext.Error.raise("Ext.Array.every must have a callback function passed as second argument."),array.every(fn,scope)}:function(array,fn,scope){fn||Ext.Error.raise("Ext.Array.every must have a callback function passed as second argument.");for(var i=0,ln=array.length;i<ln;++i)if(!fn.call(scope,array[i],i,array))return!1;return!0},some:supportsSome?function(array,fn,scope){return fn||Ext.Error.raise("Ext.Array.some must have a callback function passed as second argument."),array.some(fn,scope)}:function(array,fn,scope){fn||Ext.Error.raise("Ext.Array.some must have a callback function passed as second argument.");for(var i=0,ln=array.length;i<ln;++i)if(fn.call(scope,array[i],i,array))return!0;return!1},equals:function(array1,array2){var i,len1=array1.length,len2=array2.length;if(array1===array2)return!0;if(len1!==len2)return!1;for(i=0;i<len1;++i)if(array1[i]!==array2[i])return!1;return!0},clean:function(array){for(var item,results=[],i=0,ln=array.length;i<ln;i++)item=array[i],Ext.isEmpty(item)||results.push(item);return results},unique:function(array){for(var item,clone=[],i=0,ln=array.length;i<ln;i++)item=array[i],-1===ExtArray.indexOf(clone,item)&&clone.push(item);return clone},filter:supportsFilter?function(array,fn,scope){return fn||Ext.Error.raise("Ext.Array.filter must have a filter function passed as second argument."),array.filter(fn,scope)}:function(array,fn,scope){fn||Ext.Error.raise("Ext.Array.filter must have a filter function passed as second argument.");for(var results=[],i=0,ln=array.length;i<ln;i++)fn.call(scope,array[i],i,array)&&results.push(array[i]);return results},findBy:function(array,fn,scope){for(var i=0,len=array.length;i<len;i++)if(fn.call(scope||array,array[i],i))return array[i];return null},from:function(value,newReference){if(void 0===value||null===value)return[];if(Ext.isArray(value))return newReference?slice.call(value):value;var type=typeof value;return!value||void 0===value.length||"string"===type||"function"===type&&value.apply?[value]:ExtArray.toArray(value)},remove:function(array,item){var index=ExtArray.indexOf(array,item);return-1!==index&&erase(array,index,1),array},include:function(array,item){ExtArray.contains(array,item)||array.push(item)},clone:function(array){return slice.call(array)},merge:function(){var i,ln,args=slice.call(arguments),array=[];for(i=0,ln=args.length;i<ln;i++)array=array.concat(args[i]);return ExtArray.unique(array)},intersect:function(){var arraysLength,array,arrayLength,minArray,minArrayIndex,minArrayCandidate,minArrayLength,element,elementCandidate,elementCount,i,j,k,intersection=[],arrays=slice.call(arguments);if(!arrays.length)return intersection;for(arraysLength=arrays.length,i=minArrayIndex=0;i<arraysLength;i++)minArrayCandidate=arrays[i],(!minArray||minArrayCandidate.length<minArray.length)&&(minArray=minArrayCandidate,minArrayIndex=i);for(minArray=ExtArray.unique(minArray),erase(arrays,minArrayIndex,1),minArrayLength=minArray.length,arraysLength=arrays.length,i=0;i<minArrayLength;i++){for(element=minArray[i],elementCount=0,j=0;j<arraysLength;j++)for(array=arrays[j],arrayLength=array.length,k=0;k<arrayLength;k++)if(elementCandidate=array[k],element===elementCandidate){elementCount++;break}elementCount===arraysLength&&intersection.push(element)}return intersection},difference:function(arrayA,arrayB){var i,j,lnB,clone=slice.call(arrayA),ln=clone.length;for(i=0,lnB=arrayB.length;i<lnB;i++)for(j=0;j<ln;j++)clone[j]===arrayB[i]&&(erase(clone,j,1),j--,ln--);return clone},slice:[1,2].slice(1,void 0).length?function(array,begin,end){return slice.call(array,begin,end)}:function(array,begin,end){return void 0===begin?slice.call(array):void 0===end?slice.call(array,begin):slice.call(array,begin,end)},sort:supportsSort?function(array,sortFn){return sortFn?array.sort(sortFn):array.sort()}:function(array,sortFn){for(var j,min,tmp,length=array.length,i=0;i<length;i++){for(min=i,j=i+1;j<length;j++)sortFn?sortFn(array[j],array[min])<0&&(min=j):array[j]<array[min]&&(min=j);min!==i&&(tmp=array[i],array[i]=array[min],array[min]=tmp)}return array},flatten:function(array){function rFlatten(a){var i,ln,v;for(i=0,ln=a.length;i<ln;i++)v=a[i],Ext.isArray(v)?rFlatten(v):worker.push(v);return worker}var worker=[];return rFlatten(array)},min:function(array,comparisonFn){var i,ln,item,min=array[0];for(i=0,ln=array.length;i<ln;i++)item=array[i],comparisonFn?1===comparisonFn(min,item)&&(min=item):item<min&&(min=item);return min},max:function(array,comparisonFn){var i,ln,item,max=array[0];for(i=0,ln=array.length;i<ln;i++)item=array[i],comparisonFn?-1===comparisonFn(max,item)&&(max=item):item>max&&(max=item);return max},mean:function(array){return array.length>0?ExtArray.sum(array)/array.length:void 0},sum:function(array){var i,ln,item,sum=0;for(i=0,ln=array.length;i<ln;i++)item=array[i],sum+=item;return sum},toMap:function(array,getKey,scope){var map={},i=array.length;if(getKey)if("string"==typeof getKey)for(;i--;)map[array[i][getKey]]=i+1;else for(;i--;)map[getKey.call(scope,array[i])]=i+1;else for(;i--;)map[array[i]]=i+1;return map},toValueMap:function(array,getKey,scope){var map={},i=array.length;if(getKey)if("string"==typeof getKey)for(;i--;)map[array[i][getKey]]=array[i];else for(;i--;)map[getKey.call(scope,array[i])]=array[i];else for(;i--;)map[array[i]]=array[i];return map},_replaceSim:replaceSim,_spliceSim:spliceSim,erase:erase,insert:function(array,index,items){return replace(array,index,0,items)},replace:replace,splice:splice,push:function(array){var newItem,len=arguments.length,i=1;for(void 0===array?array=[]:Ext.isArray(array)||(array=[array]);i<len;i++)newItem=arguments[i],Array.prototype.push[Ext.isIterable(newItem)?"apply":"call"](array,newItem);return array}},Ext.each=ExtArray.each,ExtArray.union=ExtArray.merge,Ext.min=ExtArray.min,Ext.max=ExtArray.max,Ext.sum=ExtArray.sum,Ext.mean=ExtArray.mean,Ext.flatten=ExtArray.flatten,Ext.clean=ExtArray.clean,Ext.unique=ExtArray.unique,Ext.pluck=ExtArray.pluck,Ext.toArray=function(){return ExtArray.toArray.apply(ExtArray,arguments)}}();Ext.Function={flexSetter:function(fn){return function(a,b){var k,i;if(null===a)return this;if("string"!=typeof a){for(k in a)a.hasOwnProperty(k)&&fn.call(this,k,a[k]);if(Ext.enumerables)for(i=Ext.enumerables.length;i--;)k=Ext.enumerables[i],a.hasOwnProperty(k)&&fn.call(this,k,a[k])}else fn.call(this,a,b);return this}},bind:function(fn,scope,args,appendArgs){if(2===arguments.length)return function(){return fn.apply(scope,arguments)};var method=fn,slice=Array.prototype.slice;return function(){var callArgs=args||arguments;return!0===appendArgs?(callArgs=slice.call(arguments,0),callArgs=callArgs.concat(args)):"number"==typeof appendArgs&&(callArgs=slice.call(arguments,0),Ext.Array.insert(callArgs,appendArgs,args)),method.apply(scope||Ext.global,callArgs)}},pass:function(fn,args,scope){return Ext.isArray(args)||(args=Ext.isIterable(args)?Ext.Array.clone(args):void 0!==args?[args]:[]),function(){var fnArgs=[].concat(args);return fnArgs.push.apply(fnArgs,arguments),fn.apply(scope||this,fnArgs)}},alias:function(object,methodName){return function(){return object[methodName].apply(object,arguments)}},clone:function(method){return function(){return method.apply(this,arguments)}},createInterceptor:function(origFn,newFn,scope,returnValue){return Ext.isFunction(newFn)?(returnValue=Ext.isDefined(returnValue)?returnValue:null,function(){var me=this,args=arguments;return newFn.target=me,newFn.method=origFn,!1!==newFn.apply(scope||me||Ext.global,args)?origFn.apply(me||Ext.global,args):returnValue}):origFn},createDelayed:function(fn,delay,scope,args,appendArgs){return(scope||args)&&(fn=Ext.Function.bind(fn,scope,args,appendArgs)),function(){var me=this,args=Array.prototype.slice.call(arguments);setTimeout(function(){fn.apply(me,args)},delay)}},defer:function(fn,millis,scope,args,appendArgs){return fn=Ext.Function.bind(fn,scope,args,appendArgs),millis>0?setTimeout(Ext.supports.TimeoutActualLateness?function(){fn()}:fn,millis):(fn(),0)},createSequence:function(originalFn,newFn,scope){return newFn?function(){var result=originalFn.apply(this,arguments);return newFn.apply(scope||this,arguments),result}:originalFn},createBuffered:function(fn,buffer,scope,args){var timerId;return function(){var callArgs=args||Array.prototype.slice.call(arguments,0),me=scope||this;timerId&&clearTimeout(timerId),timerId=setTimeout(function(){fn.apply(me,callArgs)},buffer)}},createThrottled:function(fn,interval,scope){var lastCallTime,elapsed,lastArgs,timer,execute=function(){fn.apply(scope||this,lastArgs),lastCallTime=Ext.Date.now()};return function(){elapsed=Ext.Date.now()-lastCallTime,lastArgs=arguments,clearTimeout(timer),!lastCallTime||elapsed>=interval?execute():timer=setTimeout(execute,interval-elapsed)}},interceptBefore:function(object,methodName,fn,scope){var method=object[methodName]||Ext.emptyFn;return object[methodName]=function(){var ret=fn.apply(scope||this,arguments);return method.apply(this,arguments),ret}},interceptAfter:function(object,methodName,fn,scope){var method=object[methodName]||Ext.emptyFn;return object[methodName]=function(){return method.apply(this,arguments),fn.apply(scope||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 TemplateClass=function(){},ExtObject=Ext.Object={chain:Object.create||function(object){TemplateClass.prototype=object;var result=new TemplateClass;return TemplateClass.prototype=null,result},clear:function(object){for(var keys=ExtObject.getKeys(object),n=keys.length;n--;)delete object[keys[n]];return object},toQueryObjects:function(name,value,recursive){var i,ln,self=ExtObject.toQueryObjects,objects=[];if(Ext.isArray(value))for(i=0,ln=value.length;i<ln;i++)recursive?objects=objects.concat(self(name+"["+i+"]",value[i],!0)):objects.push({name:name,value:value[i]});else if(Ext.isObject(value))for(i in value)value.hasOwnProperty(i)&&(recursive?objects=objects.concat(self(name+"["+i+"]",value[i],!0)):objects.push({name:name,value:value[i]}));else objects.push({name:name,value:value});return objects},toQueryString:function(object,recursive){var i,j,ln,paramObject,value,paramObjects=[],params=[];for(i in object)object.hasOwnProperty(i)&&(paramObjects=paramObjects.concat(ExtObject.toQueryObjects(i,object[i],recursive)));for(j=0,ln=paramObjects.length;j<ln;j++)paramObject=paramObjects[j],value=paramObject.value,Ext.isEmpty(value)?value="":Ext.isDate(value)&&(value=Ext.Date.toString(value)),params.push(encodeURIComponent(paramObject.name)+"="+encodeURIComponent(String(value)));return params.join("&")},fromQueryString:function(queryString,recursive){var temp,components,name,value,i,ln,part,j,subLn,matchedKeys,matchedName,keys,key,nextKey,parts=queryString.replace(/^\?/,"").split("&"),object={};for(i=0,ln=parts.length;i<ln;i++)if(part=parts[i],part.length>0)if(components=part.split("="),name=decodeURIComponent(components[0]),value=void 0!==components[1]?decodeURIComponent(components[1]):"",recursive){if(matchedKeys=name.match(/(\[):?([^\]]*)\]/g),!(matchedName=name.match(/^([^\[]+)/)))throw new Error('[Ext.Object.fromQueryString] Malformed query string given, failed parsing name from "'+part+'"');if(name=matchedName[0],keys=[],null===matchedKeys){object[name]=value;continue}for(j=0,subLn=matchedKeys.length;j<subLn;j++)key=matchedKeys[j],key=2===key.length?"":key.substring(1,key.length-1),keys.push(key);for(keys.unshift(name),temp=object,j=0,subLn=keys.length;j<subLn;j++)key=keys[j],j===subLn-1?Ext.isArray(temp)&&""===key?temp.push(value):temp[key]=value:(void 0!==temp[key]&&"string"!=typeof temp[key]||(nextKey=keys[j+1],temp[key]=Ext.isNumeric(nextKey)||""===nextKey?[]:{}),temp=temp[key])}else object.hasOwnProperty(name)?(Ext.isArray(object[name])||(object[name]=[object[name]]),object[name].push(value)):object[name]=value;return object},each:function(object,fn,scope){for(var property in object)if(object.hasOwnProperty(property)&&!1===fn.call(scope||object,property,object[property],object))return},merge:function(destination){for(var object,key,value,sourceKey,i=1,ln=arguments.length,mergeFn=ExtObject.merge,cloneFn=Ext.clone;i<ln;i++){object=arguments[i];for(key in object)value=object[key],value&&value.constructor===Object?(sourceKey=destination[key],sourceKey&&sourceKey.constructor===Object?mergeFn(sourceKey,value):destination[key]=cloneFn(value)):destination[key]=value}return destination},mergeIf:function(destination){for(var object,key,value,i=1,ln=arguments.length,cloneFn=Ext.clone;i<ln;i++){object=arguments[i];for(key in object)key in destination||(value=object[key],value&&value.constructor===Object?destination[key]=cloneFn(value):destination[key]=value)}return destination},getKey:function(object,value){for(var property in object)if(object.hasOwnProperty(property)&&object[property]===value)return property;return null},getValues:function(object){var property,values=[];for(property in object)object.hasOwnProperty(property)&&values.push(object[property]);return values},getKeys:"function"==typeof Object.keys?function(object){return object?Object.keys(object):[]}:function(object){var property,keys=[];for(property in object)object.hasOwnProperty(property)&&keys.push(property);return keys},getSize:function(object){var property,size=0;for(property in object)object.hasOwnProperty(property)&&size++;return size},isEmpty:function(object){for(var key in object)if(object.hasOwnProperty(key))return!1;return!0},equals:function(){var check=function(o1,o2){var key;for(key in o1)if(o1.hasOwnProperty(key)&&o1[key]!==o2[key])return!1;return!0};return function(object1,object2){return object1===object2||(object1&&object2?check(object1,object2)&&check(object2,object1):!object1&&!object2&&object1===object2)}}(),classify:function(object){var key,value,prototype=object,objectProperties=[],propertyClassesMap={},objectClass=function(){for(var property,i=0,ln=objectProperties.length;i<ln;i++)property=objectProperties[i],this[property]=new propertyClassesMap[property]};for(key in object)object.hasOwnProperty(key)&&(value=object[key])&&value.constructor===Object&&(objectProperties.push(key),propertyClassesMap[key]=ExtObject.classify(value));return objectClass.prototype=prototype,objectClass}};Ext.merge=Ext.Object.merge,Ext.mergeIf=Ext.Object.mergeIf,Ext.urlEncode=function(){var args=Ext.Array.from(arguments),prefix="";return"string"==typeof args[1]&&(prefix=args[1]+"&",args[1]=!1),prefix+ExtObject.toQueryString.apply(ExtObject,args)},Ext.urlDecode=function(){return ExtObject.fromQueryString.apply(ExtObject,arguments)}}();Ext.Date=new function(){function xf(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(numberTokenRe,function(m,i){return args[i]})}var utilDate=this,stripEscapeRe=/(\\.)/g,hourInfoRe=/([gGhHisucUOPZ]|MS)/,dateInfoRe=/([djzmnYycU]|MS)/,slashRe=/\\/gi,numberTokenRe=/\{(\d+)\}/g,MSFormatRe=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/"),code=["var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,","def = me.defaults,","from = Ext.Number.from,","results = String(input).match(me.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = me.clearTime(new Date);","y = from(y, from(def.y, dt.getFullYear()));","m = from(m, from(def.m - 1, dt.getMonth()));","dayMatched = d !== undefined;","d = from(d, from(def.d, dt.getDate()));","if (!dayMatched) {","dt.setDate(1);","dt.setMonth(m);","dt.setFullYear(y);","daysInMonth = me.getDaysInMonth(dt);","if (d > 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");Ext.apply(utilDate,{now:Date.now||function(){return+new Date},toString:function(date){var pad=Ext.String.leftPad;return date.getFullYear()+"-"+pad(date.getMonth()+1,2,"0")+"-"+pad(date.getDate(),2,"0")+"T"+pad(date.getHours(),2,"0")+":"+pad(date.getMinutes(),2,"0")+":"+pad(date.getSeconds(),2,"0")},getElapsed:function(dateA,dateB){return Math.abs(dateA-(dateB||utilDate.now()))},useStrict:!1,formatCodeToRegex:function(character,currentGroup){var p=utilDate.parseCodes[character];return p&&(p="function"==typeof p?p():p,utilDate.parseCodes[character]=p),p?Ext.applyIf({c:p.c?xf(p.c,currentGroup||"{0}"):p.c},p):{g:0,c:null,s:Ext.String.escapeRegex(character)}},parseFunctions:{MS:function(input,strict){var r=(input||"").match(MSFormatRe);return r?new Date(1*((r[1]||"")+r[2])):null},time:function(input,strict){var num=parseInt(input,10);return num||0===num?new Date(num):null},timestamp:function(input,strict){var num=parseInt(input,10);return num||0===num?new Date(1e3*num):null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return utilDate.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(month){return Ext.Date.monthNames[month].substring(0,3)},getShortDayName:function(day){return Ext.Date.dayNames[day].substring(0,3)},getMonthNumber:function(name){return Ext.Date.monthNumbers[name.substring(0,1).toUpperCase()+name.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(format){return hourInfoRe.test(format.replace(stripEscapeRe,""))},formatContainsDateInfo:function(format){return dateInfoRe.test(format.replace(stripEscapeRe,""))},unescapeFormat:function(format){return format.replace(slashRe,"")},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 c,code,i,l,e;for(c="Y-m-dTH:i:sP",code=[],i=0,l=c.length;i<l;++i)e=c.charAt(i),code.push("T"==e?"'T'":utilDate.getFormatCode(e));return code.join(" + ")},U:"Math.round(this.getTime() / 1000)"},isValid:function(y,m,d,h,i,s,ms){h=h||0,i=i||0,s=s||0,ms=ms||0;var dt=utilDate.add(new Date(y<100?100:y,m-1,d,h,i,s,ms),utilDate.YEAR,y<100?y-100:0);return y==dt.getFullYear()&&m==dt.getMonth()+1&&d==dt.getDate()&&h==dt.getHours()&&i==dt.getMinutes()&&s==dt.getSeconds()&&ms==dt.getMilliseconds()},parse:function(input,format,strict){var p=utilDate.parseFunctions;return null==p[format]&&utilDate.createParser(format),p[format].call(utilDate,input,Ext.isDefined(strict)?strict:utilDate.useStrict)},parseDate:function(input,format,strict){return utilDate.parse(input,format,strict)},getFormatCode:function(character){var f=utilDate.formatCodes[character];return f&&(f="function"==typeof f?f():f,utilDate.formatCodes[character]=f),f||"'"+Ext.String.escape(character)+"'"},createFormat:function(format){var i,code=[],special=!1,ch="";for(i=0;i<format.length;++i)ch=format.charAt(i),special||"\\"!=ch?special?(special=!1,code.push("'"+Ext.String.escape(ch)+"'")):code.push(utilDate.getFormatCode(ch)):special=!0;utilDate.formatFunctions[format]=Ext.functionFactory("return "+code.join("+"))},createParser:function(format){for(var obj,regexNum=utilDate.parseRegexes.length,currentGroup=1,calc=[],regex=[],special=!1,ch="",i=0,len=format.length,atEnd=[];i<len;++i)ch=format.charAt(i),special||"\\"!=ch?special?(special=!1,regex.push(Ext.String.escape(ch))):(obj=utilDate.formatCodeToRegex(ch,currentGroup),currentGroup+=obj.g,regex.push(obj.s),obj.g&&obj.c&&(obj.calcAtEnd?atEnd.push(obj.c):calc.push(obj.c))):special=!0;calc=calc.concat(atEnd),utilDate.parseRegexes[regexNum]=new RegExp("^"+regex.join("")+"$","i"),utilDate.parseFunctions[format]=Ext.functionFactory("input","strict",xf(code,regexNum,calc.join("")))},parseCodes:{d:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|0[1-9])"},j:{g:1,c:"d = parseInt(results[{0}], 10);\n",s:"(3[0-1]|[1-2][0-9]|[1-9])"},D:function(){for(var a=[],i=0;i<7;a.push(utilDate.getShortDayName(i)),++i);return{g:0,c:null,s:"(?:"+a.join("|")+")"}},l:function(){return{g:0,c:null,s:"(?:"+utilDate.dayNames.join("|")+")"}},N:{g:0,c:null,s:"[1-7]"},S:{g:0,c:null,s:"(?:st|nd|rd|th)"},w:{g:0,c:null,s:"[0-6]"},z:{g:1,c:"z = parseInt(results[{0}], 10);\n",s:"(\\d{1,3})"},W:{g:1,c:"W = parseInt(results[{0}], 10);\n",s:"(\\d{2})"},F:function(){return{g:1,c:"m = parseInt(me.getMonthNumber(results[{0}]), 10);\n",s:"("+utilDate.monthNames.join("|")+")"}},M:function(){for(var a=[],i=0;i<12;a.push(utilDate.getShortMonthName(i)),++i);return Ext.applyIf({s:"("+a.join("|")+")"},utilDate.formatCodeToRegex("F"))},m:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|0[1-9])"},n:{g:1,c:"m = parseInt(results[{0}], 10) - 1;\n",s:"(1[0-2]|[1-9])"},t:{g:0,c:null,s:"(?:\\d{2})"},L:{g:0,c:null,s:"(?:1|0)"},o:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},Y:{g:1,c:"y = parseInt(results[{0}], 10);\n",s:"(\\d{4})"},y:{g:1,c:"var ty = parseInt(results[{0}], 10);\ny = ty > 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:!0},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:!0},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 i,l,calc=[],arr=[utilDate.formatCodeToRegex("Y",1),utilDate.formatCodeToRegex("m",2),utilDate.formatCodeToRegex("d",3),utilDate.formatCodeToRegex("H",4),utilDate.formatCodeToRegex("i",5),utilDate.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){",utilDate.formatCodeToRegex("P",8).c,"}else{",utilDate.formatCodeToRegex("O",8).c,"}","}"].join("\n")}];for(i=0,l=arr.length;i<l;++i)calc.push(arr[i].c);return{g:1,c:calc.join(""),s:[arr[0].s,"(?:","-",arr[1].s,"(?:","-",arr[2].s,"(?:","(?:T| )?",arr[3].s,":",arr[4].s,"(?::",arr[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")}},U:{g:1,c:"u = parseInt(results[{0}], 10);\n",s:"(-?\\d+)"}},dateFormat:function(date,format){return utilDate.format(date,format)},isEqual:function(date1,date2){return date1&&date2?date1.getTime()===date2.getTime():!(date1||date2)},format:function(date,format){var formatFunctions=utilDate.formatFunctions;return Ext.isDate(date)?(null==formatFunctions[format]&&utilDate.createFormat(format),formatFunctions[format].call(date)+""):""},getTimezone:function(date){return date.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")},getGMTOffset:function(date,colon){var offset=date.getTimezoneOffset();return(offset>0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(offset)/60),2,"0")+(colon?":":"")+Ext.String.leftPad(Math.abs(offset%60),2,"0")},getDayOfYear:function(date){var i,num=0,d=Ext.Date.clone(date),m=date.getMonth();for(i=0,d.setDate(1),d.setMonth(0);i<m;d.setMonth(++i))num+=utilDate.getDaysInMonth(d);return num+date.getDate()-1},getWeekOfYear:function(){return function(date){var DC3=Date.UTC(date.getFullYear(),date.getMonth(),date.getDate()+3)/864e5,AWN=Math.floor(DC3/7),Wyr=new Date(6048e5*AWN).getUTCFullYear();return AWN-Math.floor(Date.UTC(Wyr,0,7)/6048e5)+1}}(),isLeapYear:function(date){var year=date.getFullYear();return!(0!=(3&year)||!(year%100||year%400==0&&year))},getFirstDayOfMonth:function(date){var day=(date.getDay()-(date.getDate()-1))%7;return day<0?day+7:day},getLastDayOfMonth:function(date){return utilDate.getLastDateOfMonth(date).getDay()},getFirstDateOfMonth:function(date){return new Date(date.getFullYear(),date.getMonth(),1)},getLastDateOfMonth:function(date){return new Date(date.getFullYear(),date.getMonth(),utilDate.getDaysInMonth(date))},getDaysInMonth:function(){var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];return function(date){var m=date.getMonth();return 1==m&&utilDate.isLeapYear(date)?29:daysInMonth[m]}}(),getSuffix:function(date){switch(date.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}},clone:function(date){return new Date(date.getTime())},isDST:function(date){return new Date(date.getFullYear(),0,1).getTimezoneOffset()!=date.getTimezoneOffset()},clearTime:function(date,clone){if(clone)return Ext.Date.clearTime(Ext.Date.clone(date));var hr,c,d=date.getDate();if(date.setHours(0),date.setMinutes(0),date.setSeconds(0),date.setMilliseconds(0),date.getDate()!=d){for(hr=1,c=utilDate.add(date,Ext.Date.HOUR,hr);c.getDate()!=d;hr++,c=utilDate.add(date,Ext.Date.HOUR,hr));date.setDate(d),date.setHours(c.getHours())}return date},add:function(date,interval,value){var day,decimalValue,d=Ext.Date.clone(date),base=(Ext.Date,0);if(!interval||0===value)return d;if(decimalValue=value-parseInt(value,10),value=parseInt(value,10))switch(interval.toLowerCase()){case Ext.Date.MILLI:d.setTime(d.getTime()+value);break;case Ext.Date.SECOND:d.setTime(d.getTime()+1e3*value);break;case Ext.Date.MINUTE:d.setTime(d.getTime()+60*value*1e3);break;case Ext.Date.HOUR:d.setTime(d.getTime()+60*value*60*1e3);break;case Ext.Date.DAY:d.setDate(d.getDate()+value);break;case Ext.Date.MONTH:day=date.getDate(),day>28&&(day=Math.min(day,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(date),Ext.Date.MONTH,value)).getDate())),d.setDate(day),d.setMonth(date.getMonth()+value);break;case Ext.Date.YEAR:day=date.getDate(),day>28&&(day=Math.min(day,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(date),Ext.Date.YEAR,value)).getDate())),d.setDate(day),d.setFullYear(date.getFullYear()+value)}if(decimalValue){switch(interval.toLowerCase()){case Ext.Date.MILLI:base=1;break;case Ext.Date.SECOND:base=1e3;break;case Ext.Date.MINUTE:base=6e4;break;case Ext.Date.HOUR:base=36e5;break;case Ext.Date.DAY:base=864e5;break;case Ext.Date.MONTH:day=utilDate.getDaysInMonth(d),base=864e5*day;break;case Ext.Date.YEAR:day=utilDate.isLeapYear(d)?366:365,base=864e5*day}base&&d.setTime(d.getTime()+base*decimalValue)}return d},subtract:function(date,interval,value){return utilDate.add(date,interval,-value)},between:function(date,start,end){var t=date.getTime();return start.getTime()<=t&&t<=end.getTime()},compat:function(){var p,stat,prot,s,nativeDate=window.Date,statics=["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"],proto=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],sLen=statics.length,pLen=proto.length;for(s=0;s<sLen;s++)stat=statics[s],nativeDate[stat]=utilDate[stat];for(p=0;p<pLen;p++)prot=proto[p],nativeDate.prototype[prot]=function(){var args=Array.prototype.slice.call(arguments);return args.unshift(this),utilDate[prot].apply(utilDate,args)}}})};!function(flexSetter){var noArgs=[],Base=function(){},hookFunctionFactory=function(hookFunction,underriddenFunction,methodName,owningClass){var result=function(){var result=this.callParent(arguments);return hookFunction.apply(this,arguments),result};return result.$name=methodName,result.$owner=owningClass,underriddenFunction&&(result.$previous=underriddenFunction.$previous,underriddenFunction.$previous=result),result};Ext.apply(Base,{$className:"Ext.Base",$isClass:!0,create:function(){return Ext.create.apply(Ext,[this].concat(Array.prototype.slice.call(arguments,0)))},extend:function(parent){var basePrototype,prototype,i,ln,name,statics,parentPrototype=parent.prototype;if(prototype=this.prototype=Ext.Object.chain(parentPrototype),prototype.self=this,this.superclass=prototype.superclass=parentPrototype,!parent.$isClass){basePrototype=Ext.Base.prototype;for(i in basePrototype)i in prototype&&(prototype[i]=basePrototype[i])}if(statics=parentPrototype.$inheritableStatics)for(i=0,ln=statics.length;i<ln;i++)name=statics[i],this.hasOwnProperty(name)||(this[name]=parent[name]);parent.$onExtended&&(this.$onExtended=parent.$onExtended.slice()),prototype.config=new prototype.configClass,prototype.initConfigList=prototype.initConfigList.slice(),prototype.initConfigMap=Ext.clone(prototype.initConfigMap),prototype.configMap=Ext.Object.chain(prototype.configMap)},$onExtended:[],triggerExtended:function(){Ext.classSystemMonitor&&Ext.classSystemMonitor(this,"Ext.Base#triggerExtended",arguments);var i,callback,callbacks=this.$onExtended,ln=callbacks.length;if(ln>0)for(i=0;i<ln;i++)callback=callbacks[i],callback.fn.apply(callback.scope||this,arguments)},onExtended:function(fn,scope){return this.$onExtended.push({fn:fn,scope:scope}),this},addConfig:function(config,fullMerge){var initializedName,name,value,prototype=this.prototype,configNameCache=Ext.Class.configNameCache,hasConfig=prototype.configMap,initConfigList=prototype.initConfigList,initConfigMap=prototype.initConfigMap,defaultConfig=prototype.config;for(name in config)config.hasOwnProperty(name)&&(hasConfig[name]||(hasConfig[name]=!0),value=config[name],initializedName=configNameCache[name].initialized,initConfigMap[name]||null===value||prototype[initializedName]||(initConfigMap[name]=!0,initConfigList.push(name)));fullMerge?Ext.merge(defaultConfig,config):Ext.mergeIf(defaultConfig,config),prototype.configClass=Ext.Object.classify(defaultConfig)},addStatics:function(members){var member,name;for(name in members)members.hasOwnProperty(name)&&(member=members[name],"function"!=typeof member||member.$isClass||member===Ext.emptyFn||member===Ext.identityFn||(member.$owner=this,member.$name=name,member.displayName=Ext.getClassName(this)+"."+name),this[name]=member);return this},addInheritableStatics:function(members){var inheritableStatics,hasInheritableStatics,name,member,prototype=this.prototype;inheritableStatics=prototype.$inheritableStatics,hasInheritableStatics=prototype.$hasInheritableStatics,inheritableStatics||(inheritableStatics=prototype.$inheritableStatics=[],hasInheritableStatics=prototype.$hasInheritableStatics={});for(name in members)members.hasOwnProperty(name)&&(member=members[name],"function"==typeof member&&(member.displayName=Ext.getClassName(this)+"."+name),this[name]=member,hasInheritableStatics[name]||(hasInheritableStatics[name]=!0,inheritableStatics.push(name)));return this},addMembers:function(members){var i,ln,name,member,prototype=this.prototype,enumerables=Ext.enumerables,names=[];for(name in members)names.push(name);for(enumerables&&names.push.apply(names,enumerables),i=0,ln=names.length;i<ln;i++)name=names[i],members.hasOwnProperty(name)&&(member=members[name],"function"!=typeof member||member.$isClass||member===Ext.emptyFn||member===Ext.identityFn||(member.$owner=this,member.$name=name,member.displayName=(this.$className||"")+"#"+name),prototype[name]=member);return this},addMember:function(name,member){return"function"!=typeof member||member.$isClass||member===Ext.emptyFn||member===Ext.identityFn||(member.$owner=this,member.$name=name,member.displayName=(this.$className||"")+"#"+name),this.prototype[name]=member,this},implement:function(){this.addMembers.apply(this,arguments)},borrow:function(fromClass,members){Ext.classSystemMonitor&&Ext.classSystemMonitor(this,"Ext.Base#borrow",arguments);var i,ln,name,fn,toBorrow,prototype=this.prototype,fromPrototype=fromClass.prototype,className=Ext.getClassName(this);for(members=Ext.Array.from(members),i=0,ln=members.length;i<ln;i++)name=members[i],toBorrow=fromPrototype[name],"function"==typeof toBorrow?(fn=Ext.Function.clone(toBorrow),className&&(fn.displayName=className+"#"+name),fn.$owner=this,fn.$name=name,prototype[name]=fn):prototype[name]=toBorrow;return this},override:function(members){var name,index,member,statics,names,previous,me=this,enumerables=Ext.enumerables,target=me.prototype,cloneFunction=Ext.Function.clone;2===arguments.length&&(name=members,members={},members[name]=arguments[1],enumerables=null);do{names=[],statics=null;for(name in members)"statics"==name?statics=members[name]:"inheritableStatics"==name?me.addInheritableStatics(members[name]):"config"==name?me.addConfig(members[name],!0):names.push(name);for(enumerables&&names.push.apply(names,enumerables),index=names.length;index--;)name=names[index],members.hasOwnProperty(name)&&(member=members[name],"function"!=typeof member||member.$className||member===Ext.emptyFn||member===Ext.identityFn||(void 0!==member.$owner&&(member=cloneFunction(member)),me.$className&&(member.displayName=me.$className+"#"+name),member.$owner=me,member.$name=name,(previous=target.hasOwnProperty(name)&&target[name])&&(member.$previous=previous)),target[name]=member);target=me,members=statics}while(members);return this},callParent:function(args){var method;return(method=this.callParent.caller)&&(method.$previous||(method=method.$owner?method:method.caller)&&method.$owner.superclass.self[method.$name]).apply(this,args||noArgs)},callSuper:function(args){var method;return(method=this.callSuper.caller)&&((method=method.$owner?method:method.caller)&&method.$owner.superclass.self[method.$name]).apply(this,args||noArgs)},mixin:function(name,mixinClass){var key,statics,i,ln,staticName,mixinValue,hookKey,hookFunction,me=this,mixin=mixinClass.prototype,prototype=me.prototype;void 0!==mixin.onClassMixedIn&&mixin.onClassMixedIn.call(mixinClass,me),prototype.hasOwnProperty("mixins")||(prototype.mixins="mixins"in prototype?Ext.Object.chain(prototype.mixins):{});for(key in mixin)if(mixinValue=mixin[key],"mixins"===key)Ext.merge(prototype.mixins,mixinValue);else if("xhooks"===key)for(hookKey in mixinValue)hookFunction=mixinValue[hookKey],hookFunction.$previous=Ext.emptyFn,prototype.hasOwnProperty(hookKey)?hookFunctionFactory(hookFunction,prototype[hookKey],hookKey,me):prototype[hookKey]=hookFunctionFactory(hookFunction,null,hookKey,me);else"mixinId"!==key&&"config"!==key&&void 0===prototype[key]&&(prototype[key]=mixinValue);if(statics=mixin.$inheritableStatics)for(i=0,ln=statics.length;i<ln;i++)staticName=statics[i],me.hasOwnProperty(staticName)||(me[staticName]=mixinClass[staticName]);return"config"in mixin&&me.addConfig(mixin.config,!1),prototype.mixins[name]=mixin,me},getName:function(){return Ext.getClassName(this)},createAlias:flexSetter(function(alias,origin){this.override(alias,function(){return this[origin].apply(this,arguments)})}),addXtype:function(xtype){var prototype=this.prototype,xtypesMap=prototype.xtypesMap,xtypes=prototype.xtypes,xtypesChain=prototype.xtypesChain;return prototype.hasOwnProperty("xtypesMap")||(xtypesMap=prototype.xtypesMap=Ext.merge({},prototype.xtypesMap||{}),xtypes=prototype.xtypes=prototype.xtypes?[].concat(prototype.xtypes):[],xtypesChain=prototype.xtypesChain=prototype.xtypesChain?[].concat(prototype.xtypesChain):[],prototype.xtype=xtype),xtypesMap[xtype]||(xtypesMap[xtype]=!0,xtypes.push(xtype),xtypesChain.push(xtype),Ext.ClassManager.setAlias(this,"widget."+xtype)),this}}),Base.implement({isInstance:!0,$className:"Ext.Base",configClass:Ext.emptyFn,initConfigList:[],configMap:{},initConfigMap:{},statics:function(){var method=this.statics.caller,self=this.self;return method?method.$owner:self},callParent:function(args){var method,superMethod=(method=this.callParent.caller)&&(method.$previous||(method=method.$owner?method:method.caller)&&method.$owner.superclass[method.$name]);if(!superMethod){method=this.callParent.caller;var parentClass,methodName;if(!method.$owner){if(!method.caller)throw new Error("Attempting to call a protected method from the public scope, which is not allowed");method=method.caller}if(parentClass=method.$owner.superclass,!((methodName=method.$name)in parentClass))throw new Error("this.callParent() was called but there's no such method ("+methodName+") found in the parent class ("+(Ext.getClassName(parentClass)||"Object")+")")}return superMethod.apply(this,args||noArgs)},callSuper:function(args){var method,superMethod=(method=this.callSuper.caller)&&(method=method.$owner?method:method.caller)&&method.$owner.superclass[method.$name];if(!superMethod){method=this.callSuper.caller;var parentClass,methodName;if(!method.$owner){if(!method.caller)throw new Error("Attempting to call a protected method from the public scope, which is not allowed");method=method.caller}if(parentClass=method.$owner.superclass,!((methodName=method.$name)in parentClass))throw new Error("this.callSuper() was called but there's no such method ("+methodName+") found in the parent class ("+(Ext.getClassName(parentClass)||"Object")+")")}return superMethod.apply(this,args||noArgs)},self:Base,constructor:function(){return this},initConfig:function(config){var nameMap,i,ln,name,initializedName,instanceConfig=config,configNameCache=Ext.Class.configNameCache,defaultConfig=new this.configClass,defaultConfigList=this.initConfigList,hasConfig=this.configMap;if(this.initConfig=Ext.emptyFn,this.initialConfig=instanceConfig||{},this.config=config=instanceConfig?Ext.merge(defaultConfig,config):defaultConfig,instanceConfig){defaultConfigList=defaultConfigList.slice();for(name in instanceConfig)hasConfig[name]&&null!==instanceConfig[name]&&(defaultConfigList.push(name),this[configNameCache[name].initialized]=!1)}for(i=0,ln=defaultConfigList.length;i<ln;i++)name=defaultConfigList[i],nameMap=configNameCache[name],initializedName=nameMap.initialized,this[initializedName]||(this[initializedName]=!0,this[nameMap.set].call(this,config[name]));return this},hasConfig:function(name){return Boolean(this.configMap[name])},setConfig:function(config,applyIfNotSet){if(!config)return this;var name,value,configNameCache=Ext.Class.configNameCache,currentConfig=this.config,hasConfig=this.configMap,initialConfig=this.initialConfig;applyIfNotSet=Boolean(applyIfNotSet);for(name in config)applyIfNotSet&&initialConfig.hasOwnProperty(name)||(value=config[name],currentConfig[name]=value,hasConfig[name]&&this[configNameCache[name].set](value));return this},getConfig:function(name){return this[Ext.Class.configNameCache[name].get]()},getInitialConfig:function(name){var config=this.config;return name?config[name]:config},onConfigUpdate:function(names,callback,scope){var i,ln,name,updaterName,updater,newUpdater,self=this.self,className=self.$className;for(names=Ext.Array.from(names),scope=scope||this,i=0,ln=names.length;i<ln;i++)name=names[i],updaterName="update"+Ext.String.capitalize(name),updater=this[updaterName]||Ext.emptyFn,newUpdater=function(){updater.apply(this,arguments),scope[callback].apply(scope,arguments)},newUpdater.$name=updaterName,newUpdater.$owner=self,newUpdater.displayName=className+"#"+updaterName,this[updaterName]=newUpdater},destroy:function(){this.destroy=Ext.emptyFn}}),Base.prototype.callOverridden=Base.prototype.callParent,Ext.Base=Base}(Ext.Function.flexSetter);!function(){function makeCtor(className){function constructor(){return this.constructor.apply(this,arguments)||null}return className&&(constructor.displayName=className),constructor}var ExtClass,baseStaticMember,baseStaticMemberLength,Base=Ext.Base,baseStaticMembers=[];for(baseStaticMember in Base)Base.hasOwnProperty(baseStaticMember)&&baseStaticMembers.push(baseStaticMember);baseStaticMemberLength=baseStaticMembers.length,Ext.Class=ExtClass=function(Class,data,onCreated){return"function"!=typeof Class&&(onCreated=data,data=Class,Class=null),data||(data={}),Class=ExtClass.create(Class,data),ExtClass.process(Class,data,onCreated),Class},Ext.apply(ExtClass,{onBeforeCreated:function(Class,data,hooks){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,">> Ext.Class#onBeforeCreated",arguments),Class.addMembers(data),hooks.onCreated.call(Class,Class),Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"<< Ext.Class#onBeforeCreated",arguments)},create:function(Class,data){var name,i;for(Class||(Class=makeCtor(data.$className)),i=0;i<baseStaticMemberLength;i++)name=baseStaticMembers[i],Class[name]=Base[name];return Class},process:function(Class,data,onCreated){var preprocessor,preprocessorsProperties,i,ln,j,subLn,preprocessorProperty,preprocessorStack=data.preprocessors||ExtClass.defaultPreprocessors,registeredPreprocessors=this.preprocessors,hooks={onBeforeCreated:this.onBeforeCreated},preprocessors=[];for(delete data.preprocessors,i=0,ln=preprocessorStack.length;i<ln;i++)if("string"==typeof(preprocessor=preprocessorStack[i])){if(preprocessor=registeredPreprocessors[preprocessor],!0===(preprocessorsProperties=preprocessor.properties))preprocessors.push(preprocessor.fn);else if(preprocessorsProperties)for(j=0,subLn=preprocessorsProperties.length;j<subLn;j++)if(preprocessorProperty=preprocessorsProperties[j],data.hasOwnProperty(preprocessorProperty)){preprocessors.push(preprocessor.fn);break}}else preprocessors.push(preprocessor);hooks.onCreated=onCreated||Ext.emptyFn,hooks.preprocessors=preprocessors,this.doProcess(Class,data,hooks)},doProcess:function(Class,data,hooks){for(var me=this,preprocessors=hooks.preprocessors,preprocessor=preprocessors.shift(),doProcess=me.doProcess;preprocessor;preprocessor=preprocessors.shift())if(!1===preprocessor.call(me,Class,data,hooks,doProcess))return;hooks.onBeforeCreated.apply(me,arguments)},preprocessors:{},registerPreprocessor:function(name,fn,properties,position,relativeTo){return position||(position="last"),properties||(properties=[name]),this.preprocessors[name]={name:name,properties:properties||!1,fn:fn},this.setDefaultPreprocessorPosition(name,position,relativeTo),this},getPreprocessor:function(name){return this.preprocessors[name]},getPreprocessors:function(){return this.preprocessors},defaultPreprocessors:[],getDefaultPreprocessors:function(){return this.defaultPreprocessors},setDefaultPreprocessors:function(preprocessors){return this.defaultPreprocessors=Ext.Array.from(preprocessors),this},setDefaultPreprocessorPosition:function(name,offset,relativeName){var index,defaultPreprocessors=this.defaultPreprocessors;if("string"==typeof offset){if("first"===offset)return defaultPreprocessors.unshift(name),this;if("last"===offset)return defaultPreprocessors.push(name),this;offset="after"===offset?1:-1}return index=Ext.Array.indexOf(defaultPreprocessors,relativeName),-1!==index&&Ext.Array.splice(defaultPreprocessors,Math.max(0,index+offset),0,name),this},configNameCache:{},getConfigNameMap:function(name){var capitalizedName,cache=this.configNameCache,map=cache[name];return map||(capitalizedName=name.charAt(0).toUpperCase()+name.substr(1),map=cache[name]={internal:name,initialized:"_is"+capitalizedName+"Initialized",apply:"apply"+capitalizedName,update:"update"+capitalizedName,set:"set"+capitalizedName,get:"get"+capitalizedName,doSet:"doSet"+capitalizedName,changeEvent:name.toLowerCase()+"change"}),map}}),ExtClass.registerPreprocessor("extend",function(Class,data,hooks){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#extendPreProcessor",arguments);var Parent,parentPrototype,i,Base=Ext.Base,basePrototype=Base.prototype,extend=data.extend;if(delete data.extend,Parent=extend&&extend!==Object?extend:Base,parentPrototype=Parent.prototype,!Parent.$isClass)for(i in basePrototype)parentPrototype[i]||(parentPrototype[i]=basePrototype[i]);Class.extend(Parent),Class.triggerExtended.apply(Class,arguments),data.onClassExtended&&(Class.onExtended(data.onClassExtended,Class),delete data.onClassExtended)},!0),ExtClass.registerPreprocessor("statics",function(Class,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#staticsPreprocessor",arguments),Class.addStatics(data.statics),delete data.statics}),ExtClass.registerPreprocessor("inheritableStatics",function(Class,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#inheritableStaticsPreprocessor",arguments),Class.addInheritableStatics(data.inheritableStatics),delete data.inheritableStatics}),ExtClass.registerPreprocessor("config",function(Class,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#configPreProcessor",arguments);var config=data.config,prototype=Class.prototype;delete data.config,Ext.Object.each(config,function(name,value){var optimizedGetter,customGetter,nameMap=ExtClass.getConfigNameMap(name),internalName=nameMap.internal,initializedName=nameMap.initialized,applyName=nameMap.apply,updateName=nameMap.update,setName=nameMap.set,getName=nameMap.get,hasOwnSetter=setName in prototype||data.hasOwnProperty(setName),hasOwnApplier=applyName in prototype||data.hasOwnProperty(applyName),hasOwnUpdater=updateName in prototype||data.hasOwnProperty(updateName);null!==value&&(hasOwnSetter||hasOwnApplier||hasOwnUpdater)?prototype[initializedName]=!1:(prototype[internalName]=value,prototype[initializedName]=!0),hasOwnSetter||(data[setName]=function(value){var oldValue=this[internalName],applier=this[applyName],updater=this[updateName];return this[initializedName]||(this[initializedName]=!0),applier&&(value=applier.call(this,value,oldValue)),void 0!==value&&(this[internalName]=value,updater&&value!==oldValue&&updater.call(this,value,oldValue)),this}),getName in prototype&&!data.hasOwnProperty(getName)||(customGetter=data[getName]||!1,optimizedGetter=customGetter?function(){return customGetter.apply(this,arguments)}:function(){return this[internalName]},data[getName]=function(){var currentGetter;return this[initializedName]||(this[initializedName]=!0,this[setName](this.config[name])),currentGetter=this[getName],"$previous"in currentGetter?currentGetter.$previous=optimizedGetter:this[getName]=optimizedGetter,optimizedGetter.apply(this,arguments)})}),Class.addConfig(config,!0)}),ExtClass.registerPreprocessor("mixins",function(Class,data,hooks){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#mixinsPreprocessor",arguments);var name,mixin,i,ln,mixins=data.mixins;delete data.mixins,Ext.Function.interceptBefore(hooks,"onCreated",function(){if(Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#mixinsPreprocessor#beforeCreated",arguments),mixins instanceof Array)for(i=0,ln=mixins.length;i<ln;i++)mixin=mixins[i],name=mixin.prototype.mixinId||mixin.$className,Class.mixin(name,mixin);else for(var mixinName in mixins)mixins.hasOwnProperty(mixinName)&&Class.mixin(mixinName,mixins[mixinName])})}),Ext.extend=function(Class,Parent,members){Ext.classSystemMonitor&&Ext.classSystemMonitor(Class,"Ext.Class#extend-backwards-compatible",arguments),2===arguments.length&&Ext.isObject(Parent)&&(members=Parent,Parent=Class,Class=null);var cls;if(!Parent)throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.");return members.extend=Parent,members.preprocessors=["extend","statics","inheritableStatics","mixins","config"],Class?(cls=new ExtClass(Class,members),cls.prototype.constructor=Class):cls=new ExtClass(members),cls.prototype.override=function(o){for(var m in o)o.hasOwnProperty(m)&&(this[m]=o[m])},cls}}();!function(Class,alias,arraySlice,arrayFrom,global){function makeCtor(){function constructor(){return this.constructor.apply(this,arguments)||null}return constructor}var Manager=Ext.ClassManager={classes:{},existCache:{},namespaceRewrites:[{from:"Ext.",to:Ext}],maps:{alternateToName:{},aliasToName:{},nameToAliases:{},nameToAlternates:{}},enableNamespaceParseCache:!0,namespaceParseCache:{},instantiators:[],isCreated:function(className){var i,ln,part,root,parts,existCache=this.existCache;if("string"!=typeof className||className.length<1)throw new Error("[Ext.ClassManager] Invalid classname, must be a string and must not be empty");if(this.classes[className]||existCache[className])return!0;for(root=global,parts=this.parseNamespace(className),i=0,ln=parts.length;i<ln;i++)if("string"!=typeof(part=parts[i]))root=part;else{if(!root||!root[part])return!1;root=root[part]}return existCache[className]=!0,this.triggerCreated(className),!0},createdListeners:[],nameCreatedListeners:{},triggerCreated:function(className){var i,ln,j,subLn,listener,name,listeners=this.createdListeners,nameListeners=this.nameCreatedListeners,alternateNames=this.maps.nameToAlternates[className],names=[className];for(i=0,ln=listeners.length;i<ln;i++)listener=listeners[i],listener.fn.call(listener.scope,className);for(alternateNames&&names.push.apply(names,alternateNames),i=0,ln=names.length;i<ln;i++)if(name=names[i],listeners=nameListeners[name]){for(j=0,subLn=listeners.length;j<subLn;j++)listener=listeners[j],listener.fn.call(listener.scope,name);delete nameListeners[name]}},onCreated:function(fn,scope,className){Ext.classSystemMonitor&&Ext.classSystemMonitor(className,"Ext.ClassManager#onCreated",arguments);var listeners=this.createdListeners,nameListeners=this.nameCreatedListeners,listener={fn:fn,scope:scope};if(className){if(this.isCreated(className))return void fn.call(scope,className);nameListeners[className]||(nameListeners[className]=[]),nameListeners[className].push(listener)}else listeners.push(listener)},parseNamespace:function(namespace){if("string"!=typeof namespace)throw new Error("[Ext.ClassManager] Invalid namespace, must be a string");var parts,rewrites,root,name,rewrite,from,to,i,ln,cache=this.namespaceParseCache;if(this.enableNamespaceParseCache&&cache.hasOwnProperty(namespace))return cache[namespace];for(parts=[],rewrites=this.namespaceRewrites,root=global,name=namespace,i=0,ln=rewrites.length;i<ln;i++)if(rewrite=rewrites[i],from=rewrite.from,to=rewrite.to,name===from||name.substring(0,from.length)===from){name=name.substring(from.length),"string"!=typeof to?root=to:parts=parts.concat(to.split("."));break}return parts.push(root),parts=parts.concat(name.split(".")),this.enableNamespaceParseCache&&(cache[namespace]=parts),parts},setNamespace:function(name,value){var i,part,root=global,parts=this.parseNamespace(name),ln=parts.length-1,leaf=parts[ln];for(i=0;i<ln;i++)part=parts[i],"string"!=typeof part?root=part:(root[part]||(root[part]={}),root=root[part]);return root[leaf]=value,root[leaf]},createNamespaces:function(){var parts,part,i,j,ln,subLn,root=global;for(i=0,ln=arguments.length;i<ln;i++)for(parts=this.parseNamespace(arguments[i]),j=0,subLn=parts.length;j<subLn;j++)part=parts[j],"string"!=typeof part?root=part:(root[part]||(root[part]={}),root=root[part]);return root},set:function(name,value){var alternates,me=this,maps=me.maps,nameToAlternates=maps.nameToAlternates,targetName=me.getName(value);return me.classes[name]=me.setNamespace(name,value),targetName&&targetName!==name&&(maps.alternateToName[name]=targetName,alternates=nameToAlternates[targetName]||(nameToAlternates[targetName]=[]),alternates.push(name)),this},get:function(name){var root,parts,part,i,ln,classes=this.classes;if(classes[name])return classes[name];for(root=global,parts=this.parseNamespace(name),i=0,ln=parts.length;i<ln;i++)if("string"!=typeof(part=parts[i]))root=part;else{if(!root||!root[part])return null;root=root[part]}return root},setAlias:function(cls,alias){var className,aliasToNameMap=this.maps.aliasToName,nameToAliasesMap=this.maps.nameToAliases;return className="string"==typeof cls?cls:this.getName(cls),alias&&aliasToNameMap[alias]!==className&&(aliasToNameMap[alias]&&Ext.isDefined(global.console)&&global.console.log("[Ext.ClassManager] Overriding existing alias: '"+alias+"' of: '"+aliasToNameMap[alias]+"' with: '"+className+"'. Be sure it's intentional."),aliasToNameMap[alias]=className),nameToAliasesMap[className]||(nameToAliasesMap[className]=[]),alias&&Ext.Array.include(nameToAliasesMap[className],alias),this},addNameAliasMappings:function(aliases){var className,aliasList,alias,i,aliasToNameMap=this.maps.aliasToName,nameToAliasesMap=this.maps.nameToAliases;for(className in aliases)for(aliasList=nameToAliasesMap[className]||(nameToAliasesMap[className]=[]),i=0;i<aliases[className].length;i++)alias=aliases[className][i],aliasToNameMap[alias]||(aliasToNameMap[alias]=className,aliasList.push(alias));return this},addNameAlternateMappings:function(alternates){var className,aliasList,alternate,i,alternateToName=this.maps.alternateToName,nameToAlternates=this.maps.nameToAlternates;for(className in alternates)for(aliasList=nameToAlternates[className]||(nameToAlternates[className]=[]),i=0;i<alternates[className].length;i++)alternate=alternates[className][i],alternateToName[alternate]||(alternateToName[alternate]=className,aliasList.push(alternate));return this},getByAlias:function(alias){return this.get(this.getNameByAlias(alias))},getNameByAlias:function(alias){return this.maps.aliasToName[alias]||""},getNameByAlternate:function(alternate){return this.maps.alternateToName[alternate]||""},getAliasesByName:function(name){return this.maps.nameToAliases[name]||[]},getName:function(object){return object&&object.$className||""},getClass:function(object){return object&&object.self||null},create:function(className,data,createdFn){if(null!=className&&"string"!=typeof className)throw new Error("[Ext.define] Invalid class name '"+className+"' specified, must be a non-empty string");var ctor=makeCtor();return"function"==typeof data&&(data=data(ctor)),className&&(ctor.displayName=className),data.$className=className,new Class(ctor,data,function(){var postprocessor,i,ln,j,subLn,postprocessorProperties,postprocessorProperty,postprocessorStack=data.postprocessors||Manager.defaultPostprocessors,registeredPostprocessors=Manager.postprocessors,postprocessors=[];for(delete data.postprocessors,i=0,ln=postprocessorStack.length;i<ln;i++)if("string"==typeof(postprocessor=postprocessorStack[i])){if(postprocessor=registeredPostprocessors[postprocessor],!0===(postprocessorProperties=postprocessor.properties))postprocessors.push(postprocessor.fn);else if(postprocessorProperties)for(j=0,subLn=postprocessorProperties.length;j<subLn;j++)if(postprocessorProperty=postprocessorProperties[j],data.hasOwnProperty(postprocessorProperty)){postprocessors.push(postprocessor.fn);break}}else postprocessors.push(postprocessor);data.postprocessors=postprocessors,data.createdFn=createdFn,Manager.processCreate(className,this,data)})},processCreate:function(className,cls,clsData){var me=this,postprocessor=clsData.postprocessors.shift(),createdFn=clsData.createdFn;if(!postprocessor)return Ext.classSystemMonitor&&Ext.classSystemMonitor(className,"Ext.ClassManager#classCreated",arguments),className&&me.set(className,cls),createdFn&&createdFn.call(cls,cls),void(className&&me.triggerCreated(className));!1!==postprocessor.call(me,className,cls,clsData,me.processCreate)&&me.processCreate(className,cls,clsData)},createOverride:function(className,data,createdFn){var me=this,overriddenClassName=data.override,requires=data.requires,uses=data.uses,compat=data.compatibility,classReady=function(){var cls,temp;requires?(temp=requires,requires=null,Ext.Loader.require(temp,classReady)):(cls=me.get(overriddenClassName),delete data.override,delete data.compatibility,delete data.requires,delete data.uses,Ext.override(cls,data),me.triggerCreated(className),uses&&Ext.Loader.addUsedClasses(uses),createdFn&&createdFn.call(cls))};return me.existCache[className]=!0,compat&&!Ext.checkVersion(compat)||me.onCreated(classReady,me,overriddenClassName),me},instantiateByAlias:function(){var alias=arguments[0],args=arraySlice.call(arguments),className=this.getNameByAlias(alias);if(!className){if(!(className=this.maps.aliasToName[alias]))throw new Error("[Ext.createByAlias] Cannot create an instance of unrecognized alias: "+alias);global.console&&global.console.warn("[Ext.Loader] Synchronously loading '"+className+"'; consider adding Ext.require('"+alias+"') above Ext.onReady"),Ext.syncRequire(className)}return args[0]=className,this.instantiate.apply(this,args)},instantiate:function(){var possibleName,cls,name=arguments[0],nameType=typeof name,args=arraySlice.call(arguments,1),alias=name;if("function"!=nameType){if("string"!=nameType&&0===args.length&&(args=[name],name=name.xclass),"string"!=typeof name||name.length<1)throw new Error("[Ext.create] Invalid class name or alias '"+name+"' specified, must be a non-empty string");cls=this.get(name)}else cls=name;if(cls||(possibleName=this.getNameByAlias(name))&&(name=possibleName,cls=this.get(name)),cls||(possibleName=this.getNameByAlternate(name))&&(name=possibleName,cls=this.get(name)),cls||(global.console&&global.console.warn("[Ext.Loader] Synchronously loading '"+name+"'; consider adding Ext.require('"+(possibleName?alias:name)+"') above Ext.onReady"),Ext.syncRequire(name),cls=this.get(name)),!cls)throw new Error("[Ext.create] Cannot create an instance of unrecognized class name / alias: "+alias);if("function"!=typeof cls)throw new Error("[Ext.create] '"+name+"' is a singleton and cannot be instantiated");return this.getInstantiator(args.length)(cls,args)},dynInstantiate:function(name,args){return args=arrayFrom(args,!0),args.unshift(name),this.instantiate.apply(this,args)},getInstantiator:function(length){var instantiator,i,args,instantiators=this.instantiators;if(!(instantiator=instantiators[length])){for(i=length,args=[],i=0;i<length;i++)args.push("a["+i+"]");instantiator=instantiators[length]=new Function("c","a","return new c("+args.join(",")+")"),instantiator.displayName="Ext.ClassManager.instantiate"+length}return instantiator},postprocessors:{},defaultPostprocessors:[],registerPostprocessor:function(name,fn,properties,position,relativeTo){return position||(position="last"),properties||(properties=[name]),this.postprocessors[name]={name:name,properties:properties||!1,fn:fn},this.setDefaultPostprocessorPosition(name,position,relativeTo),this},setDefaultPostprocessors:function(postprocessors){return this.defaultPostprocessors=arrayFrom(postprocessors),this},setDefaultPostprocessorPosition:function(name,offset,relativeName){var index,defaultPostprocessors=this.defaultPostprocessors;if("string"==typeof offset){if("first"===offset)return defaultPostprocessors.unshift(name),this;if("last"===offset)return defaultPostprocessors.push(name),this;offset="after"===offset?1:-1}return index=Ext.Array.indexOf(defaultPostprocessors,relativeName),-1!==index&&Ext.Array.splice(defaultPostprocessors,Math.max(0,index+offset),0,name),this},getNamesByExpression:function(expression){var name,alias,aliases,possibleName,regex,i,ln,nameToAliasesMap=this.maps.nameToAliases,names=[];if("string"!=typeof expression||expression.length<1)throw new Error("[Ext.ClassManager.getNamesByExpression] Expression "+expression+" is invalid, must be a non-empty string");if(-1!==expression.indexOf("*")){expression=expression.replace(/\*/g,"(.*?)"),regex=new RegExp("^"+expression+"$");for(name in nameToAliasesMap)if(nameToAliasesMap.hasOwnProperty(name))if(aliases=nameToAliasesMap[name],-1!==name.search(regex))names.push(name);else for(i=0,ln=aliases.length;i<ln;i++)if(alias=aliases[i],-1!==alias.search(regex)){names.push(name);break}}else possibleName=this.getNameByAlias(expression),possibleName?names.push(possibleName):(possibleName=this.getNameByAlternate(expression),possibleName?names.push(possibleName):names.push(expression));return names}};Manager.registerPostprocessor("alias",function(name,cls,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(name,"Ext.ClassManager#aliasPostProcessor",arguments);var i,ln,aliases=data.alias;for(i=0,ln=aliases.length;i<ln;i++)alias=aliases[i],this.setAlias(cls,alias)},["xtype","alias"]),Manager.registerPostprocessor("singleton",function(name,cls,data,fn){return Ext.classSystemMonitor&&Ext.classSystemMonitor(name,"Ext.ClassManager#singletonPostProcessor",arguments),!data.singleton||(fn.call(this,name,new cls,data),!1)}),Manager.registerPostprocessor("alternateClassName",function(name,cls,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(name,"Ext.ClassManager#alternateClassNamePostprocessor",arguments);var i,ln,alternate,alternates=data.alternateClassName;for(alternates instanceof Array||(alternates=[alternates]),i=0,ln=alternates.length;i<ln;i++){if("string"!=typeof(alternate=alternates[i]))throw new Error("[Ext.define] Invalid alternate of: '"+alternate+"' for class: '"+name+"'; must be a valid string");this.set(alternate,cls)}}),Ext.apply(Ext,{create:alias(Manager,"instantiate"),widget:function(name,config){var alias,className,T,load,xtype=name;return"string"!=typeof xtype?(config=name,xtype=config.xtype):config=config||{},config.isComponent?config:(alias="widget."+xtype,className=Manager.getNameByAlias(alias),className||(load=!0),T=Manager.get(className),load||!T?Manager.instantiateByAlias(alias,config):new T(config))},createByAlias:alias(Manager,"instantiateByAlias"),define:function(className,data,createdFn){return Ext.classSystemMonitor&&Ext.classSystemMonitor(className,"ClassManager#define",arguments),data.override?Manager.createOverride.apply(Manager,arguments):Manager.create.apply(Manager,arguments)},undefine:function(className){Ext.classSystemMonitor&&Ext.classSystemMonitor(className,"Ext.ClassManager#undefine",arguments);var parts,partCount,namespace,i,classes=Manager.classes,maps=Manager.maps,aliasToName=maps.aliasToName,nameToAliases=maps.nameToAliases,alternateToName=maps.alternateToName,nameToAlternates=maps.nameToAlternates,aliases=nameToAliases[className],alternates=nameToAlternates[className];if(delete Manager.namespaceParseCache[className],delete nameToAliases[className],delete nameToAlternates[className],delete classes[className],aliases)for(i=aliases.length;i--;)delete aliasToName[aliases[i]];if(alternates)for(i=alternates.length;i--;)delete alternateToName[alternates[i]];for(parts=Manager.parseNamespace(className),partCount=parts.length-1,namespace=parts[0],i=1;i<partCount;i++)if(!(namespace=namespace[parts[i]]))return;try{delete namespace[parts[partCount]]}catch(e){namespace[parts[partCount]]=void 0}},getClassName:alias(Manager,"getName"),getDisplayName:function(object){if(object){if(object.displayName)return object.displayName;if(object.$name&&object.$class)return Ext.getClassName(object.$class)+"#"+object.$name;if(object.$className)return object.$className}return"Anonymous"},getClass:alias(Manager,"getClass"),namespace:alias(Manager,"createNamespaces")}),Ext.createWidget=Ext.widget,Ext.ns=Ext.namespace,Class.registerPreprocessor("className",function(cls,data){data.$className&&(cls.$className=data.$className,cls.displayName=cls.$className),Ext.classSystemMonitor&&Ext.classSystemMonitor(cls,"Ext.ClassManager#classNamePreprocessor",arguments)},!0,"first"),Class.registerPreprocessor("alias",function(cls,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(cls,"Ext.ClassManager#aliasPreprocessor",arguments);var i,ln,alias,xtype,prototype=cls.prototype,xtypes=arrayFrom(data.xtype),aliases=arrayFrom(data.alias),widgetPrefixLength="widget.".length,xtypesChain=Array.prototype.slice.call(prototype.xtypesChain||[]),xtypesMap=Ext.merge({},prototype.xtypesMap||{});for(i=0,ln=aliases.length;i<ln;i++){if("string"!=typeof(alias=aliases[i])||alias.length<1)throw new Error("[Ext.define] Invalid alias of: '"+alias+"' for class: '"+name+"'; must be a valid string");"widget."===alias.substring(0,widgetPrefixLength)&&(xtype=alias.substring(widgetPrefixLength),Ext.Array.include(xtypes,xtype))}for(cls.xtype=data.xtype=xtypes[0],data.xtypes=xtypes,i=0,ln=xtypes.length;i<ln;i++)xtype=xtypes[i],xtypesMap[xtype]||(xtypesMap[xtype]=!0,xtypesChain.push(xtype));for(data.xtypesChain=xtypesChain,data.xtypesMap=xtypesMap,Ext.Function.interceptAfter(data,"onClassCreated",function(){Ext.classSystemMonitor&&Ext.classSystemMonitor(cls,"Ext.ClassManager#aliasPreprocessor#afterClassCreated",arguments);var key,mixin,mixins=prototype.mixins;for(key in mixins)if(mixins.hasOwnProperty(key)&&(mixin=mixins[key],xtypes=mixin.xtypes))for(i=0,ln=xtypes.length;i<ln;i++)xtype=xtypes[i],xtypesMap[xtype]||(xtypesMap[xtype]=!0,xtypesChain.push(xtype))}),i=0,ln=xtypes.length;i<ln;i++){if("string"!=typeof(xtype=xtypes[i])||xtype.length<1)throw new Error("[Ext.define] Invalid xtype of: '"+xtype+"' for class: '"+name+"'; must be a valid non-empty string");Ext.Array.include(aliases,"widget."+xtype)}data.alias=aliases},["xtype","alias"])}(Ext.Class,Ext.Function.alias,Array.prototype.slice,Ext.Array.from,Ext.global),Ext._alternatesMetadata&&(Ext.ClassManager.addNameAlternateMappings(Ext._alternatesMetadata),Ext._alternatesMetadata=null),Ext._aliasMetadata&&(Ext.ClassManager.addNameAliasMappings(Ext._aliasMetadata),Ext._aliasMetadata=null);Ext.Loader=new function(){var Loader=this,Manager=Ext.ClassManager,Class=Ext.Class,flexSetter=Ext.Function.flexSetter,alias=Ext.Function.alias,pass=Ext.Function.pass,defer=Ext.Function.defer,arrayErase=Ext.Array.erase,isNonBrowser="undefined"==typeof window,isNodeJS=isNonBrowser&&"function"==typeof require,isJsdb=isNonBrowser&&"undefined"!=typeof system&&-1!==system.program.search(/jsdb/),isPhantomJS="undefined"!=typeof phantom&&phantom.fs,dependencyProperties=["extend","mixins","requires"],isInHistory={},history=[],slashDotSlashRe=/\/\.\//g,dotRe=/\./g,setPathCount=0;Ext.apply(Loader,{isInHistory:isInHistory,history:history,config:{enabled:!1,scriptChainDelay:!1,disableCaching:!0,disableCachingParam:"_dc",garbageCollect:!1,paths:{Ext:"."},preserveScripts:!0,scriptCharset:void 0},setConfig:function(name,value){return Ext.isObject(name)&&1===arguments.length?(Ext.merge(Loader.config,name),"paths"in name&&Ext.app.collectNamespaces(name.paths)):(Loader.config[name]=Ext.isObject(value)?Ext.merge(Loader.config[name],value):value,"paths"===name&&Ext.app.collectNamespaces(value)),Loader},getConfig:function(name){return name?Loader.config[name]:Loader.config},setPath:flexSetter(function(name,path){return Loader.config.paths[name]=path,Ext.app.namespaces[name]=!0,setPathCount++,Loader}),addClassPathMappings:function(paths){var name;if(0==setPathCount)Loader.config.paths=paths;else for(name in paths)Loader.config.paths[name]=paths[name];return setPathCount++,Loader},getPath:function(className){var path="",paths=Loader.config.paths,prefix=Loader.getPrefix(className);if(prefix.length>0){if(prefix===className)return paths[prefix];path=paths[prefix],className=className.substring(prefix.length+1)}return path.length>0&&(path+="/"),path.replace(slashDotSlashRe,"/")+className.replace(dotRe,"/")+".js"},getPrefix:function(className){var prefix,paths=Loader.config.paths,deepestPrefix="";if(paths.hasOwnProperty(className))return className;for(prefix in paths)paths.hasOwnProperty(prefix)&&prefix+"."===className.substring(0,prefix.length+1)&&prefix.length>deepestPrefix.length&&(deepestPrefix=prefix);return deepestPrefix},isAClassNameWithAKnownPrefix:function(className){var prefix=Loader.getPrefix(className);return""!==prefix&&prefix!==className},require:function(expressions,fn,scope,excludes){fn&&fn.call(scope)},syncRequire:function(){},exclude:function(excludes){return{require:function(expressions,fn,scope){return Loader.require(expressions,fn,scope,excludes)},syncRequire:function(expressions,fn,scope){return Loader.syncRequire(expressions,fn,scope,excludes)}}},onReady:function(fn,scope,withDomReady,options){var oldFn;!1!==withDomReady&&Ext.onDocumentReady&&(oldFn=fn,fn=function(){Ext.onDocumentReady(oldFn,scope,options)}),fn.call(scope)}});var queue=[],isClassFileLoaded={},isFileLoaded={},classNameToFilePathMap={},scriptElements={},readyListeners=[],usedClasses=[],requiresMap={},comparePriority=function(listenerA,listenerB){return listenerB.priority-listenerA.priority};Ext.apply(Loader,{documentHead:"undefined"!=typeof document&&(document.head||document.getElementsByTagName("head")[0]),isLoading:!1,queue:queue,isClassFileLoaded:isClassFileLoaded,isFileLoaded:isFileLoaded,readyListeners:readyListeners,optionalRequires:usedClasses,requiresMap:requiresMap,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:!1,classNameToFilePathMap:classNameToFilePathMap,scriptsLoading:0,syncModeEnabled:!1,scriptElements:scriptElements,refreshQueue:function(){var i,item,j,requires,ln=queue.length;if(!ln&&!Loader.scriptsLoading)return Loader.triggerReady();for(i=0;i<ln;i++)if(item=queue[i]){if(requires=item.requires,requires.length>Loader.numLoadedFiles)continue;for(j=0;j<requires.length;)Manager.isCreated(requires[j])?arrayErase(requires,j,1):j++;if(0===item.requires.length){arrayErase(queue,i,1),item.callback.call(item.scope),Loader.refreshQueue();break}}return Loader},injectScriptElement:function(url,onLoad,onError,scope,charset){var script=document.createElement("script"),dispatched=!1,config=Loader.config,onLoadFn=function(){dispatched||(dispatched=!0,script.onload=script.onreadystatechange=script.onerror=null,"number"==typeof config.scriptChainDelay?defer(onLoad,config.scriptChainDelay,scope):onLoad.call(scope),Loader.cleanupScriptElement(script,!1===config.preserveScripts,config.garbageCollect))},onErrorFn=function(arg){defer(onError,1,scope),Loader.cleanupScriptElement(script,!1===config.preserveScripts,config.garbageCollect)};return script.type="text/javascript",script.onerror=onErrorFn,charset=charset||config.scriptCharset,charset&&(script.charset=charset),"addEventListener"in script?script.onload=onLoadFn:"readyState"in script?script.onreadystatechange=function(){"loaded"!=this.readyState&&"complete"!=this.readyState||onLoadFn()}:script.onload=onLoadFn,script.src=url,(Loader.documentHead||document.getElementsByTagName("head")[0]).appendChild(script),script},removeScriptElement:function(url){return scriptElements[url]&&(Loader.cleanupScriptElement(scriptElements[url],!0,!!Loader.getConfig("garbageCollect")),delete scriptElements[url]),Loader},cleanupScriptElement:function(script,remove,collect){var prop;if(script.onload=script.onreadystatechange=script.onerror=null,remove&&(Ext.removeNode(script),collect))for(prop in script)try{"src"!=prop&&(script[prop]=null),delete script[prop]}catch(cleanEx){}return Loader},loadScript:function(options){var src,config=Loader.getConfig(),isString="string"==typeof options,url=isString?options:options.url,onError=!isString&&options.onError,onLoad=!isString&&options.onLoad,scope=!isString&&options.scope,onScriptError=function(){Loader.numPendingFiles--,Loader.scriptsLoading--,onError&&onError.call(scope,"Failed loading '"+url+"', please verify that the file exists"),Loader.numPendingFiles+Loader.scriptsLoading===0&&Loader.refreshQueue()},onScriptLoad=function(){Loader.numPendingFiles--,Loader.scriptsLoading--,onLoad&&onLoad.call(scope),Loader.numPendingFiles+Loader.scriptsLoading===0&&Loader.refreshQueue()};Loader.isLoading=!0,Loader.numPendingFiles++,Loader.scriptsLoading++,src=config.disableCaching?url+"?"+config.disableCachingParam+"="+Ext.Date.now():url,scriptElements[url]=Loader.injectScriptElement(src,onScriptLoad,onScriptError)},loadScriptFile:function(url,onLoad,onError,scope,synchronous){if(isFileLoaded[url])return Loader;var xhr,status,onScriptError,config=Loader.getConfig(),noCacheUrl=url+(config.disableCaching?"?"+config.disableCachingParam+"="+Ext.Date.now():""),isCrossOriginRestricted=!1,debugSourceURL="";if(scope=scope||Loader,Loader.isLoading=!0,synchronous){xhr="undefined"!=typeof XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");try{xhr.open("GET",noCacheUrl,!1),xhr.send(null)}catch(e){isCrossOriginRestricted=!0}status=1223===xhr.status?204:0!==xhr.status||"file:"!=(self.location||{}).protocol&&"ionp:"!=(self.location||{}).protocol?xhr.status:200,isCrossOriginRestricted=isCrossOriginRestricted||0===status,isCrossOriginRestricted&&!isPhantomJS?onError.call(Loader,"Failed loading synchronously via XHR: '"+url+"'; It's likely that the file is either being loaded from a different domain or from the local file system whereby cross origin requests are not allowed due to security reasons. Use asynchronous loading with Ext.require instead.",synchronous):status>=200&&status<300||304===status||isPhantomJS?(Ext.isIE||(debugSourceURL="\n//@ sourceURL="+url),Ext.globalEval(xhr.responseText+debugSourceURL),onLoad.call(scope)):onError.call(Loader,"Failed loading synchronously via XHR: '"+url+"'; please verify that the file exists. XHR status code: "+status,synchronous),xhr=null}else onScriptError=function(){onError.call(scope,"Failed loading '"+url+"', please verify that the file exists",synchronous)},scriptElements[url]=Loader.injectScriptElement(noCacheUrl,onLoad,onScriptError,scope)},syncRequire:function(){var syncModeEnabled=Loader.syncModeEnabled;syncModeEnabled||(Loader.syncModeEnabled=!0),Loader.require.apply(Loader,arguments),syncModeEnabled||(Loader.syncModeEnabled=!1),Loader.refreshQueue()},require:function(expressions,fn,scope,excludes){var callback,syncModeEnabled,filePath,expression,exclude,className,possibleClassName,i,j,ln,subLn,excluded={},included={},excludedClassNames=[],possibleClassNames=[],classNames=[],references=[];if(excludes)for(excludes="string"==typeof excludes?[excludes]:excludes,i=0,ln=excludes.length;i<ln;i++)if("string"==typeof(exclude=excludes[i])&&exclude.length>0)for(excludedClassNames=Manager.getNamesByExpression(exclude),j=0,subLn=excludedClassNames.length;j<subLn;j++)excluded[excludedClassNames[j]]=!0;for(expressions="string"==typeof expressions?[expressions]:expressions||[],callback=fn?fn.length>0?function(){var i,ln,classes=[];for(i=0,ln=references.length;i<ln;i++)classes.push(Manager.get(references[i]));return fn.apply(this,classes)}:fn:Ext.emptyFn,scope=scope||Ext.global,i=0,ln=expressions.length;i<ln;i++)if("string"==typeof(expression=expressions[i])&&expression.length>0)for(possibleClassNames=Manager.getNamesByExpression(expression),subLn=possibleClassNames.length,j=0;j<subLn;j++)possibleClassName=possibleClassNames[j],!0!==excluded[possibleClassName]&&(references.push(possibleClassName),Manager.isCreated(possibleClassName)||included[possibleClassName]||(included[possibleClassName]=!0,classNames.push(possibleClassName)));if(!(classNames.length>0))return callback.call(scope),Loader;if(!Loader.config.enabled)throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+(classNames.length>1?"es":"")+": "+classNames.join(", "));for(syncModeEnabled=Loader.syncModeEnabled,syncModeEnabled||queue.push({requires:classNames.slice(),callback:callback,scope:scope}),ln=classNames.length,i=0;i<ln;i++)className=classNames[i],filePath=Loader.getPath(className),syncModeEnabled&&isClassFileLoaded.hasOwnProperty(className)&&(isClassFileLoaded[className]||(Loader.numPendingFiles--,Loader.removeScriptElement(filePath),delete isClassFileLoaded[className])),isClassFileLoaded.hasOwnProperty(className)||(isClassFileLoaded[className]=!1,classNameToFilePathMap[className]=filePath,Loader.numPendingFiles++,Loader.loadScriptFile(filePath,pass(Loader.onFileLoaded,[className,filePath],Loader),pass(Loader.onFileLoadError,[className,filePath],Loader),Loader,syncModeEnabled));return syncModeEnabled&&(callback.call(scope),1===ln)?Manager.get(className):Loader},onFileLoaded:function(className,filePath){var loaded=isClassFileLoaded[className];if(Loader.numLoadedFiles++,isClassFileLoaded[className]=!0,isFileLoaded[filePath]=!0,loaded||Loader.numPendingFiles--,0===Loader.numPendingFiles&&Loader.refreshQueue(),!Loader.syncModeEnabled&&0===Loader.numPendingFiles&&Loader.isLoading&&!Loader.hasFileLoadError){var requires,i,ln,j,subLn,missingClasses=[],missingPaths=[];for(i=0,ln=queue.length;i<ln;i++)for(requires=queue[i].requires,j=0,subLn=requires.length;j<subLn;j++)isClassFileLoaded[requires[j]]&&missingClasses.push(requires[j]);if(missingClasses.length<1)return;if(missingClasses=Ext.Array.filter(Ext.Array.unique(missingClasses),function(item){return!requiresMap.hasOwnProperty(item)},Loader),missingClasses.length<1)return;for(i=0,ln=missingClasses.length;i<ln;i++)missingPaths.push(classNameToFilePathMap[missingClasses[i]]);throw new Error("The following classes are not declared even if their files have been loaded: '"+missingClasses.join("', '")+"'. Please check the source code of their corresponding files for possible typos: '"+missingPaths.join("', '"))}},onFileLoadError:function(className,filePath,errorMessage,isSynchronous){throw Loader.numPendingFiles--,Loader.hasFileLoadError=!0,new Error("[Ext.Loader] "+errorMessage)},addUsedClasses:function(classes){var cls,i,ln;if(classes)for(classes="string"==typeof classes?[classes]:classes,i=0,ln=classes.length;i<ln;i++)"string"!=typeof(cls=classes[i])||Ext.Array.contains(usedClasses,cls)||usedClasses.push(cls);return Loader},triggerReady:function(){var listener,refClasses=usedClasses;if(Loader.isLoading&&(Loader.isLoading=!1,0!==refClasses.length))return refClasses=refClasses.slice(),usedClasses.length=0,Loader.require(refClasses,Loader.triggerReady,Loader),Loader;for(Ext.Array.sort(readyListeners,comparePriority);readyListeners.length&&!Loader.isLoading;)listener=readyListeners.shift(),listener.fn.call(listener.scope);return Loader},onReady:function(fn,scope,withDomReady,options){var oldFn;!1!==withDomReady&&Ext.onDocumentReady&&(oldFn=fn,fn=function(){Ext.onDocumentReady(oldFn,scope,options)}),Loader.isLoading?readyListeners.push({fn:fn,scope:scope,priority:options&&options.priority||0}):fn.call(scope)},historyPush:function(className){return className&&isClassFileLoaded.hasOwnProperty(className)&&!isInHistory[className]&&(isInHistory[className]=!0,history.push(className)),Loader}}),Ext.disableCacheBuster=function(disable,path){var date=new Date;date.setTime(date.getTime()+24*(disable?3650:-1)*60*60*1e3),date=date.toGMTString(),document.cookie="ext-cache=1; expires="+date+"; path="+(path||"/")},isNonBrowser&&(isNodeJS?Ext.apply(Loader,{syncModeEnabled:!0,setPath:flexSetter(function(name,path){return path=require("fs").realpathSync(path),Loader.config.paths[name]=path,Loader}),loadScriptFile:function(filePath,onLoad,onError,scope,synchronous){require(filePath),onLoad.call(scope)}}):isJsdb&&Ext.apply(Loader,{syncModeEnabled:!0,loadScriptFile:function(filePath,onLoad,onError,scope,synchronous){load(filePath),onLoad.call(scope)}})),Ext.require=alias(Loader,"require"),Ext.syncRequire=alias(Loader,"syncRequire"),Ext.exclude=alias(Loader,"exclude"),Ext.onReady=function(fn,scope,options){Loader.onReady(fn,scope,!0,options)},Class.registerPreprocessor("loader",function(cls,data,hooks,continueFn){Ext.classSystemMonitor&&Ext.classSystemMonitor(cls,"Ext.Loader#loaderPreprocessor",arguments);var dependency,i,j,ln,subLn,value,propertyName,propertyValue,requiredMap,me=this,dependencies=[],className=Manager.getName(cls);for(i=0,ln=dependencyProperties.length;i<ln;i++)if(propertyName=dependencyProperties[i],data.hasOwnProperty(propertyName))if("string"==typeof(propertyValue=data[propertyName]))dependencies.push(propertyValue);else if(propertyValue instanceof Array)for(j=0,subLn=propertyValue.length;j<subLn;j++)"string"==typeof(value=propertyValue[j])&&dependencies.push(value);else if("function"!=typeof propertyValue)for(j in propertyValue)propertyValue.hasOwnProperty(j)&&"string"==typeof(value=propertyValue[j])&&dependencies.push(value);if(0!==dependencies.length){var detectDeadlock,deadlockPath=[];if(className){for(requiresMap[className]=dependencies,requiredMap=Loader.requiredByMap||(Loader.requiredByMap={}),i=0,ln=dependencies.length;i<ln;i++)dependency=dependencies[i],(requiredMap[dependency]||(requiredMap[dependency]=[])).push(className);detectDeadlock=function(cls){if(deadlockPath.push(cls),requiresMap[cls]){if(Ext.Array.contains(requiresMap[cls],className))throw new Error("Deadlock detected while loading dependencies! '"+className+"' and '"+deadlockPath[1]+"' mutually require each other. Path: "+deadlockPath.join(" -> ")+" -> "+deadlockPath[0]);for(i=0,ln=requiresMap[cls].length;i<ln;i++)detectDeadlock(requiresMap[cls][i])}},detectDeadlock(className)}return Loader.require(dependencies,function(){for(i=0,ln=dependencyProperties.length;i<ln;i++)if(propertyName=dependencyProperties[i],data.hasOwnProperty(propertyName))if("string"==typeof(propertyValue=data[propertyName]))data[propertyName]=Manager.get(propertyValue);else if(propertyValue instanceof Array)for(j=0,subLn=propertyValue.length;j<subLn;j++)"string"==typeof(value=propertyValue[j])&&(data[propertyName][j]=Manager.get(value));else if("function"!=typeof propertyValue)for(var k in propertyValue)propertyValue.hasOwnProperty(k)&&"string"==typeof(value=propertyValue[k])&&(data[propertyName][k]=Manager.get(value));continueFn.call(me,cls,data,hooks)}),!1}},!0,"after","className"),Manager.registerPostprocessor("uses",function(name,cls,data){Ext.classSystemMonitor&&Ext.classSystemMonitor(cls,"Ext.Loader#usesPostprocessor",arguments);var uses=data.uses;uses&&Loader.addUsedClasses(uses)}),Manager.onCreated(Loader.historyPush)},Ext._classPathMetadata&&(Ext.Loader.addClassPathMappings(Ext._classPathMetadata),Ext._classPathMetadata=null),function(){var scripts=document.getElementsByTagName("script"),currentScript=scripts[scripts.length-1],src=currentScript.src,path=src.substring(0,src.lastIndexOf("/")+1),Loader=Ext.Loader;-1!=src.indexOf("/platform/core/src/class/")?path+="../../../../extjs/":-1!=src.indexOf("/core/src/class/")&&(path+="../../../"),Loader.setConfig({enabled:!0,disableCaching:!/[?&](?:cache|disableCacheBuster)\b/i.test(location.search)&&!/(^|[ ;])ext-cache=1/.test(document.cookie),paths:{Ext:path+"src"}})}(),Ext._endTime=(new Date).getTime(),Ext._beforereadyhandler&&Ext._beforereadyhandler();Ext.Error=Ext.extend(Error,{statics:{ignore:!1,raise:function(err){err=err||{},Ext.isString(err)&&(err={msg:err});var msg,method=this.raise.caller;if(method&&(method.$name&&(err.sourceMethod=method.$name),method.$owner&&(err.sourceClass=method.$owner.$className)),!0!==Ext.Error.handle(err))throw msg=Ext.Error.prototype.toString.call(err),Ext.log({msg:msg,level:"error",dump:err,stack:!0}),new Ext.Error(err)},handle:function(){return Ext.Error.ignore}},name:"Ext.Error",constructor:function(config){Ext.isString(config)&&(config={msg:config});var me=this;Ext.apply(me,config),me.message=me.message||me.msg},toString:function(){var me=this;return(me.sourceClass?me.sourceClass:"")+(me.sourceMethod?"."+me.sourceMethod+"(): ":"")+(me.msg||"(No description provided)")}}),Ext.deprecated=function(suggestion){function fail(){Ext.Error.raise('The method "'+fail.$owner.$className+"."+fail.$name+'" has been removed. '+suggestion)}return suggestion||(suggestion=""),fail},function(){function notify(){var counters=Ext.log.counters,supports=Ext.supports,hasOnError=supports&&supports.WindowOnError;counters&&counters.error+counters.warn+counters.info+counters.log&&(msg=["Logged Errors:",counters.error,"Warnings:",counters.warn,"Info:",counters.info,"Log:",counters.log].join(" "),errors?msg="*** Errors: "+errors+" - "+msg:counters.error&&(msg="*** "+msg),win.status=msg),Ext.isDefined(Ext.Error.notify)||(Ext.Error.notify=Ext.isIE6||Ext.isIE7),Ext.Error.notify&&(hasOnError?errors:counters&&counters.error)&&(Ext.Error.notify=!1,timer&&(win.clearInterval(timer),timer=null),alert("Unhandled error on page: See console or log"),poll())}function poll(){timer=win.setInterval(notify,1e3)}var timer,msg,errors=0,win=Ext.global;"undefined"!=typeof window&&poll()}();Ext.JSON=new function(){var me=this,encodingFunction,decodingFunction,useNative=null,useHasOwn=!!{}.hasOwnProperty,isNative=function(){return null===useNative&&(useNative=Ext.USE_NATIVE_JSON&&window.JSON&&"[object JSON]"==JSON.toString()),useNative},pad=function(n){return n<10?"0"+n:n},doDecode=function(json){return eval("("+json+")")},doEncode=function(o,newline){return null===o||void 0===o?"null":Ext.isDate(o)?Ext.JSON.encodeDate(o):Ext.isString(o)?Ext.JSON.encodeString(o):"number"==typeof o?isFinite(o)?String(o):"null":Ext.isBoolean(o)?String(o):o.toJSON?o.toJSON():Ext.isArray(o)?encodeArray(o,newline):Ext.isObject(o)?encodeObject(o,newline):"function"==typeof o?"null":"undefined"},m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\","\v":"\\u000b"},charToReplace=/[\\\"\x00-\x1f\x7f-\uffff]/g,encodeString=function(s){return'"'+s.replace(charToReplace,function(a){var c=m[a];return"string"==typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'},encodeArrayPretty=function(o,newline){var i,len=o.length,cnewline=newline+"   ",sep=","+cnewline,a=["[",cnewline];for(i=0;i<len;i+=1)a.push(Ext.JSON.encodeValue(o[i],cnewline),sep);return a[a.length-1]=newline+"]",a.join("")},encodeObjectPretty=function(o,newline){var i,val,cnewline=newline+"   ",sep=","+cnewline,a=["{",cnewline];for(i in o)if(val=o[i],!useHasOwn||o.hasOwnProperty(i)){if("function"==typeof val||void 0===val)continue;a.push(Ext.JSON.encodeValue(i)+": "+Ext.JSON.encodeValue(val,cnewline),sep)}return a[a.length-1]=newline+"}",a.join("")},encodeArray=function(o,newline){if(newline)return encodeArrayPretty(o,newline);var i,a=["[",""],len=o.length;for(i=0;i<len;i+=1)a.push(Ext.JSON.encodeValue(o[i]),",");return a[a.length-1]="]",a.join("")},encodeObject=function(o,newline){if(newline)return encodeObjectPretty(o,newline);var i,val,a=["{",""];for(i in o)if(val=o[i],!useHasOwn||o.hasOwnProperty(i)){if("function"==typeof val||void 0===val)continue;a.push(Ext.JSON.encodeValue(i),":",Ext.JSON.encodeValue(val),",")}return a[a.length-1]="}",a.join("")};me.encodeString=encodeString,me.encodeValue=doEncode,me.encodeDate=function(o){return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'},me.encode=function(o){return encodingFunction||(encodingFunction=isNative()?JSON.stringify:me.encodeValue),encodingFunction(o)},me.decode=function(json,safe){decodingFunction||(decodingFunction=isNative()?JSON.parse:doDecode);try{return decodingFunction(json)}catch(e){if(!0===safe)return null;Ext.Error.raise({sourceClass:"Ext.JSON",sourceMethod:"decode",msg:"You're trying to decode an invalid JSON String: "+json})}}},Ext.encode=Ext.JSON.encode,Ext.decode=Ext.JSON.decode;Ext.apply(Ext,{userAgent:navigator.userAgent.toLowerCase(),cache:{},idSeed:1e3,windowId:"ext-window",documentId:"ext-document",isReady:!1,enableGarbageCollector:!0,enableListenerCollection:!0,rootHierarchyState:{},addCacheEntry:function(id,el,dom){(dom=dom||el.dom)||Ext.Error.raise("Cannot add an entry to the element cache without the DOM node");var cache=Ext.cache,key=id||el&&el.id||dom.id,entry=cache[key]||(cache[key]={data:{},events:{},dom:dom,skipGarbageCollection:!(!dom.getElementById&&!dom.navigator)});return el&&(el.$cache=entry,entry.el=el),entry},updateCacheEntry:function(cacheItem,dom){return cacheItem.dom=dom,cacheItem.el&&(cacheItem.el.dom=dom),cacheItem},id:function(el,prefix){var me=this,sandboxPrefix="";return el=Ext.getDom(el,!0)||{},el===document?el.id=me.documentId:el===window&&(el.id=me.windowId),el.id||(me.isSandboxed&&(sandboxPrefix=Ext.sandboxName.toLowerCase()+"-"),el.id=sandboxPrefix+(prefix||"ext-gen")+ ++Ext.idSeed),el.id},escapeId:function(){var validIdRe=/^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,escapeRx=/([\W]{1})/g,leadingNumRx=/^(\d)/g,escapeFn=function(match,capture){return"\\"+capture},numEscapeFn=function(match,capture){return"\\00"+capture.charCodeAt(0).toString(16)+" "};return function(id){return validIdRe.test(id)?id:id.replace(escapeRx,escapeFn).replace(leadingNumRx,numEscapeFn)}}(),getBody:function(){var body;return function(){return body||(body=Ext.get(document.body))}}(),getHead:function(){var head;return function(){return head||(head=Ext.get(document.getElementsByTagName("head")[0]))}}(),getDoc:function(){var doc;return function(){return doc||(doc=Ext.get(document))}}(),getOrientation:function(){return window.innerHeight>window.innerWidth?"portrait":"landscape"},destroy:function(){var i,arg,ln=arguments.length;for(i=0;i<ln;i++)(arg=arguments[i])&&(Ext.isArray(arg)?this.destroy.apply(this,arg):arg.isStore?arg.destroyStore():Ext.isFunction(arg.destroy)?arg.destroy():arg.dom&&arg.remove())},callback:function(callback,scope,args,delay){var fn,ret;return Ext.isFunction(callback)?fn=callback:scope&&Ext.isString(callback)&&((fn=scope[callback])||Ext.Error.raise('No method named "'+callback+'"')),fn&&(args=args||[],scope=scope||window,delay?Ext.defer(fn,delay,scope,args):ret=fn.apply(scope,args)),ret},resolveMethod:function(fn,scope){return Ext.isFunction(fn)?fn:(Ext.isObject(scope)&&Ext.isFunction(scope[fn])||Ext.Error.raise('No method named "'+fn+'"'),scope[fn])},htmlEncode:function(value){return Ext.String.htmlEncode(value)},htmlDecode:function(value){return Ext.String.htmlDecode(value)},urlAppend:function(url,s){return Ext.String.urlAppend(url,s)}}),Ext.ns=Ext.namespace,window.undefined=window.undefined,function(){function dumpObject(object){var member,type,value,name,members=[];for(name in object)if(object.hasOwnProperty(name)){if(value=object[name],"function"==(type=typeof value))continue;member="undefined"==type?type:null===value||primitiveRe.test(type)||Ext.isDate(value)?Ext.encode(value):Ext.isArray(value)?"[ ]":Ext.isObject(value)?"{ }":type,members.push(Ext.encode(name)+": "+member)}return members.length?" \nData: {\n  "+members.join(",\n  ")+"\n}":""}function log(message){var options,dump,stack,out,max,con=Ext.global.console,level="log",indent=log.indent||0;log.indent=indent,"string"!=typeof message&&(options=message,message=options.msg||"",level=options.level||level,dump=options.dump,stack=options.stack,options.indent?++log.indent:options.outdent&&(log.indent=indent=Math.max(indent-1,0)),!dump||con&&con.dir||(message+=dumpObject(dump),dump=null)),arguments.length>1&&(message+=Array.prototype.slice.call(arguments,1).join("")),message=indent?Ext.String.repeat(" ",log.indentSize*indent)+message:message,"log"!=level&&(message="["+level.charAt(0).toUpperCase()+"] "+message),con?(con[level]?con[level](message):con.log(message),dump&&con.dir(dump),stack&&con.trace&&(con.firebug&&"error"==level||con.trace())):Ext.isOpera?opera.postError(message):(out=log.out,max=log.max,out.length>=max&&Ext.Array.erase(out,0,out.length-3*Math.floor(max/4)),out.push(message)),++log.count,++log.counters[level]}function logx(level,args){"string"==typeof args[0]&&args.unshift({}),args[0].level=level,log.apply(this,args)}var nullLog,check=function(regex){return regex.test(Ext.userAgent)},isStrict="CSS1Compat"==document.compatMode,version=function(is,regex){var m;return is&&(m=regex.exec(Ext.userAgent))?parseFloat(m[1]):0},docMode=document.documentMode,isOpera=check(/opera/),isOpera10_5=isOpera&&check(/version\/10\.5/),isChrome=check(/\bchrome\b/),isWebKit=check(/webkit/),isSafari=!isChrome&&check(/safari/),isSafari2=isSafari&&check(/applewebkit\/4/),isSafari3=isSafari&&check(/version\/3/),isSafari4=isSafari&&check(/version\/4/),isSafari5_0=isSafari&&check(/version\/5\.0/),isSafari5=isSafari&&check(/version\/5/),isIE=!isOpera&&(check(/msie/)||check(/trident/)),isIE7=isIE&&(check(/msie 7/)&&8!=docMode&&9!=docMode&&10!=docMode||7==docMode),isIE8=isIE&&(check(/msie 8/)&&7!=docMode&&9!=docMode&&10!=docMode||8==docMode),isIE9=isIE&&(check(/msie 9/)&&7!=docMode&&8!=docMode&&10!=docMode||9==docMode),isIE10=isIE&&(check(/msie 10/)&&7!=docMode&&8!=docMode&&9!=docMode||10==docMode),isIE11=isIE&&(check(/trident\/7\.0/)&&7!=docMode&&8!=docMode&&9!=docMode&&10!=docMode||11==docMode),isIE6=isIE&&check(/msie 6/),isGecko=!isWebKit&&!isIE&&check(/gecko/),isGecko3=isGecko&&check(/rv:1\.9/),isGecko4=isGecko&&check(/rv:2\.0/),isGecko5=isGecko&&check(/rv:5\./),isGecko10=isGecko&&check(/rv:10\./),isFF3_0=isGecko3&&check(/rv:1\.9\.0/),isFF3_5=isGecko3&&check(/rv:1\.9\.1/),isFF3_6=isGecko3&&check(/rv:1\.9\.2/),isWindows=check(/windows|win32/),isMac=check(/macintosh|mac os x/),isLinux=check(/linux/),scrollbarSize=null,chromeVersion=version(!0,/\bchrome\/(\d+\.\d+)/),firefoxVersion=version(!0,/\bfirefox\/(\d+\.\d+)/),ieVersion=version(isIE,/msie (\d+\.\d+)/),operaVersion=version(isOpera,/version\/(\d+\.\d+)/),safariVersion=version(isSafari,/version\/(\d+\.\d+)/),webKitVersion=version(isWebKit,/webkit\/(\d+\.\d+)/),isSecure=/^https/i.test(window.location.protocol);try{document.execCommand("BackgroundImageCache",!1,!0)}catch(e){}var primitiveRe=/string|number|boolean/;log.error=function(){logx("error",Array.prototype.slice.call(arguments))},log.info=function(){logx("info",Array.prototype.slice.call(arguments))},log.warn=function(){logx("warn",Array.prototype.slice.call(arguments))},log.count=0,log.counters={error:0,warn:0,info:0,log:0},log.indentSize=2,log.out=[],log.max=750,log.show=function(){window.open("","extlog").document.write(['<html><head><script type="text/javascript">',"var lastCount = 0;","function update () {","var ext = window.opener.Ext,","extlog = ext && ext.log;","if (extlog && extlog.out && lastCount != extlog.count) {","lastCount = extlog.count;",'var s = "<tt>" + extlog.out.join("~~~").replace(/[&]/g, "&amp;").replace(/[<]/g, "&lt;").replace(/[ ]/g, "&#160;").replace(/\\~\\~\\~/g, "<br/>") + "</tt>";',"document.body.innerHTML = s;","}","setTimeout(update, 1000);","}","setTimeout(update, 1000);","<\/script></head><body></body></html>"].join(""))},nullLog=function(){},nullLog.info=nullLog.warn=nullLog.error=Ext.emptyFn,Ext.setVersion("ext","4.2.2.1144"),Ext.setVersion("extjs","4.2.2.1144"),Ext.apply(Ext,{SSL_SECURE_URL:isSecure&&isIE?"javascript:''":"about:blank",plainTableCls:Ext.buildSettings.baseCSSPrefix+"table-plain",plainListCls:Ext.buildSettings.baseCSSPrefix+"list-plain",enableNestedListenerRemoval:!1,USE_NATIVE_JSON:!1,getDom:function(el,strict){if(!el||!document)return null;if(el.dom)return el.dom;if("string"==typeof el){var e=Ext.getElementById(el);return e&&isIE&&strict?el==e.getAttribute("id")?e:null:e}return el},removeNode:isIE6||isIE7||isIE8?function(){var d;return function(n){if(n&&"BODY"!=n.tagName.toUpperCase()){Ext.enableNestedListenerRemoval?Ext.EventManager.purgeElement(n):Ext.EventManager.removeAll(n);var cache=Ext.cache,id=n.id;cache[id]&&(delete cache[id].dom,delete cache[id]),isIE8&&n.parentNode&&n.parentNode.removeChild(n),d=d||document.createElement("div"),d.appendChild(n),d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&"BODY"!=n.tagName.toUpperCase()){Ext.enableNestedListenerRemoval?Ext.EventManager.purgeElement(n):Ext.EventManager.removeAll(n);var cache=Ext.cache,id=n.id;cache[id]&&(delete cache[id].dom,delete cache[id]),n.parentNode.removeChild(n)}},isStrict:isStrict,isIEQuirks:isIE&&!isStrict&&(isIE6||isIE7||isIE8||isIE9),isOpera:isOpera,isOpera10_5:isOpera10_5,isWebKit:isWebKit,isChrome:isChrome,isSafari:isSafari,isSafari3:isSafari3,isSafari4:isSafari4,isSafari5:isSafari5,isSafari5_0:isSafari5_0,isSafari2:isSafari2,isIE:isIE,isIE6:isIE6,isIE7:isIE7,isIE7m:isIE6||isIE7,isIE7p:isIE&&!isIE6,isIE8:isIE8,isIE8m:isIE6||isIE7||isIE8,isIE8p:isIE&&!(isIE6||isIE7),isIE9:isIE9,isIE9m:isIE6||isIE7||isIE8||isIE9,isIE9p:isIE&&!(isIE6||isIE7||isIE8),isIE10:isIE10,isIE10m:isIE6||isIE7||isIE8||isIE9||isIE10,isIE10p:isIE&&!(isIE6||isIE7||isIE8||isIE9),isIE11:isIE11,isIE11m:isIE6||isIE7||isIE8||isIE9||isIE10||isIE11,isIE11p:isIE&&!(isIE6||isIE7||isIE8||isIE9||isIE10),isGecko:isGecko,isGecko3:isGecko3,isGecko4:isGecko4,isGecko5:isGecko5,isGecko10:isGecko10,isFF3_0:isFF3_0,isFF3_5:isFF3_5,isFF3_6:isFF3_6,isFF4:4<=firefoxVersion&&firefoxVersion<5,isFF5:5<=firefoxVersion&&firefoxVersion<6,isFF10:10<=firefoxVersion&&firefoxVersion<11,isLinux:isLinux,isWindows:isWindows,isMac:isMac,chromeVersion:chromeVersion,firefoxVersion:firefoxVersion,ieVersion:ieVersion,operaVersion:operaVersion,safariVersion:safariVersion,webKitVersion:webKitVersion,isSecure:isSecure,BLANK_IMAGE_URL:isIE6||isIE7?"//www.sencha.com/s.gif":"data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},escapeRe:function(s){return s.replace(/([-.*+?\^${}()|\[\]\/\\])/g,"\\$1")},addBehaviors:function(o){if(Ext.isReady){var parts,b,s,cache={};for(b in o)(parts=b.split("@"))[1]&&(s=parts[0],cache[s]||(cache[s]=Ext.select(s)),cache[s].on(parts[1],o[b]));cache=null}else Ext.onReady(function(){Ext.addBehaviors(o)})},getScrollbarSize:function(force){if(!Ext.isReady)return{};if(force||!scrollbarSize){var db=document.body,div=document.createElement("div");div.style.width=div.style.height="100px",div.style.overflow="scroll",div.style.position="absolute",db.appendChild(div),scrollbarSize={width:div.offsetWidth-div.clientWidth,height:div.offsetHeight-div.clientHeight},db.removeChild(div)}return scrollbarSize},getScrollBarWidth:function(force){return Ext.getScrollbarSize(force).width+2},copyTo:function(dest,source,names,usePrototypeKeys){"string"==typeof names&&(names=names.split(/[,;\s]/));var n,name,nLen=names?names.length:0;for(n=0;n<nLen;n++)name=names[n],(usePrototypeKeys||source.hasOwnProperty(name))&&(dest[name]=source[name]);return dest},destroyMembers:function(o){for(var i=1,a=arguments,len=a.length;i<len;i++)Ext.destroy(o[a[i]]),delete o[a[i]]},log:log||nullLog,partition:function(arr,truth){var a,v,ret=[[],[]],aLen=arr.length;for(a=0;a<aLen;a++)v=arr[a],ret[truth&&truth(v,a,arr)||!truth&&v?0:1].push(v);return ret},invoke:function(arr,methodName){var a,v,ret=[],args=Array.prototype.slice.call(arguments,2),aLen=arr.length;for(a=0;a<aLen;a++)v=arr[a],v&&"function"==typeof v[methodName]?ret.push(v[methodName].apply(v,args)):ret.push(void 0);return ret},zip:function(){var i,j,aLen,parts=Ext.partition(arguments,function(val){return"function"!=typeof val}),arrs=parts[0],fn=parts[1][0],len=Ext.max(Ext.pluck(arrs,"length")),ret=[];for(i=0;i<len;i++)if(ret[i]=[],fn)ret[i]=fn.apply(fn,Ext.pluck(arrs,i));else for(j=0,aLen=arrs.length;j<aLen;j++)ret[i].push(arrs[j][i]);return ret},toSentence:function(items,connector){var head,tail,length=items.length;return length<=1?items[0]:(head=items.slice(0,length-1),tail=items[length-1],Ext.util.Format.format("{0} {1} {2}",head.join(", "),connector||"and",tail))},setGlyphFontFamily:function(fontFamily){Ext._glyphFontFamily=fontFamily},useShims:isIE6})}(),Ext.application=function(config){var App,paths,ns,createApp=function(){Ext.onReady(function(){Ext.app.Application.instance=new App})};if("string"==typeof config)Ext.require(config,function(){App=Ext.ClassManager.get(config),createApp()});else{if(Ext.Loader.setPath(config.name,config.appFolder||"app"),paths=config.paths)for(ns in paths)paths.hasOwnProperty(ns)&&Ext.Loader.setPath(ns,paths[ns]);config["paths processed"]=!0,Ext.define(config.name+".$application",Ext.apply({extend:"Ext.app.Application"},config),function(){App=this,createApp()})}};!function(){Ext.ns("Ext.util");var I18NFormatCleanRe,UtilFormat=Ext.util.Format={},stripTagsRE=/<\/?[^>]+>/gi,stripScriptsRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/gi,nl2brRe=/\r?\n/g,allHashes=/^#+$/,formatPattern=/[\d,\.#]+/,formatCleanRe=/[^\d\.#]/g,formatFns={};Ext.apply(UtilFormat,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:!1,undef:function(value){return void 0!==value?value:""},defaultValue:function(value,defaultValue){return void 0!==value&&""!==value?value:defaultValue},substr:"b"!="ab".substr(-1)?function(value,start,length){var str=String(value);return start<0?str.substr(Math.max(str.length+start,0),length):str.substr(start,length)}:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},usMoney:function(v){return UtilFormat.currency(v,"$",2)},currency:function(v,currencySign,decimals,end){var negativeSign="",format=",0",i=0;for(v-=0,v<0&&(v=-v,negativeSign="-"),decimals=Ext.isDefined(decimals)?decimals:UtilFormat.currencyPrecision,format+=decimals>0?".":"";i<decimals;i++)format+="0";return v=UtilFormat.number(v,format),!0===(end||UtilFormat.currencyAtEnd)?Ext.String.format("{0}{1}{2}",negativeSign,v,currencySign||UtilFormat.currencySign):Ext.String.format("{0}{1}{2}",negativeSign,currencySign||UtilFormat.currencySign,v)},date:function(v,format){return v?(Ext.isDate(v)||(v=new Date(Date.parse(v))),Ext.Date.dateFormat(v,format||Ext.Date.defaultFormat)):""},dateRenderer:function(format){return function(v){return UtilFormat.date(v,format)}},stripTags:function(v){return v?String(v).replace(stripTagsRE,""):v},stripScripts:function(v){return v?String(v).replace(stripScriptsRe,""):v},fileSize:function(){return function(size){return size<1024?1===size?"1 byte":size+" bytes":size<1048576?Math.round(10*size/1024)/10+" KB":size<1073741824?Math.round(10*size/1048576)/10+" MB":Math.round(10*size/1073741824)/10+" GB"}}(),math:function(){var fns={};return function(v,a){return fns[a]||(fns[a]=Ext.functionFactory("v","return v "+a+";")),fns[a](v)}}(),round:function(value,precision){var result=Number(value);return"number"==typeof precision&&(precision=Math.pow(10,precision),result=Math.round(value*precision)/precision),result},number:function(v,formatString){if(!formatString)return v;var formatFn=formatFns[formatString];if(!formatFn){var hasComma,splitFormat,extraChars,trimTrailingZeroes,code,originalFormatString=formatString,comma=UtilFormat.thousandSeparator,decimalSeparator=UtilFormat.decimalSeparator,precision=0,trimPart="";"/i"==formatString.substr(formatString.length-2)?(I18NFormatCleanRe||(I18NFormatCleanRe=new RegExp("[^\\d\\"+UtilFormat.decimalSeparator+"]","g")),formatString=formatString.substr(0,formatString.length-2),hasComma=-1!=formatString.indexOf(comma),splitFormat=formatString.replace(I18NFormatCleanRe,"").split(decimalSeparator)):(hasComma=-1!=formatString.indexOf(","),splitFormat=formatString.replace(formatCleanRe,"").split(".")),extraChars=formatString.replace(formatPattern,""),splitFormat.length>2?Ext.Error.raise({sourceClass:"Ext.util.Format",sourceMethod:"number",value:v,formatString:formatString,msg:"Invalid number format, should have no more than 1 decimal"}):2===splitFormat.length&&(precision=splitFormat[1].length,(trimTrailingZeroes=allHashes.test(splitFormat[1]))&&(trimPart='trailingZeroes=new RegExp(Ext.String.escapeRegex(utilFormat.decimalSeparator) + "?0+$")')),code=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,absVal,fnum,parts"+(hasComma?",thousandSeparator,thousands=[],j,n,i":"")+(extraChars?',formatString="'+formatString+'",formatPattern=/[\\d,\\.#]+/':"")+',trailingZeroes;return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"absVal=Math.abs(v);","fnum=Ext.Number.toFixed(absVal, "+precision+");",trimPart,";"],hasComma?(precision&&(code[code.length]='parts=fnum.split(".");',code[code.length]="fnum=parts[0];"),code[code.length]="if(absVal>=1000) {",code[code.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i<j;i+=n){if(i!==0){n=3;}thousands[thousands.length]=fnum.substr(i,n);}fnum=thousands.join(thousandSeparator);}",precision&&(code[code.length]="fnum += utilFormat.decimalSeparator+parts[1];")):precision&&(code[code.length]='if(utilFormat.decimalSeparator!=="."){parts=fnum.split(".");fnum=parts[0]+utilFormat.decimalSeparator+parts[1];}'),trimTrailingZeroes&&(code[code.length]='fnum=fnum.replace(trailingZeroes,"");'),code[code.length]='if(neg&&fnum!=="'+(precision?"0."+Ext.String.repeat("0",precision):"0")+'")fnum="-"+fnum;',code[code.length]="return ",code[code.length]=extraChars?"formatString.replace(formatPattern, fnum);":"fnum;",code[code.length]="};",formatFn=formatFns[originalFormatString]=Ext.functionFactory("Ext",code.join(""))(Ext)}return formatFn(v)},numberRenderer:function(format){return function(v){return UtilFormat.number(v,format)}},attributes:function(attributes){if("object"==typeof attributes){var name,result=[];for(name in attributes)result.push(name,'="',"style"===name?Ext.DomHelper.generateStyles(attributes[name],null,!0):Ext.htmlEncode(attributes[name]),'"');attributes=result.join("")}return attributes||""},plural:function(v,s,p){return v+" "+(1==v?s:p||s+"s")},nl2br:function(v){return Ext.isEmpty(v)?"":v.replace(nl2brRe,"<br/>")},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(box){if("number"==typeof(box=box||0))return{top:box,right:box,bottom:box,left:box};var parts=box.split(" "),ln=parts.length;return 1==ln?parts[1]=parts[2]=parts[3]=parts[0]:2==ln?(parts[2]=parts[0],parts[3]=parts[1]):3==ln&&(parts[3]=parts[1]),{top:parseInt(parts[0],10)||0,right:parseInt(parts[1],10)||0,bottom:parseInt(parts[2],10)||0,left:parseInt(parts[3],10)||0}},escapeRegex:function(s){return s.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}();Ext.define("Ext.util.TaskRunner",{interval:10,timerId:null,constructor:function(interval){var me=this;"number"==typeof interval?me.interval=interval:interval&&Ext.apply(me,interval),me.tasks=[],me.timerFn=Ext.Function.bind(me.onTick,me)},newTask:function(config){var task=new Ext.util.TaskRunner.Task(config);return task.manager=this,task},start:function(task){var me=this,now=Ext.Date.now();return task.pending||(me.tasks.push(task),task.pending=!0),task.stopped=!1,task.taskStartTime=now,task.taskRunTime=!1!==task.fireOnStart?0:task.taskStartTime,task.taskRunCount=0,me.firing||(!1!==task.fireOnStart?me.startTimer(0,now):me.startTimer(task.interval,now)),task},stop:function(task){return task.stopped||(task.stopped=!0,task.onStop&&task.onStop.call(task.scope||task,task)),task},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:!1,nextExpires:1e99,onTick:function(){var expires,newTasks,i,task,rt,remove,me=this,tasks=me.tasks,now=Ext.Date.now(),nextExpires=1e99,len=tasks.length;for(me.timerId=null,me.firing=!0,i=0;i<len||i<(len=tasks.length);++i){if(task=tasks[i],!(remove=task.stopped)){if((expires=task.taskRunTime+task.interval)<=now){rt=1;try{rt=task.run.apply(task.scope||task,task.args||[++task.taskRunCount])}catch(taskError){try{Ext.log({msg:taskError,level:"error"}),task.onError&&(rt=task.onError.call(task.scope||task,task,taskError))}catch(ignore){}}task.taskRunTime=now,!1===rt||task.taskRunCount===task.repeat?(me.stop(task),remove=!0):(remove=task.stopped,expires=now+task.interval)}!remove&&task.duration&&task.duration<=now-task.taskStartTime&&(me.stop(task),remove=!0)}remove?(task.pending=!1,newTasks||(newTasks=tasks.slice(0,i))):(newTasks&&newTasks.push(task),nextExpires>expires&&(nextExpires=expires))}newTasks&&(me.tasks=newTasks),me.firing=!1,me.tasks.length&&me.startTimer(nextExpires-now,Ext.Date.now()),!1!==me.fireIdleEvent&&Ext.EventManager.idleEvent.fire()},startTimer:function(timeout,now){var me=this,expires=now+timeout,timerId=me.timerId;timerId&&me.nextExpires-expires>me.interval&&(clearTimeout(timerId),timerId=null),timerId||(timeout<me.interval&&(timeout=me.interval),me.timerId=setTimeout(me.timerFn,timeout),me.nextExpires=expires)}},function(){var me=this,proto=me.prototype;proto.destroy=proto.stopAll,Ext.util.TaskManager=Ext.TaskManager=new me,me.Task=new Ext.Class({isTask:!0,stopped:!0,fireOnStart:!1,constructor:function(config){Ext.apply(this,config)},restart:function(interval){void 0!==interval&&(this.interval=interval),this.manager.start(this)},start:function(interval){this.stopped&&this.restart(interval)},stop:function(){this.manager.stop(this)}}),proto=me.Task.prototype,proto.destroy=proto.stop});Ext.define("Ext.util.TaskManager",{extend:"Ext.util.TaskRunner",alternateClassName:["Ext.TaskManager"],singleton:!0});Ext.define("Ext.perf.Accumulator",function(){function adjustSet(set,time){set.sum+=time,set.min=Math.min(set.min,time),set.max=Math.max(set.max,time)}function leaveFrame(time){var totalTime=time||getTimestamp()-this.time,me=this,accum=me.accum;++accum.count,--accum.depth||adjustSet(accum.total,totalTime),adjustSet(accum.pure,totalTime-me.childTime),(currentFrame=me.parent)&&(++currentFrame.accum.childCount,currentFrame.childTime+=totalTime)}function makeSet(){return{min:Number.MAX_VALUE,max:0,sum:0}}function makeTap(me,fn){return function(){var frame=me.enter(),ret=fn.apply(this,arguments);return frame.leave(),ret}}function setToJSON(count,childCount,calibration,set){var data={avg:0,min:set.min,max:set.max,sum:0};return count&&(calibration=calibration||0,data.sum=set.sum-childCount*calibration,data.avg=data.sum/count),data}var formatTpl,currentFrame=null,khrome=Ext.global.chrome,getTimestamp=function(){getTimestamp=function(){return(new Date).getTime()};var interval,toolbox;if(Ext.isChrome&&khrome&&khrome.Interval)interval=new khrome.Interval,interval.start(),getTimestamp=function(){return interval.microseconds()/1e3};else if(window.ActiveXObject)try{toolbox=new ActiveXObject("SenchaToolbox.Toolbox"),Ext.senchaToolbox=toolbox,getTimestamp=function(){return toolbox.milliseconds}}catch(e){}else Date.now&&(getTimestamp=Date.now);return Ext.perf.getTimestamp=Ext.perf.Accumulator.getTimestamp=getTimestamp,getTimestamp()};return{constructor:function(name){var me=this;me.count=me.childCount=me.depth=me.maxDepth=0,me.pure=makeSet(),me.total=makeSet(),me.name=name},statics:{getTimestamp:getTimestamp},format:function(calibration){formatTpl||(formatTpl=new Ext.XTemplate(["{name} - {count} call(s)",'<tpl if="count">','<tpl if="childCount">'," ({childCount} children)","</tpl>",'<tpl if="depth - 1">'," ({depth} deep)","</tpl>",'<tpl for="times">',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","</tpl>","</tpl>"].join(""),{time:function(t){return Math.round(100*t)/100}}));var data=this.getData(calibration);return data.name=this.name,data.pure.type="Pure",data.total.type="Total",data.times=[data.pure,data.total],formatTpl.apply(data)},getData:function(calibration){var me=this;return{count:me.count,childCount:me.childCount,depth:me.maxDepth,pure:setToJSON(me.count,me.childCount,calibration,me.pure),total:setToJSON(me.count,me.childCount,calibration,me.total)}},enter:function(){var me=this,frame={accum:me,leave:leaveFrame,childTime:0,parent:currentFrame};return++me.depth,me.maxDepth<me.depth&&(me.maxDepth=me.depth),currentFrame=frame,frame.time=getTimestamp(),frame},monitor:function(fn,scope,args){var frame=this.enter();args?fn.apply(scope,args):fn.call(scope),frame.leave()},report:function(){Ext.log(this.format())},tap:function(className,methodName){var klass,statik,i,parts,length,name,src,tapFunc,me=this,methods="string"==typeof methodName?[methodName]:methodName;return tapFunc=function(){if("string"==typeof className)for(klass=Ext.global,parts=className.split("."),i=0,length=parts.length;i<length;++i)klass=klass[parts[i]];else klass=className;for(i=0,length=methods.length;i<length;++i)name=methods[i],statik="!"==name.charAt(0),statik?name=name.substring(1):statik=!(name in klass.prototype),src=statik?klass:klass.prototype,src[name]=makeTap(me,src[name])},Ext.ClassManager.onCreated(tapFunc,me,className),me}}}(),function(){Ext.perf.getTimestamp=this.getTimestamp});Ext.define("Ext.perf.Monitor",{singleton:!0,alternateClassName:"Ext.Perf",requires:["Ext.perf.Accumulator"],constructor:function(){this.accumulators=[],this.accumulatorsByName={}},calibrate:function(){var frame,startTime,accum=new Ext.perf.Accumulator("$"),total=accum.total,getTimestamp=Ext.perf.Accumulator.getTimestamp,count=0;startTime=getTimestamp();do{frame=accum.enter(),frame.leave(),++count}while(total.sum<100);return(getTimestamp()-startTime)/count},get:function(name){var me=this,accum=me.accumulatorsByName[name];return accum||(me.accumulatorsByName[name]=accum=new Ext.perf.Accumulator(name),me.accumulators.push(accum)),accum},enter:function(name){return this.get(name).enter()},monitor:function(name,fn,scope){this.get(name).monitor(fn,scope)},report:function(){var me=this,accumulators=me.accumulators,calibration=me.calibrate();accumulators.sort(function(a,b){return a.name<b.name?-1:b.name<a.name?1:0}),me.updateGC(),Ext.log("Calibration: "+Math.round(100*calibration)/100+" msec/sample"),Ext.each(accumulators,function(accum){Ext.log(accum.format(calibration))})},getData:function(all){var ret={},accumulators=this.accumulators;return Ext.each(accumulators,function(accum){(all||accum.count)&&(ret[accum.name]=accum.getData())}),ret},reset:function(){Ext.each(this.accumulators,function(accum){var me=accum;me.count=me.childCount=me.depth=me.maxDepth=0,me.pure={min:Number.MAX_VALUE,max:0,sum:0},me.total={min:Number.MAX_VALUE,max:0,sum:0}})},updateGC:function(){var bucket,accumGC=this.accumulatorsByName.GC,toolbox=Ext.senchaToolbox;accumGC&&(accumGC.count=toolbox.garbageCollectionCounter||0,accumGC.count&&(bucket=accumGC.pure,accumGC.total.sum=bucket.sum=toolbox.garbageCollectionMilliseconds,bucket.min=bucket.max=bucket.sum/accumGC.count,bucket=accumGC.total,bucket.min=bucket.max=bucket.sum/accumGC.count))},watchGC:function(){Ext.perf.getTimestamp();var toolbox=Ext.senchaToolbox;toolbox&&(this.get("GC"),toolbox.watchGarbageCollector(!1))},setup:function(config){config||(config={render:{"Ext.AbstractComponent":"render"},layout:{"Ext.layout.Context":"run"}}),this.currentConfig=config;var key,prop,accum,className,methods;for(key in config)if(config.hasOwnProperty(key)){prop=config[key],accum=Ext.Perf.get(key);for(className in prop)prop.hasOwnProperty(className)&&(methods=prop[className],accum.tap(className,methods))}this.watchGC()}});Ext.is={init:function(navigator){var i,platform,platforms=this.platforms,ln=platforms.length;for(navigator=navigator||window.navigator,i=0;i<ln;i++)platform=platforms[i],this[platform.identity]=platform.regex.test(navigator[platform.property]);this.Desktop=this.Mac||this.Windows||this.Linux&&!this.Android,this.Tablet=this.iPad,this.Phone=!this.Desktop&&!this.Tablet,this.iOS=this.iPhone||this.iPad||this.iPod,this.Standalone=!!window.navigator.standalone},platforms:[{property:"platform",regex:/iPhone/i,identity:"iPhone"},{property:"platform",regex:/iPod/i,identity:"iPod"},{property:"userAgent",regex:/iPad/i,identity:"iPad"},{property:"userAgent",regex:/Blackberry/i,identity:"Blackberry"},{property:"userAgent",regex:/Android/i,identity:"Android"},{property:"platform",regex:/Mac/i,identity:"Mac"},{property:"platform",regex:/Win/i,identity:"Windows"},{property:"platform",regex:/Linux/i,identity:"Linux"}]},Ext.is.init(),function(){function getBrowserKey(){var browser=Ext.isIE6?"IE6":Ext.isIE7?"IE7":Ext.isIE8?"IE8":Ext.isIE9?"IE9":Ext.isIE10?"IE10":"";return browser?browser+(Ext.isStrict?"-strict":"-quirks"):""}var getStyle=function(element,styleName){var view=element.ownerDocument.defaultView;return((view?view.getComputedStyle(element,null):element.currentStyle)||element.style)[styleName]},supportsVectors={"IE6-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE6-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0],"IE7-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE7-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0],"IE8-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE8-strict":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1],"IE9-quirks":[0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0],"IE9-strict":[0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1],"IE10-quirks":[1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1],"IE10-strict":[1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1]};Ext.supports={init:function(){var test,vector,value,me=this,doc=document,toRun=me.toRun||me.tests,n=toRun.length,div=n&&Ext.isReady&&doc.createElement("div"),notRun=[],browserKey=getBrowserKey();for(div&&(div.innerHTML=['<div style="height:30px;width:50px;">','<div style="height:20px;width:20px;"></div>',"</div>",'<div style="width: 200px; height: 200px; position: relative; padding: 5px;">','<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>',"</div>",'<div style="position: absolute; left: 10%; top: 10%;"></div>','<div style="float:left; background-color:transparent;"></div>'].join(""),doc.body.appendChild(div)),vector=supportsVectors[browserKey];n--;)test=toRun[n],value=vector&&vector[n],void 0!==value?me[test.identity]=value:div||test.early?me[test.identity]=test.fn.call(me,doc,div):notRun.push(test);div&&doc.body.removeChild(div),me.toRun=notRun},generateVector:function(){for(var test,tests=this.tests,vector=[],i=0,ln=tests.length;i<ln;i++)test=tests[i],vector.push(this[test.identity]?1:0);return vector},PointerEvents:"pointerEvents"in document.documentElement.style,LocalStorage:function(){try{return"localStorage"in window&&null!==window.localStorage}catch(e){return!1}}(),CSS3BoxShadow:"boxShadow"in document.documentElement.style||"WebkitBoxShadow"in document.documentElement.style||"MozBoxShadow"in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:void 0!==window.orientation&&"onorientationchange"in window,DeviceMotion:"ondevicemotion"in window,Touch:"ontouchstart"in window&&!Ext.is.Desktop,TimeoutActualLateness:function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=0!==arguments.length},0)}(),tests:[{identity:"Transitions",fn:function(doc,div){for(var prefix=["webkit","Moz","o","ms","khtml"],TE="TransitionEnd",transitionEndName=[prefix[0]+TE,"transitionend",prefix[2]+TE,prefix[3]+TE,prefix[4]+TE],ln=prefix.length,i=0,out=!1;i<ln;i++)if(getStyle(div,prefix[i]+"TransitionProperty")){Ext.supports.CSS3Prefix=prefix[i],Ext.supports.CSS3TransitionEnd=transitionEndName[i],out=!0;break}return out}},{identity:"RightMargin",fn:function(doc,div){var view=doc.defaultView;return!(view&&"0px"!=view.getComputedStyle(div.firstChild.firstChild,null).marginRight)}},{identity:"DisplayChangeInputSelectionBug",early:!0,fn:function(){var webKitVersion=Ext.webKitVersion;return 0<webKitVersion&&webKitVersion<533}},{identity:"DisplayChangeTextAreaSelectionBug",early:!0,fn:function(){var webKitVersion=Ext.webKitVersion;return 0<webKitVersion&&webKitVersion<534.24}},{identity:"TransparentColor",fn:function(doc,div,view){return!((view=doc.defaultView)&&"transparent"!=view.getComputedStyle(div.lastChild,null).backgroundColor)}},{identity:"ComputedStyle",fn:function(doc,div,view){return(view=doc.defaultView)&&view.getComputedStyle}},{identity:"Svg",fn:function(doc){return!!doc.createElementNS&&!!doc.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect}},{identity:"Canvas",fn:function(doc){return!!doc.createElement("canvas").getContext}},{identity:"Vml",fn:function(doc){var d=doc.createElement("div");return d.innerHTML="\x3c!--[if vml]><br/><br/><![endif]--\x3e",2==d.childNodes.length}},{identity:"Float",fn:function(doc,div){return!!div.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(doc){return!!doc.createElement("audio").canPlayType}},{identity:"History",fn:function(){var history=window.history;return!(!history||!history.pushState)}},{identity:"CSS3DTransform",fn:function(){return"undefined"!=typeof WebKitCSSMatrix&&(new WebKitCSSMatrix).hasOwnProperty("m41")}},{identity:"CSS3LinearGradient",fn:function(doc,div){var property="background-image:",w3c="linear-gradient(left top, black, white)",options=[property+"-webkit-gradient(linear, left top, right bottom, from(black), to(white))",property+w3c,property+"-moz-linear-gradient(left top, black, white)",property+"-ms-linear-gradient(left top, black, white)",property+"-o-linear-gradient(left top, black, white)"];return div.style.cssText=options.join(";"),-1!==(""+div.style.backgroundImage).indexOf("gradient")&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(doc,div){var i,domPrefixes=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"];for(i=0;i<domPrefixes.length;i++)if(void 0!==document.body.style[domPrefixes[i]])return!0;return!1}},{identity:"GeoLocation",fn:function(){return"undefined"!=typeof navigator&&"geolocation"in navigator||"undefined"!=typeof google&&void 0!==google.gears}},{identity:"MouseEnterLeave",fn:function(doc,div){return"onmouseenter"in div&&"onmouseleave"in div}},{identity:"MouseWheel",fn:function(doc,div){return"onmousewheel"in div}},{identity:"Opacity",fn:function(doc,div){return!(Ext.isIE6||Ext.isIE7||Ext.isIE8)&&(div.firstChild.style.cssText="opacity:0.73","0.73"==div.firstChild.style.opacity)}},{identity:"Placeholder",fn:function(doc){return"placeholder"in doc.createElement("input")}},{identity:"Direct2DBug",fn:function(){return Ext.isString(document.body.style.msTransformOrigin)&&Ext.isIE10m}},{identity:"BoundingClientRect",fn:function(doc,div){return Ext.isFunction(div.getBoundingClientRect)}},{identity:"RotatedBoundingClientRect",fn:function(){var body=document.body,supports=!1,el=document.createElement("div"),style=el.style;return el.getBoundingClientRect&&(style.WebkitTransform=style.MozTransform=style.OTransform=style.transform="rotate(90deg)",style.width="100px",style.height="30px",body.appendChild(el),supports=100!==el.getBoundingClientRect().height,body.removeChild(el)),supports}},{identity:"IncludePaddingInWidthCalculation",fn:function(doc,div){return 210==div.childNodes[1].firstChild.offsetWidth}},{identity:"IncludePaddingInHeightCalculation",fn:function(doc,div){return 210==div.childNodes[1].firstChild.offsetHeight}},{identity:"ArraySort",fn:function(){var a=[1,2,3,4,5].sort(function(){return 0});return 1===a[0]&&2===a[1]&&3===a[2]&&4===a[3]&&5===a[4]}},{identity:"Range",fn:function(){return!!document.createRange}},{identity:"CreateContextualFragment",fn:function(){var range=!!Ext.supports.Range&&document.createRange();return range&&!!range.createContextualFragment}},{identity:"WindowOnError",fn:function(){return Ext.isIE||Ext.isGecko||Ext.webKitVersion>=534.16}},{identity:"TextAreaMaxLength",fn:function(){return"maxlength"in document.createElement("textarea")}},{identity:"GetPositionPercentage",fn:function(doc,div){return"10%"==getStyle(div.childNodes[2],"left")}},{identity:"PercentageHeightOverflowBug",fn:function(doc){var style,el,hasBug=!1;return Ext.getScrollbarSize().height&&(el=doc.createElement("div"),style=el.style,style.height="50px",style.width="50px",style.overflow="auto",style.position="absolute",el.innerHTML=['<div style="display:table;height:100%;">','<div style="width:51px;"></div>',"</div>"].join(""),doc.body.appendChild(el),50===el.firstChild.offsetHeight&&(hasBug=!0),doc.body.removeChild(el)),hasBug}},{identity:"xOriginBug",fn:function(doc,div){div.innerHTML='<div id="b1" style="height:100px;width:100px;direction:rtl;position:relative;overflow:scroll"><div id="b2" style="position:relative;width:100%;height:20px;"></div><div id="b3" style="position:absolute;width:20px;height:20px;top:0px;right:0px"></div></div>';var outerBox=document.getElementById("b1").getBoundingClientRect(),b2=document.getElementById("b2").getBoundingClientRect(),b3=document.getElementById("b3").getBoundingClientRect();return b2.left!==outerBox.left&&b3.right!==outerBox.right}},{identity:"ScrollWidthInlinePaddingBug",fn:function(doc){var style,el,hasBug=!1;return el=doc.createElement("div"),style=el.style,style.height="50px",style.width="50px",style.padding="10px",style.overflow="hidden",style.position="absolute",el.innerHTML='<span style="display:inline-block;zoom:1;height:60px;width:60px;"></span>',doc.body.appendChild(el),70===el.scrollWidth&&(hasBug=!0),doc.body.removeChild(el),hasBug}}]}}(),Ext.supports.init();Ext.util.DelayedTask=function(fn,scope,args,cancelOnDelay){var delay,me=this,call=function(){clearInterval(me.id),me.id=null,fn.apply(scope,args||[]),Ext.EventManager.idleEvent.fire()};cancelOnDelay="boolean"!=typeof cancelOnDelay||cancelOnDelay,me.id=null,me.delay=function(newDelay,newFn,newScope,newArgs){cancelOnDelay&&me.cancel(),"number"==typeof newDelay&&(delay=newDelay),fn=newFn||fn,scope=newScope||scope,args=newArgs||args,me.id||(me.id=setInterval(call,delay))},me.cancel=function(){me.id&&(clearInterval(me.id),me.id=null)}};Ext.define("Ext.util.Event",function(){var arraySlice=Array.prototype.slice,arrayInsert=Ext.Array.insert,toArray=Ext.Array.toArray,DelayedTask=Ext.util.DelayedTask;return{requires:"Ext.util.DelayedTask",isEvent:!0,suspended:0,noOptions:{},constructor:function(observable,name){this.name=name,this.observable=observable,this.listeners=[]},addListener:function(fn,scope,options){var listeners,listener,priority,isNegativePriority,highestNegativePriorityIndex,hasNegativePriorityIndex,length,index,i,me=this;if(scope=scope||me.observable,fn||Ext.Error.raise({sourceClass:Ext.getClassName(this.observable),sourceMethod:"addListener",msg:"The specified callback function is undefined"}),!me.isListening(fn,scope)){if(listener=me.createListener(fn,scope,options),me.firing&&(me.listeners=me.listeners.slice(0)),listeners=me.listeners,index=length=listeners.length,priority=options&&options.priority,highestNegativePriorityIndex=me._highestNegativePriorityIndex,hasNegativePriorityIndex=void 0!==highestNegativePriorityIndex,priority)if(!(isNegativePriority=priority<0)||hasNegativePriorityIndex){for(i=isNegativePriority?highestNegativePriorityIndex:0;i<length;i++)if((listeners[i].o?listeners[i].o.priority||0:0)<priority){index=i;break}}else me._highestNegativePriorityIndex=index;else hasNegativePriorityIndex&&(index=highestNegativePriorityIndex);!isNegativePriority&&index<=highestNegativePriorityIndex&&me._highestNegativePriorityIndex++,index===length?me.listeners[length]=listener:arrayInsert(me.listeners,index,[listener])}},createListener:function(fn,scope,o){scope=scope||this.observable;var me=this,listener={fn:fn,scope:scope,ev:me},handler=fn;return o&&(listener.o=o,o.single&&(handler=me.createSingle(handler,listener,o,scope)),o.target&&(handler=me.createTargeted(handler,listener,o,scope)),o.delay&&(handler=me.createDelayed(handler,listener,o,scope)),o.buffer&&(handler=me.createBuffered(handler,listener,o,scope))),listener.fireFn=handler,listener},findListener:function(fn,scope){for(var listener,s,listeners=this.listeners,i=listeners.length;i--;)if((listener=listeners[i])&&(s=listener.scope,listener.fn==fn&&s==(scope||this.observable)))return i;return-1},isListening:function(fn,scope){return-1!==this.findListener(fn,scope)},removeListener:function(fn,scope){var index,listener,highestNegativePriorityIndex,k,me=this;if(-1!=(index=me.findListener(fn,scope))){if(listener=me.listeners[index],highestNegativePriorityIndex=me._highestNegativePriorityIndex,me.firing&&(me.listeners=me.listeners.slice(0)),listener.task&&(listener.task.cancel(),delete listener.task),k=listener.tasks&&listener.tasks.length){for(;k--;)listener.tasks[k].cancel();delete listener.tasks}return me.listeners.splice(index,1),highestNegativePriorityIndex&&(index<highestNegativePriorityIndex?me._highestNegativePriorityIndex--:index===highestNegativePriorityIndex&&index===me.listeners.length&&delete me._highestNegativePriorityIndex),!0}return!1},clearListeners:function(){for(var listeners=this.listeners,i=listeners.length;i--;)this.removeListener(listeners[i].fn,listeners[i].scope)},suspend:function(){this.suspended+=1},resume:function(){this.suspended&&this.suspended--},fire:function(){var i,args,listener,len,me=this,listeners=me.listeners,count=listeners.length;if(!me.suspended&&count>0)for(me.firing=!0,args=arguments.length?arraySlice.call(arguments,0):[],len=args.length,i=0;i<count;i++)if(listener=listeners[i],listener.o&&(args[len]=listener.o),listener&&!1===listener.fireFn.apply(listener.scope||me.observable,args))return me.firing=!1;return me.firing=!1,!0},createTargeted:function(handler,listener,o,scope){return function(){o.target===arguments[0]&&handler.apply(scope,arguments)}},createBuffered:function(handler,listener,o,scope){return listener.task=new DelayedTask,function(){listener.task.delay(o.buffer,handler,scope,toArray(arguments))}},createDelayed:function(handler,listener,o,scope){return function(){var task=new DelayedTask;listener.tasks||(listener.tasks=[]),listener.tasks.push(task),task.delay(o.delay||10,handler,scope,toArray(arguments))}},createSingle:function(handler,listener,o,scope){return function(){var event=listener.ev;return event.removeListener(listener.fn,scope)&&event.observable&&event.observable.hasListeners[event.name]--,handler.apply(scope,arguments)}}}});Ext.EventManager=new function(){var readyEvent,EventManager=this,doc=document,win=window,escapeRx=/\\/g,prefix=Ext.baseCSSPrefix,supportsAddEventListener=!Ext.isIE9&&"addEventListener"in doc,initExtCss=function(){function add(c){cls.push(prefix+c)}var html,bd=doc.body||doc.getElementsByTagName("body")[0],cls=[],htmlCls=[],supportsLG=Ext.supports.CSS3LinearGradient,supportsBR=Ext.supports.CSS3BorderRadius;return Ext.scopeCss||cls.push(prefix+"body"),!!bd&&(html=bd.parentNode,Ext.isIE&&Ext.isIE9m&&(add("ie"),Ext.isIE6?add("ie6"):(add("ie7p"),Ext.isIE7?add("ie7"):(add("ie8p"),Ext.isIE8?add("ie8"):(add("ie9p"),Ext.isIE9&&add("ie9")))),Ext.isIE7m&&add("ie7m"),Ext.isIE8m&&add("ie8m"),Ext.isIE9m&&add("ie9m"),(Ext.isIE7||Ext.isIE8)&&add("ie78")),Ext.isIE10&&add("ie10"),Ext.isGecko&&(add("gecko"),Ext.isGecko3&&add("gecko3"),Ext.isGecko4&&add("gecko4"),Ext.isGecko5&&add("gecko5")),Ext.isOpera&&add("opera"),Ext.isWebKit&&add("webkit"),Ext.isSafari&&(add("safari"),Ext.isSafari2&&add("safari2"),Ext.isSafari3&&add("safari3"),Ext.isSafari4&&add("safari4"),Ext.isSafari5&&add("safari5"),Ext.isSafari5_0&&add("safari5_0")),Ext.isChrome&&add("chrome"),Ext.isMac&&add("mac"),Ext.isLinux&&add("linux"),supportsBR||add("nbr"),supportsLG||add("nlg"),html&&(Ext.isStrict&&(Ext.isIE6||Ext.isIE7)?Ext.isBorderBox=!1:Ext.isBorderBox=!0,Ext.isBorderBox||htmlCls.push(prefix+"content-box"),Ext.isStrict?htmlCls.push(prefix+"strict"):htmlCls.push(prefix+"quirks"),Ext.fly(html,"_internal").addCls(htmlCls)),Ext.fly(bd,"_internal").addCls(cls),!0)};Ext.apply(EventManager,{hasBoundOnReady:!1,hasFiredReady:!1,deferReadyEvent:1,onReadyChain:[],readyEvent:function(){return readyEvent=new Ext.util.Event,readyEvent.fire=function(){Ext._beforeReadyTime=Ext._beforeReadyTime||(new Date).getTime(),readyEvent.self.prototype.fire.apply(readyEvent,arguments),Ext._afterReadytime=(new Date).getTime()},readyEvent}(),idleEvent:new Ext.util.Event,isReadyPaused:function(){return/[?&]ext-pauseReadyFire\b/i.test(location.search)&&!Ext._continueFireReady},bindReadyEvent:function(){EventManager.hasBoundOnReady||("complete"==doc.readyState?EventManager.onReadyEvent({type:doc.readyState||"body"}):(doc.addEventListener("DOMContentLoaded",EventManager.onReadyEvent,!1),win.addEventListener("load",EventManager.onReadyEvent,!1),EventManager.hasBoundOnReady=!0))},onReadyEvent:function(e){e&&e.type&&EventManager.onReadyChain.push(e.type),EventManager.hasBoundOnReady&&(doc.removeEventListener("DOMContentLoaded",EventManager.onReadyEvent,!1),win.removeEventListener("load",EventManager.onReadyEvent,!1)),Ext.isReady||EventManager.fireDocReady()},fireDocReady:function(){Ext.isReady||(Ext._readyTime=(new Date).getTime(),Ext.isReady=!0,Ext.supports.init(),EventManager.onWindowUnload(),readyEvent.onReadyChain=EventManager.onReadyChain,Ext.isNumber(EventManager.deferReadyEvent)?(Ext.Function.defer(EventManager.fireReadyEvent,EventManager.deferReadyEvent),EventManager.hasDocReadyTimer=!0):EventManager.fireReadyEvent())},fireReadyEvent:function(){for(EventManager.hasDocReadyTimer=!1,EventManager.isFiring=!0;readyEvent.listeners.length&&!EventManager.isReadyPaused();)readyEvent.fire();EventManager.isFiring=!1,EventManager.hasFiredReady=!0,Ext.EventManager.idleEvent.fire()},onDocumentReady:function(fn,scope,options){options=options||{},options.single=!0,readyEvent.addListener(fn,scope,options),EventManager.isFiring||EventManager.hasDocReadyTimer||(Ext.isReady?EventManager.fireReadyEvent():EventManager.bindReadyEvent())},stoppedMouseDownEvent:new Ext.util.Event,propRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/,getId:function(element){var id;return element=Ext.getDom(element),id=element===doc||element===win?element===doc?Ext.documentId:Ext.windowId:Ext.id(element),Ext.cache[id]||Ext.addCacheEntry(id,null,element),id},prepareListenerConfig:function(element,config,isRemove){var key,value,args,propRe=EventManager.propRe;for(key in config)config.hasOwnProperty(key)&&(propRe.test(key)||(value=config[key],args="function"==typeof value?[element,key,value,config.scope,config]:[element,key,value.fn,value.scope,value],isRemove?EventManager.removeListener.apply(EventManager,args):EventManager.addListener.apply(EventManager,args)))},mouseEnterLeaveRe:/mouseenter|mouseleave/,normalizeEvent:function(eventName,fn){return EventManager.mouseEnterLeaveRe.test(eventName)&&!Ext.supports.MouseEnterLeave?(fn&&(fn=Ext.Function.createInterceptor(fn,EventManager.contains)),eventName="mouseenter"==eventName?"mouseover":"mouseout"):"mousewheel"!=eventName||Ext.supports.MouseWheel||Ext.isOpera||(eventName="DOMMouseScroll"),{eventName:eventName,fn:fn}},contains:function(event){event=event.browserEvent||event;var parent=event.currentTarget,child=EventManager.getRelatedTarget(event);if(parent&&parent.firstChild)for(;child;){if(child===parent)return!1;child=child.parentNode,child&&1!=child.nodeType&&(child=null)}return!0},addListener:function(element,eventName,fn,scope,options){if("string"!=typeof eventName)return void EventManager.prepareListenerConfig(element,eventName);var hasAddEventListener,bind,wrap,cache,id,cacheItem,capture,dom=element.dom||Ext.getDom(element);"string"==typeof fn&&(fn=Ext.resolveMethod(fn,scope||element)),fn||Ext.Error.raise({sourceClass:"Ext.EventManager",sourceMethod:"addListener",targetElement:element,eventName:eventName,msg:'Error adding "'+eventName+'" listener. The handler function is undefined.'}),options=options||{},bind=EventManager.normalizeEvent(eventName,fn),wrap=EventManager.createListenerWrap(dom,eventName,bind.fn,scope,options),cache=EventManager.getEventListenerCache(element.dom?element:dom,eventName),eventName=bind.eventName,hasAddEventListener=supportsAddEventListener||Ext.isIE9&&!dom.attachEvent,hasAddEventListener||(id=EventManager.normalizeId(dom))&&(cacheItem=Ext.cache[id][eventName])&&cacheItem.firing&&(cache=EventManager.cloneEventListenerCache(dom,eventName)),capture=!!options.capture,cache.push({fn:fn,wrap:wrap,scope:scope,capture:capture}),hasAddEventListener?dom.addEventListener(eventName,wrap,capture):1===cache.length&&(id=EventManager.normalizeId(dom,!0),fn=Ext.Function.bind(EventManager.handleSingleEvent,EventManager,[id,eventName],!0),Ext.cache[id][eventName]={firing:!1,fn:fn},dom.attachEvent("on"+eventName,fn)),dom==doc&&"mousedown"==eventName&&EventManager.stoppedMouseDownEvent.addListener(wrap)},normalizeId:function(dom,force){var id;return id=dom===document?Ext.documentId:dom===window?Ext.windowId:dom.id,!id&&force&&(id=EventManager.getId(dom)),id},handleSingleEvent:function(e,id,eventName){var len,i,listenerCache=EventManager.getEventListenerCache(id,eventName),attachItem=Ext.cache[id][eventName];if(!attachItem.firing){for(attachItem.firing=!0,i=0,len=listenerCache.length;i<len;++i)listenerCache[i].wrap(e);attachItem.firing=!1}},removeListener:function(element,eventName,fn,scope){if("string"!=typeof eventName)return void EventManager.prepareListenerConfig(element,eventName,!0);var id,j,cacheItem,hasRemoveEventListener,listener,wrap,dom=Ext.getDom(element),el=element.dom?element:Ext.get(dom),cache=EventManager.getEventListenerCache(el,eventName),bindName=EventManager.normalizeEvent(eventName).eventName,i=cache.length;if(dom)for(hasRemoveEventListener=supportsAddEventListener||Ext.isIE9&&!dom.detachEvent,"string"==typeof fn&&(fn=Ext.resolveMethod(fn,scope||element));i--;)if((listener=cache[i])&&(!fn||listener.fn==fn)&&(!scope||listener.scope===scope)){if(wrap=listener.wrap,wrap.task&&(clearTimeout(wrap.task),delete wrap.task),j=wrap.tasks&&wrap.tasks.length){for(;j--;)clearTimeout(wrap.tasks[j]);delete wrap.tasks}hasRemoveEventListener?dom.removeEventListener(bindName,wrap,listener.capture):(id=EventManager.normalizeId(dom,!0),cacheItem=Ext.cache[id][bindName],cacheItem&&cacheItem.firing&&(cache=EventManager.cloneEventListenerCache(dom,bindName)),1===cache.length&&(fn=cacheItem.fn,delete Ext.cache[id][bindName],dom.detachEvent("on"+bindName,fn))),wrap&&dom==doc&&"mousedown"==eventName&&EventManager.stoppedMouseDownEvent.removeListener(wrap),Ext.Array.erase(cache,i,1)}},removeAll:function(element){var cache,events,eventName,id="string"==typeof element?element:element.id;if(id&&(cache=Ext.cache[id])){events=cache.events;for(eventName in events)events.hasOwnProperty(eventName)&&EventManager.removeListener(element,eventName);cache.events={}}},purgeElement:function(element,eventName){var len,childNodes,dom=Ext.getDom(element),i=0;if(eventName?EventManager.removeListener(element,eventName):EventManager.removeAll(element),dom&&dom.childNodes)for(childNodes=dom.childNodes,len=childNodes.length;i<len;i++)EventManager.purgeElement(childNodes[i],eventName)},createListenerWrap:function(dom,ename,fn,scope,options){options=options||{};var gen,wrap=function(e,args){var f;return gen||(f=["if(!"+Ext.name+") {return;}"],options.buffer||options.delay||options.freezeEvent?(options.freezeEvent&&f.push("e = X.EventObject.setEvent(e);"),f.push("e = new X.EventObjectImpl(e, "+(options.freezeEvent?"true":"false")+");")):f.push("e = X.EventObject.setEvent(e);"),options.delegate?(f.push('var result, t = e.getTarget("'+(options.delegate+"").replace(escapeRx,"\\\\")+'", this);'),f.push("if(!t) {return;}")):f.push("var t = e.target, result;"),options.target&&f.push("if(e.target !== options.target) {return;}"),options.stopEvent?f.push("e.stopEvent();"):(options.preventDefault&&f.push("e.preventDefault();"),options.stopPropagation&&f.push("e.stopPropagation();")),!1===options.normalized&&f.push("e = e.browserEvent;"),options.buffer&&(f.push("(wrap.task && clearTimeout(wrap.task));"),f.push("wrap.task = setTimeout(function() {")),options.delay&&(f.push("wrap.tasks = wrap.tasks || [];"),f.push("wrap.tasks.push(setTimeout(function() {")),f.push("result = fn.call(scope || dom, e, t, options);"),options.single&&f.push("evtMgr.removeListener(dom, ename, fn, scope);"),"mousemove"!==ename&&"unload"!==ename&&(f.push("if (evtMgr.idleEvent.listeners.length) {"),f.push("evtMgr.idleEvent.fire();"),f.push("}")),options.delay&&f.push("}, "+options.delay+"));"),options.buffer&&f.push("}, "+options.buffer+");"),f.push("return result;"),gen=Ext.cacheableFunctionFactory("e","options","fn","scope","ename","dom","wrap","args","X","evtMgr",f.join("\n"))),gen.call(dom,e,options,fn,scope,ename,dom,wrap,args,Ext,EventManager)};return wrap},getEventCache:function(element){var elementCache,id;return element?(element.$cache?elementCache=element.$cache:(id="string"==typeof element?element:EventManager.getId(element),elementCache=Ext.cache[id]),elementCache.events||(elementCache.events={})):[]},getEventListenerCache:function(element,eventName){var eventCache=EventManager.getEventCache(element);return eventCache[eventName]||(eventCache[eventName]=[])},cloneEventListenerCache:function(element,eventName){var out,eventCache=EventManager.getEventCache(element);return out=eventCache[eventName]?eventCache[eventName].slice(0):[],eventCache[eventName]=out,out},mouseLeaveRe:/(mouseout|mouseleave)/,mouseEnterRe:/(mouseover|mouseenter)/,stopEvent:function(event){EventManager.stopPropagation(event),EventManager.preventDefault(event)},stopPropagation:function(event){event=event.browserEvent||event,event.stopPropagation?event.stopPropagation():event.cancelBubble=!0},preventDefault:function(event){if(event=event.browserEvent||event,event.preventDefault)event.preventDefault();else{event.returnValue=!1;try{(event.ctrlKey||event.keyCode>111&&event.keyCode<124)&&(event.keyCode=-1)}catch(e){}}},getRelatedTarget:function(event){event=event.browserEvent||event;var target=event.relatedTarget;return target||(EventManager.mouseLeaveRe.test(event.type)?target=event.toElement:EventManager.mouseEnterRe.test(event.type)&&(target=event.fromElement)),EventManager.resolveTextNode(target)},getPageX:function(event){return EventManager.getPageXY(event)[0]},getPageY:function(event){return EventManager.getPageXY(event)[1]},getPageXY:function(event){event=event.browserEvent||event;var x=event.pageX,y=event.pageY,docEl=doc.documentElement,body=doc.body;return x||0===x||(x=event.clientX+(docEl&&docEl.scrollLeft||body&&body.scrollLeft||0)-(docEl&&docEl.clientLeft||body&&body.clientLeft||0),y=event.clientY+(docEl&&docEl.scrollTop||body&&body.scrollTop||0)-(docEl&&docEl.clientTop||body&&body.clientTop||0)),[x,y]},getTarget:function(event){return event=event.browserEvent||event,EventManager.resolveTextNode(event.target||event.srcElement)},resolveTextNode:Ext.isGecko?function(node){if(node){var s=HTMLElement.prototype.toString.call(node);if("[xpconnect wrapped native prototype]"!==s&&"[object XULElement]"!==s)return 3==node.nodeType?node.parentNode:node}}:function(node){return node&&3==node.nodeType?node.parentNode:node},curWidth:0,curHeight:0,onWindowResize:function(fn,scope,options){var resize=EventManager.resizeEvent;resize||(EventManager.resizeEvent=resize=new Ext.util.Event,EventManager.on(win,"resize",EventManager.fireResize,null,{buffer:100})),resize.addListener(fn,scope,options)},fireResize:function(){var w=Ext.Element.getViewWidth(),h=Ext.Element.getViewHeight();EventManager.curHeight==h&&EventManager.curWidth==w||(EventManager.curHeight=h,EventManager.curWidth=w,EventManager.resizeEvent.fire(w,h))},removeResizeListener:function(fn,scope){var resize=EventManager.resizeEvent;resize&&resize.removeListener(fn,scope)},onWindowUnload:function(fn,scope,options){var unload=EventManager.unloadEvent;unload||(EventManager.unloadEvent=unload=new Ext.util.Event,EventManager.addListener(win,"unload",EventManager.fireUnload)),fn&&unload.addListener(fn,scope,options)},fireUnload:function(){try{doc=win=void 0;var gridviews,i,ln,el,cache;if(EventManager.unloadEvent.fire(),Ext.isGecko3)for(gridviews=Ext.ComponentQuery.query("gridview"),i=0,ln=gridviews.length;i<ln;i++)gridviews[i].scrollToTop();cache=Ext.cache;for(el in cache)cache.hasOwnProperty(el)&&EventManager.removeAll(el)}catch(e){}},removeUnloadListener:function(fn,scope){var unload=EventManager.unloadEvent;unload&&unload.removeListener(fn,scope)},useKeyDown:Ext.isWebKit?parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1],10)>=525:!(Ext.isGecko&&!Ext.isWindows||Ext.isOpera&&Ext.operaVersion<12),getKeyEvent:function(){return EventManager.useKeyDown?"keydown":"keypress"}}),!supportsAddEventListener&&document.attachEvent&&Ext.apply(EventManager,{pollScroll:function(){var scrollable=!0;try{document.documentElement.doScroll("left")}catch(e){scrollable=!1}return scrollable&&document.body?EventManager.onReadyEvent({type:"doScroll"}):EventManager.scrollTimeout=setTimeout(EventManager.pollScroll,20),scrollable},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var state=document.readyState;EventManager.readyStatesRe.test(state)&&EventManager.onReadyEvent({type:state})},bindReadyEvent:function(){var topContext=!0;if(!EventManager.hasBoundOnReady){try{topContext=void 0===window.frameElement}catch(e){topContext=!1}topContext&&doc.documentElement.doScroll||(EventManager.pollScroll=Ext.emptyFn),!0!==EventManager.pollScroll()&&("complete"==doc.readyState?EventManager.onReadyEvent({type:"already "+(doc.readyState||"body")}):(doc.attachEvent("onreadystatechange",EventManager.checkReadyState),window.attachEvent("onload",EventManager.onReadyEvent),EventManager.hasBoundOnReady=!0))}},onReadyEvent:function(e){e&&e.type&&EventManager.onReadyChain.push(e.type),EventManager.hasBoundOnReady&&(document.detachEvent("onreadystatechange",EventManager.checkReadyState),window.detachEvent("onload",EventManager.onReadyEvent)),Ext.isNumber(EventManager.scrollTimeout)&&(clearTimeout(EventManager.scrollTimeout),delete EventManager.scrollTimeout),Ext.isReady||EventManager.fireDocReady()},onReadyChain:[]}),Ext.onReady=function(fn,scope,options){Ext.Loader.onReady(fn,scope,!0,options)},Ext.onDocumentReady=EventManager.onDocumentReady,EventManager.on=EventManager.addListener,EventManager.un=EventManager.removeListener,Ext.onReady(initExtCss)};Ext.define("Ext.util.Observable",function(Observable){var emptyFn=Ext.emptyFn,emptyArray=[],arrayProto=Array.prototype,arraySlice=arrayProto.slice,ExtEvent=Ext.util.Event,ListenerRemover=function(observable){if(observable instanceof ListenerRemover)return observable;this.observable=observable,arguments[1].isObservable&&(this.managedListeners=!0),this.args=arraySlice.call(arguments,1)};return ListenerRemover.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)},{requires:["Ext.util.Event","Ext.EventManager"],statics:{releaseCapture:function(o){o.fireEventArgs=this.prototype.fireEventArgs},capture:function(o,fn,scope){var newFn=function(eventName,args){return fn.apply(scope,[eventName].concat(args))};this.captureArgs(o,newFn,scope)},captureArgs:function(o,fn,scope){o.fireEventArgs=Ext.Function.createInterceptor(o.fireEventArgs,fn,scope)},observe:function(cls,listeners){return cls&&(cls.isObservable||(Ext.applyIf(cls,new this),this.captureArgs(cls.prototype,cls.fireEventArgs,cls)),Ext.isObject(listeners)&&cls.on(listeners)),cls},prepareClass:function(T,mixin){if(!T.HasListeners){var HasListeners=function(){},SuperHL=T.superclass.HasListeners||mixin&&mixin.HasListeners||Observable.HasListeners;T.prototype.HasListeners=T.HasListeners=HasListeners,HasListeners.prototype=T.hasListeners=new SuperHL}}},isObservable:!0,eventsSuspended:0,constructor:function(config){var me=this;Ext.apply(me,config),me.hasListeners||(me.hasListeners=new me.HasListeners),me.events=me.events||{},me.listeners&&(me.on(me.listeners),me.listeners=null),me.bubbleEvents&&me.enableBubble(me.bubbleEvents)},onClassExtended:function(T){T.HasListeners||Observable.prepareClass(T)},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(item,ename,fn,scope,options,noDestroy){var config,passedOptions,me=this,managedListeners=me.managedListeners=me.managedListeners||[];if("string"!=typeof ename){passedOptions=arguments.length>4?options:ename,options=ename;for(ename in options)options.hasOwnProperty(ename)&&(config=options[ename],me.eventOptionsRe.test(ename)||me.addManagedListener(item,ename,config.fn||config,config.scope||options.scope||scope,config.fn?config:passedOptions,!0));if(options&&options.destroyable)return new ListenerRemover(me,item,options)}else if("string"==typeof fn&&(scope=scope||me,fn=Ext.resolveMethod(fn,scope)),fn!==emptyFn&&(managedListeners.push({item:item,ename:ename,fn:fn,scope:scope,options:options}),item.on(ename,fn,scope,options),!noDestroy&&options&&options.destroyable))return new ListenerRemover(me,item,ename,fn,scope)},removeManagedListener:function(item,ename,fn,scope){var options,config,managedListeners,length,i,me=this;if("string"!=typeof ename){options=ename;for(ename in options)options.hasOwnProperty(ename)&&(config=options[ename],me.eventOptionsRe.test(ename)||me.removeManagedListener(item,ename,config.fn||config,config.scope||options.scope||scope))}else for(managedListeners=me.managedListeners?me.managedListeners.slice():[],"string"==typeof fn&&(scope=scope||me,fn=Ext.resolveMethod(fn,scope)),i=0,length=managedListeners.length;i<length;i++)me.removeManagedListenerItem(!1,managedListeners[i],item,ename,fn,scope)},fireEvent:function(eventName){return this.fireEventArgs(eventName,arraySlice.call(arguments,1))},fireEventArgs:function(eventName,args){eventName=eventName.toLowerCase();var me=this,events=me.events,event=events&&events[eventName],ret=!0;return event&&me.hasListeners[eventName]&&(ret=me.continueFireEvent(eventName,args||emptyArray,event.bubble)),ret},continueFireEvent:function(eventName,args,bubbles){var queue,event,target=this,ret=!0;do{if(target.eventsSuspended)return(queue=target.eventQueue)&&queue.push([eventName,args,bubbles]),ret;if((event=target.events[eventName])&&!0!==event&&!1===(ret=event.fire.apply(event,args)))break}while(bubbles&&(target=target.getBubbleParent()));return ret},getBubbleParent:function(){var me=this,parent=me.getBubbleTarget&&me.getBubbleTarget();return parent&&parent.isObservable?parent:null},addListener:function(ename,fn,scope,options){var config,event,me=this,prevListenerCount=0;if("string"!=typeof ename){options=ename;for(ename in options)options.hasOwnProperty(ename)&&(config=options[ename],me.eventOptionsRe.test(ename)||me.addListener(ename,config.fn||config,config.scope||options.scope,config.fn?config:options));if(options&&options.destroyable)return new ListenerRemover(me,options)}else if(ename=ename.toLowerCase(),event=me.events[ename],event&&event.isEvent?prevListenerCount=event.listeners.length:me.events[ename]=event=new ExtEvent(me,ename),fn||Ext.Error.raise("No function passed for event "+me.$className+"."+ename),"string"==typeof fn&&(scope=scope||me,fn=Ext.resolveMethod(fn,scope)),fn!==emptyFn&&(event.addListener(fn,scope,options),event.listeners.length!==prevListenerCount&&me.hasListeners._incr_(ename),options&&options.destroyable))return new ListenerRemover(me,ename,fn,scope,options)},removeListener:function(ename,fn,scope){var config,event,options,me=this;if("string"!=typeof ename){options=ename;for(ename in options)options.hasOwnProperty(ename)&&(config=options[ename],me.eventOptionsRe.test(ename)||me.removeListener(ename,config.fn||config,config.scope||options.scope))}else ename=ename.toLowerCase(),(event=me.events[ename])&&event.isEvent&&("string"==typeof fn&&(scope=scope||me,fn=Ext.resolveMethod(fn,scope)),event.removeListener(fn,scope)&&me.hasListeners._decr_(ename))},clearListeners:function(){var event,key,events=this.events,hasListeners=this.hasListeners;for(key in events)events.hasOwnProperty(key)&&(event=events[key],event.isEvent&&(delete hasListeners[key],event.clearListeners()));this.clearManagedListeners()},purgeListeners:function(){return Ext.global.console&&Ext.global.console.warn("Observable: purgeListeners has been deprecated. Please use clearListeners."),this.clearListeners.apply(this,arguments)},clearManagedListeners:function(){for(var managedListeners=this.managedListeners||[],i=0,len=managedListeners.length;i<len;i++)this.removeManagedListenerItem(!0,managedListeners[i]);this.managedListeners=[]},removeManagedListenerItem:function(isClear,managedListener,item,ename,fn,scope){!isClear&&(managedListener.item!==item||managedListener.ename!==ename||fn&&managedListener.fn!==fn||scope&&managedListener.scope!==scope)||(managedListener.item.un(managedListener.ename,managedListener.fn,managedListener.scope),isClear||Ext.Array.remove(this.managedListeners,managedListener))},purgeManagedListeners:function(){return Ext.global.console&&Ext.global.console.warn("Observable: purgeManagedListeners has been deprecated. Please use clearManagedListeners."),this.clearManagedListeners.apply(this,arguments)},addEvents:function(o){var arg,args,i,me=this,events=me.events||(me.events={});if("string"==typeof o)for(args=arguments,i=args.length;i--;)arg=args[i],events[arg]||(events[arg]=!0);else Ext.applyIf(me.events,o)},hasListener:function(ename){return!!this.hasListeners[ename.toLowerCase()]},suspendEvents:function(queueSuspended){this.eventsSuspended+=1,queueSuspended&&!this.eventQueue&&(this.eventQueue=[])},suspendEvent:function(eventName){var i,event,len=arguments.length;for(i=0;i<len;i++)(event=this.events[arguments[i]])&&event.suspend&&event.suspend()},resumeEvent:function(){var i,event,len=arguments.length;for(i=0;i<len;i++)(event=this.events[arguments[i]])&&event.resume&&event.resume()},resumeEvents:function(){var qLen,q,me=this,queued=me.eventQueue;if(me.eventsSuspended&&!--me.eventsSuspended&&(delete me.eventQueue,queued))for(qLen=queued.length,q=0;q<qLen;q++)me.continueFireEvent.apply(me,queued[q])},relayEvents:function(origin,events,prefix){for(var oldName,me=this,len=events.length,i=0,relayers={};i<len;i++)oldName=events[i],relayers[oldName]=me.createRelayer(prefix?prefix+oldName:oldName);return me.mon(origin,relayers,null,null,void 0),new ListenerRemover(me,origin,relayers)},createRelayer:function(newName,beginEnd){var me=this;return function(){return me.fireEventArgs.call(me,newName,beginEnd?arraySlice.apply(arguments,beginEnd):arguments)}},enableBubble:function(eventNames){if(eventNames){var ename,event,i,me=this,names="string"==typeof eventNames?arguments:eventNames,length=names.length,events=me.events;for(i=0;i<length;++i)ename=names[i].toLowerCase(),event=events[ename],event&&"boolean"!=typeof event||(events[ename]=event=new ExtEvent(me,ename)),me.hasListeners._incr_(ename),event.bubble=!0}}}},function(){function getMethodEvent(method){var returnValue,v,cancel,makeCall,e=(this.methodEvents=this.methodEvents||{})[method],obj=this;return e||(this.methodEvents[method]=e={},e.originalFn=this[method],e.methodName=method,e.before=[],e.after=[],makeCall=function(fn,scope,args){void 0!==(v=fn.apply(scope||obj,args))&&("object"==typeof v?(returnValue=void 0!==v.returnValue?v.returnValue:v,cancel=!!v.cancel):!1===v?cancel=!0:returnValue=v)},this[method]=function(){var b,i,len,args=Array.prototype.slice.call(arguments,0);for(returnValue=v=void 0,cancel=!1,i=0,len=e.before.length;i<len;i++)if(b=e.before[i],makeCall(b.fn,b.scope,args),cancel)return returnValue;for(void 0!==(v=e.originalFn.apply(obj,args))&&(returnValue=v),i=0,len=e.after.length;i<len;i++)if(b=e.after[i],makeCall(b.fn,b.scope,args),cancel)return returnValue;return returnValue}),e}var globalEvents,Observable=this,proto=Observable.prototype,HasListeners=function(){},prepareMixin=function(T){if(!T.HasListeners){var proto=T.prototype;Observable.prepareClass(T,this),T.onExtended(function(U){Ext.classSystemMonitor&&Ext.classSystemMonitor("extend mixin",arguments),Observable.prepareClass(U)}),proto.onClassMixedIn?Ext.override(T,{onClassMixedIn:function(U){prepareMixin.call(this,U),this.callParent(arguments)}}):proto.onClassMixedIn=function(U){prepareMixin.call(this,U)}}};HasListeners.prototype={_decr_:function(ev){--this[ev]||delete this[ev]},_incr_:function(ev){this.hasOwnProperty(ev)?++this[ev]:this[ev]=1}},proto.HasListeners=Observable.HasListeners=HasListeners,Observable.createAlias({on:"addListener",un:"removeListener",mon:"addManagedListener",mun:"removeManagedListener"}),Observable.observeClass=Observable.observe,Ext.globalEvents=globalEvents=new Observable({events:{idle:Ext.EventManager.idleEvent,ready:Ext.EventManager.readyEvent}}),Ext.on=function(){return globalEvents.addListener.apply(globalEvents,arguments)},Ext.un=function(){return globalEvents.removeListener.apply(globalEvents,arguments)},Ext.apply(proto,{onClassMixedIn:prepareMixin,beforeMethod:function(method,fn,scope){getMethodEvent.call(this,method).before.push({fn:fn,scope:scope})},afterMethod:function(method,fn,scope){getMethodEvent.call(this,method).after.push({fn:fn,scope:scope})},removeMethodListener:function(method,fn,scope){var i,len,e=this.getMethodEvent(method);for(i=0,len=e.before.length;i<len;i++)if(e.before[i].fn==fn&&e.before[i].scope==scope)return void Ext.Array.erase(e.before,i,1);for(i=0,len=e.after.length;i<len;i++)if(e.after[i].fn==fn&&e.after[i].scope==scope)return void Ext.Array.erase(e.after,i,1)},toggleEventLogging:function(toggle){Ext.util.Observable[toggle?"capture":"releaseCapture"](this,function(en){Ext.isDefined(Ext.global.console)&&Ext.global.console.log(en,arguments)})}})});Ext.define("Ext.EventObjectImpl",{uses:["Ext.util.Point"],BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,RETURN:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,WHEEL_SCALE:function(){var scale;return Ext.isGecko?scale=3:Ext.isMac?(scale=Ext.isSafari&&Ext.webKitVersion>=532?120:12,scale*=3):scale=120,scale}(),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(event,freezeEvent){event&&this.setEvent(event.browserEvent||event,freezeEvent)},setEvent:function(event,freezeEvent){var button,me=this;return event===me||event&&event.browserEvent?event:(me.browserEvent=event,event?(button=event.button?me.btnMap[event.button]:event.which?event.which-1:-1,me.clickRe.test(event.type)&&-1==button&&(button=0),me.type=event.type,me.button=button,me.shiftKey=event.shiftKey,me.ctrlKey=event.ctrlKey||event.metaKey||!1,me.altKey=event.altKey,me.keyCode=event.keyCode,me.charCode=event.charCode,me.target=Ext.EventManager.getTarget(event),me.relatedTarget=Ext.EventManager.getRelatedTarget(event),me.currentTarget=event.currentTarget,me.xy=freezeEvent?me.getXY():null):(me.button=-1,me.shiftKey=!1,me.ctrlKey=!1,me.altKey=!1,me.keyCode=0,me.charCode=0,me.target=null,me.xy=[0,0]),me)},clone:function(){return new this.self(this.browserEvent,this)},stopEvent:function(){this.stopPropagation(),this.preventDefault()},preventDefault:function(){this.browserEvent&&Ext.EventManager.preventDefault(this.browserEvent)},stopPropagation:function(){var browserEvent=this.browserEvent;browserEvent&&("mousedown"==browserEvent.type&&Ext.EventManager.stoppedMouseDownEvent.fire(this),Ext.EventManager.stopPropagation(browserEvent))},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(key){return Ext.isWebKit?this.safariKeys[key]||key:key},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){return this.xy||(this.xy=Ext.EventManager.getPageXY(this.browserEvent)),this.xy},getTarget:function(selector,maxDepth,returnEl){return selector?Ext.fly(this.target).findParent(selector,maxDepth,returnEl):returnEl?Ext.get(this.target):this.target},getRelatedTarget:function(selector,maxDepth,returnEl){return selector&&this.relatedTarget?Ext.fly(this.relatedTarget).findParent(selector,maxDepth,returnEl):returnEl?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(delta){var scale=this.WHEEL_SCALE,ret=Math.round(delta/scale);return!ret&&delta&&(ret=delta<0?-1:1),ret},getWheelDeltas:function(){var me=this,event=me.browserEvent,dx=0,dy=0;return Ext.isDefined(event.wheelDeltaX)?(dx=event.wheelDeltaX,dy=event.wheelDeltaY):event.wheelDelta?dy=event.wheelDelta:event.detail&&(dy=-event.detail,dy>100?dy=3:dy<-100&&(dy=-3),Ext.isDefined(event.axis)&&event.axis===event.HORIZONTAL_AXIS&&(dx=dy,dy=0)),{x:me.correctWheelDelta(dx),y:me.correctWheelDelta(dy)}},getWheelDelta:function(){return this.getWheelDeltas().y},within:function(el,related,allowEl){if(el){var result,t=related?this.getRelatedTarget():this.getTarget();if(t)return result=Ext.fly(el,"_internal").contains(t),!result&&allowEl&&(result=t==Ext.getDom(el)),result}return!1},isNavKeyPress:function(){var me=this,k=this.normalizeKey(me.keyCode);return k>=33&&k<=40||k==me.RETURN||k==me.TAB||k==me.ESC},isSpecialKey:function(){var k=this.normalizeKey(this.keyCode);return"keypress"==this.type&&this.ctrlKey||this.isNavKeyPress()||k==this.BACKSPACE||k>=16&&k<=20||k>=44&&k<=46},getPoint:function(){var xy=this.getXY();return new Ext.util.Point(xy[0],xy[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:function(){function createMouseEventDispatcher(type,detail){var cancelable="mousemove"!=type;return function(targetEl,srcEvent){var xy=srcEvent.getXY(),e=API.createMouseEvent(targetEl.ownerDocument,type,!0,cancelable,detail,xy[0],xy[1],srcEvent.ctrlKey,srcEvent.altKey,srcEvent.shiftKey,srcEvent.metaKey,srcEvent.button,srcEvent.relatedTarget);API.fireEvent(targetEl,type,e)}}function cannotInject(target,srcEvent){}var API,crazyIEButtons,dispatchers={};return!Ext.isIE9m&&document.createEvent?API={createHtmlEvent:function(doc,type,bubbles,cancelable){var event=doc.createEvent("HTMLEvents");return event.initEvent(type,bubbles,cancelable),event},createMouseEvent:function(doc,type,bubbles,cancelable,detail,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget){var event=doc.createEvent("MouseEvents"),view=doc.defaultView||window;return event.initMouseEvent?event.initMouseEvent(type,bubbles,cancelable,view,detail,clientX,clientY,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget):(event=doc.createEvent("UIEvents"),event.initEvent(type,bubbles,cancelable),event.view=view,event.detail=detail,event.screenX=clientX,event.screenY=clientY,event.clientX=clientX,event.clientY=clientY,event.ctrlKey=ctrlKey,event.altKey=altKey,event.metaKey=metaKey,event.shiftKey=shiftKey,event.button=button,event.relatedTarget=relatedTarget),event},createUIEvent:function(doc,type,bubbles,cancelable,detail){var event=doc.createEvent("UIEvents"),view=doc.defaultView||window;return event.initUIEvent(type,bubbles,cancelable,view,detail),event},fireEvent:function(target,type,event){target.dispatchEvent(event)},fixTarget:function(target){return target!=window||target.dispatchEvent?target:document}}:document.createEventObject&&(crazyIEButtons={0:1,1:4,2:2},API={createHtmlEvent:function(doc,type,bubbles,cancelable){var event=doc.createEventObject();return event.bubbles=bubbles,event.cancelable=cancelable,event},createMouseEvent:function(doc,type,bubbles,cancelable,detail,clientX,clientY,ctrlKey,altKey,shiftKey,metaKey,button,relatedTarget){var event=doc.createEventObject();return event.bubbles=bubbles,event.cancelable=cancelable,event.detail=detail,event.screenX=clientX,event.screenY=clientY,event.clientX=clientX,event.clientY=clientY,event.ctrlKey=ctrlKey,event.altKey=altKey,event.shiftKey=shiftKey,event.metaKey=metaKey,event.button=crazyIEButtons[button]||button,event.relatedTarget=relatedTarget,event},createUIEvent:function(doc,type,bubbles,cancelable,detail){var event=doc.createEventObject();return event.bubbles=bubbles,event.cancelable=cancelable,event},fireEvent:function(target,type,event){target.fireEvent("on"+type,event)},fixTarget:function(target){return target==document?document.documentElement:target}}),Ext.Object.each({load:[!1,!1],unload:[!1,!1],select:[!0,!1],change:[!0,!1],submit:[!0,!0],reset:[!0,!1],resize:[!0,!1],scroll:[!0,!1]},function(name,value){var bubbles=value[0],cancelable=value[1];dispatchers[name]=function(targetEl,srcEvent){var e=API.createHtmlEvent(name,bubbles,cancelable);API.fireEvent(targetEl,name,e)}}),Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(eventName){dispatchers[eventName]=createMouseEventDispatcher(eventName,1)}),Ext.Object.each({focusin:[!0,!1],focusout:[!0,!1],activate:[!0,!0],focus:[!1,!1],blur:[!1,!1]},function(name,value){var bubbles=value[0],cancelable=value[1];dispatchers[name]=function(targetEl,srcEvent){var e=API.createUIEvent(targetEl.ownerDocument,name,bubbles,cancelable,1);API.fireEvent(targetEl,name,e)}}),API||(dispatchers={},API={fixTarget:Ext.identityFn}),function(target){var me=this,dispatcher=dispatchers[me.type]||cannotInject,t=target?target.dom||target:me.getTarget();t=API.fixTarget(t),dispatcher(t,me)}}()},function(){Ext.EventObject=new Ext.EventObjectImpl});Ext.define("Ext.dom.AbstractQuery",{select:function(q,root){var nodes,i,j,qlen,nlen,results=[];for(root=root||document,"string"==typeof root&&(root=document.getElementById(root)),q=q.split(","),i=0,qlen=q.length;i<qlen;i++)if("string"==typeof q[i])if("@"==typeof q[i][0])nodes=root.getAttributeNode(q[i].substring(1)),results.push(nodes);else for(nodes=root.querySelectorAll(q[i]),j=0,nlen=nodes.length;j<nlen;j++)results.push(nodes[j]);return results},selectNode:function(q,root){return this.select(q,root)[0]},is:function(el,q){return"string"==typeof el&&(el=document.getElementById(el)),-1!==this.select(q).indexOf(el)}});Ext.define("Ext.dom.AbstractHelper",{emptyTags:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,confRe:/^(?:tag|children|cn|html|tpl|tplData)$/i,endRe:/end/i,styleSepRe:/\s*(?::|;)\s*/,attributeTransform:{cls:"class",htmlFor:"for"},closeTags:{},decamelizeName:function(){function decamel(match,p1,p2){return p1+"-"+p2.toLowerCase()}var camelCaseRe=/([a-z])([A-Z])/g,cache={};return function(s){return cache[s]||(cache[s]=s.replace(camelCaseRe,decamel))}}(),generateMarkup:function(spec,buffer){var attr,val,tag,i,closeTags,me=this,specType=typeof spec;if("string"==specType||"number"==specType)buffer.push(spec);else if(Ext.isArray(spec))for(i=0;i<spec.length;i++)spec[i]&&me.generateMarkup(spec[i],buffer);else{tag=spec.tag||"div",buffer.push("<",tag);for(attr in spec)spec.hasOwnProperty(attr)&&(val=spec[attr],me.confRe.test(attr)||("object"==typeof val?(buffer.push(" ",attr,'="'),me.generateStyles(val,buffer,!0).push('"')):buffer.push(" ",me.attributeTransform[attr]||attr,'="',val,'"')));me.emptyTags.test(tag)?buffer.push("/>"):(buffer.push(">"),(val=spec.tpl)&&val.applyOut(spec.tplData,buffer),(val=spec.html)&&buffer.push(val),(val=spec.cn||spec.children)&&me.generateMarkup(val,buffer),closeTags=me.closeTags,buffer.push(closeTags[tag]||(closeTags[tag]="</"+tag+">")))}return buffer},generateStyles:function(styles,buffer,encode){var name,val,a=buffer||[];for(name in styles)styles.hasOwnProperty(name)&&(val=styles[name],name=this.decamelizeName(name),encode&&Ext.String.hasHtmlCharacters(val)&&(val=Ext.String.htmlEncode(val)),a.push(name,":",val,";"));return buffer||a.join("")},markup:function(spec){return"string"==typeof spec?spec:this.generateMarkup(spec,[]).join("")},applyStyles:function(el,styles){if(styles){var len,i=0;if(el=Ext.fly(el,"_applyStyles"),"function"==typeof styles&&(styles=styles.call()),"string"==typeof styles)for(styles=Ext.util.Format.trim(styles).split(this.styleSepRe),len=styles.length;i<len;)el.setStyle(styles[i++],styles[i++]);else Ext.isObject(styles)&&el.setStyle(styles)}},insertHtml:function(where,el,html){var setStart,range,frag,rangeEl,hash={};return where=where.toLowerCase(),hash.beforebegin=["BeforeBegin","previousSibling"],hash.afterend=["AfterEnd","nextSibling"],range=el.ownerDocument.createRange(),setStart="setStart"+(this.endRe.test(where)?"After":"Before"),hash[where]?(range[setStart](el),frag=range.createContextualFragment(html),el.parentNode.insertBefore(frag,"beforebegin"==where?el:el.nextSibling),el[("beforebegin"==where?"previous":"next")+"Sibling"]):(rangeEl=("afterbegin"==where?"first":"last")+"Child",el.firstChild?(range[setStart](el[rangeEl]),frag=range.createContextualFragment(html),"afterbegin"==where?el.insertBefore(frag,el.firstChild):el.appendChild(frag)):el.innerHTML=html,el[rangeEl])},insertBefore:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"beforebegin")},insertAfter:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterend","nextSibling")},insertFirst:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterbegin","firstChild")},append:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"beforeend","",!0)},overwrite:function(el,o,returnElement){return el=Ext.getDom(el),el.innerHTML=this.markup(o),returnElement?Ext.get(el.firstChild):el.firstChild},doInsert:function(el,o,returnElement,pos,sibling,append){var newNode=this.insertHtml(pos,Ext.getDom(el),this.markup(o));return returnElement?Ext.get(newNode,!0):newNode}});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(size,units){return"number"==typeof size?size+(units||this.defaultUnit||"px"):""===size||"auto"==size||void 0===size||null===size?size||"":this.unitRe.test(size)?size:(Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Warning, size detected as NaN on Element.addUnits."),size||"")},isAncestor:function(p,c){var ret=!1;if(p=Ext.getDom(p),c=Ext.getDom(c),p&&c){if(p.contains)return p.contains(c);if(p.compareDocumentPosition)return!!(16&p.compareDocumentPosition(c));for(;c=c.parentNode;)ret=c==p||ret}return ret},parseBox:function(box){box=box||0;var parts,ln,type=typeof box;return"number"===type?{top:box,right:box,bottom:box,left:box}:"string"!==type?box:(parts=box.split(" "),ln=parts.length,1==ln?parts[1]=parts[2]=parts[3]=parts[0]:2==ln?(parts[2]=parts[0],parts[3]=parts[1]):3==ln&&(parts[3]=parts[1]),{top:parseFloat(parts[0])||0,right:parseFloat(parts[1])||0,bottom:parseFloat(parts[2])||0,left:parseFloat(parts[3])||0})},unitizeBox:function(box,units){var a=this.addUnits,b=this.parseBox(box);return a(b.top,units)+" "+a(b.right,units)+" "+a(b.bottom,units)+" "+a(b.left,units)},camelReplaceFn:function(m,a){return a.charAt(1).toUpperCase()},normalize:function(prop){return"float"==prop&&(prop=Ext.supports.Float?"cssFloat":"styleFloat"),this.propertyCache[prop]||(this.propertyCache[prop]=prop.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(Ext.isStrict?document.documentElement.scrollHeight:document.body.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(Ext.isStrict?document.documentElement.scrollWidth:document.body.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){return Ext.supports.OrientationChange?0==window.orientation?"portrait":"landscape":window.innerHeight>window.innerWidth?"portrait":"landscape"},fromPoint:function(x,y){return Ext.get(document.elementFromPoint(x,y))},parseStyles:function(styles){var matches,out={},cssRe=this.cssRe;if(styles)for(cssRe.lastIndex=0;matches=cssRe.exec(styles);)out[matches[1]]=matches[2]||"";return out}}},function(){function makeSelectionRestoreFn(activeEl,start,end){return function(){activeEl.selectionStart=start,activeEl.selectionEnd=end}}var doc=document,activeElement=null,isCSS1="CSS1Compat"==doc.compatMode;"activeElement"in doc||!doc.addEventListener||doc.addEventListener("focus",function(ev){ev&&ev.target&&(activeElement=ev.target==doc?null:ev.target)},!0),this.addInheritableStatics({getActiveElement:function(){var active;try{active=doc.activeElement}catch(e){}return active=active||activeElement,active||(active=activeElement=document.body),active},getRightMarginFixCleaner:function(target){var activeEl,tag,start,end,supports=Ext.supports,hasInputBug=supports.DisplayChangeInputSelectionBug,hasTextAreaBug=supports.DisplayChangeTextAreaSelectionBug;return(hasInputBug||hasTextAreaBug)&&(activeEl=doc.activeElement||activeElement,tag=activeEl&&activeEl.tagName,(hasTextAreaBug&&"TEXTAREA"==tag||hasInputBug&&"INPUT"==tag&&"text"==activeEl.type)&&Ext.dom.Element.isAncestor(target,activeEl)&&(start=activeEl.selectionStart,end=activeEl.selectionEnd,Ext.isNumber(start)&&Ext.isNumber(end)))?makeSelectionRestoreFn(activeEl,start,end):Ext.emptyFn},getViewWidth:function(full){return full?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(full){return full?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(isCSS1?doc.documentElement.scrollHeight:doc.body.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(isCSS1?doc.documentElement.scrollWidth:doc.body.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?Ext.isStrict?doc.documentElement.clientHeight:doc.body.clientHeight:self.innerHeight},getViewportWidth:function(){return Ext.isStrict||Ext.isOpera?Ext.isIE9m?doc.documentElement.clientWidth:self.innerWidth:doc.body.clientWidth},serializeForm:function(form){var element,name,type,options,hasValue,e,o,oLen,opt,fElements=form.elements||(document.forms[form]||Ext.getDom(form)).elements,hasSubmit=!1,encoder=encodeURIComponent,data="",eLen=fElements.length;for(e=0;e<eLen;e++)if(element=fElements[e],name=element.name,type=element.type,options=element.options,!element.disabled&&name)if(/select-(one|multiple)/i.test(type))for(oLen=options.length,o=0;o<oLen;o++)opt=options[o],opt.selected&&(hasValue=opt.hasAttribute?opt.hasAttribute("value"):opt.getAttributeNode("value").specified,data+=Ext.String.format("{0}={1}&",encoder(name),encoder(hasValue?opt.value:opt.text)));else/file|undefined|reset|button/i.test(type)||/radio|checkbox/i.test(type)&&!element.checked||"submit"==type&&hasSubmit||(data+=encoder(name)+"="+encoder(element.value)+"&",hasSubmit=/submit/i.test(type));return data.substr(0,data.length-1)}})});Ext.define("Ext.dom.AbstractElement_insertion",{override:"Ext.dom.AbstractElement",appendChild:function(el,returnDom){var insertEl,eLen,e,me=this;if(el.nodeType||el.dom||"string"==typeof el)return el=Ext.getDom(el),me.dom.appendChild(el),returnDom?el:Ext.get(el);if(el.length){for(insertEl=Ext.fly(document.createDocumentFragment(),"_internal"),eLen=el.length,Ext.DomHelper.useDom=!0,e=0;e<eLen;e++)insertEl.appendChild(el[e],returnDom);return Ext.DomHelper.useDom=void 0,me.dom.appendChild(insertEl.dom),returnDom?insertEl.dom:insertEl}return me.createChild(el,null,returnDom)},appendTo:function(el){return Ext.getDom(el).appendChild(this.dom),this},insertBefore:function(el){return el=Ext.getDom(el),el.parentNode.insertBefore(this.dom,el),this},insertAfter:function(el){return el=Ext.getDom(el),el.parentNode.insertBefore(this.dom,el.nextSibling),this},insertFirst:function(el,returnDom){return el=el||{},el.nodeType||el.dom||"string"==typeof el?(el=Ext.getDom(el),this.dom.insertBefore(el,this.dom.firstChild),returnDom?el:Ext.get(el)):this.createChild(el,this.dom.firstChild,returnDom)},insertSibling:function(el,where,returnDom){var rt,insertEl,eLen,e,me=this,DomHelper=Ext.core.DomHelper,oldUseDom=DomHelper.useDom,isAfter="after"==(where||"before").toLowerCase();if(Ext.isArray(el)){for(insertEl=Ext.fly(document.createDocumentFragment(),"_internal"),eLen=el.length,DomHelper.useDom=!0,e=0;e<eLen;e++)rt=insertEl.appendChild(el[e],returnDom);return DomHelper.useDom=oldUseDom,me.dom.parentNode.insertBefore(insertEl.dom,isAfter?me.dom.nextSibling:me.dom),rt}return el=el||{},el.nodeType||el.dom?(rt=me.dom.parentNode.insertBefore(Ext.getDom(el),isAfter?me.dom.nextSibling:me.dom),returnDom||(rt=Ext.get(rt))):rt=isAfter&&!me.dom.nextSibling?DomHelper.append(me.dom.parentNode,el,!returnDom):DomHelper[isAfter?"insertAfter":"insertBefore"](me.dom,el,!returnDom),rt},replace:function(el){return el=Ext.get(el),this.insertBefore(el),el.remove(),this},replaceWith:function(el){var me=this;return el.nodeType||el.dom||"string"==typeof el?(el=Ext.get(el),me.dom.parentNode.insertBefore(el.dom,me.dom)):el=Ext.core.DomHelper.insertBefore(me.dom,el),delete Ext.cache[me.id],Ext.removeNode(me.dom),me.id=Ext.id(me.dom=el),Ext.dom.AbstractElement.addToCache(me.isFlyweight?new Ext.dom.AbstractElement(me.dom):me),me},createChild:function(config,insertBefore,returnDom){return config=config||{tag:"div"},insertBefore?Ext.core.DomHelper.insertBefore(insertBefore,config,!0!==returnDom):Ext.core.DomHelper.append(this.dom,config,!0!==returnDom)},wrap:function(config,returnDom,selector){var newEl=Ext.core.DomHelper.insertBefore(this.dom,config||{tag:"div"},!0),target=newEl;return selector&&(target=Ext.DomQuery.selectNode(selector,newEl.dom)),target.appendChild(this.dom),returnDom?newEl.dom:newEl},insertHtml:function(where,html,returnEl){var el=Ext.core.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el}});Ext.define("Ext.dom.AbstractElement_style",{override:"Ext.dom.AbstractElement"},function(){var Element=this,wordsRe=/\w/g,spacesRe=/\s+/,transparentRe=/^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,hasClassList=Ext.supports.ClassList,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"},internalFly=new Element.Fly;Ext.override(Element,{styleHooks:{},addStyles:function(sides,styles){var i,side,totalSize=0,sidesArr=(sides||"").match(wordsRe),len=sidesArr.length,styleSides=[];if(1==len)totalSize=Math.abs(parseFloat(this.getStyle(styles[sidesArr[0]]))||0);else if(len){for(i=0;i<len;i++)side=sidesArr[i],styleSides.push(styles[side]);for(styleSides=this.getStyle(styleSides),i=0;i<len;i++)side=sidesArr[i],totalSize+=Math.abs(parseFloat(styleSides[styles[side]])||0)}return totalSize},addCls:function(){var addWithClassList=function(className){String(className).indexOf("undefined")>-1&&Ext.Logger.warn("called with an undefined className: "+className);var classList,newCls,i,len,cls,me=this,dom=me.dom,trimRe=me.trimRe,origClassName=className;if("string"==typeof className&&(className=className.replace(trimRe,"").split(spacesRe)),dom&&className&&(len=className.length))if(dom.className)if(classList=dom.classList){for(i=0;i<len;++i)(cls=className[i])&&(classList.contains(cls)||(newCls?newCls.push(cls):(newCls=dom.className.replace(trimRe,""),newCls=newCls?[newCls,cls]:[cls])));newCls&&(dom.className=newCls.join(" "))}else addWithoutClassList(origClassName);else dom.className=className.join(" ");return me},addWithoutClassList=function(className){String(className).indexOf("undefined")>-1&&Ext.Logger.warn("called with an undefined className: '"+className+"'");var elClasses,me=this,dom=me.dom;return dom&&className&&className.length&&(elClasses=Ext.Element.mergeClsList(dom.className,className),elClasses.changed&&(dom.className=elClasses.join(" "))),me};return hasClassList?addWithClassList:addWithoutClassList}(),removeCls:function(className){var classList,len,elClasses,me=this,dom=me.dom;return"string"==typeof className&&(className=className.replace(me.trimRe,"").split(spacesRe)),dom&&dom.className&&className&&(len=className.length)&&(classList=dom.classList,1===len&&classList?className[0]&&classList.remove(className[0]):(elClasses=Ext.Element.removeCls(dom.className,className),elClasses.changed&&(dom.className=elClasses.join(" ")))),me},radioCls:function(className){var v,i,len,cn=this.dom.parentNode.childNodes;for(className=Ext.isArray(className)?className:[className],i=0,len=cn.length;i<len;i++)(v=cn[i])&&1==v.nodeType&&internalFly.attach(v).removeCls(className);return this.addCls(className)},toggleCls:function(){var toggleWithClassList=function(className){var classList,me=this,dom=me.dom;return dom&&(className=className.replace(me.trimRe,""))&&(classList=dom.classList,classList?classList.toggle(className):toggleWithoutClassList(className)),me},toggleWithoutClassList=function(className){return this.hasCls(className)?this.removeCls(className):this.addCls(className)};return hasClassList?toggleWithClassList:toggleWithoutClassList}(),hasCls:function(){var hasClsWithClassList=function(className){var classList,dom=this.dom,out=!1;return dom&&className&&(classList=dom.classList,out=classList?classList.contains(className):hasClsWithoutClassList(className)),out},hasClsWithoutClassList=function(className){var dom=this.dom;return!!dom&&(className&&-1!==(" "+dom.className+" ").indexOf(" "+className+" "))};return hasClassList?hasClsWithClassList:hasClsWithoutClassList}(),replaceCls:function(oldClassName,newClassName){return this.removeCls(oldClassName).addCls(newClassName)},isStyle:function(style,val){return this.getStyle(style)==val},getStyle:function(property,inline){var domStyle,camel,values,hook,out,style,i,me=this,dom=me.dom,multiple="string"!=typeof property,hooks=me.styleHooks,prop=property,props=prop,len=1;if(multiple&&(values={},prop=props[0],i=0,!(len=props.length)))return values;if(!dom||dom.documentElement)return values||"";domStyle=dom.style,inline?style=domStyle:(style=dom.ownerDocument.defaultView.getComputedStyle(dom,null))||(inline=!0,style=domStyle);do{if(hook=hooks[prop],hook||(hooks[prop]=hook={name:Element.normalize(prop)}),hook.get?out=hook.get(dom,me,inline,style):(camel=hook.name,out=style[camel]),!multiple)return out;values[prop]=out,prop=props[++i]}while(i<len);return values},getStyles:function(){var inline,props=Ext.Array.slice(arguments),len=props.length;return len&&"boolean"==typeof props[len-1]&&(inline=props.pop()),this.getStyle(props,inline)},isTransparent:function(prop){var value=this.getStyle(prop);return!!value&&transparentRe.test(value)},setStyle:function(prop,value){var hook,me=this,dom=me.dom,hooks=me.styleHooks,style=dom.style,name=prop;if("string"==typeof name)hook=hooks[name],hook||(hooks[name]=hook={name:Element.normalize(name)}),value=null==value?"":value,hook.set?hook.set(dom,value,me):style[hook.name]=value,hook.afterSet&&hook.afterSet(dom,value,me);else for(name in prop)prop.hasOwnProperty(name)&&(hook=hooks[name],hook||(hooks[name]=hook={name:Element.normalize(name)}),value=prop[name],value=null==value?"":value,hook.set?hook.set(dom,value,me):style[hook.name]=value,hook.afterSet&&hook.afterSet(dom,value,me));return me},getHeight:function(contentHeight){var dom=this.dom,height=contentHeight?dom.clientHeight-this.getPadding("tb"):dom.offsetHeight;return height>0?height:0},getWidth:function(contentWidth){var dom=this.dom,width=contentWidth?dom.clientWidth-this.getPadding("lr"):dom.offsetWidth;return width>0?width:0},setWidth:function(width){var me=this;return me.dom.style.width=Element.addUnits(width),me},setHeight:function(height){var me=this;return me.dom.style.height=Element.addUnits(height),me},getBorderWidth:function(side){return this.addStyles(side,borders)},getPadding:function(side){return this.addStyles(side,paddings)},margins:margins,applyStyles:function(styles){if(styles){var i,len,dom=this.dom;if("function"==typeof styles&&(styles=styles.call()),"string"==typeof styles)for(styles=Ext.util.Format.trim(styles).split(/\s*(?::|;)\s*/),i=0,len=styles.length;i<len;)dom.style[Element.normalize(styles[i++])]=styles[i++];else"object"==typeof styles&&this.setStyle(styles)}},setSize:function(width,height){var me=this,style=me.dom.style;return Ext.isObject(width)&&(height=width.height,width=width.width),style.width=Element.addUnits(width),style.height=Element.addUnits(height),me},getViewSize:function(){var doc=document,dom=this.dom;return dom==doc||dom==doc.body?{width:Element.getViewportWidth(),height:Element.getViewportHeight()}:{width:dom.clientWidth,height:dom.clientHeight}},getSize:function(contentSize){var dom=this.dom;return{width:Math.max(0,contentSize?dom.clientWidth-this.getPadding("lr"):dom.offsetWidth),height:Math.max(0,contentSize?dom.clientHeight-this.getPadding("tb"):dom.offsetHeight)}},repaint:function(){var dom=this.dom;return this.addCls(Ext.baseCSSPrefix+"repaint"),setTimeout(function(){internalFly.attach(dom).removeCls(Ext.baseCSSPrefix+"repaint")},1),this},getMargin:function(side){var key,o,margins,me=this,hash={t:"top",l:"left",r:"right",b:"bottom"};if(side)return me.addStyles(side,me.margins);margins=[];for(key in me.margins)me.margins.hasOwnProperty(key)&&margins.push(me.margins[key]);if((o=me.getStyle(margins))&&"object"==typeof o)for(key in me.margins)me.margins.hasOwnProperty(key)&&(o[hash[key]]=parseFloat(o[me.margins[key]])||0);return o},mask:function(msg,msgCls,transparent){var mask,size,me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,el=data.mask,prefix=Ext.baseCSSPrefix;me.addCls(prefix+"masked"),"static"==me.getStyle("position")&&me.addCls(prefix+"masked-relative"),el&&el.remove(),mask=me.createChild({role:"presentation",cls:prefix+"mask"+(!1!==transparent?"":" "+prefix+"mask-gray"),html:msg?'<div class="'+(msgCls||prefix+"mask-message")+'" role="presentation">'+msg+"</div>":""}),size=me.getSize(),data.mask=mask,dom===document.body&&(size.height=window.innerHeight,me.orientationHandler&&Ext.EventManager.unOrientationChange(me.orientationHandler,me),me.orientationHandler=function(){size=me.getSize(),size.height=window.innerHeight,mask.setSize(size)},Ext.EventManager.onOrientationChange(me.orientationHandler,me)),mask.setSize(size),Ext.is.iPad&&Ext.repaint()},unmask:function(){var me=this,data=(me.$cache||me.getCache()).data,mask=data.mask,prefix=Ext.baseCSSPrefix;mask&&(mask.remove(),delete data.mask),me.removeCls([prefix+"masked",prefix+"masked-relative"]),me.dom===document.body&&(Ext.EventManager.unOrientationChange(me.orientationHandler,me),delete me.orientationHandler)}}),Ext.onReady(function(){function fixTransparent(dom,el,inline,style){var value=style[this.name]||"";return transparentRe.test(value)?"transparent":value}function fixRightMargin(dom,el,inline,style){var domStyle,display,result=style.marginRight;return"0px"!=result&&(domStyle=dom.style,display=domStyle.display,domStyle.display="inline-block",result=(inline?style:dom.ownerDocument.defaultView.getComputedStyle(dom,null)).marginRight,domStyle.display=display),result}function fixRightMarginAndInputFocus(dom,el,inline,style){var domStyle,cleaner,display,result=style.marginRight;return"0px"!=result&&(domStyle=dom.style,cleaner=Element.getRightMarginFixCleaner(dom),display=domStyle.display,domStyle.display="inline-block",result=(inline?style:dom.ownerDocument.defaultView.getComputedStyle(dom,"")).marginRight,domStyle.display=display,cleaner()),result}var styleHooks,colorStyles,i,name,camel,supports=Ext.supports;if(styleHooks=Element.prototype.styleHooks,supports.init&&supports.init(),supports.RightMargin||(styleHooks.marginRight=styleHooks["margin-right"]={name:"marginRight",get:supports.DisplayChangeInputSelectionBug||supports.DisplayChangeTextAreaSelectionBug?fixRightMarginAndInputFocus:fixRightMargin}),!supports.TransparentColor)for(colorStyles=["background-color","border-color","color","outline-color"],i=colorStyles.length;i--;)name=colorStyles[i],camel=Element.normalize(name),styleHooks[name]=styleHooks[camel]={name:camel,get:fixTransparent}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(simpleSelector,limit,returnEl){var stopEl,target=this.dom,topmost=document.documentElement,depth=0;for(limit=limit||50,isNaN(limit)&&(stopEl=Ext.getDom(limit),limit=Number.MAX_VALUE);target&&1==target.nodeType&&depth<limit&&target!=topmost&&target!=stopEl;){if(Ext.DomQuery.is(target,simpleSelector))return returnEl?Ext.get(target):target;depth++,target=target.parentNode}return null},findParentNode:function(simpleSelector,limit,returnEl){var p=Ext.fly(this.dom.parentNode,"_internal");return p?p.findParent(simpleSelector,limit,returnEl):null},up:function(simpleSelector,limit,returnDom){return this.findParentNode(simpleSelector,limit,!returnDom)},select:function(selector,composite){return Ext.dom.Element.select(selector,this.dom,composite)},query:function(selector){return Ext.DomQuery.select(selector,this.dom)},down:function(selector,returnDom){var n=Ext.DomQuery.selectNode(selector,this.dom);return returnDom?n:Ext.get(n)},child:function(selector,returnDom){var node,id,me=this;return id=Ext.id(me.dom),id=Ext.escapeId(id),node=Ext.DomQuery.selectNode("#"+id+" > "+selector,me.dom),returnDom?node:Ext.get(node)},parent:function(selector,returnDom){return this.matchNode("parentNode","parentNode",selector,returnDom)},next:function(selector,returnDom){return this.matchNode("nextSibling","nextSibling",selector,returnDom)},prev:function(selector,returnDom){return this.matchNode("previousSibling","previousSibling",selector,returnDom)},first:function(selector,returnDom){return this.matchNode("nextSibling","firstChild",selector,returnDom)},last:function(selector,returnDom){return this.matchNode("previousSibling","lastChild",selector,returnDom)},matchNode:function(dir,start,selector,returnDom){if(!this.dom)return null;for(var n=this.dom[start];n;){if(1==n.nodeType&&(!selector||Ext.DomQuery.is(n,selector)))return returnDom?n:Ext.get(n);n=n[dir]}return null},isAncestor:function(element){return this.self.isAncestor.call(this.self,this.dom,element)}});Ext.define("Ext.dom.AbstractElement",{requires:["Ext.EventManager","Ext.dom.AbstractElement_static","Ext.dom.AbstractElement_insertion","Ext.dom.AbstractElement_style","Ext.dom.AbstractElement_traversal"],trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(el){var cacheItem,docEl,dom,id,me=this,document=window.document,El=Ext.dom.Element;return el?(el.isFly&&(el=el.dom),"string"==typeof el?el==Ext.windowId?El.get(window):el==Ext.documentId?El.get(document):(cacheItem=Ext.cache[el])&&cacheItem.skipGarbageCollection?cacheItem.el:(dom=document.getElementById(el))?cacheItem&&cacheItem.el?Ext.updateCacheEntry(cacheItem,dom).el:new El(dom,!!cacheItem):null:el.tagName?((id=el.id)||(id=Ext.id(el)),cacheItem=Ext.cache[id],cacheItem&&cacheItem.el?Ext.updateCacheEntry(cacheItem,el).el:new El(el,!!cacheItem)):el instanceof me?(el!=me.docEl&&el!=me.winEl&&(id=el.id,(cacheItem=Ext.cache[id])&&Ext.updateCacheEntry(cacheItem,document.getElementById(id)||el.dom)),el):el.isComposite?el:Ext.isArray(el)?me.select(el):el===document?(me.docEl||(docEl=me.docEl=Ext.Object.chain(El.prototype),docEl.dom=document,docEl.el=docEl,docEl.id=Ext.id(document),me.addToCache(docEl)),me.docEl):el===window?(me.winEl||(me.winEl=Ext.Object.chain(El.prototype),me.winEl.dom=window,me.winEl.id=Ext.id(window),me.addToCache(me.winEl)),me.winEl):null):null},addToCache:function(el,id){return el&&Ext.addCacheEntry(id,el),el},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var clsList,i,length,j,listLength,clsName,clsHash={},result=[],changed=!1,trimRe=this.trimRe,whitespaceRe=this.whitespaceRe;for(i=0,length=arguments.length;i<length;i++)if(clsList=arguments[i],Ext.isString(clsList)&&(clsList=clsList.replace(trimRe,"").split(whitespaceRe)),clsList)for(j=0,listLength=clsList.length;j<listLength;j++)clsName=clsList[j],clsHash[clsName]||(i&&(changed=!0),clsHash[clsName]=!0);for(clsName in clsHash)result.push(clsName);return result.changed=changed,result},removeCls:function(existingClsList,removeClsList){var i,length,clsName,clsHash={},result=[],changed=!1,whitespaceRe=this.whitespaceRe;if(existingClsList)for(Ext.isString(existingClsList)&&(existingClsList=existingClsList.replace(this.trimRe,"").split(whitespaceRe)),i=0,length=existingClsList.length;i<length;i++)clsHash[existingClsList[i]]=!0;if(removeClsList)for(Ext.isString(removeClsList)&&(removeClsList=removeClsList.split(whitespaceRe)),i=0,length=removeClsList.length;i<length;i++)clsName=removeClsList[i],clsHash[clsName]&&(changed=!0,delete clsHash[clsName]);for(clsName in clsHash)result.push(clsName);return result.changed=changed,result},VISIBILITY:1,DISPLAY:2,OFFSETS:3,ASCLASS:4},constructor:function(element,forceNew){var id,me=this,dom="string"==typeof element?document.getElementById(element):element;return me.el=me,dom?(id=dom.id,!forceNew&&id&&Ext.cache[id]?Ext.cache[id].el:(me.dom=dom,me.id=id||Ext.id(dom),void me.self.addToCache(me))):null},set:function(o,useSet){var attr,value,el=this.dom;for(attr in o)o.hasOwnProperty(attr)&&(value=o[attr],"style"==attr?this.applyStyles(value):"cls"==attr?el.className=value:!1!==useSet?void 0===value?el.removeAttribute(attr):el.setAttribute(attr,value):el[attr]=value);return this},defaultUnit:"px",is:function(simpleSelector){return Ext.DomQuery.is(this.dom,simpleSelector)},getValue:function(asNumber){var val=this.dom.value;return asNumber?parseInt(val,10):val},remove:function(){var me=this,dom=me.dom;me.isAnimate&&me.stopAnimation(),dom&&(Ext.removeNode(dom),delete me.dom)},contains:function(){var isXpc=function(el){var s;try{el=el.dom||el}catch(e){return!0}return"[xpconnect wrapped native prototype]"===(s=HTMLElement.prototype.toString.call(el))||"[object XULElement]"===s};return function(el){if(!el||Ext.isGecko3&&isXpc(el))return!1;var me=this,dom=el.dom||el;return dom===me.dom||Ext.dom.AbstractElement.isAncestor(me.dom,dom)}}(),getAttribute:function(name,ns){var dom=this.dom;return dom.getAttributeNS(ns,name)||dom.getAttribute(ns+":"+name)||dom.getAttribute(name)||dom[name]},update:function(html){return this.dom&&(this.dom.innerHTML=html),this},setHTML:function(html){return this.dom&&(this.dom.innerHTML=html),this},getHTML:function(){return this.dom?this.dom.innerHTML:""},hide:function(){return this.setVisible(!1),this},show:function(){return this.setVisible(!0),this},setVisible:function(visible,animate){var me=this,statics=me.self,mode=me.getVisibilityMode(),prefix=Ext.baseCSSPrefix;switch(mode){case statics.VISIBILITY:me.removeCls([prefix+"hidden-display",prefix+"hidden-offsets"]),me[visible?"removeCls":"addCls"](prefix+"hidden-visibility");break;case statics.DISPLAY:me.removeCls([prefix+"hidden-visibility",prefix+"hidden-offsets"]),me[visible?"removeCls":"addCls"](prefix+"hidden-display");break;case statics.OFFSETS:me.removeCls([prefix+"hidden-visibility",prefix+"hidden-display"]),me[visible?"removeCls":"addCls"](prefix+"hidden-offsets")}return me},getVisibilityMode:function(){var data=(this.$cache||this.getCache()).data,visMode=data.visibilityMode;return void 0===visMode&&(data.visibilityMode=visMode=this.self.DISPLAY),visMode},setVisibilityMode:function(mode){return(this.$cache||this.getCache()).data.visibilityMode=mode,this},getCache:function(){var me=this,id=me.dom.id||Ext.id(me.dom);return me.$cache=Ext.cache[id]||Ext.addCacheEntry(id,null,me.dom),me.$cache}},function(){var AbstractElement=this;Ext.getDetachedBody=function(){var detachedEl=AbstractElement.detachedBodyEl;return detachedEl||(detachedEl=document.createElement("div"),AbstractElement.detachedBodyEl=detachedEl=new AbstractElement.Fly(detachedEl),detachedEl.isDetachedBody=!0),detachedEl},Ext.getElementById=function(id){var detachedBodyEl,el=document.getElementById(id);return!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)&&(el=detachedBodyEl.dom.querySelector("#"+Ext.escapeId(id))),el},Ext.get=function(el){return Ext.dom.Element.get(el)},this.addStatics({Fly:new Ext.Class({extend:AbstractElement,isFly:!0,constructor:function(dom){this.dom=dom,this.el=this},attach:function(dom){return this.dom=dom,this.$cache=dom&&dom.id?Ext.cache[dom.id]:null,this}}),_flyweights:{},fly:function(dom,named){var fly=null,_flyweights=AbstractElement._flyweights;return named=named||"_global",dom=Ext.getDom(dom),dom&&(fly=_flyweights[named]||(_flyweights[named]=new AbstractElement.Fly),fly.dom=dom,fly.$cache=dom.id?Ext.cache[dom.id]:null),fly}}),Ext.fly=function(){return AbstractElement.fly.apply(AbstractElement,arguments)},function(proto){proto.destroy=proto.remove,document.querySelector?proto.getById=function(id,asDom){var dom=document.getElementById(id)||this.dom.querySelector("#"+Ext.escapeId(id));return asDom?dom:dom?Ext.get(dom):null}:proto.getById=function(id,asDom){var dom=document.getElementById(id);return asDom?dom:dom?Ext.get(dom):null}}(this.prototype)});Ext.define("Ext.dom.Helper",function(){var ts="<table>",te="</table>",tbs=ts+"<tbody>",tbe="</tbody>"+te,detachedDiv=document.createElement("div"),bbValues=["BeforeBegin","previousSibling"],aeValues=["AfterEnd","nextSibling"],bb_ae_PositionHash={beforebegin:bbValues,afterend:aeValues},fullPositionHash={beforebegin:bbValues,afterend:aeValues,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{extend:"Ext.dom.AbstractHelper",requires:["Ext.dom.AbstractElement"],tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:!1,createDom:function(o,parentNode){var el,useSet,attr,val,cn,i,l,doc=document;if(Ext.isArray(o))for(el=doc.createDocumentFragment(),i=0,l=o.length;i<l;i++)this.createDom(o[i],el);else if("string"==typeof o)el=doc.createTextNode(o);else{el=doc.createElement(o.tag||"div"),useSet=!!el.setAttribute;for(attr in o)this.confRe.test(attr)||(val=o[attr],"cls"==attr?el.className=val:useSet?el.setAttribute(attr,val):el[attr]=val);Ext.DomHelper.applyStyles(el,o.style),(cn=o.children||o.cn)?this.createDom(cn,el):o.html&&(el.innerHTML=o.html)}return parentNode&&parentNode.appendChild(el),el},ieTable:function(depth,openingTags,htmlContent,closingTags){detachedDiv.innerHTML=[openingTags,htmlContent,closingTags].join("");for(var ns,i=-1,el=detachedDiv;++i<depth;)el=el.firstChild;if(ns=el.nextSibling)for(ns=el,el=document.createDocumentFragment();ns;)nx=ns.nextSibling,el.appendChild(ns),ns=nx;return el},insertIntoTable:function(tag,where,destinationEl,html){var node,before,bb="beforebegin"==where,ab="afterbegin"==where,be="beforeend"==where,ae="afterend"==where;return"td"==tag&&(ab||be)||!this.tableElRe.test(tag)&&(bb||ae)?null:(before=bb?destinationEl:ae?destinationEl.nextSibling:ab?destinationEl.firstChild:null,(bb||ae)&&(destinationEl=destinationEl.parentNode),node="td"==tag||"tr"==tag&&(be||ab)?this.ieTable(4,"<table><tbody><tr>",html,"</tr></tbody></table>"):("tbody"==tag||"thead"==tag)&&(be||ab)||"tr"==tag&&(bb||ae)?this.ieTable(3,tbs,html,tbe):this.ieTable(2,ts,html,te),destinationEl.insertBefore(node,before),node)},createContextualFragment:function(html){var length,childNodes,fragment=document.createDocumentFragment();for(detachedDiv.innerHTML=html,childNodes=detachedDiv.childNodes,length=childNodes.length;length--;)fragment.appendChild(childNodes[0]);return fragment},applyStyles:function(el,styles){styles&&("function"==typeof styles&&(styles=styles.call()),"string"==typeof styles&&(styles=Ext.dom.Element.parseStyles(styles)),"object"==typeof styles&&Ext.fly(el,"_applyStyles").setStyle(styles))},createHtml:function(spec){return this.markup(spec)},doInsert:function(el,o,returnElement,pos,sibling,append){el=el.dom||Ext.getDom(el);var newNode;return this.useDom?(newNode=this.createDom(o,null),append?el.appendChild(newNode):("firstChild"==sibling?el:el.parentNode).insertBefore(newNode,el[sibling]||el)):newNode=this.insertHtml(pos,el,this.markup(o)),returnElement?Ext.get(newNode,!0):newNode},overwrite:function(el,html,returnElement){var newNode;if(el=Ext.getDom(el),html=this.markup(html),Ext.isIE&&this.tableRe.test(el.tagName)){for(;el.firstChild;)el.removeChild(el.firstChild);return html?(newNode=this.insertHtml("afterbegin",el,html),returnElement?Ext.get(newNode):newNode):null}return el.innerHTML=html,returnElement?Ext.get(el.firstChild):el.firstChild},insertHtml:function(where,el,html){var hashVal,range,rangeEl,setStart,frag;return where=where.toLowerCase(),el.insertAdjacentHTML?Ext.isIE&&this.tableRe.test(el.tagName)&&(frag=this.insertIntoTable(el.tagName.toLowerCase(),where,el,html))?frag:(hashVal=fullPositionHash[where])?(Ext.global.MSApp&&Ext.global.MSApp.execUnsafeLocalFunction?MSApp.execUnsafeLocalFunction(function(){el.insertAdjacentHTML(hashVal[0],html)}):el.insertAdjacentHTML(hashVal[0],html),el[hashVal[1]]):void Ext.Error.raise({sourceClass:"Ext.DomHelper",sourceMethod:"insertHtml",htmlToInsert:html,targetElement:el,msg:'Illegal insertion point reached: "'+where+'"'}):(3===el.nodeType&&(where="afterbegin"===where?"beforebegin":where,where="beforeend"===where?"afterend":where),range=Ext.supports.CreateContextualFragment?el.ownerDocument.createRange():void 0,setStart="setStart"+(this.endRe.test(where)?"After":"Before"),bb_ae_PositionHash[where]?(range?(range[setStart](el),frag=range.createContextualFragment(html)):frag=this.createContextualFragment(html),el.parentNode.insertBefore(frag,"beforebegin"==where?el:el.nextSibling),el[("beforebegin"==where?"previous":"next")+"Sibling"]):(rangeEl=("afterbegin"==where?"first":"last")+"Child",el.firstChild?(range?(range[setStart](el[rangeEl]),frag=range.createContextualFragment(html)):frag=this.createContextualFragment(html),"afterbegin"==where?el.insertBefore(frag,el.firstChild):el.appendChild(frag)):el.innerHTML=html,el[rangeEl]))},createTemplate:function(o){var html=this.markup(o);return new Ext.Template(html)}}}(),function(){Ext.ns("Ext.core"),Ext.DomHelper=Ext.core.DomHelper=new this});Ext.define("Ext.Template",{requires:["Ext.dom.Helper","Ext.util.Format"],inheritableStatics:{from:function(el,config){return el=Ext.getDom(el),new this(el.value||el.innerHTML,config||"")}},constructor:function(html){var value,me=this,args=arguments,buffer=[],i=0,length=args.length;if(me.initialConfig={},1===length&&Ext.isArray(html)&&(args=html,length=args.length),length>1)for(;i<length;i++)value=args[i],"object"==typeof value?(Ext.apply(me.initialConfig,value),Ext.apply(me,value)):buffer.push(value);else buffer.push(html);me.html=buffer.join(""),me.compiled&&me.compile()},isTemplate:!0,disableFormats:!1,re:/\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,apply:function(values){function fn(m,name,format,args){return format&&useFormat?(args=args?[values[name]].concat(Ext.functionFactory("return ["+args+"];")()):[values[name]],"this."==format.substr(0,5)?tpl[format.substr(5)].apply(tpl,args):fm[format].apply(fm,args)):void 0!==values[name]?values[name]:""}var me=this,useFormat=!0!==me.disableFormats,fm=Ext.util.Format,tpl=me;return me.compiled?me.compiled(values).join(""):me.html.replace(me.re,fn)},applyOut:function(values,out){var me=this;return me.compiled?out.push.apply(out,me.compiled(values)):out.push(me.apply(values)),out},applyTemplate:function(){return this.apply.apply(this,arguments)},set:function(html,compile){var me=this;return me.html=html,me.compiled=null,compile?me.compile():me},compileARe:/\\/g,compileBRe:/(\r\n|\n)/g,compileCRe:/'/g,compile:function(){function fn(m,name,format,args){return format&&useFormat?(args=args?","+args:"",format="this."!=format.substr(0,5)?"fm."+format+"(":"this."+format.substr(5)+"("):(args="",format="(values['"+name+"'] == undefined ? '' : "),"',"+format+"values['"+name+"']"+args+") ,'"}var me=this,fm=Ext.util.Format,useFormat=!0!==me.disableFormats,body,bodyReturn;return bodyReturn=me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn),body="this.compiled = function(values){ return ['"+bodyReturn+"'];};",eval(body),me},insertFirst:function(el,values,returnElement){return this.doInsert("afterBegin",el,values,returnElement)},insertBefore:function(el,values,returnElement){return this.doInsert("beforeBegin",el,values,returnElement)},insertAfter:function(el,values,returnElement){return this.doInsert("afterEnd",el,values,returnElement)},append:function(el,values,returnElement){return this.doInsert("beforeEnd",el,values,returnElement)},doInsert:function(where,el,values,returnElement){var newNode=Ext.DomHelper.insertHtml(where,Ext.getDom(el),this.apply(values));return returnElement?Ext.get(newNode):newNode},overwrite:function(el,values,returnElement){var newNode=Ext.DomHelper.overwrite(Ext.getDom(el),this.apply(values));return returnElement?Ext.get(newNode):newNode}});Ext.define("Ext.XTemplateParser",{constructor:function(config){Ext.apply(this,config)},doTpl:Ext.emptyFn,parse:function(str){var index,stack,s,m,t,prev,frame,subMatch,begin,end,actions,prop,me=this,len=str.length,aliases={elseif:"elif"},topRe=me.topRe,actionsRe=me.actionsRe;for(me.level=0,me.stack=stack=[],index=0;index<len;index=end){if(topRe.lastIndex=index,!(m=topRe.exec(str))){me.doText(str.substring(index,len));break}if(begin=m.index,end=topRe.lastIndex,index<begin&&me.doText(str.substring(index,begin)),m[1])end=str.indexOf("%}",begin+2),me.doEval(str.substring(begin+2,end)),end+=2;else if(m[2])end=str.indexOf("]}",begin+2),me.doExpr(str.substring(begin+2,end)),end+=2;else if(m[3])me.doTag(m[3]);else if(m[4]){for(actions=null;null!==(subMatch=actionsRe.exec(m[4]));)(s=subMatch[2]||subMatch[3])&&(s=Ext.String.htmlDecode(s),t=subMatch[1],t=aliases[t]||t,actions=actions||{},prev=actions[t],"string"==typeof prev?actions[t]=[prev,s]:prev?actions[t].push(s):actions[t]=s);actions?actions.if?(me.doIf(actions.if,actions),stack.push({type:"if"})):actions.switch?(me.doSwitch(actions.switch,actions),stack.push({type:"switch"})):actions.case?me.doCase(actions.case,actions):actions.elif?me.doElseIf(actions.elif,actions):actions.for?(++me.level,(prop=me.propRe.exec(m[4]))&&(actions.propName=prop[1]||prop[2]),me.doFor(actions.for,actions),stack.push({type:"for",actions:actions})):actions.foreach?(++me.level,(prop=me.propRe.exec(m[4]))&&(actions.propName=prop[1]||prop[2]),me.doForEach(actions.foreach,actions),stack.push({type:"foreach",actions:actions})):actions.exec&&(me.doExec(actions.exec,actions),stack.push({type:"exec",actions:actions})):me.elseRe.test(m[4])?me.doElse():me.defaultRe.test(m[4])?me.doDefault():(me.doTpl(),stack.push({type:"tpl"}))}else 5===m[0].length?stack.push({type:"tpl"}):(frame=stack.pop(),me.doEnd(frame.type,frame.actions),"for"!=frame.type&&"foreach"!=frame.type||--me.level)}},topRe:/(?:(\{\%)|(\{\[)|\{([^{}]+)\})|(?:<tpl([^>]*)\>)|(?:<\/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*$/});Ext.define("Ext.XTemplateCompiler",{extend:"Ext.XTemplateParser",useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:!0,propNameRe:/^[\w\d\$]*$/,compile:function(tpl){var me=this,code=me.generate(tpl);return me.useEval?me.evalTpl(code):new Function("Ext",code)(Ext)},generate:function(tpl){var code,me=this,definitions="var fm=Ext.util.Format,ts=Object.prototype.toString;";return me.maxLevel=0,me.body=["var c0=values, a0="+me.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"],me.definitions?"string"==typeof me.definitions?me.definitions=[me.definitions,definitions]:me.definitions.push(definitions):me.definitions=[definitions],me.switches=[],me.parse(tpl),me.definitions.push((me.useEval?"$=":"return")+" function ("+me.fnArgs+") {",me.body.join(""),"}"),code=me.definitions.join("\n"),me.definitions.length=me.body.length=me.switches.length=0,delete me.definitions,delete me.body,delete me.switches,code},doText:function(text){var me=this,out=me.body;text=text.replace(me.aposRe,"\\'").replace(me.newLineRe,"\\n"),me.useIndex?out.push("out[out.length]='",text,"'\n"):out.push("out.push('",text,"')\n")},doExpr:function(expr){var out=this.body;out.push("if ((v="+expr+") != null) out"),this.useIndex?out.push("[out.length]=v+''\n"):out.push(".push(v+'')\n")},doTag:function(tag){var expr=this.parseTag(tag);expr?this.doExpr(expr):this.doText("{"+tag+"}")},doElse:function(){this.body.push("} else {\n")},doEval:function(text){this.body.push(text,"\n")},doIf:function(action,actions){var me=this;"."===action?me.body.push("if (values) {\n"):me.propNameRe.test(action)?me.body.push("if (",me.parseTag(action),") {\n"):me.body.push("if (",me.addFn(action),me.callFn,") {\n"),actions.exec&&me.doExec(actions.exec)},doElseIf:function(action,actions){var me=this;"."===action?me.body.push("else if (values) {\n"):me.propNameRe.test(action)?me.body.push("} else if (",me.parseTag(action),") {\n"):me.body.push("} else if (",me.addFn(action),me.callFn,") {\n"),actions.exec&&me.doExec(actions.exec)},doSwitch:function(action){var me=this;"."===action?me.body.push("switch (values) {\n"):me.propNameRe.test(action)?me.body.push("switch (",me.parseTag(action),") {\n"):me.body.push("switch (",me.addFn(action),me.callFn,") {\n"),me.switches.push(0)},doCase:function(action){var match,i,me=this,cases=Ext.isArray(action)?action:[action],n=me.switches.length-1;for(me.switches[n]?me.body.push("break;\n"):me.switches[n]++,i=0,n=cases.length;i<n;++i)match=me.intRe.exec(cases[i]),cases[i]=match?match[1]:"'"+cases[i].replace(me.aposRe,"\\'")+"'";me.body.push("case ",cases.join(": case "),":\n")},doDefault:function(){var me=this,n=me.switches.length-1;me.switches[n]?me.body.push("break;\n"):me.switches[n]++,me.body.push("default:\n")},doEnd:function(type,actions){var me=this,L=me.level-1;"for"==type||"foreach"==type?(actions.exec&&me.doExec(actions.exec),me.body.push("}\n"),me.body.push("parent=p",L,";values=r",L+1,";xcount=n"+L+";xindex=i",L,"+1;xkey=k",L,";\n")):"if"!=type&&"switch"!=type||me.body.push("}\n")},doFor:function(action,actions){var s,parentAssignment,me=this,L=me.level,up=L-1;s="."===action?"values":me.propNameRe.test(action)?me.parseTag(action):me.addFn(action)+me.callFn,me.maxLevel<L&&(me.maxLevel=L,me.body.push("var ")),parentAssignment="."==action?"c"+L:"a"+up+"?c"+up+"[i"+up+"]:c"+up,me.body.push("i",L,"=0,n",L,"=0,c",L,"=",s,",a",L,"=",me.createArrayTest(L),",r",L,"=values,p",L,",k",L,";\n","p",L,"=parent=",parentAssignment,"\n","if (c",L,"){if(a",L,"){n",L,"=c",L,".length;}else if (c",L,".isMixedCollection){c",L,"=c",L,".items;n",L,"=c",L,".length;}else if(c",L,".isStore){c",L,"=c",L,".data.items;n",L,"=c",L,".length;}else{c",L,"=[c",L,"];n",L,"=1;}}\n","for (xcount=n",L,";i",L,"<n"+L+";++i",L,"){\n","values=c",L,"[i",L,"]"),actions.propName&&me.body.push(".",actions.propName),me.body.push("\n","xindex=i",L,"+1\n"),actions.between&&me.body.push('if(xindex>1){ out.push("',actions.between,'"); } \n')},doForEach:function(action,actions){var s,parentAssignment,me=this,L=me.level,up=L-1;s="."===action?"values":me.propNameRe.test(action)?me.parseTag(action):me.addFn(action)+me.callFn,me.maxLevel<L&&(me.maxLevel=L,me.body.push("var ")),parentAssignment="."==action?"c"+L:"a"+up+"?c"+up+"[i"+up+"]:c"+up,me.body.push("i",L,"=-1,n",L,"=0,c",L,"=",s,",a",L,"=",me.createArrayTest(L),",r",L,"=values,p",L,",k",L,";\n","p",L,"=parent=",parentAssignment,"\n","for(k",L," in c",L,"){\n","xindex=++i",L,"+1;\n","xkey=k",L,";\n","values=c",L,"[k",L,"];"),actions.propName&&me.body.push(".",actions.propName),actions.between&&me.body.push('if(xindex>1){ out.push("',actions.between,'"); } \n')},createArrayTest:"isArray"in Array?function(L){return"Array.isArray(c"+L+")"}:function(L){return"ts.call(c"+L+')==="[object Array]"'},doExec:function(action,actions){var me=this,name="f"+me.definitions.length;me.definitions.push("function "+name+"("+me.fnArgs+") {"," try { with(values) {","  "+action," }} catch(e) {",'Ext.log("XTemplate Error: " + e.message);',"}","}"),me.body.push(name+me.callFn+"\n")},addFn:function(body){var me=this,name="f"+me.definitions.length;return"."===body?me.definitions.push("function "+name+"("+me.fnArgs+") {"," return values","}"):".."===body?me.definitions.push("function "+name+"("+me.fnArgs+") {"," return parent","}"):me.definitions.push("function "+name+"("+me.fnArgs+") {"," try { with(values) {","  return("+body+")"," }} catch(e) {",'Ext.log("XTemplate Error: " + e.message);',"}","}"),name},parseTag:function(tag){var name,format,args,math,v,me=this,m=me.tagRe.exec(tag);return m?(name=m[1],format=m[2],args=m[3],math=m[4],"."==name?(me.validTypes||(me.definitions.push("var validTypes={string:1,number:1,boolean:1};"),me.validTypes=!0),v='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'):v="#"==name?"xindex":"$"==name?"xkey":"parent."==name.substr(0,7)?name:isNaN(name)&&-1==name.indexOf("-")&&-1!=name.indexOf(".")?"values."+name:"values['"+name+"']",math&&(v="("+v+math+")"),format&&me.useFormat?(args=args?","+args:"","this."!=format.substr(0,5)?format="fm."+format+"(":format+="(",format+v+args+")"):v):null},evalTpl:function($){return eval($),$},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},function(){var proto=this.prototype;proto.fnArgs="out,values,parent,xindex,xcount,xkey",proto.callFn=".call(this,"+proto.fnArgs+")"});Ext.define("Ext.XTemplate",{extend:"Ext.Template",requires:"Ext.XTemplateCompiler",emptyObj:{},apply:function(values,parent){return this.applyOut(values,[],parent).join("")},applyOut:function(values,out,parent){var compiler,me=this;me.fn||(compiler=new Ext.XTemplateCompiler({useFormat:!0!==me.disableFormats,definitions:me.definitions}),me.fn=compiler.compile(me.html));try{me.fn(out,values,parent||me.emptyObj,1,1)}catch(e){Ext.log("Error: "+e.message)}return out},compile:function(){return this},statics:{getTpl:function(instance,name){var owner,tpl=instance[name];if(tpl&&!tpl.isTemplate){if(tpl=Ext.ClassManager.dynInstantiate("Ext.XTemplate",tpl),instance.hasOwnProperty(name))owner=instance;else for(owner=instance.self.prototype;owner&&!owner.hasOwnProperty(name);owner=owner.superclass);owner[name]=tpl,tpl.owner=owner}return tpl||null}}});Ext.ns("Ext.core"),Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=function(){function children(parent){for(var nextNode,n=parent.firstChild,nodeIndex=-1;n;)nextNode=n.nextSibling,3!=n.nodeType||nonSpace.test(n.nodeValue)?n.nodeIndex=++nodeIndex:parent.removeChild(n),n=nextNode;return this}function attrValue(n,attr){return n.tagName||void 0===n.length||(n=n[0]),n?"for"==attr?n.htmlFor:"class"==attr||"className"==attr?n.className:n.getAttribute(attr)||n[attr]:null}function getNodes(ns,mode,tagName){var cs,i,ni,j,ci,cn,utag,n,cj,result=[],ri=-1;if(!ns)return result;if(tagName=tagName.replace("|",":")||"*",void 0!==ns.getElementsByTagName&&(ns=[ns]),mode){if("/"==mode||">"==mode)for(utag=tagName.toUpperCase(),i=0;ni=ns[i];i++)for(cn=ni.childNodes,j=0;cj=cn[j];j++)cj.nodeName!=utag&&cj.nodeName!=tagName&&"*"!=tagName||(result[++ri]=cj);else if("+"==mode)for(utag=tagName.toUpperCase(),i=0;n=ns[i];i++){for(;(n=n.nextSibling)&&1!=n.nodeType;);!n||n.nodeName!=utag&&n.nodeName!=tagName&&"*"!=tagName||(result[++ri]=n)}else if("~"==mode)for(utag=tagName.toUpperCase(),i=0;n=ns[i];i++)for(;n=n.nextSibling;)n.nodeName!=utag&&n.nodeName!=tagName&&"*"!=tagName||(result[++ri]=n)}else if(tagName=unescapeCssSelector(tagName),!supportsColonNsSeparator&&DQ.isXml(ns[0])&&-1!==tagName.indexOf(":"))for(i=0;ni=ns[i];i++)for(cs=ni.getElementsByTagName(tagName.split(":").pop()),j=0;ci=cs[j];j++)ci.tagName===tagName&&(result[++ri]=ci);else for(i=0;ni=ns[i];i++)for(cs=ni.getElementsByTagName(tagName),j=0;ci=cs[j];j++)result[++ri]=ci;return result}function concat(a,b){return a.push.apply(a,b),a}function byTag(cs,tagName){if((cs.tagName||cs===doc)&&(cs=[cs]),!tagName)return cs;var i,ci,result=[],ri=-1;for(tagName=tagName.toLowerCase(),i=0;ci=cs[i];i++)1==ci.nodeType&&ci.tagName.toLowerCase()==tagName&&(result[++ri]=ci);return result}function byId(cs,id){if(id=unescapeCssSelector(id),(cs.tagName||cs===doc)&&(cs=[cs]),!id)return cs;var i,ci,result=[],ri=-1;for(i=0;ci=cs[i];i++)if(ci&&ci.id==id)return result[++ri]=ci,result;return result}function byAttribute(cs,attr,value,op,custom){var a,xml,hasXml,i,ci,result=[],ri=-1,useGetStyle="{"==custom,fn=DQ.operators[op];for(value=unescapeCssSelector(value),i=0;ci=cs[i];i++)1===ci.nodeType&&(hasXml||(xml=DQ.isXml(ci),hasXml=!0),a=xml?ci.getAttribute(attr):useGetStyle?DQ.getStyle(ci,attr):"class"==attr||"className"==attr?ci.className:"for"==attr?ci.htmlFor:"href"==attr?ci.getAttribute("href",2):ci.getAttribute(attr),(fn&&fn(a,value)||!fn&&a)&&(result[++ri]=ci));return result}function byPseudo(cs,name,value){return value=unescapeCssSelector(value),DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var r,i,len,c,d=++key;for(cs[0].setAttribute("_nodup",d),r=[cs[0]],i=1,len=cs.length;i<len;i++)c=cs[i],!c.getAttribute("_nodup")!=d&&(c.setAttribute("_nodup",d),r[r.length]=c);for(i=0,len=cs.length;i<len;i++)cs[i].removeAttribute("_nodup");return r}function nodup(cs){if(!cs)return[];var c,i,cj,d,j,len=cs.length,r=cs,ri=-1;if(!len||void 0!==cs.nodeType||1==len)return cs;if(isIE&&void 0!==cs[0].selectSingleNode)return nodupIEXml(cs);for(d=++key,cs[0]._nodup=d,i=1;c=cs[i];i++){if(c._nodup==d){for(r=[],j=0;j<i;j++)r[++ri]=cs[j];for(j=i+1;cj=cs[j];j++)cj._nodup!=d&&(cj._nodup=d,r[++ri]=cj);return r}c._nodup=d}return r}function quickDiffIEXml(c1,c2){var i,len,d=++key,r=[];for(i=0,len=c1.length;i<len;i++)c1[i].setAttribute("_qdiff",d);for(i=0,len=c2.length;i<len;i++)c2[i].getAttribute("_qdiff")!=d&&(r[r.length]=c2[i]);for(i=0,len=c1.length;i<len;i++)c1[i].removeAttribute("_qdiff");return r}function quickDiff(c1,c2){var i,len,len1=c1.length,d=++key,r=[];if(!len1)return c2;if(isIE&&void 0!==c1[0].selectSingleNode)return quickDiffIEXml(c1,c2);for(i=0;i<len1;i++)c1[i]._qdiff=d;for(i=0,len=c2.length;i<len;i++)c2[i]._qdiff!=d&&(r[r.length]=c2[i]);return r}function quickId(ns,mode,root,id){if(ns==root){id=unescapeCssSelector(id);return(root.ownerDocument||root).getElementById(id)}return ns=getNodes(ns,mode,"*"),byId(ns,id)}var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=function(){var d=doc.createElement("div");return d.innerHTML="\x3c!-- --\x3etext\x3c!-- --\x3e",d.children&&0===d.children.length}(),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,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='<r><a:b xmlns:a="n"></a:b></r>';return window.DOMParser?xmlDoc=(new DOMParser).parseFromString(xmlString,"application/xml"):(xmlDoc=new ActiveXObject("Microsoft.XMLDOM"),xmlDoc.loadXML(xmlString)),!!xmlDoc.getElementsByTagName("a:b").length}(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){for(;$1.length<6;)$1="0"+$1;return"\\"+$1},charToLongHex=function($0,$1){return num=$1.charCodeAt(0).toString(16),1===num.length&&(num="0"+num),"\\0000"+num},unescapeCssSelector=function(selector){return hasEscapes?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){return hasEscapes=path.indexOf("\\")>-1,hasEscapes&&(path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")),path};return eval("var batch = 30803, child, next, prev, byClassName;"),child=useChildrenCollection?function(parent,index){return parent.children[index]}:function(parent,index){for(var i=0,n=parent.firstChild;n;){if(1==n.nodeType&&++i==index)return n;n=n.nextSibling}return null},next=useElementPointer?function(n){return n.nextElementSibling}:function(n){for(;(n=n.nextSibling)&&1!=n.nodeType;);return n},prev=useElementPointer?function(n){return n.previousElementSibling}:function(n){for(;(n=n.previousSibling)&&1!=n.nodeType;);return n},byClassName=useClassList?function(nodeSet,cls){if(!(cls=unescapeCssSelector(cls)))return nodeSet;var i,ci,classList,result=[],ri=-1;for(i=0;ci=nodeSet[i];i++)classList=ci.classList,classList?classList.contains(cls)&&(result[++ri]=ci):-1!==(" "+ci.className+" ").indexOf(cls)&&(result[++ri]=ci);return result}:function(nodeSet,cls){if(!(cls=unescapeCssSelector(cls)))return nodeSet;var i,ci,result=[],ri=-1;for(i=0;ci=nodeSet[i];i++)-1!==(" "+ci.className+" ").indexOf(cls)&&(result[++ri]=ci);return result},DQ={getStyle:function(el,name){return Ext.fly(el,"_DomQuery").getStyle(name)},compile:function(path,type){type=type||"select";var fn=["var f = function(root) {\n var mode; ++batch; var n = root || document;\n"],lastPath,matchers=DQ.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe),tokenMatch,matched,j,t,m;for(path=setupEscapes(path),lmode&&lmode[1]&&(fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";',path=path.replace(lmode[1],""));"/"==path.substr(0,1);)path=path.substr(1);for(;path&&lastPath!=path;){for(lastPath=path,tokenMatch=path.match(tagTokenRe),"select"==type?tokenMatch?("#"==tokenMatch[1]?fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");':fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");',path=path.replace(tokenMatch[0],"")):"@"!=path.substr(0,1)&&(fn[fn.length]='n = getNodes(n, mode, "*");'):tokenMatch&&("#"==tokenMatch[1]?fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");':fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");',path=path.replace(tokenMatch[0],""));!(modeMatch=path.match(modeRe));){for(matched=!1,j=0;j<matchersLn;j++)if(t=matchers[j],m=path.match(t.re)){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i]}),path=path.replace(m[0],""),matched=!0;break}matched||Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"compile",msg:'Error parsing selector. Parsing failed at "'+path+'"'})}modeMatch[1]&&(fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";',path=path.replace(modeMatch[1],""))}return fn[fn.length]="return nodup(n);\n}",eval(fn.join("")),f},jsSelect:function(path,root,type){"string"==typeof(root=root||doc)&&(root=doc.getElementById(root));var i,len,subPath,result,paths=path.split(","),results=[];for(i=0,len=paths.length;i<len;i++)subPath=paths[i].replace(trimRe,""),cache[subPath]?setupEscapes(subPath):(cache[subPath]=DQ.compile(subPath,type),cache[subPath]||Ext.Error.raise({sourceClass:"Ext.DomQuery",sourceMethod:"jsSelect",msg:subPath+" is not a valid selector"})),(result=cache[subPath](root))&&result!==doc&&(results=results.concat(result));return paths.length>1?nodup(results):results},isXml:function(el){var docEl=(el?el.ownerDocument||el:0).documentElement;return!!docEl&&"HTML"!==docEl.nodeName},select:doc.querySelectorAll?function(path,root,type,single){if(root=root||doc,!DQ.isXml(root))try{return root.parentNode&&9!==root.nodeType&&-1===path.indexOf(",")&&!startIdRe.test(path)&&(path="#"+Ext.escapeId(Ext.id(root))+" "+path,root=root.parentNode),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,!0)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,""),valueCache[path]?setupEscapes(path):valueCache[path]=DQ.compile(path,"select");var v,n=valueCache[path](root);return n=n[0]?n[0]:n,"function"==typeof n.normalize&&n.normalize(),v=n&&n.firstChild?n.firstChild.nodeValue:null,null===v||void 0===v||""===v?defaultValue:v},selectNumber:function(path,root,defaultValue){var v=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){"string"==typeof el&&(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,""),simpleCache[ss]?setupEscapes(ss):simpleCache[ss]=DQ.compile(ss,"simple");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&&-1!==a.indexOf(v)},"%=":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&&-1!=(" "+a+" ").indexOf(" "+v+" ")}},pseudos:{"first-child":function(c){var n,i,ci,r=[],ri=-1;for(i=0;ci=n=c[i];i++){for(;(n=n.previousSibling)&&1!=n.nodeType;);n||(r[++ri]=ci)}return r},"last-child":function(c){var n,i,ci,r=[],ri=-1;for(i=0;ci=n=c[i];i++){for(;(n=n.nextSibling)&&1!=n.nodeType;);n||(r[++ri]=ci)}return r},"nth-child":function(c,a){var i,n,j,cn,pn,r=[],ri=-1,m=nthRe.exec("even"==a&&"2n"||"odd"==a&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;for(i=0;n=c[i];i++){if(pn=n.parentNode,batch!=pn._batch){for(j=0,cn=pn.firstChild;cn;cn=cn.nextSibling)1==cn.nodeType&&(cn.nodeIndex=++j);pn._batch=batch}1==f?0!==l&&n.nodeIndex!=l||(r[++ri]=n):(n.nodeIndex+l)%f==0&&(r[++ri]=n)}return r},"only-child":function(c){var i,ci,r=[],ri=-1;for(i=0;ci=c[i];i++)prev(ci)||next(ci)||(r[++ri]=ci);return r},empty:function(c){var i,ci,cns,j,cn,empty,r=[],ri=-1;for(i=0;ci=c[i];i++){for(cns=ci.childNodes,j=0,empty=!0;cn=cns[j];)if(++j,1==cn.nodeType||3==cn.nodeType){empty=!1;break}empty&&(r[++ri]=ci)}return r},contains:function(c,v){var i,ci,r=[],ri=-1;for(i=0;ci=c[i];i++)-1!=(ci.textContent||ci.innerText||ci.text||"").indexOf(v)&&(r[++ri]=ci);return r},nodeValue:function(c,v){var i,ci,r=[],ri=-1;for(i=0;ci=c[i];i++)ci.firstChild&&ci.firstChild.nodeValue==v&&(r[++ri]=ci);return r},checked:function(c){var i,ci,r=[],ri=-1;for(i=0;ci=c[i];i++)!0===ci.checked&&(r[++ri]=ci);return r},not:function(c,ss){return DQ.filter(c,ss,!0)},any:function(c,selectors){var s,i,ci,j,ss=selectors.split("|"),r=[],ri=-1;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 i,ci,s=DQ.select,r=[],ri=-1;for(i=0;ci=c[i];i++)s(ss,ci).length>0&&(r[++ri]=ci);return r},next:function(c,ss){var i,ci,n,is=DQ.is,r=[],ri=-1;for(i=0;ci=c[i];i++)(n=next(ci))&&is(n,ss)&&(r[++ri]=ci);return r},prev:function(c,ss){var i,ci,n,is=DQ.is,r=[],ri=-1;for(i=0;ci=c[i];i++)(n=prev(ci))&&is(n,ss)&&(r[++ri]=ci);return r},focusable:function(candidates){for(var c,len=candidates.length,results=[],i=0;i<len;i++)c=candidates[i],Ext.fly(c,"_DomQuery").isFocusable()&&results.push(c);return results},visible:function(candidates,deep){for(var c,len=candidates.length,results=[],i=0;i<len;i++)c=candidates[i],Ext.fly(c,"_DomQuery").isVisible(deep)&&results.push(c);return results}}}}(),Ext.query=Ext.DomQuery.select;Ext.define("Ext.dom.Element_anim",{override:"Ext.dom.Element",animate:function(config){var listeners,anim,end,me=this,animId=me.dom.id||Ext.id(me.dom);return Ext.fx.Manager.hasFxBlock(animId)||(config.listeners&&(listeners=config.listeners,delete config.listeners),config.internalListeners&&(config.listeners=config.internalListeners,delete config.internalListeners),end=config.autoEnd,delete config.autoEnd,anim=new Ext.fx.Anim(me.anim(config)),listeners&&anim.on(listeners),Ext.fx.Manager.queueFx(anim),end&&anim.jumpToEnd()),me},anim:function(config){if(!Ext.isObject(config))return!!config&&{};var animConfig,me=this,duration=config.duration||Ext.fx.Anim.prototype.duration,easing=config.easing||"ease";return config.stopAnimation&&me.stopAnimation(),Ext.applyIf(config,Ext.fx.Manager.getFxDefaults(me.id)),Ext.fx.Manager.setFxDefaults(me.id,{delay:0}),animConfig={target:me.dom,remove:config.remove,alternate:config.alternate||!1,duration:duration,easing:easing,callback:config.callback,listeners:config.listeners,iterations:config.iterations||1,scope:config.scope,block:config.block,concurrent:config.concurrent,delay:config.delay||0,paused:!0,keyframes:config.keyframes,from:config.from||{},to:Ext.apply({},config)},Ext.apply(animConfig.to,config.to),delete animConfig.to.to,delete animConfig.to.from,delete animConfig.to.remove,delete animConfig.to.alternate,delete animConfig.to.keyframes,delete animConfig.to.iterations,delete animConfig.to.listeners,delete animConfig.to.target,delete animConfig.to.paused,delete animConfig.to.callback,delete animConfig.to.scope,delete animConfig.to.duration,delete animConfig.to.easing,delete animConfig.to.concurrent,delete animConfig.to.block,delete animConfig.to.stopAnimation,delete animConfig.to.delay,animConfig},slideIn:function(anchor,obj,slideOut){var beforeAnim,wrapAnim,restoreScroll,wrapDomParentNode,me=this,dom=me.dom,elStyle=dom.style;return anchor=anchor||"t",obj=obj||{},beforeAnim=function(){var box,originalStyles,anim,wrap,animScope=this,listeners=obj.listeners,el=Ext.fly(dom,"_anim");switch(slideOut||el.fixDisplay(),box=el.getBox(),"t"!=anchor&&"b"!=anchor||0!==box.height?"l"!=anchor&&"r"!=anchor||0!==box.width||(box.width=dom.scrollWidth):box.height=dom.scrollHeight,originalStyles=el.getStyles("width","height","left","right","top","bottom","position","z-index",!0),el.setSize(box.width,box.height),obj.preserveScroll&&(restoreScroll=el.cacheScrollValues()),wrap=el.wrap({role:"presentation",id:Ext.id()+"-anim-wrap-for-"+el.dom.id,style:{visibility:slideOut?"visible":"hidden"}}),wrapDomParentNode=wrap.dom.parentNode,wrap.setPositioning(el.getPositioning(!0)),wrap.isStyle("position","static")&&wrap.position("relative"),el.clearPositioning("auto"),wrap.clip(),restoreScroll&&restoreScroll(),el.setStyle({visibility:"",position:"absolute"}),slideOut&&wrap.setSize(box.width,box.height),anchor){case"t":anim={from:{width:box.width+"px",height:"0px"},to:{width:box.width+"px",height:box.height+"px"}},elStyle.bottom="0px";break;case"l":anim={from:{width:"0px",height:box.height+"px"},to:{width:box.width+"px",height:box.height+"px"}},me.anchorAnimX(anchor);break;case"r":anim={from:{x:box.x+box.width,width:"0px",height:box.height+"px"},to:{x:box.x,width:box.width+"px",height:box.height+"px"}},me.anchorAnimX(anchor);break;case"b":anim={from:{y:box.y+box.height,width:box.width+"px",height:"0px"},to:{y:box.y,width:box.width+"px",height:box.height+"px"}};break;case"tl":anim={from:{x:box.x,y:box.y,width:"0px",height:"0px"},to:{width:box.width+"px",height:box.height+"px"}},elStyle.bottom="0px",me.anchorAnimX("l");break;case"bl":anim={from:{y:box.y+box.height,width:"0px",height:"0px"},to:{y:box.y,width:box.width+"px",height:box.height+"px"}},me.anchorAnimX("l");break;case"br":anim={from:{x:box.x+box.width,y:box.y+box.height,width:"0px",height:"0px"},to:{x:box.x,y:box.y,width:box.width+"px",height:box.height+"px"}},me.anchorAnimX("r");break;case"tr":anim={from:{x:box.x+box.width,width:"0px",height:"0px"},to:{x:box.x,width:box.width+"px",height:box.height+"px"}},elStyle.bottom="0px",me.anchorAnimX("r")}wrap.show(),wrapAnim=Ext.apply({},obj),delete wrapAnim.listeners,wrapAnim=new Ext.fx.Anim(Ext.applyIf(wrapAnim,{target:wrap,duration:500,easing:"ease-out",from:slideOut?anim.to:anim.from,to:slideOut?anim.from:anim.to})),wrapAnim.on("afteranimate",function(){var el=Ext.fly(dom,"_anim");el.setStyle(originalStyles),slideOut&&(obj.useDisplay?el.setDisplayed(!1):el.hide()),wrap.dom&&(wrap.dom.parentNode?wrap.dom.parentNode.insertBefore(el.dom,wrap.dom):wrapDomParentNode.appendChild(el.dom),wrap.remove()),restoreScroll&&restoreScroll(),animScope.end()}),listeners&&wrapAnim.on(listeners)},me.animate({duration:obj.duration?2*Math.max(obj.duration,500):1e3,listeners:{beforeanimate:beforeAnim}}),me},slideOut:function(anchor,o){return this.slideIn(anchor,o,!0)},puff:function(obj){var beforeAnim,me=this,dom=me.dom,box=me.getBox(),originalStyles=me.getStyles("width","height","left","right","top","bottom","position","z-index","font-size","opacity",!0);return obj=Ext.applyIf(obj||{},{easing:"ease-out",duration:500,useDisplay:!1}),beforeAnim=function(){var el=Ext.fly(dom,"_anim");el.clearOpacity(),el.show(),this.to={width:2*box.width,height:2*box.height,x:box.x-box.width/2,y:box.y-box.height/2,opacity:0,fontSize:"200%"},this.on("afteranimate",function(){var el=Ext.fly(dom,"_anim");el&&(obj.useDisplay?el.setDisplayed(!1):el.hide(),el.setStyle(originalStyles),Ext.callback(obj.callback,obj.scope))})},me.animate({duration:obj.duration,easing:obj.easing,listeners:{beforeanimate:{fn:beforeAnim}}}),me},switchOff:function(obj){var beforeAnim,me=this,dom=me.dom;return obj=Ext.applyIf(obj||{},{easing:"ease-in",duration:500,remove:!1,useDisplay:!1}),beforeAnim=function(){var keyframe,position,el=Ext.fly(dom,"_anim"),animScope=this,size=el.getSize(),xy=el.getXY();el.clearOpacity(),el.clip(),position=el.getPositioning(),keyframe=new Ext.fx.Animator({target:dom,duration:obj.duration,easing:obj.easing,keyframes:{33:{opacity:.3},66:{height:1,y:xy[1]+size.height/2},100:{width:1,x:xy[0]+size.width/2}}}),keyframe.on("afteranimate",function(){var el=Ext.fly(dom,"_anim");obj.useDisplay?el.setDisplayed(!1):el.hide(),el.clearOpacity(),el.setPositioning(position),el.setSize(size),animScope.end()})},me.animate({duration:2*Math.max(obj.duration,500),listeners:{beforeanimate:{fn:beforeAnim}},callback:obj.callback,scope:obj.scope}),me},frame:function(color,count,obj){var beforeAnim,me=this,dom=me.dom;return color=color||"#C3DAF9",count=count||1,obj=obj||{},beforeAnim=function(){var box,proxy,proxyAnim,el=Ext.fly(dom,"_anim"),animScope=this;el.show(),box=el.getBox(),proxy=Ext.getBody().createChild({role:"presentation",id:el.dom.id+"-anim-proxy",style:{position:"absolute","pointer-events":"none","z-index":35e3,border:"0px solid "+color}}),proxyAnim=new Ext.fx.Anim({target:proxy,duration:obj.duration||1e3,iterations:count,from:{top:box.y,left:box.x,borderWidth:0,opacity:1,height:box.height,width:box.width},to:{top:box.y-20,left:box.x-20,borderWidth:10,opacity:0,height:box.height+40,width:box.width+40}}),proxyAnim.on("afteranimate",function(){proxy.remove(),animScope.end()})},me.animate({duration:2*Math.max(obj.duration,500)||2e3,listeners:{beforeanimate:{fn:beforeAnim}},callback:obj.callback,scope:obj.scope}),me},ghost:function(anchor,obj){var beforeAnim,me=this,dom=me.dom;return anchor=anchor||"b",beforeAnim=function(){var el=Ext.fly(dom,"_anim"),width=el.getWidth(),height=el.getHeight(),xy=el.getXY(),position=el.getPositioning(),to={opacity:0};switch(anchor){case"t":to.y=xy[1]-height;break;case"l":to.x=xy[0]-width;break;case"r":to.x=xy[0]+width;break;case"b":to.y=xy[1]+height;break;case"tl":to.x=xy[0]-width,to.y=xy[1]-height;break;case"bl":to.x=xy[0]-width,to.y=xy[1]+height;break;case"br":to.x=xy[0]+width,to.y=xy[1]+height;break;case"tr":to.x=xy[0]+width,to.y=xy[1]-height}this.to=to,this.on("afteranimate",function(){var el=Ext.fly(dom,"_anim");el&&(el.hide(),el.clearOpacity(),el.setPositioning(position))})},me.animate(Ext.applyIf(obj||{},{duration:500,easing:"ease-out",listeners:{beforeanimate:beforeAnim}})),me},highlight:function(color,o){var restore,to,attr,lns,event,fn,me=this,dom=me.dom,from={};return dom.tagName.match(me.tableTagRe)?me.select("div").highlight(color,o):(o=o||{},lns=o.listeners||{},attr=o.attr||"backgroundColor",from[attr]=color||"ffff9c",o.to?to=o.to:(to={},to[attr]=o.endColor||me.getColor(attr,"ffffff","")),o.listeners=Ext.apply(Ext.apply({},lns),{beforeanimate:function(){restore=dom.style[attr];var el=Ext.fly(dom,"_anim");if(el.clearOpacity(),el.show(),event=lns.beforeanimate)return fn=event.fn||event,fn.apply(event.scope||lns.scope||window,arguments)},afteranimate:function(){dom&&(dom.style[attr]=restore),(event=lns.afteranimate)&&(fn=event.fn||event,fn.apply(event.scope||lns.scope||window,arguments))}}),me.animate(Ext.apply({},o,{duration:1e3,easing:"ease-in",from:from,to:to})),me)},pause:function(ms){var me=this;return Ext.fx.Manager.setFxDefaults(me.id,{delay:ms}),me},fadeIn:function(o){var me=this,dom=me.dom;return me.animate(Ext.apply({},o,{opacity:1,internalListeners:{beforeanimate:function(anim){var el=Ext.fly(dom,"_anim");el.isStyle("display","none")?el.setDisplayed(""):el.show()}}})),this},fadeOut:function(o){var me=this,dom=me.dom;return o=Ext.apply({opacity:0,internalListeners:{afteranimate:function(anim){if(dom&&0===anim.to.opacity){var el=Ext.fly(dom,"_anim");o.useDisplay?el.setDisplayed(!1):el.hide()}}}},o),me.animate(o),me},scale:function(w,h,o){return this.animate(Ext.apply({},o,{width:w,height:h})),this},shift:function(config){return this.animate(config),this},anchorAnimX:function(anchor){var xName="l"===anchor?"right":"left";this.dom.style[xName]="0px"}});Ext.define("Ext.dom.Element_dd",{override:"Ext.dom.Element",initDD:function(group,config,overrides){var dd=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDProxy:function(group,config,overrides){var dd=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)},initDDTarget:function(group,config,overrides){var dd=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides)}});Ext.define("Ext.dom.Element_fx",{override:"Ext.dom.Element"},function(){var Element=Ext.dom.Element,OFFSETCLASS=Ext.baseCSSPrefix+"hide-offsets",getDisplay=function(el){var data=(el.$cache||el.getCache()).data,display=data.originalDisplay;return void 0===display&&(data.originalDisplay=display=""),display},getVisMode=function(el){var data=(el.$cache||el.getCache()).data,visMode=data.visibilityMode;return void 0===visMode&&(data.visibilityMode=visMode=Element.VISIBILITY),visMode};Element.override({originalDisplay:"",visibilityMode:1,setVisible:function(visible,animate){var me=this,dom=me.dom,visMode=getVisMode(me);if("string"==typeof animate){switch(animate){case"display":visMode=Element.DISPLAY;break;case"visibility":visMode=Element.VISIBILITY;break;case"offsets":visMode=Element.OFFSETS;break;case"nosize":case"asclass":visMode=Element.ASCLASS}me.setVisibilityMode(visMode),animate=!1}if(animate&&me.anim)visible&&(me.setOpacity(.01),me.setVisible(!0)),Ext.isObject(animate)||(animate={duration:350,easing:"ease-in"}),me.animate(Ext.applyIf({callback:function(){visible||Ext.fly(dom,"_internal").setVisible(!1).setOpacity(1)},to:{opacity:visible?1:0}},animate));else{if(visMode==Element.DISPLAY)return me.setDisplayed(visible);visMode==Element.OFFSETS?me[visible?"removeCls":"addCls"](OFFSETCLASS):visMode==Element.VISIBILITY?(me.fixDisplay(),dom.style.visibility=visible?"":"hidden"):visMode==Element.ASCLASS&&me[visible?"removeCls":"addCls"](me.visibilityCls||Element.visibilityCls)}return(me.$cache||me.getCache()).data.isVisible=visible,me},hasMetrics:function(){var visMode=getVisMode(this);return this.isVisible()||visMode==Element.OFFSETS||visMode==Element.VISIBILITY},toggle:function(animate){var me=this;return me.setVisible(!me.isVisible(),me.anim(animate)),me},setDisplayed:function(value){return"boolean"==typeof value&&(value=value?getDisplay(this):"none"),this.setStyle("display",value),this},fixDisplay:function(){var me=this;me.isStyle("display","none")&&(me.setStyle("visibility","hidden"),me.setStyle("display",getDisplay(me)),me.isStyle("display","none")&&me.setStyle("display","block"))},hide:function(animate){return"string"==typeof animate?(this.setVisible(!1,animate),this):(this.setVisible(!1,this.anim(animate)),this)},show:function(animate){return"string"==typeof animate?(this.setVisible(!0,animate),this):(this.setVisible(!0,this.anim(animate)),this)}})});Ext.define("Ext.dom.Element_position",{override:"Ext.dom.Element"},function(){var flyInstance,Element=this,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"},paddingsTLRB=[paddings.l,paddings.r,paddings.t,paddings.b],bordersTLRB=[borders.l,borders.r,borders.t,borders.b],round=Math.round,doc=document,fly=function(el){return flyInstance||(flyInstance=new Ext.Element.Fly),flyInstance.attach(el),flyInstance};Element.override({pxRe:/^\d+(?:\.\d*)?px$/i,inheritableStatics:{getX:function(el){return Element.getXY(el)[0]},getXY:function(el){var box,scroll,bd=doc.body,docEl=doc.documentElement,leftBorder=0,topBorder=0,ret=[0,0];if((el=Ext.getDom(el))!=doc&&el!=bd){if(Ext.isIE)try{box=el.getBoundingClientRect(),topBorder=docEl.clientTop||bd.clientTop,leftBorder=docEl.clientLeft||bd.clientLeft}catch(ex){box={left:0,top:0}}else box=el.getBoundingClientRect();scroll=fly(doc).getScroll(),ret=[round(box.left+scroll.left-leftBorder),round(box.top+scroll.top-topBorder)]}return ret},getY:function(el){return Element.getXY(el)[1]},setX:function(el,x){Element.setXY(el,[x,!1])},setXY:function(el,xy){(el=Ext.fly(el,"_setXY")).position();var pos,pts=el.translatePoints(xy),style=el.dom.style;style.right="auto";for(pos in pts)isNaN(pts[pos])||(style[pos]=pts[pos]+"px")},setY:function(el,y){Element.setXY(el,[!1,y])}},center:function(centerIn){return this.alignTo(centerIn||doc,"c-c")},clearPositioning:function(value){return value=value||"",this.setStyle({left:value,right:value,top:value,bottom:value,"z-index":"",position:"static"})},getAnchorToXY:function(el,anchor,local,mySize){return el.getAnchorXY(anchor,local,mySize)},getBottom:function(local){return(local?this.getLocalY():this.getY())+this.getHeight()},getBorderPadding:function(){var paddingWidth=this.getStyle(paddingsTLRB),bordersWidth=this.getStyle(bordersTLRB);return{beforeX:(parseFloat(bordersWidth[borders.l])||0)+(parseFloat(paddingWidth[paddings.l])||0),afterX:(parseFloat(bordersWidth[borders.r])||0)+(parseFloat(paddingWidth[paddings.r])||0),beforeY:(parseFloat(bordersWidth[borders.t])||0)+(parseFloat(paddingWidth[paddings.t])||0),afterY:(parseFloat(bordersWidth[borders.b])||0)+(parseFloat(paddingWidth[paddings.b])||0)}},getCenterXY:function(){return this.getAlignToXY(doc,"c-c")},getLeft:function(local){return local?this.getLocalX():this.getX()},getLocalX:function(){var me=this,offsetParent=me.dom.offsetParent,x=me.getStyle("left");return x&&"auto"!==x?me.pxRe.test(x)?x=parseFloat(x):(x=me.getX(),offsetParent&&(x-=Element.getX(offsetParent))):x=0,x},getLocalXY:function(){var me=this,offsetParent=me.dom.offsetParent,style=me.getStyle(["left","top"]),x=style.left,y=style.top;return x&&"auto"!==x?me.pxRe.test(x)?x=parseFloat(x):(x=me.getX(),offsetParent&&(x-=Element.getX(offsetParent))):x=0,y&&"auto"!==y?me.pxRe.test(y)?y=parseFloat(y):(y=me.getY(),offsetParent&&(y-=Element.getY(offsetParent))):y=0,[x,y]},getLocalY:function(){var me=this,offsetParent=me.dom.offsetParent,y=me.getStyle("top");return y&&"auto"!==y?me.pxRe.test(y)?y=parseFloat(y):(y=me.getY(),offsetParent&&(y-=Element.getY(offsetParent))):y=0,y},getPageBox:function(getRegion){var me=this,dom=me.dom,isDoc="BODY"==dom.nodeName,w=isDoc?Ext.Element.getViewWidth():dom.offsetWidth,h=isDoc?Ext.Element.getViewHeight():dom.offsetHeight,xy=me.getXY(),t=xy[1],r=xy[0]+w,b=xy[1]+h,l=xy[0];return getRegion?new Ext.util.Region(t,r,b,l):{left:l,top:t,width:w,height:h,right:r,bottom:b}},getPositioning:function(autoPx){var styles=this.getStyle(["left","top","position","z-index"]),dom=this.dom;return autoPx&&("auto"===styles.left&&(styles.left=dom.offsetLeft+"px"),"auto"===styles.top&&(styles.top=dom.offsetTop+"px")),styles},getRight:function(local){return(local?this.getLocalX():this.getX())+this.getWidth()},getTop:function(local){return local?this.getLocalY():this.getY()},getX:function(){return Element.getX(this.dom)},getXY:function(){return Element.getXY(this.dom)},getY:function(){return Element.getY(this.dom)},moveTo:function(x,y,animate){return this.setXY([x,y],animate)},position:function(pos,zIndex,x,y){var me=this;!pos&&me.isStyle("position","static")?me.setStyle("position","relative"):pos&&me.setStyle("position",pos),zIndex&&me.setStyle("z-index",zIndex),(x||y)&&me.setXY([x||!1,y||!1])},setBottom:function(bottom){return this.dom.style.bottom=this.addUnits(bottom),this},setBounds:function(x,y,width,height,animate){return this.setBox({x:x,y:y,width:width,height:height},animate)},setLeft:function(left){return this.dom.style.left=this.addUnits(left),this},setLeftTop:function(left,top){var me=this,style=me.dom.style;return style.left=me.addUnits(left),style.top=me.addUnits(top),me},setLocalX:function(x){var style=this.dom.style;style.right="auto",style.left=null===x?"auto":x+"px"},setLocalXY:function(x,y){var style=this.dom.style;style.right="auto",x&&x.length&&(y=x[1],x=x[0]),null===x?style.left="auto":void 0!==x&&(style.left=x+"px"),null===y?style.top="auto":void 0!==y&&(style.top=y+"px")},setLocalY:function(y){this.dom.style.top=null===y?"auto":y+"px"},setLocation:function(x,y,animate){return this.setXY([x,y],animate)},setPositioning:function(pc){return this.setStyle(pc)},setRight:function(right){return this.dom.style.right=this.addUnits(right),this},setTop:function(top){return this.dom.style.top=this.addUnits(top),this},setX:function(x,animate){return this.setXY([x,this.getY()],animate)},setXY:function(xy,animate){var me=this;return animate&&me.anim?(Ext.isObject(animate)||(animate={}),me.animate(Ext.applyIf({to:{x:xy[0],y:xy[1]}},animate))):Element.setXY(me.dom,xy),this},setY:function(y,animate){return this.setXY([this.getX(),y],animate)}}),Element.getTrueXY=Element.getXY});Ext.define("Ext.dom.Element_scroll",{override:"Ext.dom.Element",isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth},getScroll:function(){var left,top,me=this,dom=me.dom,doc=document,body=doc.body,docElement=doc.documentElement;return dom===doc||dom===body?(left=docElement.scrollLeft||(body?body.scrollLeft:0),top=docElement.scrollTop||(body?body.scrollTop:0)):(left=dom.scrollLeft,top=dom.scrollTop),{left:left,top:top}},getScrollLeft:function(){var dom=this.dom,doc=document;return dom===doc||dom===doc.body?this.getScroll().left:dom.scrollLeft},getScrollTop:function(){var dom=this.dom,doc=document;return dom===doc||dom===doc.body?this.getScroll().top:dom.scrollTop},setScrollLeft:function(left){return this.dom.scrollLeft=left,this},setScrollTop:function(top){return this.dom.scrollTop=top,this},scrollBy:function(deltaX,deltaY,animate){var me=this,dom=me.dom;return deltaX.length?(animate=deltaY,deltaY=deltaX[1],deltaX=deltaX[0]):"number"!=typeof deltaX&&(animate=deltaY,deltaY=deltaX.y,deltaX=deltaX.x),deltaX&&me.scrollTo("left",me.constrainScrollLeft(dom.scrollLeft+deltaX),animate),deltaY&&me.scrollTo("top",me.constrainScrollTop(dom.scrollTop+deltaY),animate),me},scrollTo:function(side,value,animate){var animCfg,top=/top/i.test(side),me=this,prop=top?"scrollTop":"scrollLeft",dom=me.dom;return animate&&me.anim?(animCfg={to:{}},animCfg.to[prop]=value,Ext.isObject(animate)&&Ext.applyIf(animCfg,animate),me.animate(animCfg)):(dom[prop]=value,dom[prop]=value),me},scrollIntoView:function(container,hscroll,animate,highlight){var newPos,me=this,dom=me.dom,offsets=me.getOffsetsTo(container=Ext.getDom(container)||Ext.getBody().dom),left=offsets[0]+container.scrollLeft,top=offsets[1]+container.scrollTop,bottom=top+dom.offsetHeight,right=left+dom.offsetWidth,ctClientHeight=container.clientHeight,ctScrollTop=parseInt(container.scrollTop,10),ctScrollLeft=parseInt(container.scrollLeft,10),ctBottom=ctScrollTop+ctClientHeight,ctRight=ctScrollLeft+container.clientWidth;return highlight&&(animate?animate=Ext.apply({listeners:{afteranimate:function(){me.scrollChildFly.attach(dom).highlight()}}},animate):me.scrollChildFly.attach(dom).highlight()),dom.offsetHeight>ctClientHeight||top<ctScrollTop?newPos=top:bottom>ctBottom&&(newPos=bottom-ctClientHeight),null!=newPos&&me.scrollChildFly.attach(container).scrollTo("top",newPos,animate),!1!==hscroll&&(newPos=null,dom.offsetWidth>container.clientWidth||left<ctScrollLeft?newPos=left:right>ctRight&&(newPos=right-container.clientWidth),null!=newPos&&me.scrollChildFly.attach(container).scrollTo("left",newPos,animate)),me},scrollChildIntoView:function(child,hscroll){this.scrollChildFly.attach(Ext.getDom(child)).scrollIntoView(this,hscroll)},scroll:function(direction,distance,animate){if(!this.isScrollable())return!1;direction=direction.charAt(0);var currentScroll,constrainedScroll,me=this,dom=me.dom,side="r"===direction||"l"===direction?"left":"top",scrolled=!1;return"l"!==direction&&"t"!==direction&&"u"!==direction||(distance=-distance),"left"===side?(currentScroll=dom.scrollLeft,constrainedScroll=me.constrainScrollLeft(currentScroll+distance)):(currentScroll=dom.scrollTop,constrainedScroll=me.constrainScrollTop(currentScroll+distance)),constrainedScroll!==currentScroll&&(this.scrollTo(side,constrainedScroll,animate),scrolled=!0),scrolled},constrainScrollLeft:function(left){var dom=this.dom;return Math.max(Math.min(left,dom.scrollWidth-dom.clientWidth),0)},constrainScrollTop:function(top){var dom=this.dom;return Math.max(Math.min(top,dom.scrollHeight-dom.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(){function getBorderWidth(dom,el,inline,style){return"none"==style[this.styleName]?"0px":style[this.name]}var styleHooks,verticalStyleHooks90,verticalStyleHooks270,edges,k,edge,borderWidth,Element=this,view=document.defaultView,adjustDirect2DTableRe=/table-row|table-.*-group/,DOCORBODYRE=/#document|body/i;if(view&&view.getComputedStyle||(Element.prototype.getStyle=function(property,inline){var camel,domStyle,values,hook,out,style,i,me=this,dom=me.dom,multiple="string"!=typeof property,hooks=me.styleHooks,prop=property,props=prop,len=1,isInline=inline;if(multiple&&(values={},prop=props[0],i=0,!(len=props.length)))return values;if(!dom||dom.documentElement)return values||"";domStyle=dom.style,inline?style=domStyle:(style=dom.currentStyle)||(isInline=!0,style=domStyle);do{if(hook=hooks[prop],hook||(hooks[prop]=hook={name:Element.normalize(prop)}),hook.get)out=hook.get(dom,me,isInline,style);else if(camel=hook.name,hook.canThrow)try{out=style[camel]}catch(e){out=""}else out=style?style[camel]:"";if(!multiple)return out;values[prop]=out,prop=props[++i]}while(i<len);return values}),Element.override({getHeight:function(contentHeight,preciseHeight){var height,floating,me=this,hidden=me.isStyle("display","none");return hidden?0:(height=me.dom.offsetHeight,Ext.supports.Direct2DBug&&(floating=me.adjustDirect2DDimension("height"),preciseHeight?height+=floating:floating>0&&floating<.5&&height++),contentHeight&&(height-=me.getBorderWidth("tb")+me.getPadding("tb")),height<0?0:height)},getWidth:function(contentWidth,preciseWidth){var rect,width,floating,me=this,dom=me.dom,hidden=me.isStyle("display","none");return hidden?0:(Ext.supports.BoundingClientRect?(rect=dom.getBoundingClientRect(),width=!me.vertical||Ext.isIE9||Ext.supports.RotatedBoundingClientRect?rect.right-rect.left:rect.bottom-rect.top,width=preciseWidth?width:Math.ceil(width)):width=dom.offsetWidth,Ext.supports.Direct2DBug&&!me.vertical&&(floating=me.adjustDirect2DDimension("width"),preciseWidth?width+=floating:floating>0&&floating<.5&&width++),contentWidth&&(width-=me.getBorderWidth("lr")+me.getPadding("lr")),width<0?0:width)},setWidth:function(width,animate){var me=this;return width=me.adjustWidth(width),animate&&me.anim?(Ext.isObject(animate)||(animate={}),me.animate(Ext.applyIf({to:{width:width}},animate))):me.dom.style.width=me.addUnits(width),me},setHeight:function(height,animate){var me=this;return height=me.adjustHeight(height),animate&&me.anim?(Ext.isObject(animate)||(animate={}),me.animate(Ext.applyIf({to:{height:height}},animate))):me.dom.style.height=me.addUnits(height),me},applyStyles:function(style){return Ext.DomHelper.applyStyles(this.dom,style),this},setSize:function(width,height,animate){var me=this;return Ext.isObject(width)&&(animate=height,height=width.height,width=width.width),width=me.adjustWidth(width),height=me.adjustHeight(height),animate&&me.anim?(!0===animate&&(animate={}),me.animate(Ext.applyIf({to:{width:width,height:height}},animate))):(me.dom.style.width=me.addUnits(width),me.dom.style.height=me.addUnits(height)),me},getViewSize:function(){var me=this,dom=me.dom,isDoc=DOCORBODYRE.test(dom.nodeName);return isDoc?{width:Element.getViewWidth(),height:Element.getViewHeight()}:{width:dom.clientWidth,height:dom.clientHeight}},getSize:function(contentSize){return{width:this.getWidth(contentSize),height:this.getHeight(contentSize)}},adjustWidth:function(width){var me=this,isNum="number"==typeof width;return isNum&&me.autoBoxAdjust&&!me.isBorderBox()&&(width-=me.getBorderWidth("lr")+me.getPadding("lr")),isNum&&width<0?0:width},adjustHeight:function(height){var me=this,isNum="number"==typeof height;return isNum&&me.autoBoxAdjust&&!me.isBorderBox()&&(height-=me.getBorderWidth("tb")+me.getPadding("tb")),isNum&&height<0?0:height},getColor:function(attr,defaultValue,prefix){var h,len,v=this.getStyle(attr),color=prefix||""===prefix?prefix:"#",i=0;if(!v||/transparent|inherit/.test(v))return defaultValue;if(/^r/.test(v))for(v=v.slice(4,v.length-1).split(","),len=v.length;i<len;i++)h=parseInt(v[i],10),color+=(h<16?"0":"")+h.toString(16);else v=v.replace("#",""),color+=3==v.length?v.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):v;return color.length>5?color.toLowerCase():defaultValue},setOpacity:function(opacity,animate){var me=this;return me.dom?(animate&&me.anim?("object"!=typeof animate&&(animate={duration:350,easing:"ease-in"}),me.animate(Ext.applyIf({to:{opacity:opacity}},animate))):me.setStyle("opacity",opacity),me):me},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(dimension){var floating,me=this,dom=me.dom,display=me.getStyle("display"),inlineDisplay=dom.style.display,inlinePosition=dom.style.position,originIndex="width"===dimension?0:1,currentStyle=dom.currentStyle;return"inline"===display&&(dom.style.display="inline-block"),dom.style.position=display.match(adjustDirect2DTableRe)?"absolute":"static",floating=(parseFloat(currentStyle[dimension])||2*parseFloat(currentStyle.msTransformOrigin.split(" ")[originIndex]))%1,dom.style.position=inlinePosition,"inline"===display&&(dom.style.display=inlineDisplay),floating},clip:function(){var style,me=this,data=(me.$cache||me.getCache()).data;return data.isClipped||(data.isClipped=!0,style=me.getStyle(["overflow","overflow-x","overflow-y"]),data.originalClip={o:style.overflow,x:style["overflow-x"],y:style["overflow-y"]},me.setStyle("overflow","hidden"),me.setStyle("overflow-x","hidden"),me.setStyle("overflow-y","hidden")),me},unclip:function(){var clip,me=this,data=(me.$cache||me.getCache()).data;return data.isClipped&&(data.isClipped=!1,clip=data.originalClip,clip.o&&me.setStyle("overflow",clip.o),clip.x&&me.setStyle("overflow-x",clip.x),clip.y&&me.setStyle("overflow-y",clip.y)),me},boxWrap:function(cls){cls=cls||Ext.baseCSSPrefix+"box";var el=Ext.get(this.insertHtml("beforeBegin","<div class='"+cls+"' role='presentation'>"+Ext.String.format(Element.boxMarkup,cls)+"</div>"));return Ext.DomQuery.selectNode("."+cls+"-mc",el.dom).appendChild(this.dom),el},getComputedHeight:function(){var me=this,h=Math.max(me.dom.offsetHeight,me.dom.clientHeight);return h||(h=parseFloat(me.getStyle("height"))||0,me.isBorderBox()||(h+=me.getFrameWidth("tb"))),h},getComputedWidth:function(){var me=this,w=Math.max(me.dom.offsetWidth,me.dom.clientWidth);return w||(w=parseFloat(me.getStyle("width"))||0,me.isBorderBox()||(w+=me.getFrameWidth("lr"))),w},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&this.isBorderBox()?0:this.getPadding(sides)+this.getBorderWidth(sides)},addClsOnOver:function(className,testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);return me.hover(function(){hasTest&&!1===testFn.call(scope||me,me)||Ext.fly(dom,"_internal").addCls(className)},function(){Ext.fly(dom,"_internal").removeCls(className)}),me},addClsOnFocus:function(className,testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);return me.on("focus",function(){if(hasTest&&!1===testFn.call(scope||me,me))return!1;Ext.fly(dom,"_internal").addCls(className)}),me.on("blur",function(){Ext.fly(dom,"_internal").removeCls(className)}),me},addClsOnClick:function(className,testFn,scope){var me=this,dom=me.dom,hasTest=Ext.isFunction(testFn);return me.on("mousedown",function(){if(hasTest&&!1===testFn.call(scope||me,me))return!1;Ext.fly(dom,"_internal").addCls(className);var d=Ext.getDoc(),fn=function(){Ext.fly(dom,"_internal").removeCls(className),d.removeListener("mouseup",fn)};d.on("mouseup",fn)}),me},getStyleSize:function(){var s,w,h,me=this,d=this.dom,isDoc=DOCORBODYRE.test(d.nodeName);return isDoc?{width:Element.getViewWidth(),height:Element.getViewHeight()}:(s=me.getStyle(["height","width"],!0),s.width&&"auto"!=s.width&&(w=parseFloat(s.width),me.isBorderBox()&&(w-=me.getFrameWidth("lr"))),s.height&&"auto"!=s.height&&(h=parseFloat(s.height),me.isBorderBox()&&(h-=me.getFrameWidth("tb"))),{width:w||me.getWidth(!0),height:h||me.getHeight(!0)})},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var me=this;return me.dom.unselectable="",me.removeCls(Element.unselectableCls),me.addCls(Element.selectableCls),me},unselectable:function(){var me=this;return Ext.isOpera&&(me.dom.unselectable="on"),me.removeCls(Element.selectableCls),me.addCls(Element.unselectableCls),me},setVertical:function(angle,cls){var me=this,proto=Element.prototype;me.vertical=!0,cls&&me.addCls(me.verticalCls=cls),me.setWidth=proto.setHeight,me.setHeight=proto.setWidth,Ext.isIE9m||(me.getWidth=proto.getHeight,me.getHeight=proto.getWidth),me.styleHooks=270===angle?Element.prototype.verticalStyleHooks270:Element.prototype.verticalStyleHooks90},setHorizontal:function(){var me=this,cls=me.verticalCls;delete me.vertical,cls&&(delete me.verticalCls,me.removeCls(cls)),delete me.setWidth,delete me.setHeight,Ext.isIE9m||(delete me.getWidth,delete me.getHeight),delete me.styleHooks}}),Element.prototype.styleHooks=styleHooks=Ext.dom.AbstractElement.prototype.styleHooks,Element.prototype.verticalStyleHooks90=verticalStyleHooks90=Ext.Object.chain(Element.prototype.styleHooks),Element.prototype.verticalStyleHooks270=verticalStyleHooks270=Ext.Object.chain(Element.prototype.styleHooks),verticalStyleHooks90.width={name:"height"},verticalStyleHooks90.height={name:"width"},verticalStyleHooks90["margin-top"]={name:"marginLeft"},verticalStyleHooks90["margin-right"]={name:"marginTop"},verticalStyleHooks90["margin-bottom"]={name:"marginRight"},verticalStyleHooks90["margin-left"]={name:"marginBottom"},verticalStyleHooks90["padding-top"]={name:"paddingLeft"},verticalStyleHooks90["padding-right"]={name:"paddingTop"},verticalStyleHooks90["padding-bottom"]={name:"paddingRight"},verticalStyleHooks90["padding-left"]={name:"paddingBottom"},verticalStyleHooks90["border-top"]={name:"borderLeft"},verticalStyleHooks90["border-right"]={name:"borderTop"},verticalStyleHooks90["border-bottom"]={name:"borderRight"},verticalStyleHooks90["border-left"]={name:"borderBottom"},verticalStyleHooks270.width={name:"height"},verticalStyleHooks270.height={name:"width"},verticalStyleHooks270["margin-top"]={name:"marginRight"},verticalStyleHooks270["margin-right"]={name:"marginBottom"},verticalStyleHooks270["margin-bottom"]={name:"marginLeft"},verticalStyleHooks270["margin-left"]={name:"marginTop"},verticalStyleHooks270["padding-top"]={name:"paddingRight"},verticalStyleHooks270["padding-right"]={name:"paddingBottom"},verticalStyleHooks270["padding-bottom"]={name:"paddingLeft"},verticalStyleHooks270["padding-left"]={name:"paddingTop"},verticalStyleHooks270["border-top"]={name:"borderRight"},verticalStyleHooks270["border-right"]={name:"borderBottom"},verticalStyleHooks270["border-bottom"]={name:"borderLeft"},verticalStyleHooks270["border-left"]={name:"borderTop"},Ext.isIE7m&&(styleHooks.fontSize=styleHooks["font-size"]={name:"fontSize",canThrow:!0},styleHooks.fontStyle=styleHooks["font-style"]={name:"fontStyle",canThrow:!0},styleHooks.fontFamily=styleHooks["font-family"]={name:"fontFamily",canThrow:!0}),Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8)for(edges=["Top","Right","Bottom","Left"],k=edges.length;k--;)edge=edges[k],borderWidth="border"+edge+"Width",styleHooks["border-"+edge.toLowerCase()+"-width"]=styleHooks[borderWidth]={name:borderWidth,styleName:"border"+edge+"Style",get:getBorderWidth};Ext.getDoc().on("selectstart",function(ev,dom){var doc=document.documentElement,selectableCls=Element.selectableCls,unselectableCls=Element.unselectableCls,tagName=dom&&dom.tagName;if("input"!==(tagName=tagName&&tagName.toLowerCase())&&"textarea"!==tagName)for(;dom&&1===dom.nodeType&&dom!==doc;){var el=Ext.fly(dom);if(el.hasCls(selectableCls))return;if(el.hasCls(unselectableCls))return void ev.stopEvent();dom=dom.parentNode}})}),Ext.onReady(function(){var opacityRe=/alpha\(opacity=(.*)\)/i,trimRe=/^\s+|\s+$/g,hooks=Ext.dom.Element.prototype.styleHooks;hooks.opacity={name:"opacity",afterSet:function(dom,value,el){el.isLayer&&el.onOpacitySet(value)}},!Ext.supports.Opacity&&Ext.isIE&&Ext.apply(hooks.opacity,{get:function(dom){var match,opacity,filter=dom.style.filter;return filter.match&&(match=filter.match(opacityRe))&&(opacity=parseFloat(match[1]),!isNaN(opacity))?opacity?opacity/100:0:1},set:function(dom,value){var style=dom.style,val=style.filter.replace(opacityRe,"").replace(trimRe,"");style.zoom=1,"number"==typeof value&&value>=0&&value<1?(value*=100,style.filter=val+(val.length?" ":"")+"alpha(opacity="+value+")"):style.filter=val}})});Ext.define("Ext.util.Positionable",{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,getAnchorToXY:function(){Ext.Error.raise("getAnchorToXY is not implemented in "+this.$className)},getBorderPadding:function(){Ext.Error.raise("getBorderPadding is not implemented in "+this.$className)},getLocalX:function(){Ext.Error.raise("getLocalX is not implemented in "+this.$className)},getLocalXY:function(){Ext.Error.raise("getLocalXY is not implemented in "+this.$className)},getLocalY:function(){Ext.Error.raise("getLocalY is not implemented in "+this.$className)},getX:function(){Ext.Error.raise("getX is not implemented in "+this.$className)},getXY:function(){Ext.Error.raise("getXY is not implemented in "+this.$className)},getY:function(){Ext.Error.raise("getY is not implemented in "+this.$className)},setLocalX:function(){Ext.Error.raise("setLocalX is not implemented in "+this.$className)},setLocalXY:function(){Ext.Error.raise("setLocalXY is not implemented in "+this.$className)},setLocalY:function(){Ext.Error.raise("setLocalY is not implemented in "+this.$className)},setX:function(){Ext.Error.raise("setX is not implemented in "+this.$className)},setXY:function(){Ext.Error.raise("setXY is not implemented in "+this.$className)},setY:function(){Ext.Error.raise("setY is not implemented in "+this.$className)},adjustForConstraints:function(xy,parent){var vector=this.getConstrainVector(parent,xy);return vector&&(xy[0]+=vector[0],xy[1]+=vector[1]),xy},alignTo:function(element,position,offsets,animate){var me=this,el=me.el;return me.setXY(me.getAlignToXY(element,position,offsets),!(!el.anim||!animate)&&el.anim(animate))},anchorTo:function(anchorToEl,alignment,offsets,animate,monitorScroll,callback){var me=this,scroll=!Ext.isEmpty(monitorScroll),action=function(){me.alignTo(anchorToEl,alignment,offsets,animate),Ext.callback(callback,me)},anchor=me.getAnchor();return me.removeAnchor(),Ext.apply(anchor,{fn:action,scroll:scroll}),Ext.EventManager.onWindowResize(action,null),scroll&&Ext.EventManager.on(window,"scroll",action,null,{buffer:isNaN(monitorScroll)?50:monitorScroll}),action(),me},calculateAnchorXY:function(anchor,extraX,extraY,mySize){var xy,myWidth,myHeight,me=this,el=me.el,doc=document,isViewport=el.dom==doc.body||el.dom==doc,round=Math.round;switch(anchor=(anchor||"tl").toLowerCase(),mySize=mySize||{},myWidth=mySize.width||isViewport?Ext.Element.getViewWidth():me.getWidth(),myHeight=mySize.height||isViewport?Ext.Element.getViewHeight():me.getHeight(),anchor){case"tl":xy=[0,0];break;case"bl":xy=[0,myHeight];break;case"tr":xy=[myWidth,0];break;case"c":xy=[round(.5*myWidth),round(.5*myHeight)];break;case"t":xy=[round(.5*myWidth),0];break;case"l":xy=[0,round(.5*myHeight)];break;case"r":xy=[myWidth,round(.5*myHeight)];break;case"b":xy=[round(.5*myWidth),myHeight];break;case"tc":xy=[round(.5*myWidth),0];break;case"bc":xy=[round(.5*myWidth),myHeight];break;case"br":xy=[myWidth,myHeight]}return[xy[0]+extraX,xy[1]+extraY]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(alignToEl,posSpec,offset){var alignMatch,myPosition,alignToElPosition,myWidth,myHeight,alignToElRegion,swapY,swapX,constrain,align1,align2,p1y,p1x,p2y,p2x,x,y,me=this,viewportWidth=Ext.Element.getViewWidth()-10,viewportHeight=Ext.Element.getViewHeight()-10,doc=document,docElement=doc.documentElement,docBody=doc.body,scrollX=docElement.scrollLeft||docBody.scrollLeft||0,scrollY=docElement.scrollTop||docBody.scrollTop||0;return alignToEl=Ext.get(alignToEl.el||alignToEl),alignToEl&&alignToEl.dom||Ext.Error.raise({sourceClass:"Ext.util.Positionable",sourceMethod:"getAlignToXY",msg:"Attempted to align an element that doesn't exist"}),offset=offset||[0,0],posSpec=(posSpec&&"?"!=posSpec?/-/.test(posSpec)||""===posSpec?posSpec||"tl-bl":"tl-"+posSpec:"tl-bl?").toLowerCase(),posSpec=me.convertPositionSpec(posSpec),alignMatch=posSpec.match(me._alignRe),alignMatch||Ext.Error.raise({sourceClass:"Ext.util.Positionable",sourceMethod:"getAlignToXY",el:alignToEl,position:posSpec,offset:offset,msg:'Attemmpted to align an element with an invalid position: "'+posSpec+'"'}),align1=alignMatch[1],align2=alignMatch[2],constrain=!!alignMatch[3],myPosition=me.getAnchorXY(align1,!0),alignToElPosition=me.getAnchorToXY(alignToEl,align2,!1),x=alignToElPosition[0]-myPosition[0]+offset[0],y=alignToElPosition[1]-myPosition[1]+offset[1],constrain&&(myWidth=me.getWidth(),myHeight=me.getHeight(),alignToElRegion=alignToEl.getRegion(),p1y=align1.charAt(0),p1x=align1.charAt(align1.length-1),p2y=align2.charAt(0),p2x=align2.charAt(align2.length-1),swapY="t"==p1y&&"b"==p2y||"b"==p1y&&"t"==p2y,swapX="r"==p1x&&"l"==p2x||"l"==p1x&&"r"==p2x,x+myWidth>viewportWidth+scrollX&&(x=swapX?alignToElRegion.left-myWidth:viewportWidth+scrollX-myWidth),x<scrollX&&(x=swapX?alignToElRegion.right:scrollX),y+myHeight>viewportHeight+scrollY&&(y=swapY?alignToElRegion.top-myHeight:viewportHeight+scrollY-myHeight),y<scrollY&&(y=swapY?alignToElRegion.bottom:scrollY)),[x,y]},getAnchor:function(){var anchor,el=this.el,data=(el.$cache||el.getCache()).data;if(el.dom)return anchor=data._anchor,anchor||(anchor=data._anchor={}),anchor},getAnchorXY:function(anchor,local,mySize){var me=this,myPos=me.getXY(),el=me.el,doc=document,isViewport=el.dom==doc.body||el.dom==doc,scroll=el.getScroll(),extraX=isViewport?scroll.left:local?0:myPos[0],extraY=isViewport?scroll.top:local?0:myPos[1];return me.calculateAnchorXY(anchor,extraX,extraY,mySize)},getBox:function(contentBox,local){var borderPadding,beforeX,beforeY,me=this,xy=local?me.getLocalXY():me.getXY(),x=xy[0],y=xy[1],w=me.getWidth(),h=me.getHeight();return contentBox&&(borderPadding=me.getBorderPadding(),beforeX=borderPadding.beforeX,beforeY=borderPadding.beforeY,x+=beforeX,y+=beforeY,w-=beforeX+borderPadding.afterX,h-=beforeY+borderPadding.afterY),{x:x,left:x,0:x,y:y,top:y,1:y,width:w,height:h,right:x+w,bottom:y+h}},calculateConstrainedPosition:function(constrainTo,proposedPosition,local,proposedSize){var vector,parentOffset,borderPadding,proposedConstrainPosition,me=this,fp=me.floatParent,parentNode=fp?fp.getTargetEl():null,xy=!1;return local&&fp?(parentOffset=parentNode.getXY(),borderPadding=parentNode.getBorderPadding(),parentOffset[0]+=borderPadding.beforeX,parentOffset[1]+=borderPadding.beforeY,proposedPosition&&(proposedConstrainPosition=[proposedPosition[0]+parentOffset[0],proposedPosition[1]+parentOffset[1]])):proposedConstrainPosition=proposedPosition,constrainTo=constrainTo||me.constrainTo||parentNode||me.container||me.el.parent(),vector=(me.constrainHeader?me.header:me).getConstrainVector(constrainTo,proposedConstrainPosition,proposedSize),vector&&(xy=proposedPosition||me.getPosition(local),xy[0]+=vector[0],xy[1]+=vector[1]),xy},getConstrainVector:function(constrainTo,proposedPosition,proposedSize){var thisRegion=this.getRegion(),vector=[0,0],shadowSize=this.shadow&&this.constrainShadow&&!this.shadowDisabled?this.shadow.getShadowSize():void 0,overflowed=!1,constraintInsets=this.constraintInsets;return constrainTo instanceof Ext.util.Region||(constrainTo=Ext.get(constrainTo.el||constrainTo).getViewRegion()),constraintInsets&&(constraintInsets=Ext.isObject(constraintInsets)?constraintInsets:Ext.Element.parseBox(constraintInsets),constrainTo.adjust(constraintInsets.top,constraintInsets.right,constraintInsets.bottom,constraintInsets.length)),proposedPosition&&thisRegion.translateBy(proposedPosition[0]-thisRegion.x,proposedPosition[1]-thisRegion.y),proposedSize&&(thisRegion.right=thisRegion.left+proposedSize[0],thisRegion.bottom=thisRegion.top+proposedSize[1]),shadowSize&&constrainTo.adjust(shadowSize[0],-shadowSize[1],-shadowSize[2],shadowSize[3]),thisRegion.right>constrainTo.right&&(overflowed=!0,vector[0]=constrainTo.right-thisRegion.right),thisRegion.left+vector[0]<constrainTo.left&&(overflowed=!0,vector[0]=constrainTo.left-thisRegion.left),thisRegion.bottom>constrainTo.bottom&&(overflowed=!0,vector[1]=constrainTo.bottom-thisRegion.bottom),thisRegion.top+vector[1]<constrainTo.top&&(overflowed=!0,vector[1]=constrainTo.top-thisRegion.top),!!overflowed&&vector},getOffsetsTo:function(offsetsTo){var o=this.getXY(),e=Ext.fly(offsetsTo.el||offsetsTo,"_internal").getXY();return[o[0]-e[0],o[1]-e[1]]},getRegion:function(){var box=this.getBox();return new Ext.util.Region(box.top,box.right,box.bottom,box.left)},getViewRegion:function(){var borderPadding,scroll,pos,top,left,width,height,me=this,el=me.el,isBody="BODY"===el.dom.nodeName;return isBody?(scroll=el.getScroll(),left=scroll.left,top=scroll.top,width=Ext.dom.AbstractElement.getViewportWidth(),height=Ext.dom.AbstractElement.getViewportHeight()):(borderPadding=me.getBorderPadding(),pos=me.getXY(),left=pos[0]+borderPadding.beforeX,top=pos[1]+borderPadding.beforeY,width=me.getWidth(!0),height=me.getHeight(!0)),new Ext.util.Region(top,left+width,top+height,left)},move:function(direction,distance,animate){var me=this,xy=me.getXY(),x=xy[0],y=xy[1],left=[x-distance,y],right=[x+distance,y],top=[x,y-distance],bottom=[x,y+distance],hash={l:left,left:left,r:right,right:right,t:top,top:top,up:top,b:bottom,bottom:bottom,down:bottom};direction=direction.toLowerCase(),me.setXY([hash[direction][0],hash[direction][1]],animate)},removeAnchor:function(){var anchor=this.getAnchor();return anchor&&anchor.fn&&(Ext.EventManager.removeResizeListener(anchor.fn),anchor.scroll&&Ext.EventManager.un(window,"scroll",anchor.fn),delete anchor.fn),this},setBox:function(box,animate){var me=this,el=me.el,x=box.x,y=box.y,w=box.width,h=box.height,doConstrain=me.constrain||me.constrainHeader,constrainedPos=doConstrain&&me.calculateConstrainedPosition(null,[x,y],!1,[w,h]);return constrainedPos&&(x=constrainedPos[0],y=constrainedPos[1]),animate&&el.anim?me.animate(Ext.applyIf({to:{x:x,y:y,width:el.adjustWidth(w),height:el.adjustHeight(h)},listeners:{afteranimate:Ext.Function.bind(me.afterSetPosition,me,[x,y])}},animate)):(me.setSize(w,h),me.setXY([x,y]),me.afterSetPosition(x,y)),me},setRegion:function(region,animate){return this.setBox({x:region.left,y:region.top,width:region.right-region.left,height:region.bottom-region.top},animate)},translatePoints:function(x,y){var pos=this.translateXY(x,y);return{left:pos.x,top:pos.y}},translateXY:function(x,y){var me=this,el=me.el,styles=el.getStyle(me._positionTopLeft),relative="relative"==styles.position,left=parseFloat(styles.left),top=parseFloat(styles.top),xy=me.getXY();return Ext.isArray(x)&&(y=x[1],x=x[0]),isNaN(left)&&(left=relative?0:el.dom.offsetLeft),isNaN(top)&&(top=relative?0:el.dom.offsetTop),left="number"==typeof x?x-xy[0]+left:void 0,top="number"==typeof y?y-xy[1]+top:void 0,{x:left,y:top}}});Ext.define("Ext.dom.Element",function(Element){var visFly,DOC=document,XMASKED=Ext.baseCSSPrefix+"masked",XMASKEDRELATIVE=Ext.baseCSSPrefix+"masked-relative",EXTELMASKMSG=Ext.baseCSSPrefix+"mask-msg",bodyRe=/^body/i,noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1},isScrolled=function(c){var i,ci,r=[],ri=-1;for(i=0;ci=c[i];i++)(ci.scrollTop>0||ci.scrollLeft>0)&&(r[++ri]=ci);return r};return{extend:"Ext.dom.AbstractElement",alternateClassName:["Ext.Element","Ext.core.Element"],requires:["Ext.dom.Query","Ext.dom.Element_anim","Ext.dom.Element_dd","Ext.dom.Element_fx","Ext.dom.Element_position","Ext.dom.Element_scroll","Ext.dom.Element_style"],tableTagRe:/^(?:tr|td|table|tbody)$/i,mixins:["Ext.util.Positionable"],addUnits:function(){return Element.addUnits.apply(Element,arguments)},focus:function(defer,dom){var me=this;dom=dom||me.dom;try{Number(defer)?Ext.defer(me.focus,defer,me,[null,dom]):dom.focus()}catch(e){}return me},blur:function(){var me=this,dom=me.dom;if(dom!==document.body){try{dom.blur()}catch(e){}return me}return me.focus(void 0,dom)},isBorderBox:function(){var box=Ext.isBorderBox;return box&&Ext.isIE7m&&(box=!((this.dom.tagName||"").toLowerCase()in noBoxAdjust)),box},hover:function(overFn,outFn,scope,options){var me=this;return me.on("mouseenter",overFn,scope||me.dom,options),me.on("mouseleave",outFn,scope||me.dom,options),me},getAttributeNS:function(ns,name){return this.getAttribute(name,ns)},getAttribute:!Ext.isIE||Ext.isIE9p&&DOC.documentMode>=9?function(name,ns){var d=this.dom;return ns?d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name):d.getAttribute(name)||d[name]||null}:function(name,ns){var type,d=this.dom;return ns?(type=typeof d[ns+":"+name],"undefined"!=type&&"unknown"!=type?d[ns+":"+name]||null:null):("for"===name&&(name="htmlFor"),d[name]||null)},cacheScrollValues:function(){var scrolledDescendants,el,i,me=this,scrollValues=[],result=function(){for(i=0;i<scrolledDescendants.length;i++)el=scrolledDescendants[i],el.scrollLeft=scrollValues[i][0],el.scrollTop=scrollValues[i][1]};for(Ext.DomQuery.pseudos.isScrolled||(Ext.DomQuery.pseudos.isScrolled=isScrolled),scrolledDescendants=me.query(":isScrolled"),i=0;i<scrolledDescendants.length;i++)el=scrolledDescendants[i],scrollValues[i]=[el.scrollLeft,el.scrollTop];return result},autoBoxAdjust:!0,isVisible:function(deep){var me=this,dom=me.dom,stopNode=dom.ownerDocument.documentElement;for(visFly||(visFly=new Element.Fly);dom!==stopNode;){if(!dom||11===dom.nodeType||visFly.attach(dom).isStyle("visibility","hidden")||visFly.isStyle("display","none"))return!1;if(!deep)break;dom=dom.parentNode}return!0},isDisplayed:function(){return!this.isStyle("display","none")},enableDisplayMode:function(display){var me=this;return me.setVisibilityMode(Element.DISPLAY),Ext.isEmpty(display)||((me.$cache||me.getCache()).data.originalDisplay=display),me},mask:function(msg,msgCls,elHeight){var widthExpression,heightExpression,docElem,ie6DocElHeight,me=this,dom=me.dom,setExpression=dom.style.setExpression,data=(me.$cache||me.getCache()).data,maskShimEl=data.maskShimEl,maskEl=data.maskEl,maskMsg=data.maskMsg;if(bodyRe.test(dom.tagName)&&"static"==me.getStyle("position")||me.addCls(XMASKEDRELATIVE),maskEl&&maskEl.remove(),maskMsg&&maskMsg.remove(),maskShimEl&&maskShimEl.remove(),Ext.isIE6&&(maskShimEl=Ext.DomHelper.append(dom,{tag:"iframe",role:"presentation",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"},!0),data.maskShimEl=maskShimEl,maskShimEl.setDisplayed(!0)),Ext.DomHelper.append(dom,[{role:"presentation",cls:Ext.baseCSSPrefix+"mask",style:"top:0;left:0;"},{role:"presentation",cls:msgCls?EXTELMASKMSG+" "+msgCls:EXTELMASKMSG,cn:{tag:"div",role:"presentation",cls:Ext.baseCSSPrefix+"mask-msg-inner",cn:{tag:"div",role:"presentation",cls:Ext.baseCSSPrefix+"mask-msg-text",html:msg||""}}}]),maskMsg=Ext.get(dom.lastChild),maskEl=Ext.get(maskMsg.dom.previousSibling),data.maskMsg=maskMsg,data.maskEl=maskEl,me.addCls(XMASKED),maskEl.setDisplayed(!0),"string"==typeof msg?(maskMsg.setDisplayed(!0),maskMsg.center(me)):maskMsg.setDisplayed(!1),Ext.isStrict&&!Ext.isIE6&&dom===DOC.body&&maskEl.addCls(Ext.baseCSSPrefix+"mask-fixed"),dom!==DOC.body||Ext.isIE6||Ext.isIEQuirks){if(!Ext.supports.IncludePaddingInWidthCalculation&&setExpression)try{maskEl.dom.style.setExpression("width",'this.parentNode.clientWidth + "px"'),widthExpression='this.parentNode.clientWidth + "px"',maskShimEl&&maskShimEl.dom.style.setExpression("width",widthExpression),maskEl.dom.style.setExpression("width",widthExpression)}catch(e){}if(!Ext.supports.IncludePaddingInHeightCalculation&&setExpression)try{heightExpression="this.parentNode."+(dom==DOC.body?"scrollHeight":"offsetHeight")+' + "px"',maskShimEl&&maskShimEl.dom.style.setExpression("height",heightExpression),maskEl.dom.style.setExpression("height",heightExpression)}catch(e){}else!Ext.isIE9m||Ext.isIE7&&Ext.isStrict||"auto"!=me.getStyle("height")||(Ext.isIE6&&Ext.isStrict&&(docElem=dom.parentNode,ie6DocElHeight=Math.max(docElem.clientHeight,docElem.scrollHeight)),maskShimEl&&maskShimEl.setSize(void 0,elHeight||ie6DocElHeight||me.getHeight()),maskEl.setSize(void 0,elHeight||ie6DocElHeight||me.getHeight()))}return maskEl},unmask:function(){var style,me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskShimEl=data.maskShimEl,maskMsg=data.maskMsg;maskEl&&(style=maskEl.dom.style,style.clearExpression&&(style.clearExpression("width"),style.clearExpression("height")),maskEl&&(maskEl.remove(),delete data.maskEl),maskMsg&&(maskMsg.remove(),delete data.maskMsg),me.removeCls([XMASKED,XMASKEDRELATIVE]),maskShimEl&&(style=maskShimEl.dom.style,style.clearExpression&&(style.clearExpression("width"),style.clearExpression("height")),maskShimEl.remove(),delete data.maskShimEl))},isMasked:function(){var me=this,data=(me.$cache||me.getCache()).data,maskEl=data.maskEl,maskMsg=data.maskMsg,hasMask=!1;return maskEl&&maskEl.isVisible()&&(maskMsg&&maskMsg.center(me),hasMask=!0),hasMask},createShim:function(){var shim,el=DOC.createElement("iframe");return el.frameBorder="0",el.className=Ext.baseCSSPrefix+"shim",el.src=Ext.SSL_SECURE_URL,el.setAttribute("role","presentation"),shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom)),shim.autoBoxAdjust=!1,shim},addKeyListener:function(key,fn,scope){var config;return config="object"!=typeof key||Ext.isArray(key)?{target:this,key:key,fn:fn,scope:scope}:{target:this,key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope},new Ext.util.KeyMap(config)},addKeyMap:function(config){return new Ext.util.KeyMap(Ext.apply({target:this},config))},on:function(eventName,fn,scope,options){return Ext.EventManager.on(this,eventName,fn,scope||this,options),this},un:function(eventName,fn,scope){return Ext.EventManager.un(this,eventName,fn,scope||this),this},removeAllListeners:function(){return Ext.EventManager.removeAll(this),this},purgeAllListeners:function(){return Ext.EventManager.purgeElement(this),this},select:function(selector){return Element.select(selector,!1,this.dom)}}},function(){function garbageCollect(){if(Ext.enableGarbageCollector){var eid,d,o,t;for(eid in EC)EC.hasOwnProperty(eid)&&(o=EC[eid],o.skipGarbageCollection||(d=o.dom,d||Ext.Error.raise("Missing DOM node in element garbage collection: "+eid),d&&(d.getElementById||d.navigator)&&Ext.Error.raise("Unexpected document or window element in element garbage collection"),!d||d.parentNode&&(d.offsetParent||Ext.getElementById(eid))||(Ext.enableListenerCollection&&Ext.EventManager.removeAll(d),delete EC[eid])));if(Ext.isIE){t={};for(eid in EC)EC.hasOwnProperty(eid)&&(t[eid]=EC[eid]);EC=Ext.cache=t}}else clearInterval(Element.collectorThreadId)}var internalFly,DOC=document,EC=Ext.cache,Element=this,AbstractElement=Ext.dom.AbstractElement,focusRe=/^a|button|embed|iframe|input|object|select|textarea$/i,nonSpaceRe=/\S/,scriptTagRe=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/gi,replaceScriptTagRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/gi,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m;Element.boxMarkup=['<div class="{0}-tl" role="presentation">','<div class="{0}-tr" role="presentation">','<div class="{0}-tc" role="presentation"></div>',"</div>","</div>",'<div class="{0}-ml" role="presentation">','<div class="{0}-mr" role="presentation">','<div class="{0}-mc" role="presentation"></div>',"</div>","</div>",'<div class="{0}-bl" role="presentation">','<div class="{0}-br" role="presentation">','<div class="{0}-bc" role="presentation"></div>',"</div>","</div>"].join(""),Element.collectorThreadId=setInterval(garbageCollect,3e4),Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var timer,me=this,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:!0};return me.on(listeners),listeners},swallowEvent:function(eventName,preventDefault){var e,eLen,me=this,fn=function(e){e.stopPropagation(),preventDefault&&e.preventDefault()};if(Ext.isArray(eventName)){for(eLen=eventName.length,e=0;e<eLen;e++)me.on(eventName[e],fn);return me}return me.on(eventName,fn),me},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e)})},clean:function(forceReclean){var nx,me=this,dom=me.dom,data=(me.$cache||me.getCache()).data,n=dom.firstChild,ni=-1;if(data.isCleaned&&!0!==forceReclean)return me;for(;n;)nx=n.nextSibling,3==n.nodeType?nonSpaceRe.test(n.nodeValue)?nx&&3==nx.nodeType&&(n.appendData(Ext.String.trim(nx.data)),dom.removeChild(nx),nx=n.nextSibling,n.nodeIndex=++ni):dom.removeChild(n):(internalFly.attach(n).clean(),n.nodeIndex=++ni),n=nx;return data.isCleaned=!0,me},load:function(options){return this.getLoader().load(options),this},getLoader:function(){var me=this,data=(me.$cache||me.getCache()).data,loader=data.loader;return loader||(data.loader=loader=new Ext.ElementLoader({target:me})),loader},syncContent:function(source){source=Ext.getDom(source);var i,destNode,sourceNode,nodeType,newAttrs,attLen,attName,sourceNodes=source.childNodes,sourceLen=sourceNodes.length,dest=this.dom,destNodes=dest.childNodes,destLen=destNodes.length;if(Ext.isIE9m&&dest.mergeAttributes)dest.mergeAttributes(source,!0),dest.src=source.src;else for(newAttrs=source.attributes,attLen=newAttrs.length,i=0;i<attLen;i++)"id"!==(attName=newAttrs[i].name)&&dest.setAttribute(attName,newAttrs[i].value);if(sourceLen!==destLen)return void(dest.innerHTML=source.innerHTML);for(i=0;i<sourceLen;i++){if(sourceNode=sourceNodes[i],destNode=destNodes[i],(nodeType=sourceNode.nodeType)!==destNode.nodeType||1===nodeType&&sourceNode.tagName!==destNode.tagName)return void(dest.innerHTML=source.innerHTML);3===nodeType?destNode.data=sourceNode.data:(sourceNode.id&&destNode.id!==sourceNode.id&&(destNode.id=sourceNode.id),destNode.style.cssText=sourceNode.style.cssText,destNode.className=sourceNode.className,internalFly.attach(destNode).syncContent(sourceNode))}},update:function(html,loadScripts,callback){var id,dom,interval,me=this;return me.dom?(html=html||"",dom=me.dom,!0!==loadScripts?(dom.innerHTML=html,Ext.callback(callback,me),me):(id=Ext.id(),html+='<span id="'+id+'" role="presentation"></span>',interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id)))return!1;for(clearInterval(interval),Ext.removeNode(el),hd=Ext.getHead().dom;match=scriptTagRe.exec(html);)attrs=match[1],srcMatch=!!attrs&&attrs.match(srcRe),srcMatch&&srcMatch[2]?(s=DOC.createElement("script"),s.src=srcMatch[2],typeMatch=attrs.match(typeRe),typeMatch&&typeMatch[2]&&(s.type=typeMatch[2]),hd.appendChild(s)):match[2]&&match[2].length>0&&(window.execScript?window.execScript(match[2]):window.eval(match[2]));Ext.callback(callback,me)},20),dom.innerHTML=html.replace(replaceScriptTagRe,""),me)):me},removeAllListeners:function(){return this.removeAnchor(),Ext.EventManager.removeAll(this.dom),this},createProxy:function(config,renderTo,matchBox){config="object"==typeof config?config:{tag:"div",role:"presentation",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,!0):Ext.DomHelper.insertBefore(me.dom,config,!0);return proxy.setVisibilityMode(Element.DISPLAY),proxy.hide(),matchBox&&me.setBox&&me.getBox&&proxy.setBox(me.getBox()),proxy},needsTabIndex:function(){if(this.dom)return"a"===this.dom.nodeName&&!this.dom.href||!focusRe.test(this.dom.nodeName)},isFocusable:function(asFocusEl){var tabIndex,dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),nodeName=dom.nodeName,canFocus=!1;return tabIndexAttr&&tabIndexAttr.specified&&(tabIndex=tabIndexAttr.value),dom&&!dom.disabled&&(-1==tabIndex?canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl:focusRe.test(nodeName)?("a"!==nodeName||dom.href)&&(canFocus=!0):canFocus=null!=tabIndex&&tabIndex>=0,canFocus=canFocus&&this.isVisible(!0)),canFocus}}),Ext.isIE9m&&(Element.prototype.getById=function(id,asDom){var cacheItem,el,ret,dom=this.dom;return dom&&(el=useDocForId&&DOC.getElementById(id)||dom.all[id])?(asDom?ret=el:(cacheItem=EC[id],ret=cacheItem&&cacheItem.el?Ext.updateCacheEntry(cacheItem,el).el:new Element(el)),ret):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:!0,constructor:function(dom){this.dom=dom,this.el=this},attach:AbstractElement.Fly.prototype.attach}),internalFly=new Element.Fly,Ext.isIE9m?Ext.getElementById=function(id){var detachedBodyEl,el=DOC.getElementById(id);return!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)&&(el=detachedBodyEl.dom.all[id]),el}:DOC.querySelector||(Ext.getDetachedBody=Ext.getBody,Ext.getElementById=function(id){return DOC.getElementById(id)})});Ext.define("Ext.dom.CompositeElementLite",{alternateClassName:"Ext.CompositeElementLite",requires:["Ext.dom.Element","Ext.dom.Query"],statics:{importElementMethods:function(){var name,elementPrototype=Ext.dom.Element.prototype,prototype=this.prototype;for(name in elementPrototype)"function"==typeof elementPrototype[name]&&function(key){prototype[key]=prototype[key]||function(){return this.invoke(key,arguments)}}.call(prototype,name)}},constructor:function(elements,root){this.elements=[],this.add(elements,root),this.el=new Ext.dom.AbstractElement.Fly},isComposite:!0,getElement:function(el){return this.el.attach(el)},transformElement:function(el){return Ext.getDom(el)},getCount:function(){return this.elements.length},add:function(els,root){var i,ln,elements=this.elements;if(!els)return this;for("string"==typeof els?els=Ext.dom.Element.selectorFunction(els,root):els.isComposite?els=els.elements:Ext.isIterable(els)||(els=[els]),i=0,ln=els.length;i<ln;++i)elements.push(this.transformElement(els[i]));return this},invoke:function(fn,args){var element,i,elements=this.elements,ln=elements.length;for(fn=Ext.dom.Element.prototype[fn],i=0;i<ln;i++)(element=elements[i])&&fn.apply(this.getElement(element),args);return this},item:function(index){var el=this.elements[index],out=null;return el&&(out=this.getElement(el)),out},slice:function(){return this.elements.slice.apply(this.elements,arguments)},addListener:function(eventName,handler,scope,opt){var i,e,els=this.elements,len=els.length;for(i=0;i<len;i++)(e=els[i])&&Ext.EventManager.on(e,eventName,handler,scope||e,opt);return this},each:function(fn,scope){var i,e,me=this,els=me.elements,len=els.length;for(i=0;i<len&&(!(e=els[i])||(e=this.getElement(e),!1!==fn.call(scope||e,e,me,i)));i++);return me},fill:function(els){var me=this;return me.elements=[],me.add(els),me},insert:function(index,nodes){Ext.Array.insert(this.elements,index,nodes)},filter:function(selector){for(var el,me=this,els=me.elements,len=els.length,out=[],i=0,isFunc="function"==typeof selector;i<len;i++)el=els[i],!1,el&&(el=me.getElement(el),(isFunc?!1!==selector.call(el,el,me,i):el.is(selector))&&out.push(me.transformElement(el)));return me.elements=out,me},indexOf:function(el){return Ext.Array.indexOf(this.elements,this.transformElement(el))},replaceElement:function(el,replacement,domReplace){var d,index=isNaN(el)?this.indexOf(el):el;return index>-1&&(replacement=Ext.getDom(replacement),domReplace&&(d=this.elements[index],d.parentNode.insertBefore(replacement,d),Ext.removeNode(d)),Ext.Array.splice(this.elements,index,1,replacement)),this},clear:function(removeDom){var me=this,els=me.elements,i=els.length-1;if(removeDom)for(;i>=0;i--)Ext.removeNode(els[i]);this.elements=[]},addElements:function(els,root){if(!els)return this;"string"==typeof els&&(els=Ext.dom.Element.selectorFunction(els,root));var e,yels=this.elements,eLen=els.length;for(e=0;e<eLen;e++)yels.push(Ext.get(els[e]));return this},first:function(){return this.item(0)},last:function(){return this.item(this.getCount()-1)},contains:function(el){return-1!=this.indexOf(el)},removeElement:function(keys,removeDom){keys=[].concat(keys);var val,el,k,me=this,elements=me.elements,kLen=keys.length;for(k=0;k<kLen;k++)val=keys[k],(el=elements[val]||elements[val=me.indexOf(val)])&&(removeDom&&(el.dom?el.remove():Ext.removeNode(el)),Ext.Array.erase(elements,val,1));return me}},function(){this.importElementMethods(),this.prototype.on=this.prototype.addListener,Ext.DomQuery&&(Ext.dom.Element.selectorFunction=Ext.DomQuery.select),Ext.dom.Element.select=function(selector,root){var elements;if("string"==typeof selector)elements=Ext.dom.Element.selectorFunction(selector,root);else{if(void 0===selector.length)throw new Error("[Ext.select] Invalid selector specified: "+selector);elements=selector}return new Ext.CompositeElementLite(elements)},Ext.select=function(){return Ext.dom.Element.select.apply(Ext.dom.Element,arguments)}});Ext.define("Ext.dom.CompositeElement",{alternateClassName:"Ext.CompositeElement",extend:"Ext.dom.CompositeElementLite",getElement:function(el){return el},transformElement:function(el){return Ext.get(el)}},function(){Ext.dom.Element.select=function(selector,unique,root){var elements;if("string"==typeof selector)elements=Ext.dom.Element.selectorFunction(selector,root);else{if(void 0===selector.length)throw new Error("[Ext.select] Invalid selector specified: "+selector);elements=selector}return!0===unique?new Ext.CompositeElement(elements):new Ext.CompositeElementLite(elements)}}),Ext.select=Ext.Element.select;Ext.define("Ext.util.HashMap",{mixins:{observable:"Ext.util.Observable"},generation:0,constructor:function(config){config=config||{};var me=this,keyFn=config.keyFn;me.initialConfig=config,me.addEvents("add","clear","remove","replace"),me.mixins.observable.constructor.call(me,config),me.clear(!0),keyFn&&(me.getKey=keyFn)},getCount:function(){return this.length},getData:function(key,value){return void 0===value&&(value=key,key=this.getKey(value)),[key,value]},getKey:function(o){return o.id},add:function(key,value){var me=this;return 1===arguments.length&&(value=key,key=me.getKey(value)),me.containsKey(key)?me.replace(key,value):(me.map[key]=value,++me.length,me.generation++,me.hasListeners.add&&me.fireEvent("add",me,key,value),value)},replace:function(key,value){var old,me=this,map=me.map;return 1===arguments.length&&(value=key,key=me.getKey(value)),me.containsKey(key)||me.add(key,value),old=map[key],map[key]=value,me.generation++,me.hasListeners.replace&&me.fireEvent("replace",me,key,value,old),value},remove:function(o){var key=this.findKey(o);return void 0!==key&&this.removeAtKey(key)},removeAtKey:function(key){var value,me=this;return!!me.containsKey(key)&&(value=me.map[key],delete me.map[key],--me.length,me.generation++,me.hasListeners.remove&&me.fireEvent("remove",me,key,value),!0)},get:function(key){var map=this.map;return map.hasOwnProperty(key)?map[key]:void 0},clear:function(initial){var me=this;return(initial||me.generation)&&(me.map={},me.length=0,me.generation=initial?0:me.generation+1),!0!==initial&&me.hasListeners.clear&&me.fireEvent("clear",me),me},containsKey:function(key){var map=this.map;return map.hasOwnProperty(key)&&void 0!==map[key]},contains:function(value){return this.containsKey(this.findKey(value))},getKeys:function(){return this.getArray(!0)},getValues:function(){return this.getArray(!1)},getArray:function(isKey){var key,arr=[],map=this.map;for(key in map)map.hasOwnProperty(key)&&arr.push(isKey?key:map[key]);return arr},each:function(fn,scope){var key,items=Ext.apply({},this.map),length=this.length;scope=scope||this;for(key in items)if(items.hasOwnProperty(key)&&!1===fn.call(scope,key,items[key],length))break;return this},clone:function(){var key,hash=new this.self(this.initialConfig),map=this.map;hash.suspendEvents();for(key in map)map.hasOwnProperty(key)&&hash.add(key,map[key]);return hash.resumeEvents(),hash},findKey:function(value){var key,map=this.map;for(key in map)if(map.hasOwnProperty(key)&&map[key]===value)return key}});Ext.define("Ext.AbstractManager",{requires:["Ext.util.HashMap"],typeName:"type",constructor:function(config){Ext.apply(this,config||{}),this.all=new Ext.util.HashMap,this.types={}},get:function(id){return this.all.get(id)},register:function(item){var all=this.all,key=all.getKey(item);all.containsKey(key)&&Ext.Error.raise('Registering duplicate id "'+key+'" with this manager'),this.all.add(item)},unregister:function(item){this.all.remove(item)},registerType:function(type,cls){this.types[type]=cls,cls[this.typeName]=type},isRegistered:function(type){return void 0!==this.types[type]},create:function(config,defaultType){var type=config[this.typeName]||config.type||defaultType,Constructor=this.types[type];return void 0===Constructor&&Ext.Error.raise("The '"+type+"' type has not been registered with this manager"),new Constructor(config)},onAvailable:function(id,fn,scope){var item,callback,all=this.all;all.containsKey(id)?(item=all.get(id),fn.call(scope||item,item)):(callback=function(map,key,item){key==id&&(fn.call(scope||item,item),all.un("add",callback))},all.on("add",callback))},each:function(fn,scope){this.all.each(fn,scope||this)},getCount:function(){return this.all.getCount()}});Ext.define("Ext.ComponentManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.ComponentMgr",singleton:!0,typeName:"xtype",create:function(component,defaultType){return"string"==typeof component?Ext.widget(component):component.isComponent?component:Ext.widget(component.xtype||defaultType,component)},registerType:function(type,cls){this.types[type]=cls,cls[this.typeName]=type,cls.prototype[this.typeName]=type}},function(){Ext.getCmp=function(id){return Ext.ComponentManager.get(id)}});Ext.define("Ext.ComponentQuery",{singleton:!0,requires:["Ext.ComponentManager","Ext.dom.Query"]},function(){var cq=this,domQueryOperators=Ext.dom.Query.operators,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,filterFnPattern=["var r = [],","i = 0,","it = items,","l = it.length,","c;","for (; i < l; i++) {","c = it[i];","if (c.{0}) {","r.push(c);","}","}","return r;"].join(""),filterItems=function(items,operation){return operation.method.apply(this,[items].concat(operation.args))},getItems=function(items,mode){for(var candidate,result=[],i=0,length=items.length,deep=">"!==mode;i<length;i++)candidate=items[i],candidate.getRefItems&&(result=result.concat(candidate.getRefItems(deep)));return result},getAncestors=function(items){for(var candidate,result=[],i=0,length=items.length;i<length;i++)for(candidate=items[i];candidate=candidate.getRefOwner();)result.push(candidate);return result},filterByXType=function(items,xtype,shallow){if("*"===xtype)return items.slice();for(var candidate,result=[],i=0,length=items.length;i<length;i++)candidate=items[i],candidate.isXType(xtype,shallow)&&result.push(candidate);return result},filterByClassName=function(items,className){for(var candidate,result=[],i=0,length=items.length;i<length;i++)candidate=items[i],candidate.hasCls(className)&&result.push(candidate);return result},filterByAttribute=function(items,property,operator,compareTo){var mustBeOwnProperty,presenceOnly,candidate,propValue,j,propLen,result=[],i=0,length=items.length;for("@"===property.charAt(0)&&(mustBeOwnProperty=!0,property=property.substr(1)),"?"===property.charAt(0)&&(mustBeOwnProperty=!0,presenceOnly=!0,property=property.substr(1));i<length;i++)if(candidate=items[i],!mustBeOwnProperty||candidate.hasOwnProperty(property))if(propValue=candidate[property],presenceOnly)result.push(candidate);else if("~="===operator){if(propValue)for(Ext.isArray(propValue)||(propValue=propValue.split(" ")),j=0,propLen=propValue.length;j<propLen;j++)if(domQueryOperators[operator](Ext.coerce(propValue[j],compareTo),compareTo)){result.push(candidate);break}}else(compareTo?domQueryOperators[operator](Ext.coerce(propValue,compareTo),compareTo):!!candidate[property])&&result.push(candidate);return result},filterById=function(items,id){for(var candidate,result=[],i=0,length=items.length;i<length;i++)candidate=items[i],candidate.getItemId()===id&&result.push(candidate);return result},filterByPseudo=function(items,name,value){return cq.pseudos[name](items,value)},modeRe=/^(\s?([>\^])\s?|\s|$)/,tokenRe=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,matchers=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:filterByXType},{re:/^(?:\[((?:[@?$])?[\w\-]*)\s*(?:([\^$*~%!]?=)\s*['"]?(.*?)["']?)?\])/,method:filterByAttribute},{re:/^#([\w\-]+)/,method:filterById},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:filterByPseudo},{re:/^(?:\{([^\}]+)\})/,method:filterFnPattern}];cq.Query=Ext.extend(Object,{constructor:function(cfg){cfg=cfg||{},Ext.apply(this,cfg)},execute:function(root){var operation,workingItems,operations=this.operations,i=0,length=operations.length;for(root?Ext.isIterable(root)?workingItems=root:root.isMixedCollection&&(workingItems=root.items):workingItems=Ext.ComponentManager.all.getArray();i<length;i++)if(operation=operations[i],workingItems="^"===operation.mode?getAncestors(workingItems||[root]):operation.mode?getItems(workingItems||[root],operation.mode):filterItems(workingItems||getItems([root]),operation),i===length-1)return workingItems;return[]},is:function(component){var operation,i,j,mode,items,item,operations=this.operations,len=operations.length,active=[component];for(i=len-1;i>=0;--i)if(operation=operations[i],mode=operation.mode){if("^"===mode)active=getItems(active," ");else if(">"===mode){for(items=[],j=0,len=active.length;j<len;++j)(item=active[j].getRefOwner())&&items.push(item);active=items}else active=getAncestors(active);if(0===active.length)return!1}else if(active=filterItems(active,operation),0===active.length)return!1;return!0},getMatches:function(components,operations){var i,len=operations.length;for(i=0;i<len&&(components=filterItems(components,operations[i]),0!==components.length);++i);return components}}),Ext.apply(this,{cache:{},pseudos:{not:function(components,selector){for(var component,CQ=Ext.ComponentQuery,i=0,length=components.length,results=[],index=-1;i<length;++i)component=components[i],CQ.is(component,selector)||(results[++index]=component);return results},first:function(components){var ret=[];return components.length>0&&ret.push(components[0]),ret},last:function(components){var len=components.length,ret=[];return len>0&&ret.push(components[len-1]),ret},focusable:function(cmps){for(var c,len=cmps.length,results=[],i=0;i<len;i++)c=cmps[i],c.isFocusable()&&results.push(c);return results},"nth-child":function(c,a){var i,n,nodeIndex,result=[],m=nthRe.exec("even"==a&&"2n"||"odd"==a&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;for(i=0;n=c[i];i++)nodeIndex=i+1,1==f?0!=l&&nodeIndex!=l||result.push(n):(nodeIndex+l)%f==0&&result.push(n);return result}},query:function(selector,root){for(var query,resultsLn,cmp,selectors=selector.split(","),length=selectors.length,i=0,results=[],noDupResults=[],dupMatcher={};i<length;i++)selector=Ext.String.trim(selectors[i]),query=this.cache[selector]||(this.cache[selector]=this.parse(selector)),results=results.concat(query.execute(root));if(length>1){for(resultsLn=results.length,i=0;i<resultsLn;i++)cmp=results[i],dupMatcher[cmp.id]||(noDupResults.push(cmp),dupMatcher[cmp.id]=!0);results=noDupResults}return results},is:function(component,selector){if(!selector)return!0;for(var query,selectors=selector.split(","),length=selectors.length,i=0;i<length;i++)if(selector=Ext.String.trim(selectors[i]),query=this.cache[selector]||(this.cache[selector]=this.parse(selector)),query.is(component))return!0;return!1},parse:function(selector){for(var lastSelector,tokenMatch,matchedChar,modeMatch,selectorMatch,i,matcher,method,operations=[],length=matchers.length;selector&&lastSelector!==selector;){for(lastSelector=selector,tokenMatch=selector.match(tokenRe),tokenMatch&&(matchedChar=tokenMatch[1],"#"===matchedChar?operations.push({method:filterById,args:[Ext.String.trim(tokenMatch[2])]}):"."===matchedChar?operations.push({method:filterByClassName,args:[Ext.String.trim(tokenMatch[2])]}):operations.push({method:filterByXType,args:[Ext.String.trim(tokenMatch[2]),Boolean(tokenMatch[3])]}),selector=selector.replace(tokenMatch[0],""));!(modeMatch=selector.match(modeRe));)for(i=0;selector&&i<length;i++){if(matcher=matchers[i],selectorMatch=selector.match(matcher.re),method=matcher.method,selectorMatch){operations.push({method:Ext.isString(matcher.method)?Ext.functionFactory("items",Ext.String.format.apply(Ext.String,[method].concat(selectorMatch.slice(1)))):matcher.method,args:selectorMatch.slice(1)}),selector=selector.replace(selectorMatch[0],"");break}i===length-1&&Ext.Error.raise('Invalid ComponentQuery selector: "'+arguments[0]+'"')}modeMatch[1]&&(operations.push({mode:modeMatch[2]||modeMatch[1]}),selector=selector.replace(modeMatch[0],""))}return new cq.Query({operations:operations})}})});Ext.define("Ext.util.ProtoElement",function(){var splitWords=Ext.String.splitWords,toMap=Ext.Array.toMap;return{isProtoEl:!0,clsProp:"cls",styleProp:"style",removedProp:"removed",styleIsText:!1,constructor:function(config){var me=this;Ext.apply(me,config),me.classList=splitWords(me.cls),me.classMap=toMap(me.classList),delete me.cls,Ext.isFunction(me.style)?(me.styleFn=me.style,delete me.style):"string"==typeof me.style?me.style=Ext.Element.parseStyles(me.style):me.style&&(me.style=Ext.apply({},me.style))},flush:function(){this.flushClassList=[],this.removedClasses={},delete this.style,delete this.unselectableAttr},addCls:function(cls){for(var c,me=this,add="string"==typeof cls?splitWords(cls):cls,length=add.length,list=me.classList,map=me.classMap,flushList=me.flushClassList,i=0;i<length;++i)c=add[i],map[c]||(map[c]=!0,list.push(c),flushList&&(flushList.push(c),delete me.removedClasses[c]));return me},hasCls:function(cls){return cls in this.classMap},removeCls:function(cls){var i,c,me=this,list=me.classList,newList=me.classList=[],remove=toMap(splitWords(cls)),length=list.length,map=me.classMap,removedClasses=me.removedClasses;for(i=0;i<length;++i)c=list[i],remove[c]?(removedClasses&&map[c]&&(removedClasses[c]=!0,Ext.Array.remove(me.flushClassList,c)),delete map[c]):newList.push(c);return me},setStyle:function(prop,value){var me=this,style=me.style||(me.style={});return"string"==typeof prop?1===arguments.length?me.setStyle(Ext.Element.parseStyles(prop)):style[prop]=value:Ext.apply(style,prop),me},unselectable:function(){this.addCls(Ext.dom.Element.unselectableCls),Ext.isOpera&&(this.unselectableAttr=!0)},writeTo:function(to){var style,me=this,classList=me.flushClassList||me.classList,removedClasses=me.removedClasses;return me.styleFn?(style=Ext.apply({},me.styleFn()),Ext.apply(style,me.style)):style=me.style,to[me.clsProp]=classList.join(" "),style&&(to[me.styleProp]=me.styleIsText?Ext.DomHelper.generateStyles(style,null,!0):style),removedClasses&&(removedClasses=Ext.Object.getKeys(removedClasses),removedClasses.length&&(to[me.removedProp]=removedClasses.join(" "))),me.unselectableAttr&&(to.unselectable="on"),to}}}());Ext.define("Ext.PluginManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.PluginMgr",singleton:!0,typeName:"ptype",create:function(config,defaultType,host){var result;return config.init?result=config:(host?(config=Ext.apply({},config),config.cmp=host):host=config.cmp,config.xclass?result=Ext.create(config):"function"==typeof(result=Ext.ClassManager.getByAlias("plugin."+(config.ptype||defaultType)))&&(result=new result(config))),result&&host&&result.setCmp&&!result.setCmpCalled&&(result.setCmp(host),result.setCmpCalled=!0),result},findByType:function(type,defaultsOnly){var name,item,matches=[],types=this.types;for(name in types)types.hasOwnProperty(name)&&(item=types[name],item.type==type&&(!defaultsOnly||!0===defaultsOnly&&item.isDefault)&&matches.push(item));return matches}},function(){Ext.preg=function(){return Ext.PluginManager.registerType.apply(Ext.PluginManager,arguments)}});Ext.define("Ext.util.Filter",{id:null,anyMatch:!1,exactMatch:!1,caseSensitive:!1,disabled:!1,operator:null,statics:{createFilterFn:function(filters){return filters&&filters.length?function(candidate){var i,filter,isMatch=!0,length=filters.length;for(i=0;isMatch&&i<length;i++)filter=filters[i],filter.disabled||(isMatch=isMatch&&filter.filterFn.call(filter.scope||filter,candidate));return isMatch}:function(){return!0}}},operatorFns:{"<":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)<this.value},"<=":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)<=this.value},"=":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)==this.value},">=":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)>=this.value},">":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)>this.value},"!=":function(candidate){return Ext.coerce(this.getRoot(candidate)[this.property],this.value)!=this.value}},constructor:function(config){var me=this;me.initialConfig=config,Ext.apply(me,config),me.filter=me.filter||me.filterFn,void 0===me.filter&&me.setValue(config.value)},setValue:function(value){var me=this;me.value=value,void 0===me.property||void 0===me.value||(me.filter=me.createFilterFn()),me.filterFn=me.filter},setFilterFn:function(filterFn){this.filterFn=this.filter=filterFn},createFilterFn:function(){var me=this,matcher=me.createValueMatcher(),property=me.property;return me.operator?me.operatorFns[me.operator]:function(item){var value=me.getRoot(item)[property];return null===matcher?null===value:matcher.test(value)}},getRoot:function(item){var root=this.root;return void 0===root?item:item[root]},createValueMatcher:function(){var me=this,value=me.value,anyMatch=me.anyMatch,exactMatch=me.exactMatch,caseSensitive=me.caseSensitive,escapeRe=Ext.String.escapeRegex;return null===value?value:(value.exec||(value=String(value),!0===anyMatch?value=escapeRe(value):(value="^"+escapeRe(value),!0===exactMatch&&(value+="$")),value=new RegExp(value,caseSensitive?"":"i")),value)},serialize:function(){var me=this,result=Ext.apply({},me.initialConfig);return result.value=me.value,result}},function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]});Ext.define("Ext.util.AbstractMixedCollection",{requires:["Ext.util.Filter"],mixins:{observable:"Ext.util.Observable"},isMixedCollection:!0,generation:0,indexGeneration:0,constructor:function(allowFunctions,keyFn){var me=this;1===arguments.length&&Ext.isObject(allowFunctions)?(me.initialConfig=allowFunctions,Ext.apply(me,allowFunctions)):(me.allowFunctions=!0===allowFunctions,keyFn&&(me.getKey=keyFn),me.initialConfig={allowFunctions:me.allowFunctions,getKey:me.getKey}),me.items=[],me.map={},me.keys=[],me.indexMap={},me.length=0,me.mixins.observable.constructor.call(me)},allowFunctions:!1,add:function(key,obj){var len=this.length;return 1===arguments.length?this.insert(len,key):this.insert(len,key,obj)},getKey:function(o){return o.id},replace:function(key,o){var old,index,me=this;return 1==arguments.length&&(o=arguments[0],key=me.getKey(o)),old=me.map[key],void 0===key||null===key||void 0===old?me.add(key,o):(me.generation++,index=me.indexOfKey(key),me.items[index]=o,me.map[key]=o,me.hasListeners.replace&&me.fireEvent("replace",key,old,o),o)},updateKey:function(oldKey,newKey){var item,me=this,map=me.map,indexMap=me.indexMap,index=me.indexOfKey(oldKey);index>-1&&(item=map[oldKey],delete map[oldKey],delete indexMap[oldKey],map[newKey]=item,indexMap[newKey]=index,me.keys[index]=newKey,me.indexGeneration=++me.generation)},addAll:function(objs){var key,me=this;if(arguments.length>1||Ext.isArray(objs))me.insert(me.length,arguments.length>1?arguments:objs);else for(key in objs)objs.hasOwnProperty(key)&&(me.allowFunctions||"function"!=typeof objs[key])&&me.add(key,objs[key])},each:function(fn,scope){for(var item,items=Ext.Array.push([],this.items),i=0,len=items.length;i<len&&(item=items[i],!1!==fn.call(scope||item,item,i,len));i++);},eachKey:function(fn,scope){for(var keys=this.keys,items=this.items,i=0,len=keys.length;i<len;i++)fn.call(scope||window,keys[i],items[i],i,len)},findBy:function(fn,scope){for(var keys=this.keys,items=this.items,i=0,len=items.length;i<len;i++)if(fn.call(scope||window,items[i],keys[i]))return items[i];return null},find:function(){return Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.util.MixedCollection: find has been deprecated. Use findBy instead."),this.findBy.apply(this,arguments)},insert:function(index,key,obj){var out;return Ext.isIterable(key)?out=this.doInsert(index,key,obj):(out=arguments.length>2?this.doInsert(index,[key],[obj]):this.doInsert(index,[key]),out=out[0]),out},doInsert:function(index,keys,objects){var itemKey,removeIndex,i,syncIndices,passedDuplicates,oldKeys,oldObjects,me=this,len=keys.length,deDupedLen=len,fireAdd=me.hasListeners.add,newKeys={};if(null!=objects)me.useLinearSearch=!0;else for(objects=keys,keys=new Array(len),i=0;i<len;i++)keys[i]=this.getKey(objects[i]);for(me.suspendEvents(),i=0;i<len;i++)itemKey=keys[i],removeIndex=me.indexOfKey(itemKey),-1!==removeIndex&&(removeIndex<index&&index--,me.removeAt(removeIndex)),null!=itemKey&&(null!=newKeys[itemKey]&&(passedDuplicates=!0,deDupedLen--),newKeys[itemKey]=i);if(me.resumeEvents(),passedDuplicates){oldKeys=keys,oldObjects=objects,keys=new Array(deDupedLen),objects=new Array(deDupedLen),i=0;for(itemKey in newKeys)keys[i]=oldKeys[newKeys[itemKey]],objects[i]=oldObjects[newKeys[itemKey]],i++;len=deDupedLen}for(syncIndices=index===me.length&&me.indexGeneration===me.generation,Ext.Array.insert(me.items,index,objects),Ext.Array.insert(me.keys,index,keys),me.length+=len,me.generation++,syncIndices&&(me.indexGeneration=me.generation),i=0;i<len;i++,index++)itemKey=keys[i],null!=itemKey&&(me.map[itemKey]=objects[i],syncIndices&&(me.indexMap[itemKey]=index)),fireAdd&&me.fireEvent("add",index,objects[i],itemKey);return objects},remove:function(o){var removeKey,index,me=this;return-1!==(index=!me.useLinearSearch&&(removeKey=me.getKey(o))?me.indexOfKey(removeKey):Ext.Array.indexOf(me.items,o))&&me.removeAt(index)},removeAll:function(items){var i,me=this;if(items||me.hasListeners.remove)if(items)for(i=items.length-1;i>=0;--i)me.remove(items[i]);else for(;me.length;)me.removeAt(0);else me.length=me.items.length=me.keys.length=0,me.map={},me.indexMap={},me.generation++,me.indexGeneration=me.generation},removeAt:function(index){var o,key,me=this;return index<me.length&&index>=0&&(me.length--,o=me.items[index],Ext.Array.erase(me.items,index,1),key=me.keys[index],void 0!==key&&delete me.map[key],Ext.Array.erase(me.keys,index,1),me.hasListeners.remove&&me.fireEvent("remove",o,key),me.generation++,o)},removeRange:function(index,removeCount){var o,key,i,limit,syncIndices,trimming,me=this;if(index<me.length&&index>=0){for(removeCount||(removeCount=1),limit=Math.min(index+removeCount,me.length),removeCount=limit-index,trimming=limit===me.length,syncIndices=trimming&&me.indexGeneration===me.generation,i=index;i<limit;i++)null!=(key=me.keys[i])&&(delete me.map[key],syncIndices&&delete me.indexMap[key]);return o=me.items[i-1],me.length-=removeCount,me.generation++,syncIndices&&(me.indexGeneration=me.generation),trimming?me.items.length=me.keys.length=me.length:(me.items.splice(index,removeCount),me.keys.splice(index,removeCount)),o}return!1},removeAtKey:function(key){var i,me=this,keys=me.keys;if(null!=key)return me.removeAt(me.indexOfKey(key));for(i=keys.length-1;i>=0;i--)null==keys[i]&&me.removeAt(i)},getCount:function(){return this.length},indexOf:function(o){var key,me=this;return null!=o?!me.useLinearSearch&&(key=me.getKey(o))?this.indexOfKey(key):Ext.Array.indexOf(me.items,o):-1},indexOfKey:function(key){return this.map.hasOwnProperty(key)?(this.indexGeneration!==this.generation&&this.rebuildIndexMap(),this.indexMap[key]):-1},rebuildIndexMap:function(){var i,me=this,indexMap=me.indexMap={},keys=me.keys,len=keys.length;for(i=0;i<len;i++)indexMap[keys[i]]=i;me.indexGeneration=me.generation},get:function(key){var me=this,mk=me.map[key],item=void 0!==mk?mk:"number"==typeof key?me.items[key]:void 0;return"function"!=typeof item||me.allowFunctions?item:null},getAt:function(index){return this.items[index]},getByKey:function(key){return this.map[key]},contains:function(o){var key,me=this;return null!=o&&(!me.useLinearSearch&&(key=me.getKey(o))?null!=this.map[key]:-1!==Ext.Array.indexOf(this.items,o))},containsKey:function(key){return this.map.hasOwnProperty(key)},clear:function(){var me=this;me.generation&&(me.length=0,me.items=[],me.keys=[],me.map={},me.indexMap={},me.generation++,me.indexGeneration=me.generation),me.hasListeners.clear&&me.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},sum:function(property,root,start,end){var i,values=this.extractValues(property,root),length=values.length,sum=0;for(start=start||0,end=end||0===end?end:length-1,i=start;i<=end;i++)sum+=values[i];return sum},collect:function(property,root,allowNull){var value,strValue,i,values=this.extractValues(property,root),length=values.length,hits={},unique=[];for(i=0;i<length;i++)value=values[i],strValue=String(value),!allowNull&&Ext.isEmpty(value)||hits[strValue]||(hits[strValue]=!0,unique.push(value));return unique},extractValues:function(property,root){var values=this.items;return root&&(values=Ext.Array.pluck(values,root)),Ext.Array.pluck(values,property)},hasRange:function(start,end){return end<this.length},getRange:function(start,end){var tmp,reverse,me=this,items=me.items,range=[],len=items.length;return len<1?range:(start>end&&(reverse=!0,tmp=start,start=end,end=tmp),start<0&&(start=0),(null==end||end>=len)&&(end=len-1),range=items.slice(start,end+1),reverse&&range.length&&range.reverse(),range)},filter:function(property,value,anyMatch,caseSensitive){var filters=[];return Ext.isString(property)?filters.push(new Ext.util.Filter({property:property,value:value,anyMatch:anyMatch,caseSensitive:caseSensitive})):(Ext.isArray(property)||property instanceof Ext.util.Filter)&&(filters=filters.concat(property)),this.filterBy(Ext.util.Filter.createFilterFn(filters))},filterBy:function(fn,scope){var i,me=this,newMC=new me.self(me.initialConfig),keys=me.keys,items=me.items,length=items.length;for(newMC.getKey=me.getKey,i=0;i<length;i++)fn.call(scope||me,items[i],keys[i])&&newMC.add(keys[i],items[i]);return newMC.useLinearSearch=me.useLinearSearch,newMC},findIndex:function(property,value,start,anyMatch,caseSensitive){return Ext.isEmpty(value,!1)?-1:(value=this.createValueMatcher(value,anyMatch,caseSensitive),this.findIndexBy(function(o){return o&&value.test(o[property])},null,start))},findIndexBy:function(fn,scope,start){for(var me=this,keys=me.keys,items=me.items,i=start||0,len=items.length;i<len;i++)if(fn.call(scope||me,items[i],keys[i]))return i;return-1},createValueMatcher:function(value,anyMatch,caseSensitive,exactMatch){if(!value.exec){var er=Ext.String.escapeRegex;value=String(value),!0===anyMatch?value=er(value):(value="^"+er(value),!0===exactMatch&&(value+="$")),value=new RegExp(value,caseSensitive?"":"i")}return value},clone:function(){var me=this,copy=new me.self(me.initialConfig);return copy.add(me.keys,me.items),copy.useLinearSearch=me.useLinearSearch,copy}});Ext.define("Ext.util.Sorter",{direction:"ASC",constructor:function(config){var me=this;Ext.apply(me,config),void 0===me.property&&void 0===me.sorterFn&&Ext.Error.raise("A Sorter requires either a property or a sorter function"),me.updateSortFunction()},createSortFunction:function(sorterFn){var me=this,direction=me.direction||"ASC",modifier="DESC"==direction.toUpperCase()?-1:1;return function(o1,o2){return modifier*sorterFn.call(me,o1,o2)}},defaultSorterFn:function(o1,o2){var me=this,transform=me.transform,v1=me.getRoot(o1)[me.property],v2=me.getRoot(o2)[me.property];return transform&&(v1=transform(v1),v2=transform(v2)),v1>v2?1:v1<v2?-1:0},getRoot:function(item){return void 0===this.root?item:item[this.root]},setDirection:function(direction){var me=this;me.direction=direction?direction.toUpperCase():direction,me.updateSortFunction()},toggle:function(){var me=this;me.direction=Ext.String.toggle(me.direction,"ASC","DESC"),me.updateSortFunction()},updateSortFunction:function(fn){var me=this;fn=fn||me.sorterFn||me.defaultSorterFn,me.sort=me.createSortFunction(fn)},serialize:function(){return{root:this.root,property:this.property,direction:this.direction}}});Ext.define("Ext.util.Sortable",{isSortable:!0,defaultSortDirection:"ASC",requires:["Ext.util.Sorter"],statics:{createComparator:function(sorters){return sorters&&sorters.length?function(r1,r2){for(var result=sorters[0].sort(r1,r2),length=sorters.length,i=1;i<length;i++)result=result||sorters[i].sort.call(this,r1,r2);return result}:function(){return 0}}},initSortable:function(){var me=this,sorters=me.sorters;me.sorters=new Ext.util.AbstractMixedCollection(!1,function(item){return item.id||item.property}),sorters&&me.sorters.addAll(me.decodeSorters(sorters))},sort:function(sorters,direction,where,doSort){var sorter,newSorters,me=this;return Ext.isArray(sorters)?(doSort=where,where=direction,newSorters=sorters):Ext.isObject(sorters)?(doSort=where,where=direction,newSorters=[sorters]):Ext.isString(sorters)&&(sorter=me.sorters.get(sorters),sorter?void 0===direction?sorter.toggle():sorter.setDirection(direction):(sorter={property:sorters,direction:direction},newSorters=[sorter])),newSorters&&newSorters.length&&(newSorters=me.decodeSorters(newSorters),Ext.isString(where)?"prepend"===where?me.sorters.insert(0,newSorters):me.sorters.addAll(newSorters):(me.sorters.clear(),me.sorters.addAll(newSorters))),!1!==doSort&&(me.fireEvent("beforesort",me,newSorters),me.onBeforeSort(newSorters),sorters=me.sorters.items,sorters.length&&me.doSort(me.generateComparator())),sorters},generateComparator:function(){var sorters=this.sorters.getRange();return sorters.length?this.createComparator(sorters):this.emptyComparator},emptyComparator:function(){return 0},onBeforeSort:Ext.emptyFn,decodeSorters:function(sorters){Ext.isArray(sorters)||(sorters=void 0===sorters?[]:[sorters]);var field,config,i,length=sorters.length,Sorter=Ext.util.Sorter,fields=this.model?this.model.prototype.fields:null;for(i=0;i<length;i++)(config=sorters[i])instanceof Sorter||(Ext.isString(config)&&(config={property:config}),Ext.applyIf(config,{root:this.sortRoot,direction:"ASC"}),config.fn&&(config.sorterFn=config.fn),"function"==typeof config&&(config={sorterFn:config}),fields&&!config.transform&&(field=fields.get(config.property),config.transform=field&&field.sortType!==Ext.identityFn?field.sortType:void 0),sorters[i]=new Ext.util.Sorter(config));return sorters},getSorters:function(){return this.sorters.items},getFirstSorter:function(){for(var sorter,sorters=this.sorters.items,len=sorters.length,i=0;i<len;++i)if(sorter=sorters[i],!sorter.isGrouper)return sorter;return null}},function(){this.prototype.createComparator=this.createComparator});Ext.define("Ext.util.MixedCollection",{extend:"Ext.util.AbstractMixedCollection",mixins:{sortable:"Ext.util.Sortable"},constructor:function(){var me=this;me.callParent(arguments),me.addEvents("sort"),me.mixins.sortable.initSortable.call(me)},doSort:function(sorterFn){this.sortBy(sorterFn)},_sort:function(property,dir,fn){var i,len,o,me=this,dsc="DESC"==String(dir).toUpperCase()?-1:1,c=[],keys=me.keys,items=me.items;for(fn=fn||function(a,b){return a-b},i=0,len=items.length;i<len;i++)c[c.length]={key:keys[i],value:items[i],index:i};for(Ext.Array.sort(c,function(a,b){return fn(a[property],b[property])*dsc||(a.index<b.index?-1:1)}),i=0,len=c.length;i<len;i++)o=c[i],items[i]=o.value,keys[i]=o.key,me.indexMap[o.key]=i;me.generation++,me.indexGeneration=me.generation,me.fireEvent("sort",me)},sortBy:function(sorterFn){var item,key,i,me=this,items=me.items,keys=me.keys,length=items.length;for(i=0;i<length;i++)items[i].$extCollectionIndex=i;for(Ext.Array.sort(items,function(a,b){return sorterFn(a,b)||(a.$extCollectionIndex<b.$extCollectionIndex?-1:1)}),i=0;i<length;i++)item=items[i],key=me.getKey(item),keys[i]=key,me.indexMap[key]=i,delete items.$extCollectionIndex;me.generation++,me.indexGeneration=me.generation,me.fireEvent("sort",me,items,keys)},findInsertionIndex:function(newItem,sorterFn){var middle,comparison,me=this,items=me.items,start=0,end=items.length-1;for(sorterFn||(sorterFn=me.generateComparator());start<=end;)middle=start+end>>1,comparison=sorterFn(newItem,items[middle]),comparison>=0?start=middle+1:comparison<0&&(end=middle-1);return start},reorder:function(mapping){var oldIndex,me=this,items=me.items,index=0,length=items.length,order=[],remaining=[];me.suspendEvents();for(oldIndex in mapping)order[mapping[oldIndex]]=items[oldIndex];for(index=0;index<length;index++)void 0==mapping[index]&&remaining.push(items[index]);for(index=0;index<length;index++)void 0==order[index]&&(order[index]=remaining.shift());me.clear(),me.addAll(order),me.resumeEvents(),me.fireEvent("sort",me)},sortByKey:function(dir,fn){this._sort("key",dir,fn||function(a,b){var v1=String(a).toUpperCase(),v2=String(b).toUpperCase();return v1>v2?1:v1<v2?-1:0})}});Ext.define("Ext.fx.target.Target",{isAnimTarget:!0,constructor:function(target){this.target=target,this.id=this.getId()},getId:function(){return this.target.id},remove:function(){Ext.destroy(this.target)}});Ext.define("Ext.fx.target.Element",{extend:"Ext.fx.target.Target",type:"element",getElVal:function(el,attr,val){return void 0==val&&(val="x"===attr?el.getX():"y"===attr?el.getY():"scrollTop"===attr?el.getScroll().top:"scrollLeft"===attr?el.getScroll().left:"height"===attr?el.getHeight():"width"===attr?el.getWidth():el.getStyle(attr)),val},getAttr:function(attr,val){var el=this.target;return[[el,this.getElVal(el,attr,val)]]},setAttr:function(targetData){var attrs,attr,o,i,j,ln2,ln=(this.target,targetData.length);for(i=0;i<ln;i++){attrs=targetData[i].attrs;for(attr in attrs)if(attrs.hasOwnProperty(attr))for(ln2=attrs[attr].length,j=0;j<ln2;j++)o=attrs[attr][j],this.setElVal(o[0],attr,o[1])}},setElVal:function(element,attr,value){"x"===attr?element.setX(value):"y"===attr?element.setY(value):"scrollTop"===attr?element.scrollTo("top",value):"scrollLeft"===attr?element.scrollTo("left",value):"width"===attr?element.setWidth(value):"height"===attr?element.setHeight(value):element.setStyle(attr,value)}});Ext.define("Ext.fx.target.ElementCSS",{extend:"Ext.fx.target.Element",setAttr:function(targetData,isFirstFrame){var attributes,attrs,attr,easing,duration,o,i,j,ln2,cssArr={attrs:[],duration:[],easing:[]},ln=targetData.length;for(i=0;i<ln;i++){attrs=targetData[i],duration=attrs.duration,easing=attrs.easing,attrs=attrs.attrs;for(attr in attrs)-1==Ext.Array.indexOf(cssArr.attrs,attr)&&(cssArr.attrs.push(attr.replace(/[A-Z]/g,function(v){return"-"+v.toLowerCase()})),cssArr.duration.push(duration+"ms"),cssArr.easing.push(easing))}for(attributes=cssArr.attrs.join(","),duration=cssArr.duration.join(","),easing=cssArr.easing.join(", "),i=0;i<ln;i++){attrs=targetData[i].attrs;for(attr in attrs)for(ln2=attrs[attr].length,j=0;j<ln2;j++)o=attrs[attr][j],o[0].setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",isFirstFrame?"":attributes),o[0].setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",isFirstFrame?"":duration),o[0].setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",isFirstFrame?"":easing),o[0].setStyle(attr,o[1]),isFirstFrame?o=o[0].dom.offsetWidth:o[0].on(Ext.supports.CSS3TransitionEnd,function(){this.setStyle(Ext.supports.CSS3Prefix+"TransitionProperty",null),this.setStyle(Ext.supports.CSS3Prefix+"TransitionDuration",null),this.setStyle(Ext.supports.CSS3Prefix+"TransitionTimingFunction",null)},o[0],{single:!0})}}});Ext.define("Ext.fx.target.CompositeElement",{extend:"Ext.fx.target.Element",isComposite:!0,constructor:function(target){target.id=target.id||Ext.id(null,"ext-composite-"),this.callParent([target])},getAttr:function(attr,val){var i,el,out=[],target=this.target,elements=target.elements,length=elements.length;for(i=0;i<length;i++)(el=elements[i])&&(el=target.getElement(el),out.push([el,this.getElVal(el,attr,val)]));return out},setAttr:function(targetData){var value,k,attrs,attr,i,j,ln2,target=this.target,ln=targetData.length,elements=target.elements,ln3=elements.length;for(i=0;i<ln;i++){attrs=targetData[i].attrs;for(attr in attrs)if(attrs.hasOwnProperty(attr))for(ln2=attrs[attr].length,j=0;j<ln2;j++)for(value=attrs[attr][j][1],k=0;k<ln3;++k)el=elements[k],el&&(el=target.getElement(el),this.setElVal(el,attr,value))}},remove:function(){this.target.remove()}});Ext.define("Ext.fx.target.CompositeElementCSS",{extend:"Ext.fx.target.CompositeElement",requires:["Ext.fx.target.ElementCSS"],setAttr:function(){return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this,arguments)}});Ext.define("Ext.fx.target.Sprite",{extend:"Ext.fx.target.Target",type:"draw",getFromPrim:function(sprite,attr){var obj;switch(attr){case"rotate":case"rotation":return obj=sprite.attr.rotation,{x:obj.x||0,y:obj.y||0,degrees:obj.degrees||0};case"scale":case"scaling":return obj=sprite.attr.scaling,{x:obj.x||1,y:obj.y||1,cx:obj.cx||0,cy:obj.cy||0};case"translate":case"translation":return obj=sprite.attr.translation,{x:obj.x||0,y:obj.y||0};default:return sprite.attr[attr]}},getAttr:function(attr,val){return[[this.target,void 0!=val?val:this.getFromPrim(this.target,attr)]]},setAttr:function(targetData){var attrsConf,attr,attrArr,attrs,sprite,idx,value,i,j,x,y,ln2,ln=targetData.length,spriteArr=[];for(i=0;i<ln;i++){attrsConf=targetData[i].attrs;for(attr in attrsConf)for(attrArr=attrsConf[attr],ln2=attrArr.length,j=0;j<ln2;j++)sprite=attrArr[j][0],attrs=attrArr[j][1],"translate"===attr||"translation"===attr?value={x:attrs.x,y:attrs.y}:"rotate"===attr||"rotation"===attr?(x=attrs.x,isNaN(x)&&(x=null),y=attrs.y,isNaN(y)&&(y=null),value={degrees:attrs.degrees,x:x,y:y}):"scale"===attr||"scaling"===attr?(x=attrs.x,isNaN(x)&&(x=null),y=attrs.y,isNaN(y)&&(y=null),value={x:x,y:y,cx:attrs.cx,cy:attrs.cy}):value="width"===attr||"height"===attr||"x"===attr||"y"===attr?parseFloat(attrs):attrs,idx=Ext.Array.indexOf(spriteArr,sprite),-1==idx&&(spriteArr.push([sprite,{}]),idx=spriteArr.length-1),spriteArr[idx][1][attr]=value}for(ln=spriteArr.length,i=0;i<ln;i++)spriteArr[i][0].setAttributes(spriteArr[i][1]);this.target.redraw()}});Ext.define("Ext.fx.target.CompositeSprite",{extend:"Ext.fx.target.Sprite",getAttr:function(attr,val){var i,sprite,out=[],sprites=[].concat(this.target.items),length=sprites.length;for(i=0;i<length;i++)sprite=sprites[i],out.push([sprite,void 0!=val?val:this.getFromPrim(sprite,attr)]);return out}});Ext.define("Ext.fx.target.Component",{extend:"Ext.fx.target.Target",type:"component",getPropMethod:{top:function(){return this.getPosition(!0)[1]},left:function(){return this.getPosition(!0)[0]},x:function(){return this.getPosition()[0]},y:function(){return this.getPosition()[1]},height:function(){return this.getHeight()},width:function(){return this.getWidth()},opacity:function(){return this.el.getStyle("opacity")}},setMethods:{top:"setPosition",left:"setPosition",x:"setPagePosition",y:"setPagePosition",height:"setSize",width:"setSize",opacity:"setOpacity"},getAttr:function(attr,val){return[[this.target,void 0!==val?val:this.getPropMethod[attr].call(this.target)]]},setAttr:function(targetData,isFirstFrame,isLastFrame){var attrs,attr,o,i,j,targets,left,top,w,h,methodProps,me=this,ln=targetData.length,methodsToCall={};for(i=0;i<ln;i++){attrs=targetData[i].attrs;for(attr in attrs)for(targets=attrs[attr].length,j=0;j<targets;j++)o=attrs[attr][j],methodProps=methodsToCall[me.setMethods[attr]]||(methodsToCall[me.setMethods[attr]]={}),methodProps.target=o[0],methodProps[attr]=o[1];methodsToCall.setPosition&&(o=methodsToCall.setPosition,left=void 0===o.left?void 0:parseFloat(o.left),top=void 0===o.top?void 0:parseFloat(o.top),o.target.setPosition(left,top)),methodsToCall.setPagePosition&&(o=methodsToCall.setPagePosition,o.target.setPagePosition(o.x,o.y)),methodsToCall.setSize&&(o=methodsToCall.setSize,w=void 0===o.width?o.target.getWidth():parseFloat(o.width),h=void 0===o.height?o.target.getHeight():parseFloat(o.height),o.target.el.setSize(w,h),(isLastFrame||me.dynamic)&&Ext.globalEvents.on({idle:Ext.Function.bind(o.target.setSize,o.target,[w,h]),single:!0})),methodsToCall.setOpacity&&(o=methodsToCall.setOpacity,o.target.el.setStyle("opacity",o.opacity))}}});Ext.define("Ext.fx.Queue",{requires:["Ext.util.HashMap"],constructor:function(){this.targets=new Ext.util.HashMap,this.fxQueue={}},getFxDefaults:function(targetId){var target=this.targets.get(targetId);return target?target.fxDefaults:{}},setFxDefaults:function(targetId,obj){var target=this.targets.get(targetId);target&&(target.fxDefaults=Ext.apply(target.fxDefaults||{},obj))},stopAnimation:function(targetId){for(var me=this,queue=me.getFxQueue(targetId),ln=queue.length;ln;)queue[ln-1].end(),ln--},getActiveAnimation:function(targetId){var queue=this.getFxQueue(targetId);return!(!queue||!queue.length)&&queue[0]},hasFxBlock:function(targetId){var queue=this.getFxQueue(targetId);return queue&&queue[0]&&queue[0].block},getFxQueue:function(targetId){if(!targetId)return!1;var me=this,queue=me.fxQueue[targetId],target=me.targets.get(targetId);return!!target&&(queue||(me.fxQueue[targetId]=[],"element"!=target.type&&target.target.on("destroy",function(){me.fxQueue[targetId]=[]})),me.fxQueue[targetId])},queueFx:function(anim){var queue,ln,me=this,target=anim.target;target&&(queue=me.getFxQueue(target.getId()),ln=queue.length,ln?anim.concurrent?anim.paused=!1:queue[ln-1].on("afteranimate",function(){anim.paused=!1}):anim.paused=!1,anim.on("afteranimate",function(){if(Ext.Array.remove(queue,anim),0===queue.length&&me.targets.remove(anim.target),anim.remove&&"element"==target.type){var el=Ext.get(target.id);el&&el.remove()}},me,{single:!0}),queue.push(anim))}});Ext.define("Ext.fx.Manager",{singleton:!0,requires:["Ext.util.MixedCollection","Ext.fx.target.Element","Ext.fx.target.ElementCSS","Ext.fx.target.CompositeElement","Ext.fx.target.CompositeElementCSS","Ext.fx.target.Sprite","Ext.fx.target.CompositeSprite","Ext.fx.target.Component"],mixins:{queue:"Ext.fx.Queue"},constructor:function(){var me=this;me.items=new Ext.util.MixedCollection,me.targetArr={},me.mixins.queue.constructor.call(me),me.taskRunner=new Ext.util.TaskRunner},interval:16,forceJS:!0,createTarget:function(target){var targetObj,me=this,useCSS3=!me.forceJS&&Ext.supports.Transitions;if(me.useCSS3=useCSS3,target){if(target.tagName||Ext.isString(target)||target.isFly)target=Ext.get(target),targetObj=new Ext.fx.target["Element"+(useCSS3?"CSS":"")](target);else if(target.dom)targetObj=new Ext.fx.target["Element"+(useCSS3?"CSS":"")](target);else if(target.isComposite)targetObj=new Ext.fx.target["CompositeElement"+(useCSS3?"CSS":"")](target);else if(target.isSprite)targetObj=new Ext.fx.target.Sprite(target);else if(target.isCompositeSprite)targetObj=new Ext.fx.target.CompositeSprite(target);else{if(!target.isComponent)return target.isAnimTarget?target:null;targetObj=new Ext.fx.target.Component(target)}return me.targets.add(targetObj),targetObj}return null},addAnim:function(anim){var me=this,items=me.items,task=me.task;items.add(anim.id,anim),!task&&items.length&&(task=me.task={run:me.runner,interval:me.interval,scope:me},me.taskRunner.start(task))},removeAnim:function(anim){var me=this,items=me.items,task=me.task;items.removeAtKey(anim.id),task&&!items.length&&(me.taskRunner.stop(task),delete me.task)},runner:function(){var anim,me=this,items=me.items.getRange(),i=0,len=items.length;for(me.targetArr={},me.timestamp=new Date;i<len;i++)anim=items[i],anim.isReady()&&me.startAnim(anim);for(i=0;i<len;i++)anim=items[i],anim.isRunning()?me.runAnim(anim):me.useCSS3;me.applyPendingAttrs()},startAnim:function(anim){anim.start(this.timestamp)},runAnim:function(anim,forceEnd){if(anim){var target,o,me=this,useCSS3=me.useCSS3&&"element"==anim.target.type,elapsedTime=me.timestamp-anim.startTime,lastFrame=elapsedTime>=anim.duration;return forceEnd&&(elapsedTime=anim.duration,lastFrame=!0),target=this.collectTargetData(anim,elapsedTime,useCSS3,lastFrame),useCSS3&&(anim.target.setAttr(target.anims[anim.id].attributes,!0),me.collectTargetData(anim,anim.duration,useCSS3,lastFrame),anim.paused=!0,target=anim.target.target,anim.target.isComposite&&(target=anim.target.target.last()),o={},o[Ext.supports.CSS3TransitionEnd]=anim.lastFrame,o.scope=anim,o.single=!0,target.on(o)),target}},jumpToEnd:function(anim){var target=this.runAnim(anim,!0);this.applyAnimAttrs(target,target.anims[anim.id])},collectTargetData:function(anim,elapsedTime,useCSS3,isLastFrame){var targetId=anim.target.getId(),target=this.targetArr[targetId];return target||(target=this.targetArr[targetId]={id:targetId,el:anim.target,anims:{}}),target.anims[anim.id]={id:anim.id,anim:anim,elapsed:elapsedTime,isLastFrame:isLastFrame,attributes:[{duration:anim.duration,easing:useCSS3&&anim.reverse?anim.easingFn.reverse().toCSS3():anim.easing,attrs:anim.runAnim(elapsedTime)}]},target},applyAnimAttrs:function(target,animWrap){var anim=animWrap.anim;animWrap.attributes&&anim.isRunning()&&(target.el.setAttr(animWrap.attributes,!1,animWrap.isLastFrame),animWrap.isLastFrame&&anim.lastFrame())},applyPendingAttrs:function(){var target,targetId,animWrap,anim,animId,targetArr=this.targetArr;for(targetId in targetArr)if(targetArr.hasOwnProperty(targetId)){target=targetArr[targetId];for(animId in target.anims)target.anims.hasOwnProperty(animId)&&(animWrap=target.anims[animId],anim=animWrap.anim,animWrap.attributes&&anim.isRunning()&&(target.el.setAttr(animWrap.attributes,!1,animWrap.isLastFrame),animWrap.isLastFrame&&anim.lastFrame()))}}});Ext.define("Ext.fx.Animator",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.fx.Manager"],isAnimator:!0,duration:250,delay:0,delayStart:0,dynamic:!1,easing:"ease",running:!1,paused:!1,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(config){var me=this;config=Ext.apply(me,config||{}),me.config=config,me.id=Ext.id(null,"ext-animator-"),me.addEvents("beforeanimate","keyframe","afteranimate"),me.mixins.observable.constructor.call(me,config),me.timeline=[],me.createTimeline(me.keyframes),me.target&&(me.applyAnimator(me.target),Ext.fx.Manager.addAnim(me))},sorter:function(a,b){return a.pct-b.pct},createTimeline:function(keyframes){var prevMs,ms,i,ln,pct,attr,me=this,attrs=[],to=me.to||{},duration=me.duration;for(pct in keyframes)keyframes.hasOwnProperty(pct)&&me.animKeyFramesRE.test(pct)&&(attr={attrs:Ext.apply(keyframes[pct],to)},"from"==pct?pct=0:"to"==pct&&(pct=100),attr.pct=parseInt(pct,10),attrs.push(attr));for(Ext.Array.sort(attrs,me.sorter),ln=attrs.length,i=0;i<ln;i++)prevMs=attrs[i-1]?duration*(attrs[i-1].pct/100):0,ms=duration*(attrs[i].pct/100),me.timeline.push({duration:ms-prevMs,attrs:attrs[i].attrs})},applyAnimator:function(target){var anim,easing,damper,attrs,i,me=this,anims=[],timeline=me.timeline,ln=timeline.length;if(!1!==me.fireEvent("beforeanimate",me)){for(i=0;i<ln;i++)anim=timeline[i],attrs=anim.attrs,easing=attrs.easing||me.easing,damper=attrs.damper||me.damper,delete attrs.easing,delete attrs.damper,anim=new Ext.fx.Anim({target:target,easing:easing,damper:damper,duration:anim.duration,paused:!0,to:attrs}),anims.push(anim);for(me.animations=anims,me.target=anim.target,i=0;i<ln-1;i++)anim=anims[i],anim.nextAnim=anims[i+1],anim.on("afteranimate",function(){this.nextAnim.paused=!1}),anim.on("afteranimate",function(){this.fireEvent("keyframe",this,++this.keyframeStep)},me);anims[ln-1].on("afteranimate",function(){this.lastFrame()},me)}},start:function(startTime){var me=this,delay=me.delay,delayStart=me.delayStart;if(delay){if(!delayStart)return void(me.delayStart=startTime);if(startTime-delayStart<delay)return;startTime=new Date(delayStart.getTime()+delay)}!1!==me.fireEvent("beforeanimate",me)&&(me.startTime=startTime,me.running=!0,me.animations[me.keyframeStep].paused=!1)},lastFrame:function(){var me=this,iter=me.iterations,iterCount=me.currentIteration;iterCount++,iterCount<iter?(me.startTime=new Date,me.currentIteration=iterCount,me.keyframeStep=0,me.applyAnimator(me.target),me.animations[me.keyframeStep].paused=!1):(me.currentIteration=0,me.end())},end:function(){var me=this;me.fireEvent("afteranimate",me,me.startTime,new Date-me.startTime)},isReady:function(){return!1===this.paused&&!1===this.running&&this.iterations>0},isRunning:function(){return!1}});Ext.define("Ext.fx.CubicBezier",{singleton:!0,cubicBezierAtTime:function(t,p1x,p1y,p2x,p2y,duration){function sampleCurveX(t){return((ax*t+bx)*t+cx)*t}function solveCurveX(x,epsilon){var t0,t1,t2,x2,d2,i;for(t2=x,i=0;i<8;i++){if(x2=sampleCurveX(t2)-x,Math.abs(x2)<epsilon)return t2;if(d2=(3*ax*t2+2*bx)*t2+cx,Math.abs(d2)<1e-6)break;t2-=x2/d2}if(t0=0,t1=1,(t2=x)<t0)return t0;if(t2>t1)return t1;for(;t0<t1;){if(x2=sampleCurveX(t2),Math.abs(x2-x)<epsilon)return t2;x>x2?t0=t2:t1=t2,t2=(t1-t0)/2+t0}return t2}var cx=3*p1x,bx=3*(p2x-p1x)-cx,ax=1-cx-bx,cy=3*p1y,by=3*(p2y-p1y)-cy,ay=1-cy-by;return function(x,epsilon){var t=solveCurveX(x,epsilon);return((ay*t+by)*t+cy)*t}(t,1/(200*duration))},cubicBezier:function(x1,y1,x2,y2){var fn=function(pos){return Ext.fx.CubicBezier.cubicBezierAtTime(pos,x1,y1,x2,y2,1)};return fn.toCSS3=function(){return"cubic-bezier("+[x1,y1,x2,y2].join(",")+")"},fn.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-x2,1-y2,1-x1,1-y1)},fn}});Ext.require("Ext.fx.CubicBezier",function(){var math=Math,pi=math.PI,pow=math.pow,sin=math.sin,sqrt=math.sqrt,abs=math.abs;Ext.define("Ext.fx.Easing",{singleton:!0,linear:Ext.identityFn,ease:function(n){var q=.07813-n/2,Q=sqrt(.0066+q*q),x=Q-q,X=pow(abs(x),1/3)*(x<0?-1:1),y=-Q-q,Y=pow(abs(y),1/3)*(y<0?-1:1),t=X+Y+.25;return 3*pow(1-t,2)*t*.1+3*(1-t)*t*t+t*t*t},easeIn:function(n){return pow(n,1.7)},easeOut:function(n){return pow(n,.48)},easeInOut:function(n){var q=.48-n/1.04,Q=sqrt(.1734+q*q),x=Q-q,X=pow(abs(x),1/3)*(x<0?-1:1),y=-Q-q,Y=pow(abs(y),1/3)*(y<0?-1:1),t=X+Y+.5;return 3*(1-t)*t*t+t*t*t},backIn:function(n){return n*n*(2.70158*n-1.70158)},backOut:function(n){return(n-=1)*n*(2.70158*n+1.70158)+1},elasticIn:function(n){if(0===n||1===n)return n;return pow(2,-10*n)*sin(2*pi*(n-.075)/.3)+1},elasticOut:function(n){return 1-Ext.fx.Easing.elasticIn(1-n)},bounceIn:function(n){return 1-Ext.fx.Easing.bounceOut(1-n)},bounceOut:function(n){var l,s=7.5625,p=2.75;return n<1/p?l=s*n*n:n<2/p?(n-=1.5/p,l=s*n*n+.75):n<2.5/p?(n-=2.25/p,l=s*n*n+.9375):(n-=2.625/p,l=s*n*n+.984375),l}},function(){var easing=Ext.fx.Easing.self,proto=easing.prototype;easing.implement({"back-in":proto.backIn,"back-out":proto.backOut,"ease-in":proto.easeIn,"ease-out":proto.easeOut,"elastic-in":proto.elasticIn,"elastic-out":proto.elasticOut,"bounce-in":proto.bounceIn,"bounce-out":proto.bounceOut,"ease-in-out":proto.easeInOut})})});Ext.define("Ext.draw.Color",{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:.2,constructor:function(red,green,blue){var me=this,clamp=Ext.Number.constrain;me.r=clamp(red,0,255),me.g=clamp(green,0,255),me.b=clamp(blue,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var me=this;return[me.r,me.g,me.b]},getHSL:function(){var h,me=this,r=me.r/255,g=me.g/255,b=me.b/255,max=Math.max(r,g,b),min=Math.min(r,g,b),delta=max-min,s=0,l=.5*(max+min);return min!=max&&(s=l<.5?delta/(max+min):delta/(2-max-min),h=r==max?60*(g-b)/delta:g==max?120+60*(b-r)/delta:240+60*(r-g)/delta,h<0&&(h+=360),h>=360&&(h-=360)),[h,s,l]},getLighter:function(factor){var hsl=this.getHSL();return factor=factor||this.lightnessFactor,hsl[2]=Ext.Number.constrain(hsl[2]+factor,0,1),this.fromHSL(hsl[0],hsl[1],hsl[2])},getDarker:function(factor){return factor=factor||this.lightnessFactor,this.getLighter(-factor)},toString:function(){var me=this,round=Math.round,r=round(me.r).toString(16),g=round(me.g).toString(16),b=round(me.b).toString(16);return r=1==r.length?"0"+r:r,g=1==g.length?"0"+g:g,b=1==b.length?"0"+b:b,["#",r,g,b].join("")},toHex:function(color){if(Ext.isArray(color)&&(color=color[0]),!Ext.isString(color))return"";if("#"===color.substr(0,1))return color;var red,green,blue,rgb,digits=this.colorToHexRe.exec(color);return Ext.isArray(digits)?(red=parseInt(digits[2],10),green=parseInt(digits[3],10),blue=parseInt(digits[4],10),rgb=blue|green<<8|red<<16,digits[1]+"#"+("000000"+rgb.toString(16)).slice(-6)):color},fromString:function(str){var values,r,g,b,colorValue,parse=parseInt,firstChar=str.substr(0,1);return"#"!=firstChar&&(colorValue=Ext.draw.Color.cssColors[str])&&(str=colorValue,firstChar=str.substr(0,1)),4!=str.length&&7!=str.length||"#"!==firstChar?(values=str.match(this.rgbRe))&&(r=values[1],g=values[2],b=values[3]):(values=str.match(this.hexRe))&&(r=parse(values[1],16)>>0,g=parse(values[2],16)>>0,b=parse(values[3],16)>>0,4==str.length&&(r+=16*r,g+=16*g,b+=16*b)),void 0===r?void 0:new Ext.draw.Color(r,g,b)},getGrayscale:function(){return.3*this.r+.59*this.g+.11*this.b},fromHSL:function(h,s,l){var C,X,m,rgb=[],abs=Math.abs,floor=Math.floor;if(0==s||null==h)rgb=[l,l,l];else{switch(h/=60,C=s*(1-abs(2*l-1)),X=C*(1-abs(h-2*floor(h/2)-1)),m=l-C/2,floor(h)){case 0:rgb=[C,X,0];break;case 1:rgb=[X,C,0];break;case 2:rgb=[0,C,X];break;case 3:rgb=[0,X,C];break;case 4:rgb=[X,0,C];break;case 5:rgb=[C,0,X]}rgb=[rgb[0]+m,rgb[1]+m,rgb[2]+m]}return new Ext.draw.Color(255*rgb[0],255*rgb[1],255*rgb[2])}},function(){var prototype=this.prototype;this.addStatics({fromHSL:function(){return prototype.fromHSL.apply(prototype,arguments)},fromString:function(){return prototype.fromString.apply(prototype,arguments)},toHex:function(){return prototype.toHex.apply(prototype,arguments)},cssColors:{aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"}})});Ext.define("Ext.draw.Draw",{singleton:!0,requires:["Ext.draw.Color"],pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/gi,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/gi,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(o,type){return"object"==(type=String(type).toLowerCase())&&o===Object(o)||"undefined"==type&&typeof o==type||"null"==type&&null===o||"array"==type&&Array.isArray&&Array.isArray(o)||Object.prototype.toString.call(o).toLowerCase().slice(8,-1)==type},ellipsePath:function(sprite){var attr=sprite.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",attr.x,attr.y-attr.ry,attr.rx,attr.ry,attr.y+attr.ry)},rectPath:function(sprite){var attr=sprite.attr;return attr.radius?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",attr.x+attr.radius,attr.y,attr.width-2*attr.radius,attr.radius,-attr.radius,attr.height-2*attr.radius,2*attr.radius-attr.width,2*attr.radius-attr.height):Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",attr.x,attr.y,attr.width+attr.x,attr.height+attr.y)},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(arrayPath){return arrayPath.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(pathString){if(!pathString)return null;var paramCounts={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},data=[],me=this;return me.is(pathString,"array")&&me.is(pathString[0],"array")&&(data=me.pathClone(pathString)),data.length||String(pathString).replace(me.pathCommandRE,function(a,b,c){var params=[],name=b.toLowerCase();for(c.replace(me.pathValuesRE,function(a,b){b&&params.push(+b)}),"m"==name&&params.length>2&&(data.push([b].concat(Ext.Array.splice(params,0,2))),name="l",b="m"==b?"l":"L");params.length>=paramCounts[name]&&(data.push([b].concat(Ext.Array.splice(params,0,paramCounts[name]))),paramCounts[name]););}),data.toString=me.path2string,data},mapPath:function(path,matrix){if(!matrix)return path;var x,y,i,ii,j,jj,pathi;for(path=this.path2curve(path),i=0,ii=path.length;i<ii;i++)for(pathi=path[i],j=1,jj=pathi.length;j<jj-1;j+=2)x=matrix.x(pathi[j],pathi[j+1]),y=matrix.y(pathi[j],pathi[j+1]),pathi[j]=x,pathi[j+1]=y;return path},pathClone:function(pathArray){var j,jj,i,ii,res=[];for(this.is(pathArray,"array")&&this.is(pathArray&&pathArray[0],"array")||(pathArray=this.parsePathString(pathArray)),i=0,ii=pathArray.length;i<ii;i++)for(res[i]=[],j=0,jj=pathArray[i].length;j<jj;j++)res[i][j]=pathArray[i][j];return res.toString=this.path2string,res},pathToAbsolute:function(pathArray){this.is(pathArray,"array")&&this.is(pathArray&&pathArray[0],"array")||(pathArray=this.parsePathString(pathArray));var r,pathSegment,j,ln2,res=[],x=0,y=0,mx=0,my=0,i=0,ln=pathArray.length;for(ln&&"M"==pathArray[0][0]&&(x=+pathArray[0][1],y=+pathArray[0][2],mx=x,my=y,i++,res[0]=["M",x,y]);i<ln;i++){if(r=res[i]=[],pathSegment=pathArray[i],pathSegment[0]!=pathSegment[0].toUpperCase())switch(r[0]=pathSegment[0].toUpperCase(),r[0]){case"A":r[1]=pathSegment[1],r[2]=pathSegment[2],r[3]=pathSegment[3],r[4]=pathSegment[4],r[5]=pathSegment[5],r[6]=+(pathSegment[6]+x),r[7]=+(pathSegment[7]+y);break;case"V":r[1]=+pathSegment[1]+y;break;case"H":r[1]=+pathSegment[1]+x;break;case"M":mx=+pathSegment[1]+x,my=+pathSegment[2]+y;default:for(j=1,ln2=pathSegment.length;j<ln2;j++)r[j]=+pathSegment[j]+(j%2?x:y)}else for(j=0,ln2=pathSegment.length;j<ln2;j++)res[i][j]=pathSegment[j];switch(r[0]){case"Z":x=mx,y=my;break;case"H":x=r[1];break;case"V":y=r[1];break;case"M":pathSegment=res[i],ln2=pathSegment.length,mx=pathSegment[ln2-2],my=pathSegment[ln2-1];default:pathSegment=res[i],ln2=pathSegment.length,x=pathSegment[ln2-2],y=pathSegment[ln2-1]}}return res.toString=this.path2string,res},pathToRelative:function(pathArray){this.is(pathArray,"array")&&this.is(pathArray&&pathArray[0],"array")||(pathArray=this.parsePathString(pathArray));var r,pa,i,j,k,len,ii,jj,kk,res=[],x=0,y=0,mx=0,my=0,start=0;for("M"==pathArray[0][0]&&(x=pathArray[0][1],y=pathArray[0][2],mx=x,my=y,start++,res.push(["M",x,y])),i=start,ii=pathArray.length;i<ii;i++){if(r=res[i]=[],pa=pathArray[i],pa[0]!=pa[0].toLowerCase())switch(r[0]=pa[0].toLowerCase(),r[0]){case"a":r[1]=pa[1],r[2]=pa[2],r[3]=pa[3],r[4]=pa[4],r[5]=pa[5],r[6]=+(pa[6]-x).toFixed(3),r[7]=+(pa[7]-y).toFixed(3);break;case"v":r[1]=+(pa[1]-y).toFixed(3);break;case"m":mx=pa[1],my=pa[2];default:for(j=1,jj=pa.length;j<jj;j++)r[j]=+(pa[j]-(j%2?x:y)).toFixed(3)}else for(r=res[i]=[],"m"==pa[0]&&(mx=pa[1]+x,my=pa[2]+y),k=0,kk=pa.length;k<kk;k++)res[i][k]=pa[k];switch(len=res[i].length,res[i][0]){case"z":x=mx,y=my;break;case"h":x+=+res[i][len-1];break;case"v":y+=+res[i][len-1];break;default:x+=+res[i][len-2],y+=+res[i][len-1]}}return res.toString=this.path2string,res},path2curve:function(path){var i,seg,segLn,point,me=this,points=me.pathToAbsolute(path),ln=points.length,attrs={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};for(i=0;i<ln;i++){if(points[i]=me.command2curve(points[i],attrs),points[i].length>7){for(points[i].shift(),point=points[i];point.length;)Ext.Array.splice(points,i++,0,["C"].concat(Ext.Array.splice(point,0,6)));Ext.Array.erase(points,i,1),ln=points.length,i--}seg=points[i],segLn=seg.length,attrs.x=seg[segLn-2],attrs.y=seg[segLn-1],attrs.bx=parseFloat(seg[segLn-4])||attrs.x,attrs.by=parseFloat(seg[segLn-3])||attrs.y}return points},interpolatePaths:function(path,path2){var i,ii,seg,seg2,seglen,seg2len,me=this,p=me.pathToAbsolute(path),p2=me.pathToAbsolute(path2),attrs={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},attrs2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},fixArc=function(pp,i){if(pp[i].length>7){pp[i].shift();for(var pi=pp[i];pi.length;)Ext.Array.splice(pp,i++,0,["C"].concat(Ext.Array.splice(pi,0,6)));Ext.Array.erase(pp,i,1),ii=Math.max(p.length,p2.length||0)}},fixM=function(path1,path2,a1,a2,i){path1&&path2&&"M"==path1[i][0]&&"M"!=path2[i][0]&&(Ext.Array.splice(path2,i,0,["M",a2.x,a2.y]),a1.bx=0,a1.by=0,a1.x=path1[i][1],a1.y=path1[i][2],ii=Math.max(p.length,p2.length||0))};for(i=0,ii=Math.max(p.length,p2.length||0);i<ii;i++)p[i]=me.command2curve(p[i],attrs),fixArc(p,i),p2[i]=me.command2curve(p2[i],attrs2),fixArc(p2,i),fixM(p,p2,attrs,attrs2,i),fixM(p2,p,attrs2,attrs,i),seg=p[i],seg2=p2[i],seglen=seg.length,seg2len=seg2.length,attrs.x=seg[seglen-2],attrs.y=seg[seglen-1],attrs.bx=parseFloat(seg[seglen-4])||attrs.x,attrs.by=parseFloat(seg[seglen-3])||attrs.y,attrs2.bx=parseFloat(seg2[seg2len-4])||attrs2.x,attrs2.by=parseFloat(seg2[seg2len-3])||attrs2.y,attrs2.x=seg2[seg2len-2],attrs2.y=seg2[seg2len-1];return[p,p2]},command2curve:function(pathCommand,d){var me=this;if(!pathCommand)return["C",d.x,d.y,d.x,d.y,d.x,d.y];switch("T"!=pathCommand[0]&&"Q"!=pathCommand[0]&&(d.qx=d.qy=null),pathCommand[0]){case"M":d.X=pathCommand[1],d.Y=pathCommand[2];break;case"A":pathCommand=["C"].concat(me.arc2curve.apply(me,[d.x,d.y].concat(pathCommand.slice(1))));break;case"S":pathCommand=["C",d.x+(d.x-(d.bx||d.x)),d.y+(d.y-(d.by||d.y))].concat(pathCommand.slice(1));break;case"T":d.qx=d.x+(d.x-(d.qx||d.x)),d.qy=d.y+(d.y-(d.qy||d.y)),pathCommand=["C"].concat(me.quadratic2curve(d.x,d.y,d.qx,d.qy,pathCommand[1],pathCommand[2]));break;case"Q":d.qx=pathCommand[1],d.qy=pathCommand[2],pathCommand=["C"].concat(me.quadratic2curve(d.x,d.y,pathCommand[1],pathCommand[2],pathCommand[3],pathCommand[4]));break;case"L":pathCommand=["C"].concat(d.x,d.y,pathCommand[1],pathCommand[2],pathCommand[1],pathCommand[2]);break;case"H":pathCommand=["C"].concat(d.x,d.y,pathCommand[1],d.y,pathCommand[1],d.y);break;case"V":pathCommand=["C"].concat(d.x,d.y,d.x,pathCommand[1],d.x,pathCommand[1]);break;case"Z":pathCommand=["C"].concat(d.x,d.y,d.X,d.Y,d.X,d.Y)}return pathCommand},quadratic2curve:function(x1,y1,ax,ay,x2,y2){return[1/3*x1+2/3*ax,1/3*y1+2/3*ay,1/3*x2+2/3*ax,1/3*y2+2/3*ay,x2,y2]},rotate:function(x,y,rad){var cos=Math.cos(rad),sin=Math.sin(rad);return{x:x*cos-y*sin,y:x*sin+y*cos}},arc2curve:function(x1,y1,rx,ry,angle,large_arc_flag,sweep_flag,x2,y2,recursive){var xy,x,y,h,rx2,ry2,k,cx,cy,f1,f2,df,c1,s1,c2,s2,t,hx,hy,m1,m2,m3,m4,newres,i,ln,f2old,x2old,y2old,me=this,PI=Math.PI,radian=me.radian,_120=120*PI/180,rad=radian*(+angle||0),res=[],math=Math,mcos=math.cos,msin=math.sin,msqrt=math.sqrt,mabs=math.abs,masin=math.asin;if(recursive?(f1=recursive[0],f2=recursive[1],cx=recursive[2],cy=recursive[3]):(xy=me.rotate(x1,y1,-rad),x1=xy.x,y1=xy.y,xy=me.rotate(x2,y2,-rad),x2=xy.x,y2=xy.y,x=(x1-x2)/2,y=(y1-y2)/2,h=x*x/(rx*rx)+y*y/(ry*ry),h>1&&(h=msqrt(h),rx*=h,ry*=h),rx2=rx*rx,ry2=ry*ry,k=(large_arc_flag==sweep_flag?-1:1)*msqrt(mabs((rx2*ry2-rx2*y*y-ry2*x*x)/(rx2*y*y+ry2*x*x))),cx=k*rx*y/ry+(x1+x2)/2,cy=k*-ry*x/rx+(y1+y2)/2,f1=masin(((y1-cy)/ry).toFixed(7)),f2=masin(((y2-cy)/ry).toFixed(7)),f1=x1<cx?PI-f1:f1,f2=x2<cx?PI-f2:f2,f1<0&&(f1=2*PI+f1),f2<0&&(f2=2*PI+f2),sweep_flag&&f1>f2&&(f1-=2*PI),!sweep_flag&&f2>f1&&(f2-=2*PI)),df=f2-f1,mabs(df)>_120&&(f2old=f2,x2old=x2,y2old=y2,f2=f1+_120*(sweep_flag&&f2>f1?1:-1),x2=cx+rx*mcos(f2),y2=cy+ry*msin(f2),res=me.arc2curve(x2,y2,rx,ry,angle,0,sweep_flag,x2old,y2old,[f2,f2old,cx,cy])),df=f2-f1,c1=mcos(f1),s1=msin(f1),c2=mcos(f2),s2=msin(f2),t=math.tan(df/4),hx=4/3*rx*t,hy=4/3*ry*t,m1=[x1,y1],m2=[x1+hx*s1,y1-hy*c1],m3=[x2+hx*s2,y2-hy*c2],m4=[x2,y2],m2[0]=2*m1[0]-m2[0],m2[1]=2*m1[1]-m2[1],recursive)return[m2,m3,m4].concat(res);for(res=[m2,m3,m4].concat(res).join().split(","),newres=[],ln=res.length,i=0;i<ln;i++)newres[i]=i%2?me.rotate(res[i-1],res[i],rad).y:me.rotate(res[i],res[i+1],rad).x;return newres},rotateAndTranslatePath:function(sprite){var path,i,p,xy,j,alpha=sprite.rotation.degrees,cx=sprite.rotation.x,cy=sprite.rotation.y,dx=sprite.translation.x,dy=sprite.translation.y,res=[];if(!alpha&&!dx&&!dy)return this.pathToAbsolute(sprite.attr.path);for(dx=dx||0,dy=dy||0,path=this.pathToAbsolute(sprite.attr.path),i=path.length;i--;)if(p=res[i]=path[i].slice(),"A"==p[0])xy=this.rotatePoint(p[6],p[7],alpha,cx,cy),p[6]=xy.x+dx,p[7]=xy.y+dy;else for(j=1;null!=p[j+1];)xy=this.rotatePoint(p[j],p[j+1],alpha,cx,cy),p[j]=xy.x+dx,p[j+1]=xy.y+dy,j+=2;return res},rotatePoint:function(x,y,alpha,cx,cy){if(!alpha)return{x:x,y:y};cx=cx||0,cy=cy||0,x-=cx,y-=cy,alpha*=this.radian;var cos=Math.cos(alpha),sin=Math.sin(alpha);return{x:x*cos-y*sin+cx,y:x*sin+y*cos+cy}},pathDimensions:function(path){if(!(path&&path+""))return{x:0,y:0,width:0,height:0};path=this.path2curve(path);for(var p,xmin,ymin,xmax,ymax,dim,x=0,y=0,X=[],Y=[],i=0,ln=path.length;i<ln;i++)p=path[i],"M"==p[0]?(x=p[1],y=p[2],X.push(x),Y.push(y)):(dim=this.curveDim(x,y,p[1],p[2],p[3],p[4],p[5],p[6]),X=X.concat(dim.min.x,dim.max.x),Y=Y.concat(dim.min.y,dim.max.y),x=p[5],y=p[6]);return xmin=Math.min.apply(0,X),ymin=Math.min.apply(0,Y),xmax=Math.max.apply(0,X),ymax=Math.max.apply(0,Y),{x:Math.round(xmin),y:Math.round(ymin),path:path,width:Math.round(xmax-xmin),height:Math.round(ymax-ymin)}},intersectInside:function(path,cp1,cp2){return(cp2[0]-cp1[0])*(path[1]-cp1[1])>(cp2[1]-cp1[1])*(path[0]-cp1[0])},intersectIntersection:function(s,e,cp1,cp2){var p=[],dcx=cp1[0]-cp2[0],dcy=cp1[1]-cp2[1],dpx=s[0]-e[0],dpy=s[1]-e[1],n1=cp1[0]*cp2[1]-cp1[1]*cp2[0],n2=s[0]*e[1]-s[1]*e[0],n3=1/(dcx*dpy-dcy*dpx);return p[0]=(n1*dpx-n2*dcx)*n3,p[1]=(n1*dpy-n2*dcy)*n3,p},intersect:function(subjectPolygon,clipPolygon){for(var cp2,s,e,ln2,inputList,j,me=this,i=0,ln=clipPolygon.length,cp1=clipPolygon[ln-1],outputList=subjectPolygon;i<ln;++i){for(cp2=clipPolygon[i],inputList=outputList,outputList=[],s=inputList[inputList.length-1],j=0,ln2=inputList.length;j<ln2;j++)e=inputList[j],me.intersectInside(e,cp1,cp2)?(me.intersectInside(s,cp1,cp2)||outputList.push(me.intersectIntersection(s,e,cp1,cp2)),outputList.push(e)):me.intersectInside(s,cp1,cp2)&&outputList.push(me.intersectIntersection(s,e,cp1,cp2)),s=e;cp1=cp2}return outputList},bezier:function(a,b,c,d,x){if(0===x)return a;if(1===x)return d;var du=1-x,d3=du*du*du,r=x/du;return d3*(a+r*(3*b+r*(3*c+d*r)))},bezierDim:function(a,b,c,d){var r,A,top,C,delta,bottom,s,min,max,i,points=[];for(a+3*c==d+3*b?(r=a-b,(r/=2*(a-b-b+c))<1&&r>0&&points.push(r)):(A=a-3*b+3*c-d,top=2*(a-b-b+c),C=a-b,delta=top*top-4*A*C,bottom=A+A,0===delta?(r=top/bottom)<1&&r>0&&points.push(r):delta>0&&(s=Math.sqrt(delta),r=(s+top)/bottom,r<1&&r>0&&points.push(r),(r=(top-s)/bottom)<1&&r>0&&points.push(r))),min=Math.min(a,d),max=Math.max(a,d),i=0;i<points.length;i++)min=Math.min(min,this.bezier(a,b,c,d,points[i])),max=Math.max(max,this.bezier(a,b,c,d,points[i]));return[min,max]},curveDim:function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y){var x=this.bezierDim(p1x,c1x,c2x,p2x),y=this.bezierDim(p1y,c1y,c2y,p2y);return{min:{x:x[0],y:y[0]},max:{x:x[1],y:y[1]}}},getAnchors:function(prevX,prevY,curX,curY,nextX,nextY,value){value=value||4;var control1Length,control2Length,control1Angle,control2Angle,control1X,control1Y,control2X,control2Y,alpha,M=Math,PI=M.PI,halfPI=PI/2,abs=M.abs,sin=M.sin,cos=M.cos,atan=M.atan;return control1Length=(curX-prevX)/value,control2Length=(nextX-curX)/value,curY>=prevY&&curY>=nextY||curY<=prevY&&curY<=nextY?control1Angle=control2Angle=halfPI:(control1Angle=atan((curX-prevX)/abs(curY-prevY)),prevY<curY&&(control1Angle=PI-control1Angle),control2Angle=atan((nextX-curX)/abs(curY-nextY)),nextY<curY&&(control2Angle=PI-control2Angle)),alpha=halfPI-(control1Angle+control2Angle)%(2*PI)/2,alpha>halfPI&&(alpha-=PI),control1Angle+=alpha,control2Angle+=alpha,control1X=curX-control1Length*sin(control1Angle),control1Y=curY+control1Length*cos(control1Angle),control2X=curX+control2Length*sin(control2Angle),control2Y=curY+control2Length*cos(control2Angle),(curY>prevY&&control1Y<prevY||curY<prevY&&control1Y>prevY)&&(control1X+=abs(prevY-control1Y)*(control1X-curX)/(control1Y-curY),control1Y=prevY),(curY>nextY&&control2Y<nextY||curY<nextY&&control2Y>nextY)&&(control2X-=abs(nextY-control2Y)*(control2X-curX)/(control2Y-curY),control2Y=nextY),{x1:control1X,y1:control1Y,x2:control2X,y2:control2Y}},smooth:function(originalPath,value){for(var j,points,pathi,pathil,pathim,pathiml,pathip,pathipl,begl,path=this.path2curve(originalPath),newp=[path[0]],x=path[0][1],y=path[0][2],i=1,ii=path.length,beg=1,mx=x,my=y;i<ii;i++)if(pathi=path[i],pathil=pathi.length,pathim=path[i-1],pathiml=pathim.length,pathip=path[i+1],pathipl=pathip&&pathip.length,"M"!=pathi[0])pathi[pathil-2]!=mx||pathi[pathil-1]!=my||pathip&&"M"!=pathip[0]?points=pathip&&"M"!=pathip[0]?this.getAnchors(pathim[pathiml-2],pathim[pathiml-1],pathi[pathil-2],pathi[pathil-1],pathip[pathipl-2],pathip[pathipl-1],value):{x1:pathi[pathil-2],y1:pathi[pathil-1]}:(begl=newp[beg].length,points=this.getAnchors(pathim[pathiml-2],pathim[pathiml-1],mx,my,newp[beg][begl-2],newp[beg][begl-1],value),newp[beg][1]=points.x2,newp[beg][2]=points.y2),newp.push(["C",x,y,points.x1,points.y1,pathi[pathil-2],pathi[pathil-1]]),x=points.x2,y=points.y2;else{for(mx=pathi[1],my=pathi[2],j=i+1;"C"!=path[j][0];)j++;newp.push(["M",mx,my]),beg=newp.length,x=mx,y=my}return newp},findDotAtSegment:function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t;return{x:Math.pow(t1,3)*p1x+3*Math.pow(t1,2)*t*c1x+3*t1*t*t*c2x+Math.pow(t,3)*p2x,y:Math.pow(t1,3)*p1y+3*Math.pow(t1,2)*t*c1y+3*t1*t*t*c2y+Math.pow(t,3)*p2y}},snapEnds:function(from,to,stepsMax,prettyNumbers){if(Ext.isDate(from))return this.snapEndsByDate(from,to,stepsMax);var cur,floor,value,weight,i,topValue,step=(to-from)/stepsMax,level=Math.floor(Math.log(step)/Math.LN10)+1,m=Math.pow(10,level),modulo=Math.round(step%m*Math.pow(10,2-level)),interval=[[0,15],[10,1],[20,4],[25,2],[50,9],[100,15]],stepCount=0,topWeight=1e9,ln=interval.length;if(floor=Math.floor(from/m)*m,from==floor&&floor>0&&(floor=Math.floor((from-m/10)/m)*m),prettyNumbers){for(i=0;i<ln;i++)value=interval[i][0],(weight=value-modulo<0?1e6:(value-modulo)/interval[i][1])<topWeight&&(topValue=value,topWeight=weight);if(step=Math.floor(step*Math.pow(10,-level))*Math.pow(10,level)+topValue*Math.pow(10,level-2),from<0&&to>=0){for(cur=0;cur>from;)cur-=step,stepCount++;for(from=+cur.toFixed(10),cur=0;cur<to;)cur+=step,stepCount++;to=+cur.toFixed(10)}else for(cur=from=floor;cur<to;)cur+=step,stepCount++;to=+cur.toFixed(10)}else from=floor,stepCount=stepsMax;return{from:from,to:to,power:level,step:step,steps:stepCount}},snapEndsByDate:function(from,to,stepsMax,lockEnds){var scale,j,yearDiff,s,selectedStep=!1,scales=[[Ext.Date.MILLI,[1,2,5,10,20,50,100,200,250,500]],[Ext.Date.SECOND,[1,2,5,10,15,30]],[Ext.Date.MINUTE,[1,2,5,10,15,30]],[Ext.Date.HOUR,[1,2,3,4,6,12]],[Ext.Date.DAY,[1,2,7,14]],[Ext.Date.MONTH,[1,2,3,6]]],sLen=scales.length,stop=!1;for(s=0;s<sLen;s++)if(scale=scales[s],!stop)for(j=0;j<scale[1].length;j++)if(to<Ext.Date.add(from,scale[0],scale[1][j]*stepsMax)){selectedStep=[scale[0],scale[1][j]],stop=!0;break}return selectedStep||(yearDiff=this.snapEnds(from.getFullYear(),to.getFullYear()+1,stepsMax,lockEnds),selectedStep=[Date.YEAR,Math.round(yearDiff.step)]),this.snapEndsByDateAndStep(from,to,selectedStep,lockEnds)},snapEndsByDateAndStep:function(from,to,step,lockEnds){var testFrom,testTo,date,year,month,day,fractionalMonth,stepsArray,fromStat=[from.getFullYear(),from.getMonth(),from.getDate(),from.getHours(),from.getMinutes(),from.getSeconds(),from.getMilliseconds()],stepUnit=step[0],stepValue=step[1],steps=0;if(lockEnds)testFrom=from;else switch(stepUnit){case Ext.Date.MILLI:testFrom=new Date(fromStat[0],fromStat[1],fromStat[2],fromStat[3],fromStat[4],fromStat[5],Math.floor(fromStat[6]/stepValue)*stepValue);break;case Ext.Date.SECOND:testFrom=new Date(fromStat[0],fromStat[1],fromStat[2],fromStat[3],fromStat[4],Math.floor(fromStat[5]/stepValue)*stepValue,0);break;case Ext.Date.MINUTE:testFrom=new Date(fromStat[0],fromStat[1],fromStat[2],fromStat[3],Math.floor(fromStat[4]/stepValue)*stepValue,0,0);break;case Ext.Date.HOUR:testFrom=new Date(fromStat[0],fromStat[1],fromStat[2],Math.floor(fromStat[3]/stepValue)*stepValue,0,0,0);break;case Ext.Date.DAY:testFrom=new Date(fromStat[0],fromStat[1],Math.floor((fromStat[2]-1)/stepValue)*stepValue+1,0,0,0,0);break;case Ext.Date.MONTH:testFrom=new Date(fromStat[0],Math.floor(fromStat[1]/stepValue)*stepValue,1,0,0,0,0),steps=[],stepsArray=!0;break;default:testFrom=new Date(Math.floor(fromStat[0]/stepValue)*stepValue,0,1,0,0,0,0),steps=[],stepsArray=!0}for(fractionalMonth=stepUnit===Ext.Date.MONTH&&(.5==stepValue||stepValue==1/3||.25==stepValue),testTo=new Date(testFrom);testTo<to;)if(fractionalMonth){switch(date=new Date(testTo),year=date.getFullYear(),month=date.getMonth(),day=date.getDate(),stepValue){case.5:day>=15?(day=1,++month>11&&year++):day=15;break;case 1/3:day>=20?(day=1,++month>11&&year++):day=day>=10?20:10;break;case.25:day>=22?(day=1,++month>11&&year++):day=day>=15?22:day>=8?15:8}testTo.setYear(year),testTo.setMonth(month),testTo.setDate(day),steps.push(new Date(testTo))}else stepsArray?(testTo=Ext.Date.add(testTo,stepUnit,stepValue),steps.push(new Date(testTo))):(testTo=Ext.Date.add(testTo,stepUnit,stepValue),steps++);return lockEnds&&(testTo=to),stepsArray?{from:+testFrom,to:+testTo,steps:steps}:{from:+testFrom,to:+testTo,step:(testTo-testFrom)/steps,steps:steps}},sorter:function(a,b){return a.offset-b.offset},rad:function(degrees){return degrees%360*Math.PI/180},normalizeRadians:function(radian){var twoPi=2*Math.PI;return radian>=0?radian%twoPi:(radian%twoPi+twoPi)%twoPi},degrees:function(radian){return 180*radian/Math.PI%360},normalizeDegrees:function(degrees){return degrees>=0?degrees%360:(degrees%360+360)%360},withinBox:function(x,y,bbox){return bbox=bbox||{},x>=bbox.x&&x<=bbox.x+bbox.width&&y>=bbox.y&&y<=bbox.y+bbox.height},parseGradient:function(gradient){var stop,vector,max,stopObj,me=this,type=gradient.type||"linear",angle=gradient.angle||0,radian=me.radian,stops=gradient.stops,stopsArr=[];"linear"==type&&(vector=[0,0,Math.cos(angle*radian),Math.sin(angle*radian)],max=1/(Math.max(Math.abs(vector[2]),Math.abs(vector[3]))||1),vector[2]*=max,vector[3]*=max,vector[2]<0&&(vector[0]=-vector[2],vector[2]=0),vector[3]<0&&(vector[1]=-vector[3],vector[3]=0));for(stop in stops)stops.hasOwnProperty(stop)&&me.stopsRE.test(stop)&&(stopObj={offset:parseInt(stop,10),color:Ext.draw.Color.toHex(stops[stop].color)||"#ffffff",opacity:stops[stop].opacity||1},stopsArr.push(stopObj));return Ext.Array.sort(stopsArr,me.sorter),"linear"==type?{id:gradient.id,type:type,vector:vector,stops:stopsArr}:{id:gradient.id,type:type,centerX:gradient.centerX,centerY:gradient.centerY,focalX:gradient.focalX,focalY:gradient.focalY,radius:gradient.radius,vector:vector,stops:stopsArr}}});Ext.define("Ext.fx.PropertyHandler",{requires:["Ext.draw.Draw"],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(from,end,damper,initial,attr){damper="number"==typeof damper?damper:1;var start,units,unitRE=this.unitRE,match=unitRE.exec(from);return match&&(from=match[1],units=match[2],this.scrollRE.test(attr)||units||!this.pixelDefaultsRE.test(attr)||(units="px")),from=+from||0,match=unitRE.exec(end),match&&(end=match[1],units=match[2]||units),end=+end||0,start=null!=initial?initial:from,{from:from,delta:(end-start)*damper,units:units}},get:function(from,end,damper,initialFrom,attr){var i,initial,res,j,len,ln=from.length,out=[];for(i=0;i<ln;i++)if(initialFrom&&(initial=initialFrom[i][1].from),Ext.isArray(from[i][1])&&Ext.isArray(end)){for(res=[],j=0,len=from[i][1].length;j<len;j++)res.push(this.computeDelta(from[i][1][j],end[j],damper,initial,attr));out.push([from[i][0],res])}else out.push([from[i][0],this.computeDelta(from[i][1],end,damper,initial,attr)]);return out},set:function(values,easing){var i,val,res,len,j,ln=values.length,out=[];for(i=0;i<ln;i++)if(val=values[i][1],Ext.isArray(val)){for(res=[],j=0,len=val.length;j<len;j++)res.push(val[j].from+val[j].delta*easing+(val[j].units||0));out.push([values[i][0],res])}else out.push([values[i][0],val.from+val.delta*easing+(val.units||0)]);return out}},stringHandler:{computeDelta:function(from,end,damper,initial,attr){return{from:from,delta:end}},get:function(from,end,damper,initialFrom,attr){var i,ln=from.length,out=[];for(i=0;i<ln;i++)out.push([from[i][0],this.computeDelta(from[i][1],end,damper,void 0,attr)]);return out},set:function(values,easing){var i,val,ln=values.length,out=[];for(i=0;i<ln;i++)val=values[i][1],out.push([values[i][0],val.delta]);return out}},color:{rgbRE:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,hexRE:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,hex3RE:/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i,parseColor:function(color,damper){damper="number"==typeof damper?damper:1;var match,base,re,i,out=!1,reList=[this.hexRE,this.rgbRE,this.hex3RE],length=reList.length;for(i=0;i<length;i++)if(re=reList[i],base=i%2==0?16:10,(match=re.exec(color))&&4===match.length){2===i&&(match[1]+=match[1],match[2]+=match[2],match[3]+=match[3]),out={red:parseInt(match[1],base),green:parseInt(match[2],base),blue:parseInt(match[3],base)};break}return out||color},computeDelta:function(from,end,damper,initial){from=this.parseColor(from),end=this.parseColor(end,damper);var start=initial||from,tfrom=typeof start,tend=typeof end;return"string"==tfrom||"undefined"==tfrom||"string"==tend||"undefined"==tend?end||start:{from:from,delta:{red:Math.round((end.red-start.red)*damper),green:Math.round((end.green-start.green)*damper),blue:Math.round((end.blue-start.blue)*damper)}}},get:function(start,end,damper,initialFrom){var i,initial,ln=start.length,out=[];for(i=0;i<ln;i++)initialFrom&&(initial=initialFrom[i][1].from),out.push([start[i][0],this.computeDelta(start[i][1],end,damper,initial)]);return out},set:function(values,easing){var i,val,parsedString,from,delta,ln=values.length,out=[];for(i=0;i<ln;i++)if(val=values[i][1]){if(from=val.from,delta=val.delta,val="object"==typeof val&&"red"in val?"rgb("+val.red+", "+val.green+", "+val.blue+")":val,void 0===(val="object"==typeof val&&val.length?val[0]:val))return[];parsedString="string"==typeof val?val:"rgb("+[(from.red+Math.round(delta.red*easing))%256,(from.green+Math.round(delta.green*easing))%256,(from.blue+Math.round(delta.blue*easing))%256].join(",")+")",out.push([values[i][0],parsedString])}return out}},object:{interpolate:function(prop,damper){damper="number"==typeof damper?damper:1;var p,out={};for(p in prop)out[p]=parseFloat(prop[p])*damper;return out},computeDelta:function(from,end,damper,initial){from=this.interpolate(from),end=this.interpolate(end,damper);var p,start=initial||from,delta={};for(p in end)delta[p]=end[p]-start[p];return{from:from,delta:delta}},get:function(start,end,damper,initialFrom){var i,initial,ln=start.length,out=[];for(i=0;i<ln;i++)initialFrom&&(initial=initialFrom[i][1].from),out.push([start[i][0],this.computeDelta(start[i][1],end,damper,initial)]);return out},set:function(values,easing){var i,from,delta,val,p,ln=values.length,out=[],outObject={};for(i=0;i<ln;i++){val=values[i][1],from=val.from,delta=val.delta;for(p in from)outObject[p]=from[p]+delta[p]*easing;out.push([values[i][0],outObject])}return out}},path:{computeDelta:function(from,end,damper,initial){damper="number"==typeof damper?damper:1;var start;return from=+from||0,end=+end||0,start=null!=initial?initial:from,{from:from,delta:(end-start)*damper}},forcePath:function(path){return Ext.isArray(path)||Ext.isArray(path[0])||(path=Ext.draw.Draw.parsePathString(path)),path},get:function(start,end,damper,initialFrom){var startPathLn,pointsLn,i,deltaPath,initial,j,k,path,startPath,endPath=this.forcePath(end),out=[],startLn=start.length;for(i=0;i<startLn;i++){for(startPath=this.forcePath(start[i][1]),deltaPath=Ext.draw.Draw.interpolatePaths(startPath,endPath),startPath=deltaPath[0],endPath=deltaPath[1],startPathLn=startPath.length,path=[],j=0;j<startPathLn;j++){for(deltaPath=[startPath[j][0]],pointsLn=startPath[j].length,k=1;k<pointsLn;k++)initial=initialFrom&&initialFrom[0][1][j][k].from,deltaPath.push(this.computeDelta(startPath[j][k],endPath[j][k],damper,initial));path.push(deltaPath)}out.push([start[i][0],path])}return out},set:function(values,easing){var i,j,k,newPath,calcPath,deltaPath,deltaPathLn,pointsLn,ln=values.length,out=[];for(i=0;i<ln;i++){for(deltaPath=values[i][1],newPath=[],deltaPathLn=deltaPath.length,j=0;j<deltaPathLn;j++){for(calcPath=[deltaPath[j][0]],pointsLn=deltaPath[j].length,k=1;k<pointsLn;k++)calcPath.push(deltaPath[j][k].from+deltaPath[j][k].delta*easing);newPath.push(calcPath.join(","))}out.push([values[i][0],newPath.join(",")])}return out}}}},function(){for(var prop,props=["outlineColor","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","fill","stroke"],length=props.length,i=0;i<length;i++)prop=props[i],this[prop]=this.color;for(props=["cursor"],length=props.length,i=0;i<length;i++)prop=props[i],this[prop]=this.stringHandler});Ext.define("Ext.fx.Anim",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.fx.Manager","Ext.fx.Animator","Ext.fx.Easing","Ext.fx.CubicBezier","Ext.fx.PropertyHandler"],isAnimation:!0,duration:250,delay:0,delayStart:0,dynamic:!1,easing:"ease",damper:1,bezierRE:/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,reverse:!1,running:!1,paused:!1,iterations:1,autoEnd:!1,alternate:!1,currentIteration:0,startTime:0,frameCount:0,constructor:function(config){var curve,me=this;if(config=config||{},config.keyframes)return new Ext.fx.Animator(config);Ext.apply(me,config),void 0===me.from&&(me.from={}),me.propHandlers={},me.config=config,me.target=Ext.fx.Manager.createTarget(me.target),me.easingFn=Ext.fx.Easing[me.easing],me.target.dynamic=me.dynamic,me.easingFn||(me.easingFn=String(me.easing).match(me.bezierRE),me.easingFn&&5==me.easingFn.length&&(curve=me.easingFn,me.easingFn=Ext.fx.CubicBezier.cubicBezier(+curve[1],+curve[2],+curve[3],+curve[4]))),me.id=Ext.id(null,"ext-anim-"),me.addEvents("beforeanimate","afteranimate","lastframe"),me.mixins.observable.constructor.call(me),Ext.fx.Manager.addAnim(me),config.autoEnd&&(me.running=!0,me.jumpToEnd())},setAttr:function(attr,value){return Ext.fx.Manager.items.get(this.id).setAttr(this.target,attr,value)},initAttrs:function(){var start,end,propHandler,attr,me=this,from=me.from,to=me.to,initialFrom=me.initialFrom||{},out={};for(attr in to)to.hasOwnProperty(attr)&&(start=me.target.getAttr(attr,from[attr]),end=to[attr],propHandler=Ext.fx.PropertyHandler[attr]?me.propHandlers[attr]=Ext.fx.PropertyHandler[attr]:Ext.isObject(end)?me.propHandlers[attr]=Ext.fx.PropertyHandler.object:me.propHandlers[attr]=Ext.fx.PropertyHandler.defaultHandler,out[attr]=propHandler.get(start,end,me.damper,initialFrom[attr],attr));me.currentAttrs=out},start:function(startTime){var me=this,delay=me.delay,delayStart=me.delayStart;if(delay){if(!delayStart)return void(me.delayStart=startTime);if(startTime-delayStart<delay)return;startTime=new Date(delayStart.getTime()+delay)}!1!==me.fireEvent("beforeanimate",me)&&(me.startTime=startTime,me.paused||me.currentAttrs||me.initAttrs(),me.running=!0,me.frameCount=0)},jumpToEnd:function(){var me=this;me.endWasCalled||(me.currentAttrs||me.initAttrs(),Ext.fx.Manager.jumpToEnd(me),me.end())},runAnim:function(elapsedTime){var easing,values,attr,lastFrame,me=this,attrs=me.currentAttrs,duration=me.duration,easingFn=me.easingFn,propHandlers=me.propHandlers,ret={};elapsedTime>=duration&&(elapsedTime=duration,lastFrame=!0),me.reverse&&(elapsedTime=duration-elapsedTime);for(attr in attrs)attrs.hasOwnProperty(attr)&&(values=attrs[attr],easing=lastFrame?1:easingFn(elapsedTime/duration),ret[attr]=propHandlers[attr].set(values,easing));return me.frameCount++,ret},lastFrame:function(){var me=this,iter=me.iterations,iterCount=me.currentIteration;iterCount++,iterCount<iter?(me.alternate&&(me.reverse=!me.reverse),me.startTime=new Date,me.currentIteration=iterCount,me.paused=!1):(me.currentIteration=0,me.end(),me.fireEvent("lastframe",me,me.startTime))},endWasCalled:0,end:function(){var me=this;me.endWasCalled++||(me.startTime=0,me.paused=!1,me.running=!1,Ext.fx.Manager.removeAnim(me),me.fireEvent("afteranimate",me,me.startTime),Ext.callback(me.callback,me.scope,[me,me.startTime]),me.remove&&me.target.remove())},isReady:function(){return!1===this.paused&&!1===this.running&&this.iterations>0},isRunning:function(){return!1===this.paused&&!0===this.running&&!0!==this.isAnimator}}),Ext.enableFx=!0;Ext.define("Ext.util.Animate",{requires:["Ext.Element","Ext.CompositeElementLite","Ext.fx.Manager","Ext.fx.Anim"],isAnimate:!0,animate:function(animObj){var me=this;return Ext.fx.Manager.hasFxBlock(me.id)?me:(Ext.fx.Manager.queueFx(new Ext.fx.Anim(me.anim(animObj))),this)},anim:function(config){if(!Ext.isObject(config))return!!config&&{};var me=this;return config.stopAnimation&&me.stopAnimation(),Ext.applyIf(config,Ext.fx.Manager.getFxDefaults(me.id)),Ext.apply({target:me,paused:!0},config)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){return Ext.fx.Manager.stopAnimation(this.id),this},syncFx:function(){return Ext.fx.Manager.setFxDefaults(this.id,{concurrent:!0}),this},sequenceFx:function(){return Ext.fx.Manager.setFxDefaults(this.id,{concurrent:!1}),this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},function(){Ext.applyIf(Ext.Element.prototype,this.prototype),Ext.CompositeElementLite.importElementMethods()});Ext.define("Ext.util.ElementContainer",{childEls:[],constructor:function(){var childEls,me=this;me.hasOwnProperty("childEls")&&(childEls=me.childEls,delete me.childEls,me.addChildEls.apply(me,childEls))},destroy:function(){var child,childName,i,me=this,childEls=me.getChildEls();for(i=childEls.length;i--;)childName=childEls[i],"string"!=typeof childName&&(childName=childName.name),(child=me[childName])&&(me[childName]=null,child.remove())},addChildEls:function(){var me=this,args=arguments;me.hasOwnProperty("childEls")?me.childEls.push.apply(me.childEls,args):me.childEls=me.getChildEls().concat(Array.prototype.slice.call(args)),me.prune(me.childEls,!1)},applyChildEls:function(el,id){var baseId,childName,i,selector,value,me=this,childEls=me.getChildEls();for(baseId=(id||me.id)+"-",i=childEls.length;i--;)childName=childEls[i],"string"==typeof childName?value=el.getById(baseId+childName):(value=(selector=childName.select)?Ext.select(selector,!0,el.dom):(selector=childName.selectNode)?Ext.get(Ext.DomQuery.selectNode(selector,el.dom)):el.getById(childName.id||baseId+childName.itemId),childName=childName.name),me[childName]=value},getChildEls:function(){var self,me=this;return me.hasOwnProperty("childEls")?me.childEls:(self=me.self,self.$childEls||me.getClassChildEls(self))},getClassChildEls:function(cls){var childEls,i,length,forked,mixin,mixins,name,parts,proto,supr,superMixins,me=this,result=cls.$childEls;if(!result){supr=cls.superclass,supr?(supr=supr.self,parts=[supr.$childEls||me.getClassChildEls(supr)],superMixins=supr.prototype.mixins||{}):(parts=[],superMixins={}),proto=cls.prototype,mixins=proto.mixins;for(name in mixins)mixins.hasOwnProperty(name)&&!superMixins.hasOwnProperty(name)&&(mixin=mixins[name].self,parts.push(mixin.$childEls||me.getClassChildEls(mixin)));for(parts.push(proto.hasOwnProperty("childEls")&&proto.childEls),i=0,length=parts.length;i<length;++i)(childEls=parts[i])&&childEls.length&&(result?(forked||(forked=!0,result=result.slice(0)),result.push.apply(result,childEls)):result=childEls);cls.$childEls=result=result?me.prune(result,!forked):[]}return result},prune:function(childEls,shared){for(var name,index=childEls.length,map={};index--;)name=childEls[index],"string"!=typeof name&&(name=name.name),map[name]?(shared&&(shared=!1,childEls=childEls.slice(0)),Ext.Array.erase(childEls,index,1)):map[name]=1;return childEls},removeChildEls:function(testFn){var n,i,cel,me=this,old=me.getChildEls(),keepers=me.childEls=[];for(i=0,n=old.length;i<n;++i)cel=old[i],testFn(cel)||keepers.push(cel)}});Ext.define("Ext.util.Renderable",{requires:["Ext.dom.Element"],frameCls:Ext.baseCSSPrefix+"frame",frameIdRegex:/[\-]frame\d+[TMB][LCR]$/,frameElNames:["TL","TC","TR","ML","MC","MR","BL","BC","BR","Table"],frameTpl:["{%this.renderDockedItems(out,values,0);%}",'<tpl if="top">','<tpl if="left"><div id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>",'<tpl if="left"><div id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</div>",'<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>','<tpl if="bottom">','<tpl if="left"><div id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></tpl>','<tpl if="right"><div id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></tpl>','<div id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></div>','<tpl if="right"></div></tpl>','<tpl if="left"></div></tpl>',"</tpl>","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'<table id="{fgid}Table" class="',Ext.plainTableCls,'" cellpadding="0" role="presentation">','<tbody role="presentation">','<tpl if="top">','<tr role="presentation">','<tpl if="left"><td id="{fgid}TL" class="{frameCls}-tl {baseCls}-tl {baseCls}-{ui}-tl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}TC" class="{frameCls}-tc {baseCls}-tc {baseCls}-{ui}-tc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}TR" class="{frameCls}-tr {baseCls}-tr {baseCls}-{ui}-tr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-tr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>",'<tr role="presentation">','<tpl if="left"><td id="{fgid}ML" class="{frameCls}-ml {baseCls}-ml {baseCls}-{ui}-ml<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-ml</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}MC" class="{frameCls}-mc {baseCls}-mc {baseCls}-{ui}-mc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mc</tpl>{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","</td>",'<tpl if="right"><td id="{fgid}MR" class="{frameCls}-mr {baseCls}-mr {baseCls}-{ui}-mr<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-mr</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>",'<tpl if="bottom">','<tr role="presentation">','<tpl if="left"><td id="{fgid}BL" class="{frameCls}-bl {baseCls}-bl {baseCls}-{ui}-bl<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bl</tpl>{frameElCls}" role="presentation"></td></tpl>','<td id="{fgid}BC" class="{frameCls}-bc {baseCls}-bc {baseCls}-{ui}-bc<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-bc</tpl>{frameElCls}" role="presentation"></td>','<tpl if="right"><td id="{fgid}BR" class="{frameCls}-br {baseCls}-br {baseCls}-{ui}-br<tpl for="uiCls"> {parent.baseCls}-{parent.ui}-{.}-br</tpl>{frameElCls}" role="presentation"></td></tpl>',"</tr>","</tpl>","</tbody></table>","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var item,pre,hide,contentEl,me=this,data={},protoEl=me.protoEl,target=me.el;me.finishRenderChildren(),me.contentEl&&(pre=Ext.baseCSSPrefix,hide=pre+"hide-",contentEl=Ext.get(me.contentEl),contentEl.removeCls([pre+"hidden",hide+"display",hide+"offsets",hide+"nosize"]),me.getContentTarget().appendChild(contentEl.dom)),protoEl.writeTo(data),item=data.removed,item&&target.removeCls(item),item=data.cls,item.length&&target.addCls(item),item=data.style,data.style&&target.setStyle(item),me.protoEl=null,me.ownerCt||me.updateLayout()},afterFirstLayout:function(width,height){var hasX,hasY,pos,xy,me=this,x=me.x,y=me.y;me.ownerLayout||(hasX=Ext.isDefined(x),hasY=Ext.isDefined(y)),!me.floating||hasX&&hasY||(me.floatParent?(pos=me.floatParent.getTargetEl().getViewRegion(),xy=me.el.getAlignToXY(me.floatParent.getTargetEl(),"c-c"),pos.x=xy[0]-pos.x,pos.y=xy[1]-pos.y):(xy=me.el.getAlignToXY(me.container,"c-c"),pos=me.container.translateXY(xy[0],xy[1])),x=hasX?x:pos.x,y=hasY?y:pos.y,hasX=hasY=!0),(hasX||hasY)&&me.setPosition(x,y),me.onBoxReady(width,height)},applyRenderSelectors:function(){var selector,me=this,selectors=me.renderSelectors,el=me.el,dom=el.dom;if(me.applyChildEls(el),selectors)for(selector in selectors)selectors.hasOwnProperty(selector)&&selectors[selector]&&(me[selector]=Ext.get(Ext.DomQuery.selectNode(selectors[selector],dom)))},beforeRender:function(){var me=this,overflowEl=(me.getTargetEl(),me.getOverflowEl()),layout=me.getComponentLayout(),overflowStyle=me.getOverflowStyle();me.frame=me.frame||me.alwaysFramed,layout.initialized||layout.initLayout(),overflowEl&&(overflowEl.setStyle(overflowStyle),me.overflowStyleSet=!0),me.setUI(me.ui),me.disabled&&me.disable(!0)},doApplyRenderTpl:function(out,values){var tpl,me=values.$comp;me.rendered||(tpl=me.initRenderTpl(),tpl.applyOut(values.renderData,out))},doAutoRender:function(){var me=this;me.rendered||(me.floating?me.render(document.body):me.render(Ext.isBoolean(me.autoRender)?Ext.getBody():me.autoRender))},doRenderContent:function(out,renderData){var me=renderData.$comp;me.html&&(Ext.DomHelper.generateMarkup(me.html,out),delete me.html),me.tpl&&(me.tpl.isTemplate||(me.tpl=new Ext.XTemplate(me.tpl)),me.data&&(me.tpl.applyOut(me.data,out),delete me.data))},doRenderFramingDockedItems:function(out,renderData,after){var me=renderData.$comp;!me.rendered&&me.doRenderDockedItems&&(renderData.renderData.$skipDockedItems=!0,me.doRenderDockedItems.call(this,out,renderData,after))},finishRender:function(containerIdx){var tpl,data,el,me=this;!me.el||me.$pid?(el=me.container?me.container.getById(me.id,!0):Ext.getDom(me.id),me.el?(delete me.$pid,me.el.dom||me.wrapPrimaryEl(me.el),el.parentNode.insertBefore(me.el.dom,el),Ext.removeNode(el)):me.wrapPrimaryEl(el)):me.rendering||(tpl=me.initRenderTpl())&&(data=me.initRenderData(),tpl.insertFirst(me.getTargetEl(),data)),me.container||(me.container=Ext.get(me.el.dom.parentNode)),me.ctCls&&me.container.addCls(me.ctCls),me.onRender(me.container,containerIdx),me.overflowStyleSet||me.getOverflowEl().setStyle(me.getOverflowStyle()),me.el.setVisibilityMode(Ext.Element[me.hideMode.toUpperCase()]),me.overCls&&me.el.hover(me.addOverCls,me.removeOverCls,me),me.hasListeners.render&&me.fireEvent("render",me),me.afterRender(),me.hasListeners.afterrender&&me.fireEvent("afterrender",me),me.initEvents(),me.hidden&&me.el.hide()},finishRenderChildren:function(){this.getComponentLayout().finishRender()},getElConfig:function(){var i,frameElNames,len,suffix,frameGenId,frameData,me=this,autoEl=me.autoEl,frameInfo=me.getFrameInfo(),config={tag:"div",tpl:frameInfo?me.initFramingTpl(frameInfo.table):me.initRenderTpl()},protoEl=me.protoEl;if(me.initStyles(protoEl),protoEl.writeTo(config),protoEl.flush(),Ext.isString(autoEl)?config.tag=autoEl:Ext.apply(config,autoEl),config.id=me.id,config.tpl)if(frameInfo){for(frameElNames=me.frameElNames,len=frameElNames.length,config.tplData=frameData=me.getFrameRenderData(),frameData.renderData=me.initRenderData(),frameGenId=frameData.fgid,i=0;i<len;i++)suffix=frameElNames[i],me.addChildEls({name:"frame"+suffix,id:frameGenId+suffix});me.addChildEls({name:"frameBody",id:frameGenId+"MC"})}else config.tplData=me.initRenderData();return config},initFramingTpl:function(table){var tpl=this.getFrameTpl(table);return tpl&&!tpl.applyRenderTpl&&this.setupFramingTpl(tpl),tpl},setupFramingTpl:function(frameTpl){frameTpl.applyRenderTpl=this.doApplyRenderTpl,frameTpl.renderDockedItems=this.doRenderFramingDockedItems},getInsertPosition:function(position){return void 0!==position&&(position=Ext.isNumber(position)?this.container.dom.childNodes[position]:Ext.getDom(position)),position},getRenderTree:function(){var me=this;return me.hasListeners.beforerender&&!1===me.fireEvent("beforerender",me)?null:(me.beforeRender(),me.rendering=!0,me.el?{tag:"div",role:"presentation",id:me.$pid=Ext.id()}:me.getElConfig())},initContainer:function(container){var me=this;return!container&&me.el&&(container=me.el.dom.parentNode,me.allowDomMove=!1),me.container=container.dom?container:Ext.get(container),me.container},initRenderData:function(){var me=this;return Ext.apply({$comp:me,id:me.id,ui:me.ui,uiCls:me.uiCls,baseCls:me.baseCls,componentCls:me.componentCls,frame:me.frame,role:me.ariaRole,childElCls:""},me.renderData)},initRenderTpl:function(){var tpl=this.getTpl("renderTpl");return tpl&&!tpl.renderContent&&this.setupRenderTpl(tpl),tpl},onRender:function(parentNode,containerIdx){var width,height,me=this,x=me.x,y=me.y,lastBox=null,el=me.el;me.applyRenderSelectors(),me.rendering=null,me.rendered=!0,null!=x&&(lastBox={x:x}),null!=y&&((lastBox=lastBox||{}).y=y),!me.getFrameInfo()&&Ext.isBorderBox&&(width=me.width,height=me.height,"number"==typeof width&&(lastBox=lastBox||{},lastBox.width=width),"number"==typeof height&&(lastBox=lastBox||{},lastBox.height=height)),me.lastBox=el.lastBox=lastBox},render:function(container,position){var vetoed,tree,nextSibling,me=this,el=me.el&&(me.el=Ext.get(me.el));Ext.suspendLayouts(),container=me.initContainer(container),nextSibling=me.getInsertPosition(position),el?me.hasListeners.beforerender&&!1===me.fireEvent("beforerender",me)?vetoed=!0:(me.beforeRender(),me.initStyles(el),!1!==me.allowDomMove&&(nextSibling?container.dom.insertBefore(el.dom,nextSibling):container.dom.appendChild(el.dom))):(tree=me.getRenderTree(),me.ownerLayout&&me.ownerLayout.transformItemRenderTree&&(tree=me.ownerLayout.transformItemRenderTree(tree)),tree&&(el=nextSibling?Ext.DomHelper.insertBefore(nextSibling,tree):Ext.DomHelper.append(container,tree),me.wrapPrimaryEl(el))),el&&!vetoed&&me.finishRender(position),Ext.resumeLayouts(!me.hidden&&!container.isDetachedBody)},ensureAttachedToBody:function(runLayout){for(var body,comp=this;comp.ownerCt;)comp=comp.ownerCt;comp.container.isDetachedBody&&(comp.container=body=Ext.getBody(),body.appendChild(comp.el.dom),runLayout&&comp.updateLayout(),"number"!=typeof comp.x&&"number"!=typeof comp.y||comp.setPosition(comp.x,comp.y))},setupRenderTpl:function(renderTpl){renderTpl.renderBody=renderTpl.renderContent=this.doRenderContent},wrapPrimaryEl:function(dom){this.el=Ext.get(dom,!0)},initFrame:function(){if(!Ext.supports.CSS3BorderRadius&&this.frame){var frameTpl,frameGenId,i,frameData,suffix,me=this,frameInfo=me.getFrameInfo(),frameElNames=me.frameElNames,len=frameElNames.length;if(frameInfo)for(frameTpl=me.getFrameTpl(frameInfo.table),frameData=me.getFrameRenderData(),frameGenId=frameData.fgid,frameTpl.insertFirst(me.el,frameData),me.frameBody=me.el.down("."+me.frameCls+"-mc"),me.removeChildEls(function(c){return c.id&&me.frameIdRegex.test(c.id)}),i=0;i<len;i++)suffix=frameElNames[i],me["frame"+suffix]=me.el.getById(frameGenId+suffix)}},getFrameRenderData:function(){var me=this,frameInfo=me.frameSize,frameGenId=(me.frameGenId||0)+1;return me.frameGenId=frameGenId,{$comp:me,fgid:me.id+"-frame"+frameGenId,ui:me.ui,uiCls:me.uiCls,frameCls:me.frameCls,baseCls:me.baseCls,top:!!frameInfo.top,left:!!frameInfo.left,right:!!frameInfo.right,bottom:!!frameInfo.bottom,frameElCls:""}},updateFrame:function(){if(!Ext.supports.CSS3BorderRadius&&this.frame){var newMCClassName,me=this,wasTable=me.frameSize&&me.frameSize.table,oldFrameTL=me.frameTL,oldFrameBL=me.frameBL,oldFrameML=me.frameML,oldFrameMC=me.frameMC;me.initFrame(),oldFrameMC?me.frame&&(newMCClassName=me.frameMC.dom.className,oldFrameMC.insertAfter(me.frameMC),me.frameMC.remove(),me.frameBody=me.frameMC=oldFrameMC,oldFrameMC.dom.className=newMCClassName,wasTable?me.el.query("> table")[1].remove():(oldFrameTL&&oldFrameTL.remove(),oldFrameBL&&oldFrameBL.remove(),oldFrameML&&oldFrameML.remove())):me.frame&&me.applyRenderSelectors()}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame)return!1;var styleEl,info,frameTop,frameRight,frameBottom,frameLeft,borderWidthT,borderWidthR,borderWidthB,borderWidthL,paddingT,paddingR,paddingB,paddingL,borderRadiusTL,borderRadiusTR,borderRadiusBR,borderRadiusBL,me=this,frameInfoCache=me.frameInfoCache,cls=me.getFramingInfoCls()+"-frameInfo",frameInfo=frameInfoCache[cls],max=Math.max;return null==frameInfo&&(styleEl=Ext.fly(me.getStyleProxy(cls),"frame-style-el"),info=styleEl.getStyle("font-family"),info?(info=info.split("-"),borderRadiusTL=parseInt(info[1],10),borderRadiusTR=parseInt(info[2],10),borderRadiusBR=parseInt(info[3],10),borderRadiusBL=parseInt(info[4],10),borderWidthT=parseInt(info[5],10),borderWidthR=parseInt(info[6],10),borderWidthB=parseInt(info[7],10),borderWidthL=parseInt(info[8],10),paddingT=parseInt(info[9],10),paddingR=parseInt(info[10],10),paddingB=parseInt(info[11],10),paddingL=parseInt(info[12],10),frameTop=max(borderWidthT,max(borderRadiusTL,borderRadiusTR)),frameRight=max(borderWidthR,max(borderRadiusTR,borderRadiusBR)),frameBottom=max(borderWidthB,max(borderRadiusBL,borderRadiusBR)),frameLeft=max(borderWidthL,max(borderRadiusTL,borderRadiusBL)),frameInfo={table:"t"===info[0].charAt(0),vertical:"v"===info[0].charAt(1),top:frameTop,right:frameRight,bottom:frameBottom,left:frameLeft,width:frameLeft+frameRight,height:frameTop+frameBottom,maxWidth:max(frameTop,frameRight,frameBottom,frameLeft),border:{top:borderWidthT,right:borderWidthR,bottom:borderWidthB,left:borderWidthL,width:borderWidthL+borderWidthR,height:borderWidthT+borderWidthB},padding:{top:paddingT,right:paddingR,bottom:paddingB,left:paddingL,width:paddingL+paddingR,height:paddingT+paddingB},radius:{tl:borderRadiusTL,tr:borderRadiusTR,br:borderRadiusBR,bl:borderRadiusBL}}):frameInfo=!1,!0!==me.frame||frameInfo||Ext.log.error("You have set frame: true explicity on this component ("+me.getXType()+") and it does not have any framing defined in the CSS template. In this case IE cannot figure out what sizes to use and thus framing on this component will be disabled."),frameInfoCache[cls]=frameInfo),me.frame=!!frameInfo,me.frameSize=frameInfo,frameInfo},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(cls){var result=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({"data-sticky":!0,role:"presentation",style:{position:"absolute",top:"-10000px"}},null,!0));return result.className=cls,result},getFrameTpl:function(table){return this.getTpl(table?"frameTableTpl":"frameTpl")},frameInfoCache:{}});Ext.define("Ext.state.Provider",{mixins:{observable:"Ext.util.Observable"},prefix:"ext-",constructor:function(config){config=config||{};var me=this;Ext.apply(me,config),me.addEvents("statechange"),me.state={},me.mixins.observable.constructor.call(me)},get:function(name,defaultValue){return void 0===this.state[name]?defaultValue:this.state[name]},clear:function(name){var me=this;delete me.state[name],me.fireEvent("statechange",me,name,null)},set:function(name,value){var me=this;me.state[name]=value,me.fireEvent("statechange",me,name,value)},decodeValue:function(value){var all,type,keyValue,values,vLen,v,me=this,re=/^(a|n|d|b|s|o|e)\:(.*)$/,matches=re.exec(unescape(value));if(matches&&matches[1])switch(type=matches[1],value=matches[2],type){case"e":return null;case"n":return parseFloat(value);case"d":return new Date(Date.parse(value));case"b":return"1"==value;case"a":if(all=[],""!=value)for(values=value.split("^"),vLen=values.length,v=0;v<vLen;v++)value=values[v],all.push(me.decodeValue(value));return all;case"o":if(all={},""!=value)for(values=value.split("^"),vLen=values.length,v=0;v<vLen;v++)value=values[v],keyValue=value.split("="),all[keyValue[0]]=me.decodeValue(keyValue[1]);return all;default:return value}},encodeValue:function(value){var enc,len,key,flat="",i=0;if(null==value)return"e:1";if("number"==typeof value)enc="n:"+value;else if("boolean"==typeof value)enc="b:"+(value?"1":"0");else if(Ext.isDate(value))enc="d:"+value.toGMTString();else if(Ext.isArray(value)){for(len=value.length;i<len;i++)flat+=this.encodeValue(value[i]),i!=len-1&&(flat+="^");enc="a:"+flat}else if("object"==typeof value){for(key in value)"function"!=typeof value[key]&&void 0!==value[key]&&(flat+=key+"="+this.encodeValue(value[key])+"^");enc="o:"+flat.substring(0,flat.length-1)}else enc="s:"+value;return escape(enc)}});Ext.define("Ext.state.Manager",{singleton:!0,requires:["Ext.state.Provider"],constructor:function(){this.provider=new Ext.state.Provider},setProvider:function(stateProvider){this.provider=stateProvider},get:function(key,defaultValue){return this.provider.get(key,defaultValue)},set:function(key,value){this.provider.set(key,value)},clear:function(key){this.provider.clear(key)},getProvider:function(){return this.provider}});Ext.define("Ext.state.Stateful",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.state.Manager"],stateful:!1,saveDelay:100,constructor:function(config){var me=this;config=config||{},void 0!==config.stateful&&(me.stateful=config.stateful),void 0!==config.saveDelay&&(me.saveDelay=config.saveDelay),me.stateId=me.stateId||config.stateId,me.stateEvents||(me.stateEvents=[]),config.stateEvents&&me.stateEvents.concat(config.stateEvents),this.addEvents("beforestaterestore","staterestore","beforestatesave","statesave"),me.mixins.observable.constructor.call(me),!1!==me.stateful&&(me.addStateEvents(me.stateEvents),me.initState())},addStateEvents:function(events){var i,event,stateEventsByName,me=this;if(me.stateful&&me.getStateId())for("string"==typeof events&&(events=Array.prototype.slice.call(arguments,0)),stateEventsByName=me.stateEventsByName||(me.stateEventsByName={}),i=events.length;i--;)event=events[i],stateEventsByName[event]||(stateEventsByName[event]=1,me.on(event,me.onStateChange,me))},onStateChange:function(){var statics,runner,me=this,delay=me.saveDelay;me.stateful&&(delay?(me.stateTask||(statics=Ext.state.Stateful,runner=statics.runner||(statics.runner=new Ext.util.TaskRunner),me.stateTask=runner.newTask({run:me.saveState,scope:me,interval:delay,repeat:1})),me.stateTask.start()):me.saveState())},saveState:function(){var state,me=this,id=me.stateful&&me.getStateId(),hasListeners=me.hasListeners;id&&(state=me.getState()||{},hasListeners.beforestatesave&&!1===me.fireEvent("beforestatesave",me,state)||(Ext.state.Manager.set(id,state),hasListeners.statesave&&me.fireEvent("statesave",me,state)))},getState:function(){return null},applyState:function(state){state&&Ext.apply(this,state)},getStateId:function(){var me=this;return me.stateId||(me.autoGenId?null:me.id)},initState:function(){var state,me=this,id=me.stateful&&me.getStateId(),hasListeners=me.hasListeners;id&&(state=Ext.state.Manager.get(id))&&(state=Ext.apply({},state),hasListeners.beforestaterestore&&!1===me.fireEvent("beforestaterestore",me,state)||(me.applyState(state),hasListeners.staterestore&&me.fireEvent("staterestore",me,state)))},savePropToState:function(propName,state,stateName){var me=this,value=me[propName],config=me.initialConfig;return!(!me.hasOwnProperty(propName)||config&&config[propName]===value)&&(state&&(state[stateName||propName]=value),!0)},savePropsToState:function(propNames,state){var i,n,me=this;if("string"==typeof propNames)me.savePropToState(propNames,state);else for(i=0,n=propNames.length;i<n;++i)me.savePropToState(propNames[i],state);return state},destroy:function(){var me=this,task=me.stateTask;task&&(task.destroy(),me.stateTask=null),me.clearListeners()}});Ext.define("Ext.AbstractComponent",{requires:["Ext.ComponentQuery","Ext.ComponentManager","Ext.util.ProtoElement","Ext.dom.CompositeElement","Ext.PluginManager"],mixins:{positionable:"Ext.util.Positionable",observable:"Ext.util.Observable",animate:"Ext.util.Animate",elementCt:"Ext.util.ElementContainer",renderable:"Ext.util.Renderable",state:"Ext.state.Stateful"},uses:["Ext.PluginManager","Ext.Element","Ext.DomHelper","Ext.XTemplate","Ext.ComponentLoader","Ext.EventManager","Ext.layout.Context","Ext.layout.Layout","Ext.layout.component.Auto","Ext.LoadMask","Ext.ZIndexManager"],statics:{AUTO_ID:1e3,pendingLayouts:null,layoutSuspendCount:0,cancelLayout:function(comp,isDestroying){var context=this.runningLayoutContext||this.pendingLayouts;context&&context.cancelComponent(comp,!1,isDestroying)},flushLayouts:function(){var me=this,context=me.pendingLayouts;context&&context.invalidQueue.length&&(me.pendingLayouts=null,me.runningLayoutContext=context,Ext.override(context,{runComplete:function(){me.runningLayoutContext=null;var result=this.callParent();return Ext.globalEvents.hasListeners.afterlayout&&Ext.globalEvents.fireEvent("afterlayout"),result}}),context.run())},resumeLayouts:function(flush){this.layoutSuspendCount&&!--this.layoutSuspendCount&&(flush&&this.flushLayouts(),Ext.globalEvents.hasListeners.resumelayouts&&Ext.globalEvents.fireEvent("resumelayouts"))},suspendLayouts:function(){++this.layoutSuspendCount},updateLayout:function(comp,defer){var pending,me=this,running=me.runningLayoutContext;running?running.queueInvalidate(comp):(pending=me.pendingLayouts||(me.pendingLayouts=new Ext.layout.Context),pending.queueInvalidate(comp),defer||me.layoutSuspendCount||comp.isLayoutSuspended()||me.flushLayouts())}},isComponent:!0,getAutoId:function(){return this.autoGenId=!0,++Ext.AbstractComponent.AUTO_ID},deferLayouts:!1,autoGenId:!1,renderTpl:"{%this.renderContent(out,values)%}",frameSize:null,tplWriteMode:"overwrite",baseCls:Ext.baseCSSPrefix+"component",disabledCls:Ext.baseCSSPrefix+"item-disabled",ui:"default",uiCls:[],hidden:!1,disabled:!1,draggable:!1,floating:!1,hideMode:"display",autoShow:!1,autoRender:!1,allowDomMove:!0,rendered:!1,componentLayoutCounter:0,shrinkWrap:2,weight:0,maskOnDisable:!0,_isLayoutRoot:!1,contentPaddingProperty:"padding",horizontalPosProp:"left",borderBoxCls:Ext.baseCSSPrefix+"border-box",rootCls:Ext.baseCSSPrefix+"body",constructor:function(config){var i,len,xhooks,me=this;if(config?(Ext.apply(me,config),(xhooks=me.xhooks)&&(delete me.xhooks,Ext.override(me,xhooks))):config={},me.initialConfig=config,me.mixins.elementCt.constructor.call(me),me.addEvents("beforeactivate","activate","beforedeactivate","deactivate","added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","boxready","beforedestroy","destroy","resize","move","focus","blur"),me.getId(),me.setupProtoEl(),me.cls&&(me.initialCls=me.cls,me.protoEl.addCls(me.cls)),me.style&&(me.initialStyle=me.style,me.protoEl.setStyle(me.style)),me.renderData=me.renderData||{},me.renderSelectors=me.renderSelectors||{},me.plugins&&(me.plugins=me.constructPlugins()),me.hasListeners||(me.hasListeners=new me.HasListeners),me.initComponent(),Ext.ComponentManager.register(me),me.mixins.observable.constructor.call(me),me.mixins.state.constructor.call(me,config),this.addStateEvents("resize"),me.plugins)for(i=0,len=me.plugins.length;i<len;i++)me.plugins[i]=me.initPlugin(me.plugins[i]);me.loader=me.getLoader(),me.renderTo&&me.render(me.renderTo),me.autoShow&&!me.isContained&&me.show(),Ext.isDefined(me.disabledClass)&&(Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.Component: disabledClass has been deprecated. Please use disabledCls."),me.disabledCls=me.disabledClass,delete me.disabledClass)},initComponent:function(){var me=this;me.plugins&&!me.plugins.processed&&(me.plugins=me.constructPlugins()),me.setSize(me.width,me.height)},getState:function(){var me=this,state=null,sizeModel=me.getSizeModel();return sizeModel.width.configured&&(state=me.addPropertyToState(state,"width")),sizeModel.height.configured&&(state=me.addPropertyToState(state,"height")),state},addPropertyToState:function(state,propName,value){var me=this,len=arguments.length;return(3==len||me.hasOwnProperty(propName))&&(len<3&&(value=me[propName]),value!==me.initialConfig[propName]&&((state||(state={}))[propName]=value)),state},show:Ext.emptyFn,animate:function(animObj){var hasToWidth,hasToHeight,toHeight,toWidth,to,clearWidth,clearHeight,curWidth,w,curHeight,h,isExpanding,wasConstrained,wasConstrainedHeader,passedCallback,oldOverflow,me=this;return animObj=animObj||{},to=animObj.to||{},Ext.fx.Manager.hasFxBlock(me.id)?me:(hasToWidth=Ext.isDefined(to.width),hasToWidth&&(toWidth=Ext.Number.constrain(to.width,me.minWidth,me.maxWidth)),hasToHeight=Ext.isDefined(to.height),hasToHeight&&(toHeight=Ext.Number.constrain(to.height,me.minHeight,me.maxHeight)),animObj.dynamic||!hasToWidth&&!hasToHeight||(curWidth=(animObj.from?animObj.from.width:void 0)||me.getWidth(),w=curWidth,curHeight=(animObj.from?animObj.from.height:void 0)||me.getHeight(),h=curHeight,isExpanding=!1,hasToHeight&&toHeight>curHeight&&(h=toHeight,isExpanding=!0),hasToWidth&&toWidth>curWidth&&(w=toWidth,isExpanding=!0),(hasToHeight||hasToWidth)&&"hidden"!==(oldOverflow=me.el.getStyle("overtflow"))&&me.el.setStyle("overflow","hidden"),isExpanding&&(clearWidth=!Ext.isNumber(me.width),clearHeight=!Ext.isNumber(me.height),me.setSize(w,h),me.el.setSize(curWidth,curHeight),clearWidth&&delete me.width,clearHeight&&delete me.height),hasToWidth&&(to.width=toWidth),hasToHeight&&(to.height=toHeight)),wasConstrained=me.constrain,wasConstrainedHeader=me.constrainHeader,(wasConstrained||wasConstrainedHeader)&&(me.constrain=me.constrainHeader=!1,passedCallback=animObj.callback,animObj.callback=function(){me.constrain=wasConstrained,me.constrainHeader=wasConstrainedHeader,passedCallback&&passedCallback.call(animObj.scope||me,arguments),"hidden"!==oldOverflow&&me.el.setStyle("overflow",oldOverflow)}),me.mixins.animate.animate.apply(me,arguments))},setHiddenState:function(hidden){var hierarchyState=this.getHierarchyState();this.hidden=hidden,hidden?hierarchyState.hidden=!0:delete hierarchyState.hidden},onHide:function(){this.ownerLayout&&this.updateLayout({isRoot:!1})},onShow:function(){this.updateLayout({isRoot:!1})},constructPlugin:function(plugin){var me=this;return plugin="string"==typeof plugin?Ext.PluginManager.create({},plugin,me):Ext.PluginManager.create(plugin,null,me)},constructPlugins:function(){var result,i,len,me=this,plugins=me.plugins;if(plugins)for(result=[],result.processed=!0,Ext.isArray(plugins)||(plugins=[plugins]),i=0,len=plugins.length;i<len;i++)result[i]=me.constructPlugin(plugins[i]);return me.pluginsInitialized=!0,result},initPlugin:function(plugin){return plugin.init(this),plugin},addPlugin:function(plugin){var me=this;return plugin=me.constructPlugin(plugin),me.plugins?me.plugins.push(plugin):me.plugins=[plugin],me.pluginsInitialized&&me.initPlugin(plugin),plugin},removePlugin:function(plugin){Ext.Array.remove(this.plugins,plugin),plugin.destroy()},findPlugin:function(ptype){var i,plugins=this.plugins,ln=plugins&&plugins.length;for(i=0;i<ln;i++)if(plugins[i].ptype===ptype)return plugins[i]},getPlugin:function(pluginId){var i,plugins=this.plugins,ln=plugins&&plugins.length;for(i=0;i<ln;i++)if(plugins[i].pluginId===pluginId)return plugins[i]},beforeLayout:Ext.emptyFn,registerFloatingItem:function(cmp){var me=this;me.floatingDescendants||(me.floatingDescendants=new Ext.ZIndexManager(me)),me.floatingDescendants.register(cmp)},unregisterFloatingItem:function(cmp){var me=this;me.floatingDescendants&&me.floatingDescendants.unregister(cmp)},layoutSuspendCount:0,suspendLayouts:function(){var me=this;me.rendered&&1==++me.layoutSuspendCount&&(me.suspendLayout=!0)},resumeLayouts:function(flushOptions){var me=this;me.rendered&&(--me.layoutSuspendCount||(me.suspendLayout=!1,flushOptions&&!me.isLayoutSuspended()&&me.updateLayout(flushOptions)))},setupProtoEl:function(){var cls=this.initCls();this.protoEl=new Ext.util.ProtoElement({cls:cls.join(" ")})},initCls:function(){var me=this,cls=[me.baseCls,me.getComponentLayout().targetCls];return Ext.isDefined(me.cmpCls)&&(Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.Component: cmpCls has been deprecated. Please use componentCls."),me.componentCls=me.cmpCls,delete me.cmpCls),me.componentCls?cls.push(me.componentCls):me.componentCls=me.baseCls,cls},setUI:function(ui){var classes,me=this,uiCls=me.uiCls,activeUI=me.activeUI;ui!==activeUI&&(activeUI?(classes=me.removeClsWithUI(uiCls,!0),classes.length&&me.removeCls(classes),me.removeUIFromElement()):me.uiCls=[],me.ui=ui,me.activeUI=ui,me.addUIToElement(),classes=me.addClsWithUI(uiCls,!0),classes.length&&me.addCls(classes),me.rendered&&me.updateLayout())},addClsWithUI:function(classes,skip){var length,cls,me=this,clsArray=[],i=0,uiCls=me.uiCls=Ext.Array.clone(me.uiCls),activeUI=me.activeUI;for("string"==typeof classes&&(classes=classes.indexOf(" ")<0?[classes]:Ext.String.splitWords(classes)),length=classes.length;i<length;i++)(cls=classes[i])&&!me.hasUICls(cls)&&(uiCls.push(cls),activeUI&&(clsArray=clsArray.concat(me.addUIClsToElement(cls))));return!0!==skip&&activeUI&&me.addCls(clsArray),clsArray},removeClsWithUI:function(classes,skip){var length,cls,me=this,clsArray=[],i=0,extArray=Ext.Array,remove=extArray.remove,uiCls=me.uiCls=extArray.clone(me.uiCls),activeUI=me.activeUI;for("string"==typeof classes&&(classes=classes.indexOf(" ")<0?[classes]:Ext.String.splitWords(classes)),length=classes.length,i=0;i<length;i++)(cls=classes[i])&&me.hasUICls(cls)&&(remove(uiCls,cls),activeUI&&(clsArray=clsArray.concat(me.removeUIClsFromElement(cls))));return!0!==skip&&activeUI&&me.removeCls(clsArray),clsArray},hasUICls:function(cls){var me=this,uiCls=me.uiCls||[];return Ext.Array.contains(uiCls,cls)},frameElementsArray:["tl","tc","tr","ml","mc","mr","bl","bc","br"],addUIClsToElement:function(cls){var frameElementsArray,frameElementsLength,i,el,frameElement,me=this,baseClsUi=me.baseCls+"-"+me.ui+"-"+cls,result=[Ext.baseCSSPrefix+cls,me.baseCls+"-"+cls,baseClsUi];if(me.rendered&&me.frame&&!Ext.supports.CSS3BorderRadius)for(frameElementsArray=me.frameElementsArray,frameElementsLength=frameElementsArray.length,i=0;i<frameElementsLength;i++)frameElement=frameElementsArray[i],(el=me["frame"+frameElement.toUpperCase()])&&el.addCls(baseClsUi+"-"+frameElement);return result},removeUIClsFromElement:function(cls){var frameElementsArray,frameElementsLength,i,el,frameElement,me=this,baseClsUi=me.baseCls+"-"+me.ui+"-"+cls,result=[Ext.baseCSSPrefix+cls,me.baseCls+"-"+cls,baseClsUi];if(me.rendered&&me.frame&&!Ext.supports.CSS3BorderRadius)for(frameElementsArray=me.frameElementsArray,frameElementsLength=frameElementsArray.length,i=0;i<frameElementsLength;i++)frameElement=frameElementsArray[i],(el=me["frame"+frameElement.toUpperCase()])&&el.removeCls(baseClsUi+"-"+frameElement);return result},addUIToElement:function(){var frameElementsArray,frameElementsLength,i,el,frameElement,me=this,baseClsUI=me.baseCls+"-"+me.ui;if(me.addCls(baseClsUI),me.rendered&&me.frame&&!Ext.supports.CSS3BorderRadius)for(frameElementsArray=me.frameElementsArray,frameElementsLength=frameElementsArray.length,i=0;i<frameElementsLength;i++)frameElement=frameElementsArray[i],(el=me["frame"+frameElement.toUpperCase()])&&el.addCls(baseClsUI+"-"+frameElement)},removeUIFromElement:function(){var frameElementsArray,frameElementsLength,i,el,frameElement,me=this,baseClsUI=me.baseCls+"-"+me.ui;if(me.removeCls(baseClsUI),me.rendered&&me.frame&&!Ext.supports.CSS3BorderRadius)for(frameElementsArray=me.frameElementsArray,frameElementsLength=frameElementsArray.length,i=0;i<frameElementsLength;i++)frameElement=frameElementsArray[i],(el=me["frame"+frameElement.toUpperCase()])&&el.removeCls(baseClsUI+"-"+frameElement)},getTpl:function(name){return Ext.XTemplate.getTpl(this,name)},initStyles:function(targetEl){var width,height,me=this,margin=(Ext.Element,me.margin),border=me.border,cls=me.cls,style=me.style,x=me.x,y=me.y;me.initPadding(targetEl),null!=margin&&targetEl.setStyle("margin",this.unitizeBox(!0===margin?5:margin)),null!=border&&me.setBorder(border,targetEl),cls&&cls!=me.initialCls&&(targetEl.addCls(cls),me.cls=me.initialCls=null),style&&style!=me.initialStyle&&(targetEl.setStyle(style),me.style=me.initialStyle=null),null!=x&&targetEl.setStyle(me.horizontalPosProp,"number"==typeof x?x+"px":x),null!=y&&targetEl.setStyle("top","number"==typeof y?y+"px":y),me.ownerCt&&!me.floating||(Ext.scopeCss&&targetEl.addCls(me.rootCls),Ext.isBorderBox&&targetEl.addCls(me.borderBoxCls)),me.getFrameInfo()||(width=me.width,height=me.height,null!=width&&("number"==typeof width?Ext.isBorderBox&&targetEl.setStyle("width",width+"px"):targetEl.setStyle("width",width)),null!=height&&("number"==typeof height?Ext.isBorderBox&&targetEl.setStyle("height",height+"px"):targetEl.setStyle("height",height)))},initPadding:function(targetEl){var me=this,padding=me.padding;null!=padding&&(me.layout&&me.layout.managePadding&&"padding"===me.contentPaddingProperty?targetEl.setStyle("padding",0):targetEl.setStyle("padding",this.unitizeBox(!0===padding?5:padding)))},parseBox:function(box){return Ext.dom.Element.parseBox(box)},unitizeBox:function(box){return Ext.dom.Element.unitizeBox(box)},setMargin:function(margin,preventLayout){var me=this;me.rendered?(margin||0===margin?(!0===margin&&(margin=5),margin=this.unitizeBox(margin)):margin="",me.getTargetEl().setStyle("margin",margin),preventLayout||me.updateLayout()):me.margin=margin},initEvents:function(){var afterRenderEvent,el,property,index,len,me=this,afterRenderEvents=me.afterRenderEvents;if(afterRenderEvents)for(property in afterRenderEvents)if((el=me[property])&&el.on)for(afterRenderEvent=afterRenderEvents[property],index=0,len=afterRenderEvent.length;index<len;++index)me.mon(el,afterRenderEvent[index]);me.addFocusListener()},addFocusListener:function(){var needsTabIndex,me=this,focusEl=me.getFocusEl();if(focusEl){if(focusEl.isComponent)return focusEl.addFocusListener();needsTabIndex=focusEl.needsTabIndex(),me.focusListenerAdded||needsTabIndex&&!Ext.FocusManager.enabled||(needsTabIndex&&(focusEl.dom.tabIndex=-1),focusEl.on({focus:me.onFocus,blur:me.onBlur,scope:me}),me.focusListenerAdded=!0)}},getFocusEl:Ext.emptyFn,isFocusable:function(){var focusEl,me=this;if(!1!==me.focusable&&(focusEl=me.getFocusEl())&&me.rendered&&!me.destroying&&!me.isDestroyed&&!me.disabled&&me.isVisible(!0))return focusEl.isFocusable(!0)},beforeFocus:Ext.emptyFn,onFocus:function(e){var me=this,focusCls=me.focusCls,focusEl=me.getFocusEl();me.disabled||(me.beforeFocus(e),focusCls&&focusEl&&focusEl.addCls(me.addClsWithUI(focusCls,!0)),me.hasFocus||(me.hasFocus=!0,me.fireEvent("focus",me,e)))},beforeBlur:Ext.emptyFn,onBlur:function(e){var me=this,focusCls=me.focusCls,focusEl=me.getFocusEl();me.destroying||(me.beforeBlur(e),focusCls&&focusEl&&focusEl.removeCls(me.removeClsWithUI(focusCls,!0)),me.validateOnBlur&&me.validate(),me.hasFocus=!1,me.fireEvent("blur",me,e),me.postBlur(e))},postBlur:Ext.emptyFn,is:function(selector){return Ext.ComponentQuery.is(this,selector)},up:function(selector,limit){var result=this.getRefOwner(),limitSelector="string"==typeof limit,limitCount="number"==typeof limit,limitComponent=limit&&limit.isComponent,steps=0;if(selector)for(;result;result=result.getRefOwner()){if(steps++,selector.isComponent){if(result===selector)return result}else if(Ext.ComponentQuery.is(result,selector))return result;if(limitSelector&&result.is(limit))return;if(limitCount&&steps===limit)return;if(limitComponent&&result===limit)return}return result},nextSibling:function(selector){var it,last,idx,c,o=this.ownerCt;if(o&&(it=o.items,idx=it.indexOf(this)+1))if(selector){for(last=it.getCount();idx<last;idx++)if((c=it.getAt(idx)).is(selector))return c}else if(idx<it.getCount())return it.getAt(idx);return null},previousSibling:function(selector){var it,idx,c,o=this.ownerCt;if(o&&(it=o.items,-1!=(idx=it.indexOf(this))))if(selector){for(--idx;idx>=0;idx--)if((c=it.getAt(idx)).is(selector))return c}else if(idx)return it.getAt(--idx);return null},previousNode:function(selector,includeSelf){var result,it,i,sib,node=this,ownerCt=node.ownerCt;if(includeSelf&&node.is(selector))return node;if(ownerCt){for(it=ownerCt.items.items,i=Ext.Array.indexOf(it,node)-1;i>-1;i--){if(sib=it[i],sib.query&&(result=sib.query(selector),result=result[result.length-1]))return result;if(sib.is(selector))return sib}return ownerCt.previousNode(selector,!0)}return null},nextNode:function(selector,includeSelf){var result,it,len,i,sib,node=this,ownerCt=node.ownerCt;if(includeSelf&&node.is(selector))return node;if(ownerCt){for(it=ownerCt.items.items,i=Ext.Array.indexOf(it,node)+1,len=it.length;i<len;i++){if(sib=it[i],sib.is(selector))return sib;if(sib.down&&(result=sib.down(selector)))return result}return ownerCt.nextNode(selector)}return null},getId:function(){return this.id||(this.id="ext-comp-"+this.getAutoId())},getItemId:function(){return this.itemId||this.id},getEl:function(){return this.el},getTargetEl:function(){return this.frameBody||this.el},getOverflowEl:function(){return this.getTargetEl()},getOverflowStyle:function(){var ox,oy,overflowStyle,me=this,result=null,auto=me.autoScroll;return"boolean"==typeof auto?(result={overflow:overflowStyle=auto?"auto":""},me.scrollFlags={overflowX:overflowStyle,overflowY:overflowStyle,x:auto,y:auto,both:auto}):(ox=me.overflowX,oy=me.overflowY,void 0!==ox||void 0!==oy?(ox&&!0===ox&&(ox="auto"),oy&&!0===oy&&(oy="auto"),result={overflowX:ox=ox||"",overflowY:oy=oy||""},me.scrollFlags={overflowX:ox,overflowY:oy,x:ox="auto"===ox||"scroll"===ox,y:oy="auto"===oy||"scroll"===oy,both:ox&&oy}):me.scrollFlags={overflowX:"",overflowY:"",x:!1,y:!1,both:!1}),result&&Ext.isIE7m&&(result.position="relative"),result},isXType:function(xtype,shallow){return shallow?this.xtype===xtype:this.xtypesMap[xtype]},getXTypes:function(){var xtypes,parentPrototype,parentXtypes,self=this.self;if(!self.xtypes){for(xtypes=[],parentPrototype=this;parentPrototype;)parentXtypes=parentPrototype.xtypes,void 0!==parentXtypes&&xtypes.unshift.apply(xtypes,parentXtypes),parentPrototype=parentPrototype.superclass;self.xtypeChain=xtypes,self.xtypes=xtypes.join("/")}return self.xtypes},update:function(htmlOrData,loadScripts,cb){var el,me=this,isData=me.tpl&&!Ext.isString(htmlOrData);isData?me.data=htmlOrData:me.html=Ext.isObject(htmlOrData)?Ext.DomHelper.markup(htmlOrData):htmlOrData,me.rendered&&(el=me.isContainer?me.layout.getRenderTarget():me.getTargetEl(),isData?me.tpl[me.tplWriteMode](el,htmlOrData||{}):el.update(me.html,loadScripts,cb),me.updateLayout())},setVisible:function(visible){return this[visible?"show":"hide"]()},isVisible:function(deep){var hidden,me=this;return me.hidden||!me.rendered||me.isDestroyed?hidden=!0:deep&&(hidden=me.isHierarchicallyHidden()),!hidden},isHierarchicallyHidden:function(){for(var parent,parentHierarchyState,child=this,hidden=!1;parent=child.ownerCt||child.floatParent;child=parent){if(parentHierarchyState=parent.getHierarchyState(),parentHierarchyState.hidden){hidden=!0;break}if(!child.getHierarchyState().collapseImmune){hidden=!!parentHierarchyState.collapsed;break}if(parent.collapsed&&!child.collapseImmune){hidden=!0;break}}return hidden},onBoxReady:function(width,height){var me=this;me.disableOnBoxReady?me.onDisable():me.enableOnBoxReady&&me.onEnable(),me.resizable&&me.initResizable(me.resizable),me.draggable&&me.initDraggable(),me.hasListeners.boxready&&me.fireEvent("boxready",me,width,height)},enable:function(silent){var me=this;return delete me.disableOnBoxReady,me.removeCls(me.disabledCls),me.rendered?me.onEnable():me.enableOnBoxReady=!0,me.disabled=!1,delete me.resetDisable,!0!==silent&&me.fireEvent("enable",me),me},disable:function(silent){var me=this;return delete me.enableOnBoxReady,me.addCls(me.disabledCls),me.rendered?me.onDisable():me.disableOnBoxReady=!0,me.disabled=!0,!0!==silent&&(delete me.resetDisable,me.fireEvent("disable",me)),me},onEnable:function(){this.maskOnDisable&&(this.el.dom.disabled=!1,this.unmask())},onDisable:function(){var me=this,focusCls=me.focusCls,focusEl=me.getFocusEl();focusCls&&focusEl&&focusEl.removeCls(me.removeClsWithUI(focusCls,!0)),me.maskOnDisable&&(me.el.dom.disabled=!0,me.mask())},mask:function(msg,msgCls,elHeight){var box=this.lastBox,target=this.getMaskTarget();box&&(elHeight=box.height),target.mask(msg,msgCls,elHeight)},unmask:function(){this.getMaskTarget().unmask()},getMaskTarget:function(){return this.el},isDisabled:function(){return this.disabled},setDisabled:function(disabled){return this[disabled?"disable":"enable"]()},isHidden:function(){return this.hidden},addCls:function(cls){var me=this,el=me.rendered?me.el:me.protoEl;return el.addCls.apply(el,arguments),me},addClass:function(){return this.addCls.apply(this,arguments)},hasCls:function(cls){var me=this,el=me.rendered?me.el:me.protoEl;return el.hasCls.apply(el,arguments)},removeCls:function(cls){var me=this,el=me.rendered?me.el:me.protoEl;return el.removeCls.apply(el,arguments),me},removeClass:function(){return Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.Component: removeClass has been deprecated. Please use removeCls."),this.removeCls.apply(this,arguments)},addOverCls:function(){var me=this;me.disabled||me.el.addCls(me.overCls)},removeOverCls:function(){this.el.removeCls(this.overCls)},addListener:function(element,listeners,scope,options){var fn,option,me=this;if(Ext.isString(element)&&(Ext.isObject(listeners)||options&&options.element)){if(options.element){fn=listeners,listeners={},listeners[element]=fn,element=options.element,scope&&(listeners.scope=scope);for(option in options)options.hasOwnProperty(option)&&me.eventOptionsRe.test(option)&&(listeners[option]=options[option])}return void(me[element]&&me[element].on?me.mon(me[element],listeners):(me.afterRenderEvents=me.afterRenderEvents||{},me.afterRenderEvents[element]||(me.afterRenderEvents[element]=[]),me.afterRenderEvents[element].push(listeners)))}return me.mixins.observable.addListener.apply(me,arguments)},removeManagedListenerItem:function(isClear,managedListener,item,ename,fn,scope){var me=this,element=managedListener.options?managedListener.options.element:null;if(!element)return me.mixins.observable.removeManagedListenerItem.apply(me,arguments);(element=me[element])&&element.un&&(!isClear&&(managedListener.item!==item||managedListener.ename!==ename||fn&&managedListener.fn!==fn||scope&&managedListener.scope!==scope)||(element.un(managedListener.ename,managedListener.fn,managedListener.scope),isClear||Ext.Array.remove(me.managedListeners,managedListener)))},getBubbleTarget:function(){return this.ownerCt},isFloating:function(){return this.floating},isDraggable:function(){return!!this.draggable},isDroppable:function(){return!!this.droppable},onAdded:function(container,pos){var me=this;me.ownerCt=container,me.hierarchyState&&(me.hierarchyState.invalid=!0,delete me.hierarchyState),me.hasListeners.added&&me.fireEvent("added",me,container,pos)},onRemoved:function(destroying){var me=this;me.hasListeners.removed&&me.fireEvent("removed",me,me.ownerCt),delete me.ownerCt,delete me.ownerLayout},beforeDestroy:Ext.emptyFn,onResize:function(width,height,oldWidth,oldHeight){var me=this;me.floating&&me.constrain&&me.doConstrain(),me.hasListeners.resize&&me.fireEvent("resize",me,width,height,oldWidth,oldHeight)},setSize:function(width,height){var me=this;return width&&"object"==typeof width&&(height=width.height,width=width.width),"number"==typeof width?me.width=Ext.Number.constrain(width,me.minWidth,me.maxWidth):null===width&&delete me.width,"number"==typeof height?me.height=Ext.Number.constrain(height,me.minHeight,me.maxHeight):null===height&&delete me.height,me.rendered&&me.isVisible()&&me.updateLayout({isRoot:!1}),me},isLayoutRoot:function(){var me=this,ownerLayout=me.ownerLayout;return!(ownerLayout&&!me._isLayoutRoot&&!me.floating)||ownerLayout.isItemLayoutRoot(me)},isLayoutSuspended:function(){for(var ownerLayout,comp=this;comp;){if(comp.layoutSuspendCount||comp.suspendLayout)return!0;if(!(ownerLayout=comp.ownerLayout))break;comp=ownerLayout.owner}return!1},updateLayout:function(options){var defer,me=this,lastBox=me.lastBox,isRoot=options&&options.isRoot;lastBox&&(lastBox.invalid=!0),!me.rendered||me.layoutSuspendCount||me.suspendLayout||(me.hidden?Ext.AbstractComponent.cancelLayout(me):"boolean"!=typeof isRoot&&(isRoot=me.isLayoutRoot()),!isRoot&&me.ownerLayout&&me.ownerLayout.onContentChange(me)||me.isLayoutSuspended()||(defer=options&&options.hasOwnProperty("defer")?options.defer:me.deferLayouts,Ext.AbstractComponent.updateLayout(me,defer)))},getSizeModel:function(ownerCtSizeModel){var typeofWidth,typeofHeight,hasPixelWidth,hasPixelHeight,heightModel,ownerLayout,policy,shrinkWrap,topLevel,widthModel,me=this,models=Ext.layout.SizeModel,ownerContext=me.componentLayout.ownerContext,width=me.width,height=me.height;return ownerContext&&(widthModel=ownerContext.widthModel,heightModel=ownerContext.heightModel),widthModel&&heightModel||(hasPixelWidth="number"==(typeofWidth=typeof width),hasPixelHeight="number"==(typeofHeight=typeof height),topLevel=me.floating||!(ownerLayout=me.ownerLayout),topLevel?(policy=Ext.layout.Layout.prototype.autoSizePolicy,shrinkWrap=me.floating?3:me.shrinkWrap,hasPixelWidth&&(widthModel=models.configured),hasPixelHeight&&(heightModel=models.configured)):(policy=ownerLayout.getItemSizePolicy(me,ownerCtSizeModel),shrinkWrap=ownerLayout.isItemShrinkWrap(me)),ownerContext&&(ownerContext.ownerSizePolicy=policy),shrinkWrap=!0===shrinkWrap?3:shrinkWrap||0,topLevel&&shrinkWrap&&(width&&"string"==typeofWidth&&(shrinkWrap&=2),height&&"string"==typeofHeight&&(shrinkWrap&=1)),3!==shrinkWrap&&(ownerCtSizeModel||(ownerCtSizeModel=me.ownerCt&&me.ownerCt.getSizeModel()),ownerCtSizeModel&&(shrinkWrap|=(ownerCtSizeModel.width.shrinkWrap?1:0)|(ownerCtSizeModel.height.shrinkWrap?2:0))),widthModel||(widthModel=policy.setsWidth?policy.readsWidth?hasPixelWidth?models.calculatedFromConfigured:1&shrinkWrap?models.calculatedFromShrinkWrap:models.calculatedFromNatural:models.calculated:hasPixelWidth?models.configured:1&shrinkWrap?models.shrinkWrap:models.natural),heightModel||(heightModel=policy.setsHeight?policy.readsHeight?hasPixelHeight?models.calculatedFromConfigured:2&shrinkWrap?models.calculatedFromShrinkWrap:models.calculatedFromNatural:models.calculated:hasPixelHeight?models.configured:2&shrinkWrap?models.shrinkWrap:models.natural)),widthModel.pairsByHeightOrdinal[heightModel.ordinal]},isDescendant:function(ancestor){if(ancestor.isContainer)for(var c=this.ownerCt;c;c=c.ownerCt)if(c===ancestor)return!0;return!1},doComponentLayout:function(){return this.updateLayout(),this},forceComponentLayout:function(){this.updateLayout()},setComponentLayout:function(layout){var currentLayout=this.componentLayout;currentLayout&&currentLayout.isLayout&&currentLayout!=layout&&currentLayout.setOwner(null),this.componentLayout=layout,layout.setOwner(this)},getComponentLayout:function(){var me=this;return me.componentLayout&&me.componentLayout.isLayout||me.setComponentLayout(Ext.layout.Layout.create(me.componentLayout,"autocomponent")),me.componentLayout},afterComponentLayout:function(width,height,oldWidth,oldHeight){var me=this;1==++me.componentLayoutCounter&&me.afterFirstLayout(width,height),width===oldWidth&&height===oldHeight||me.onResize(width,height,oldWidth,oldHeight)},beforeComponentLayout:function(width,height){return!0},setPosition:function(x,y,animate){var me=this,pos=me.beforeSetPosition.apply(me,arguments);return pos&&me.rendered&&(x=pos.x,y=pos.y,animate?x===me.getLocalX()&&y===me.getLocalY()||(me.stopAnimation(),me.animate(Ext.apply({duration:1e3,listeners:{afteranimate:Ext.Function.bind(me.afterSetPosition,me,[x,y])},to:{left:x,top:y}},animate))):(me.setLocalXY(x,y),me.afterSetPosition(x,y))),me},beforeSetPosition:function(x,y,animate){var pos,x0;return x&&(Ext.isNumber(x0=x[0])?(animate=y,y=x[1],x=x0):void 0!==(x0=x.x)&&(animate=y,y=x.y,x=x0)),(this.constrain||this.constrainHeader)&&(pos=this.calculateConstrainedPosition(null,[x,y],!0))&&(x=pos[0],y=pos[1]),pos={x:this.x=x,y:this.y=y,anim:animate,hasX:void 0!==x,hasY:void 0!==y},pos.hasX||pos.hasY?pos:null},afterSetPosition:function(x,y){var me=this;me.onPosition(x,y),me.hasListeners.move&&me.fireEvent("move",me,x,y)},onPosition:Ext.emptyFn,setWidth:function(width){return this.setSize(width)},setHeight:function(height){return this.setSize(void 0,height)},getSize:function(contentSize){return this.el.getSize(contentSize)},getWidth:function(){return this.el.getWidth()},getHeight:function(){return this.el.getHeight()},getLoader:function(){var me=this,autoLoad=me.autoLoad?Ext.isObject(me.autoLoad)?me.autoLoad:{url:me.autoLoad}:null,loader=me.loader||autoLoad;return loader?(loader.isLoader?loader.setTarget(me):me.loader=new Ext.ComponentLoader(Ext.apply({target:me,autoLoad:autoLoad},loader)),me.loader):null},setDocked:function(dock,layoutParent){var me=this;return me.dock=dock,layoutParent&&me.ownerCt&&me.rendered&&me.ownerCt.updateLayout(),me},setBorder:function(border,targetEl){var me=this,initial=!!targetEl;(me.rendered||initial)&&(initial||(targetEl=me.el),border=border?!0===border?"1px":this.unitizeBox(border):0,targetEl.setStyle("border-width",border),initial||me.updateLayout()),me.border=border},onDestroy:function(){var me=this;me.monitorResize&&Ext.EventManager.resizeEvent&&Ext.EventManager.resizeEvent.removeListener(me.setSize,me),Ext.destroy(me.componentLayout,me.loadMask,me.floatingDescendants)},destroy:function(){var selector,el,me=this,selectors=me.renderSelectors;if(!(me.isDestroyed||me.hasListeners.beforedestroy&&!1===me.fireEvent("beforedestroy",me))){if(me.destroying=!0,me.beforeDestroy(),me.floating?(delete me.floatParent,me.zIndexManager&&me.zIndexManager.unregister(me)):me.ownerCt&&me.ownerCt.remove&&me.ownerCt.remove(me,!1),me.stopAnimation(),me.onDestroy(),Ext.destroy(me.plugins),me.hasListeners.destroy&&me.fireEvent("destroy",me),Ext.ComponentManager.unregister(me),me.mixins.state.destroy.call(me),me.clearListeners(),me.rendered){if(me.preserveElOnDestroy||me.el.remove(),me.mixins.elementCt.destroy.call(me),selectors)for(selector in selectors)selectors.hasOwnProperty(selector)&&(el=me[selector])&&(delete me[selector],el.remove());delete me.el,delete me.frameBody,delete me.rendered}me.destroying=!1,me.isDestroyed=!0}},isDescendantOf:function(container){return!!this.findParentBy(function(p){return p===container})},getHierarchyState:function(inner){var parent,layout,hierarchyStateInner,getInner,me=this,hierarchyState=inner&&me.hierarchyStateInner||me.hierarchyState,ownerCt=me.ownerCt;return hierarchyState&&!hierarchyState.invalid||(parent=me.getRefOwner(),ownerCt&&(getInner=me.ownerLayout===ownerCt.layout),me.hierarchyState=hierarchyState=Ext.Object.chain(parent?parent.getHierarchyState(getInner):Ext.rootHierarchyState),me.initHierarchyState(hierarchyState),(layout=me.componentLayout).initHierarchyState&&layout.initHierarchyState(hierarchyState),me.isContainer&&(me.hierarchyStateInner=hierarchyStateInner=Ext.Object.chain(hierarchyState),layout=me.layout,layout&&layout.initHierarchyState&&layout.initHierarchyState(hierarchyStateInner,hierarchyState),inner&&(hierarchyState=hierarchyStateInner))),hierarchyState},initHierarchyState:function(hierarchyState){var me=this;me.collapsed&&(hierarchyState.collapsed=!0),me.hidden&&(hierarchyState.hidden=!0),me.collapseImmune&&(hierarchyState.collapseImmune=!0)},getAnchorToXY:function(el,anchor,local,mySize){return el.getAnchorXY(anchor,local,mySize)},getBorderPadding:function(){return this.el.getBorderPadding()},getLocalX:function(){return this.el.getLocalX()},getLocalXY:function(){return this.el.getLocalXY()},getLocalY:function(){return this.el.getLocalY()},getX:function(){return this.el.getX()},getXY:function(){return this.el.getXY()
},getY:function(){return this.el.getY()},setLocalX:function(x){this.el.setLocalX(x)},setLocalXY:function(x,y){this.el.setLocalXY(x,y)},setLocalY:function(y){this.el.setLocalY(y)},setX:function(x,animate){this.el.setX(x,animate)},setXY:function(xy,animate){this.el.setXY(xy,animate)},setY:function(y,animate){this.el.setY(y,animate)}},function(){var AbstractComponent=this;AbstractComponent.createAlias({on:"addListener",prev:"previousSibling",next:"nextSibling"}),Ext.resumeLayouts=function(flush){AbstractComponent.resumeLayouts(flush)},Ext.suspendLayouts=function(){AbstractComponent.suspendLayouts()},Ext.batchLayouts=function(fn,scope){AbstractComponent.suspendLayouts(),fn.call(scope),AbstractComponent.resumeLayouts(!0)}});Ext.define("Ext.AbstractPlugin",{disabled:!1,isPlugin:!0,constructor:function(config){this.pluginConfig=config,Ext.apply(this,config)},clonePlugin:function(overrideCfg){return new this.self(Ext.apply({},overrideCfg,this.pluginConfig))},setCmp:function(cmp){this.cmp=cmp},getCmp:function(){return this.cmp},init:Ext.emptyFn,destroy:Ext.emptyFn,enable:function(){this.disabled=!1},disable:function(){this.disabled=!0},onClassExtended:function(cls,data,hooks){var alias=data.alias;alias&&!data.ptype&&(Ext.isArray(alias)&&(alias=alias[0]),cls.prototype.ptype=alias.split("plugin.")[1])}});Ext.define("Ext.data.flash.BinaryXhr",{statics:{flashPluginActivated:function(){Ext.data.flash.BinaryXhr.flashPluginActive=!0,Ext.data.flash.BinaryXhr.flashPlugin=document.getElementById("ext-flash-polyfill"),Ext.globalEvents.fireEvent("flashready")},flashPluginActive:!1,flashPluginInjected:!1,connectionIndex:1,liveConnections:{},flashPlugin:null,onFlashStateChange:function(javascriptId,state,data){var connection;connection=this.liveConnections[Number(javascriptId)],connection?connection.onFlashStateChange(state,data):Ext.warn.log("onFlashStateChange for unknown connection ID: "+javascriptId)},registerConnection:function(conn){var i=this.connectionIndex;return this.conectionIndex=this.connectionIndex+1,this.liveConnections[i]=conn,i},injectFlashPlugin:function(){var flashLoaderPath,flashObjectPath,me=this;me.flashPolyfillEl=Ext.getBody().appendChild({id:"ext-flash-polyfill",cn:[{tag:"p",html:"To view this page ensure that Adobe Flash Player version 11.1.0 or greater is installed."},{tag:"a",href:"http://www.adobe.com/go/getflashplayer",cn:[{tag:"img",src:window.location.protocol+"//www.adobe.com/images/shared/download_buttons/get_flash_player.gif",alt:"Get Adobe Flash player"}]}]}),flashLoaderPath=[Ext.Loader.getPath("Ext.data.Connection"),"../../../plugins/flash/swfobject.js"].join("/"),flashObjectPath="/plugins/flash/FlashPlugin.swf",flashObjectPath=[Ext.Loader.getPath("Ext.data.Connection"),"../../plugins/flash/FlashPlugin.swf"].join("/"),Ext.flashPluginPath&&(flashObjectPath=Ext.flashPluginPath),Ext.Loader.loadScript({url:flashLoaderPath,onLoad:function(){var flashvars={},params={};params.quality="high",params.bgcolor="#ffffff",params.allowscriptaccess="sameDomain",params.allowfullscreen="true";var attributes={};attributes.id="ext-flash-polyfill",attributes.name="polyfill",attributes.align="middle",swfobject.embedSWF(flashObjectPath,"ext-flash-polyfill","0","0","11.4.0","playerProductInstall.swf",flashvars,params,attributes)},onError:function(){Ext.Error.raise("Could not load flash-loader file swfobject.js from "+flashLoader)},scope:me}),Ext.globalEvents.addEvents("flashready"),Ext.data.flash.BinaryXhr.flashPluginInjected=!0}},readyState:0,status:0,statusText:"",responseBytes:null,javascriptId:null,constructor:function(config){Ext.data.flash.BinaryXhr.flashPluginInjected||Ext.data.flash.BinaryXhr.injectFlashPlugin();var me=this;Ext.apply(me,config),me.requestHeaders={}},abort:function(){var me=this;return 4==me.readyState?void Ext.warn.log("Aborting a connection that's completed its transfer: "+this.url):(me.aborted=!0,Ext.data.flash.BinaryXhr.flashPluginActive?(Ext.data.flash.BinaryXhr.flashPlugin.abortRequest(me.javascriptId),void delete Ext.data.flash.BinaryXhr.liveConnections[me.javascriptId]):void Ext.globalEvents.removeListener("flashready",me.onFlashReady,me))},getAllResponseHeaders:function(){var headers=[];return Ext.Object.each(this.responseHeaders,function(name,value){headers.push(name+": "+value)}),headers.join("\r\n")},getResponseHeader:function(header){var headers=this.responseHeaders;return headers&&headers[header]||null},open:function(method,url,async,user,password){var me=this;me.method=method,me.url=url,me.async=!1!==async,me.user=user,me.password=password,me.async||Ext.Error.raise("Binary posts are only supported in async mode: "+url),"POST"!=me.method&&Ext.log.warn("Binary data can only be sent as a POST request: "+url)},overrideMimeType:function(mimeType){this.mimeType=mimeType},send:function(body){var me=this;me.body=body,Ext.data.flash.BinaryXhr.flashPluginActive?this.onFlashReady():Ext.globalEvents.addListener("flashready",me.onFlashReady,me)},onFlashReady:function(){var req,me=this;me.javascriptId=Ext.data.flash.BinaryXhr.registerConnection(me),req={method:me.method,url:me.url,user:me.user,password:me.password,mimeType:me.mimeType,requestHeaders:me.requestHeaders,body:me.body,javascriptId:me.javascriptId},Ext.data.flash.BinaryXhr.flashPlugin.postBinary(req)},setReadyState:function(state){var me=this;me.readyState!=state&&(me.readyState=state,me.onreadystatechange())},setRequestHeader:function(header,value){this.requestHeaders[header]=value},onreadystatechange:Ext.emptyFn,parseData:function(data){var me=this;this.status=data.status||0,me.responseHeaders={},me.mimeType&&(me.responseHeaders["content-type"]=me.mimeType),"complete"==data.reason?(this.responseBytes=data.data,me.responseHeaders["content-length"]=data.data.length):"error"==data.reason||"securityError"==data.reason?(this.statusText=data.text,me.responseHeaders["content-length"]=0):Ext.Error.raise("Unkown reason code in data: "+data.reason)},onFlashStateChange:function(state,data){var me=this;4==state&&(me.parseData(data),delete Ext.data.flash.BinaryXhr.liveConnections[me.javascriptId]),me.setReadyState(state)}});Ext.define("Ext.data.Connection",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.data.flash.BinaryXhr"],statics:{requestId:0},url:null,async:!0,method:null,username:"",password:"",disableCaching:!0,withCredentials:!1,binary:!1,cors:!1,isXdr:!1,defaultXdrContentType:"text/plain",disableCachingParam:"_dc",timeout:3e4,useDefaultHeader:!0,defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8",useDefaultXhrHeader:!0,defaultXhrHeader:"XMLHttpRequest",constructor:function(config){config=config||{},Ext.apply(this,config),this.requests={},this.mixins.observable.constructor.call(this)},request:function(options){options=options||{};var async,requestOptions,request,headers,xhr,me=this,scope=options.scope||window,username=options.username||me.username,password=options.password||me.password||"";return!1!==me.fireEvent("beforerequest",me,options)?(requestOptions=me.setOptions(options,scope),me.isFormUpload(options)?(me.upload(options.form,requestOptions.url,requestOptions.data,options),null):((options.autoAbort||me.autoAbort)&&me.abort(),async=!1!==options.async&&(options.async||me.async),xhr=me.openRequest(options,requestOptions,async,username,password),me.isXdr||(headers=me.setupHeaders(xhr,options,requestOptions.data,requestOptions.params)),request={id:++Ext.data.Connection.requestId,xhr:xhr,headers:headers,options:options,async:async,binary:options.binary||me.binary,timeout:setTimeout(function(){request.timedout=!0,me.abort(request)},options.timeout||me.timeout)},me.requests[request.id]=request,me.latestId=request.id,async&&(me.isXdr||(xhr.onreadystatechange=Ext.Function.bind(me.onStateChange,me,[request]))),me.isXdr&&me.processXdrRequest(request,xhr),xhr.send(requestOptions.data),async?request:me.onComplete(request))):(Ext.callback(options.callback,options.scope,[options,void 0,void 0]),null)},processXdrRequest:function(request,xhr){var me=this;delete request.headers,request.contentType=request.options.contentType||me.defaultXdrContentType,xhr.onload=Ext.Function.bind(me.onStateChange,me,[request,!0]),xhr.onerror=xhr.ontimeout=Ext.Function.bind(me.onStateChange,me,[request,!1])},processXdrResponse:function(response,xhr){response.getAllResponseHeaders=function(){return[]},response.getResponseHeader=function(){return""},response.contentType=xhr.contentType||this.defaultXdrContentType},upload:function(form,url,params,options){form=Ext.getDom(form),options=options||{};var hiddenItem,obj,value,name,vLen,v,hLen,h,id=Ext.id(),frame=document.createElement("iframe"),hiddens=[],buf={target:form.target,method:form.method,encoding:form.encoding,enctype:form.enctype,action:form.action},addField=function(name,value){hiddenItem=document.createElement("input"),Ext.fly(hiddenItem).set({type:"hidden",value:value,name:name}),form.appendChild(hiddenItem),hiddens.push(hiddenItem)};if(Ext.fly(frame).set({id:id,name:id,cls:Ext.baseCSSPrefix+"hide-display",src:Ext.SSL_SECURE_URL}),document.body.appendChild(frame),document.frames&&(document.frames[id].name=id),Ext.fly(form).set({target:id,method:"POST",enctype:"multipart/form-data",encoding:"multipart/form-data",action:url||buf.action}),params){obj=Ext.Object.fromQueryString(params)||{};for(name in obj)if(obj.hasOwnProperty(name))if(value=obj[name],Ext.isArray(value))for(vLen=value.length,v=0;v<vLen;v++)addField(name,value[v]);else addField(name,value)}for(Ext.fly(frame).on("load",Ext.Function.bind(this.onUploadComplete,this,[frame,options]),null,{single:!Ext.isOpera}),form.submit(),Ext.fly(form).set(buf),hLen=hiddens.length,h=0;h<hLen;h++)Ext.removeNode(hiddens[h])},onUploadComplete:function(frame,options){var callback,success,doc,contentNode,me=this,response={responseText:"",responseXML:null};try{if(doc=frame.contentWindow.document||frame.contentDocument||window.frames[frame.id].document){if(Ext.isOpera&&"about:blank"==doc.location)return;doc.body&&((contentNode=doc.body.firstChild)&&/pre/i.test(contentNode.tagName)?response.responseText=contentNode.textContent:(contentNode=doc.getElementsByTagName("textarea")[0])?response.responseText=contentNode.value:response.responseText=doc.body.textContent||doc.body.innerText),response.responseXML=doc.XMLDocument||doc,callback=options.success,success=!0}}catch(e){response.responseText='{success:false,message:"'+Ext.String.trim(e.message||e.description)+'"}',callback=options.failure,success=!1}me.fireEvent("requestcomplete",me,response,options),Ext.callback(callback,options.scope,[response,options]),Ext.callback(options.callback,options.scope,[options,success,response]),setTimeout(function(){Ext.removeNode(frame)},100)},isFormUpload:function(options){var form=this.getForm(options);return!!form&&(options.isUpload||/multipart\/form-data/i.test(form.getAttribute("enctype")))},getForm:function(options){return Ext.getDom(options.form)||null},setOptions:function(options,scope){var method,disableCache,data,me=this,params=options.params||{},extraParams=me.extraParams,urlParams=options.urlParams,url=options.url||me.url,jsonData=options.jsonData;return Ext.isFunction(params)&&(params=params.call(scope,options)),Ext.isFunction(url)&&(url=url.call(scope,options)),url=this.setupUrl(options,url),url||Ext.Error.raise({options:options,msg:"No URL specified"}),data=options.rawData||options.binaryData||options.xmlData||jsonData||null,jsonData&&!Ext.isPrimitive(jsonData)&&(data=Ext.encode(data)),options.binaryData&&(Ext.isArray(options.binaryData)||Ext.log.warn("Binary submission data must be an array of byte values! Instead got "+typeof options.binaryData),me.nativeBinaryPostSupport()&&(data=new Uint8Array(options.binaryData),(Ext.isChrome&&Ext.chromeVersion<22||Ext.isSafari||Ext.isGecko)&&(data=data.buffer))),Ext.isObject(params)&&(params=Ext.Object.toQueryString(params)),Ext.isObject(extraParams)&&(extraParams=Ext.Object.toQueryString(extraParams)),params+=extraParams?(params?"&":"")+extraParams:"",urlParams=Ext.isObject(urlParams)?Ext.Object.toQueryString(urlParams):urlParams,params=this.setupParams(options,params),method=(options.method||me.method||(params||data?"POST":"GET")).toUpperCase(),this.setupMethod(options,method),disableCache=!1!==options.disableCaching&&(options.disableCaching||me.disableCaching),"GET"===method&&disableCache&&(url=Ext.urlAppend(url,(options.disableCachingParam||me.disableCachingParam)+"="+(new Date).getTime())),("GET"==method||data)&&params&&(url=Ext.urlAppend(url,params),params=null),urlParams&&(url=Ext.urlAppend(url,urlParams)),{url:url,method:method,data:data||params||null}},setupUrl:function(options,url){var form=this.getForm(options);return form&&(url=url||form.action),url},setupParams:function(options,params){var serializedForm,form=this.getForm(options);return form&&!this.isFormUpload(options)&&(serializedForm=Ext.Element.serializeForm(form),params=params?params+"&"+serializedForm:serializedForm),params},setupMethod:function(options,method){return this.isFormUpload(options)?"POST":method},setupHeaders:function(xhr,options,data,params){var key,header,me=this,headers=Ext.apply({},options.headers||{},me.defaultHeaders||{}),contentType=me.defaultPostHeader,jsonData=options.jsonData,xmlData=options.xmlData,type="Content-Type";headers.hasOwnProperty(type)||!data&&!params||(data&&(options.rawData?contentType="text/plain":xmlData&&Ext.isDefined(xmlData)?contentType="text/xml":jsonData&&Ext.isDefined(jsonData)&&(contentType="application/json")),headers[type]=contentType),me.useDefaultXhrHeader&&!headers["X-Requested-With"]&&(headers["X-Requested-With"]=me.defaultXhrHeader),void 0!==headers[type]&&null!==headers[type]||delete headers[type];try{for(key in headers)headers.hasOwnProperty(key)&&(header=headers[key],xhr.setRequestHeader(key,header))}catch(e){me.fireEvent("exception",key,header)}return headers},newRequest:function(options){var xhr,me=this;return options.binaryData?xhr=me.nativeBinaryPostSupport()?this.getXhrInstance():new Ext.data.flash.BinaryXhr:(options.cors||me.cors)&&Ext.isIE&&Ext.ieVersion<=9?(xhr=me.getXdrInstance(),me.isXdr=!0):xhr=me.getXhrInstance(),xhr},openRequest:function(options,requestOptions,async,username,password){var me=this,xhr=me.newRequest(options);return username?xhr.open(requestOptions.method,requestOptions.url,async,username,password):me.isXdr?xhr.open(requestOptions.method,requestOptions.url):xhr.open(requestOptions.method,requestOptions.url,async),(options.binary||me.binary)&&(window.Uint8Array?xhr.responseType="arraybuffer":xhr.overrideMimeType?xhr.overrideMimeType("text/plain; charset=x-user-defined"):Ext.isIE||Ext.log.warn("Your does not support loading binary data using Ajax.")),(options.withCredentials||me.withCredentials)&&(xhr.withCredentials=!0),xhr},getXdrInstance:function(){var xdr;return Ext.ieVersion>=8?xdr=new XDomainRequest:Ext.Error.raise({msg:"Your browser does not support CORS"}),xdr},getXhrInstance:function(){for(var xhr,options=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],i=0,len=options.length;i<len;++i)try{xhr=options[i],xhr();break}catch(e){}return xhr}(),isLoading:function(request){if(request||(request=this.getLatest()),!request||!request.xhr)return!1;var state=request.xhr.readyState;return request.xhr instanceof Ext.data.flash.BinaryXhr&&4!=state||!(0===state||4==state)},abort:function(request){var xhr,me=this;if(request||(request=me.getLatest()),request&&me.isLoading(request)){xhr=request.xhr;try{xhr.onreadystatechange=null}catch(e){xhr.onreadystatechange=Ext.emptyFn}xhr.abort(),me.clearTimeout(request),request.timedout||(request.aborted=!0),me.onComplete(request),me.cleanup(request)}},abortAll:function(){var id,requests=this.requests;for(id in requests)requests.hasOwnProperty(id)&&this.abort(requests[id])},getLatest:function(){var request,id=this.latestId;return id&&(request=this.requests[id]),request||null},onStateChange:function(request,xdrResult){var me=this;(request.xhr&&4==request.xhr.readyState||me.isXdr)&&(me.clearTimeout(request),me.onComplete(request,xdrResult),me.cleanup(request),Ext.EventManager.idleEvent.fire())},clearTimeout:function(request){clearTimeout(request.timeout),delete request.timeout},cleanup:function(request){request.xhr=null,delete request.xhr},onComplete:function(request,xdrResult){var xhr,result,success,response,me=this,options=request.options;try{xhr=request.xhr,result=me.parseStatus(xhr.status),result.success&&(result.success=4===xhr.readyState)}catch(e){result={success:!1,isException:!1}}return success=me.isXdr?xdrResult:result.success,success?(response=me.createResponse(request),me.fireEvent("requestcomplete",me,response,options),Ext.callback(options.success,options.scope,[response,options])):(response=result.isException||request.aborted||request.timedout?me.createException(request):me.createResponse(request),me.fireEvent("requestexception",me,response,options),Ext.callback(options.failure,options.scope,[response,options])),Ext.callback(options.callback,options.scope,[options,success,response]),delete me.requests[request.id],response},parseStatus:function(status){status=1223==status?204:status;var success=status>=200&&status<300||304==status,isException=!1;if(!success)switch(status){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:isException=!0}return{success:success,isException:isException}},createResponse:function(request){for(var line,index,key,response,me=this,xhr=request.xhr,isXdr=me.isXdr,headers={},lines=isXdr?[]:xhr.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),count=lines.length;count--;)line=lines[count],(index=line.indexOf(":"))>=0&&(key=line.substr(0,index).toLowerCase()," "==line.charAt(index+1)&&++index,headers[key]=line.substr(index+1));return request.xhr=null,delete request.xhr,response={request:request,requestId:request.id,status:xhr.status,statusText:xhr.statusText,getResponseHeader:function(header){return headers[header.toLowerCase()]},getAllResponseHeaders:function(){return headers}},isXdr&&me.processXdrResponse(response,xhr),request.binary?response.responseBytes=me.getByteArray(xhr):(response.responseText=xhr.responseText,response.responseXML=xhr.responseXML),xhr=null,response},createException:function(request){return{request:request,requestId:request.id,status:request.aborted?-1:0,statusText:request.aborted?"transaction aborted":"communication failure",aborted:request.aborted,timedout:request.timedout}},getByteArray:function(xhr){var byteArray,responseText,len,i,response=xhr.response,responseBody=xhr.responseBody;if(xhr instanceof Ext.data.flash.BinaryXhr)byteArray=xhr.responseBytes;else if(window.Uint8Array)byteArray=response?new Uint8Array(response):[];else if(Ext.isIE9p)try{byteArray=new VBArray(responseBody).toArray()}catch(e){byteArray=[]}else if(Ext.isIE)this.self.vbScriptInjected||this.injectVBScript(),getIEByteArray(xhr.responseBody,byteArray=[]);else for(byteArray=[],responseText=xhr.responseText,len=responseText.length,i=0;i<len;i++)byteArray.push(255&responseText.charCodeAt(i));return byteArray},injectVBScript:function(){var scriptTag=document.createElement("script");scriptTag.type="text/vbscript",scriptTag.text=["Function getIEByteArray(byteArray, out)","Dim len, i","len = LenB(byteArray)","For i = 1 to len","out.push(AscB(MidB(byteArray, i, 1)))","Next","End Function"].join("\n"),Ext.getHead().dom.appendChild(scriptTag),this.self.vbScriptInjected=!0},nativeBinaryPostSupport:function(){return Ext.isChrome||Ext.isSafari&&Ext.isDefined(window.Uint8Array)||Ext.isGecko&&Ext.isDefined(window.Uint8Array)}});Ext.define("Ext.Ajax",{extend:"Ext.data.Connection",singleton:!0,autoAbort:!1});Ext.define("Ext.util.Floating",{uses:["Ext.Layer","Ext.ZIndexManager"],focusOnToFront:!0,shadow:"sides",constrain:!1,constructor:function(dom){var me=this;me.fixed=me.fixed&&!(Ext.isIE6||Ext.isIEQuirks),me.el=new Ext.dom.Layer(Ext.apply({preventSync:!0,hideMode:me.hideMode,shadow:void 0!==me.shadow?me.shadow:"sides",shadowOffset:me.shadowOffset,constrain:!1,fixed:me.fixed,shim:!1!==me.shim&&void 0},me.floating),dom),!me.modal||Ext.FocusManager&&Ext.FocusManager.enabled||me.mon(me.el,{keydown:me.onKeyDown,scope:me}),me.mon(me.el,{mousedown:me.onMouseDown,scope:me}),me.floating=!0,me.registerWithOwnerCt(),me.initHierarchyEvents()},initHierarchyEvents:function(){var me=this,syncHidden=this.syncHidden;me.hasHierarchyEventListeners||(me.mon(me.hierarchyEventSource,{hide:syncHidden,collapse:syncHidden,show:syncHidden,expand:syncHidden,added:syncHidden,scope:me}),me.hasHierarchyEventListeners=!0)},registerWithOwnerCt:function(){var me=this,ownerCt=me.ownerCt,zip=me.zIndexParent;zip&&zip.unregisterFloatingItem(me),zip=me.zIndexParent=me.up("[floating]"),me.setFloatParent(ownerCt||zip),delete me.ownerCt,zip?zip.registerFloatingItem(me):Ext.WindowManager.register(me)},onKeyDown:function(e){var shift,focusables,first,last,me=this;e.getKey()==Ext.EventObject.TAB&&(shift=e.shiftKey,focusables=me.el.query(":focusable"),first=focusables[0],last=focusables[focusables.length-1],first&&last&&e.target===(shift?first:last)&&(e.stopEvent(),(shift?last:first).focus(!1,!0)))},onMouseDown:function(e){var focusTask=this.focusTask;!this.floating||focusTask&&focusTask.id||this.toFront(!!e.getTarget(":focusable"))},setFloatParent:function(floatParent){var me=this;me.floatParent=floatParent,!me.constrain&&!me.constrainHeader||me.constrainTo||(me.constrainTo=floatParent?floatParent.getTargetEl():me.container)},syncShadow:function(){this.floating&&this.el.sync(!0)},onBeforeFloatLayout:function(){this.el.preventSync=!0},onAfterFloatLayout:function(){delete this.el.preventSync,this.syncShadow()},syncHidden:function(){var me=this,hidden=me.hidden||!me.rendered,hierarchicallyHidden=me.hierarchicallyHidden=me.isHierarchicallyHidden(),pendingShow=me.pendingShow;hidden!==hierarchicallyHidden&&(hierarchicallyHidden?(me.hide(),me.pendingShow=!0):pendingShow&&(delete me.pendingShow,pendingShow.length?me.show.apply(me,pendingShow):me.show()))},setZIndex:function(index){var me=this;return me.el.setZIndex(index),index+=10,me.floatingDescendants&&(index=100*Math.floor(me.floatingDescendants.setBase(index)/100)+1e4),index},doConstrain:function(constrainTo){var me=this,xy=me.calculateConstrainedPosition(constrainTo,null,!0);xy&&me.setPosition(xy)},toFront:function(preventFocus){var me=this,zip=me.zIndexParent,preventFocusSetting=me.preventFocusOnActivate;return zip&&!1!==me.bringParentToFront&&zip.toFront(!0),Ext.isDefined(preventFocus)||(preventFocus=!me.focusOnToFront),preventFocus&&(me.preventFocusOnActivate=!0),me.zIndexManager.bringToFront(me,preventFocus)&&(preventFocus||me.focus(!1,!0)),me.preventFocusOnActivate=preventFocusSetting,me},setActive:function(active,newActive){var me=this;active?(me.el.shadow&&!me.maximized&&me.el.enableShadow(!0),me.preventFocusOnActivate||me.focus(!1,!0),me.fireEvent("activate",me)):(me.isWindow&&newActive&&newActive.isWindow&&me.hideShadowOnDeactivate&&me.el.disableShadow(),me.fireEvent("deactivate",me))},toBack:function(){return this.zIndexManager.sendToBack(this),this},center:function(){var xy,me=this;return me.isVisible()?(xy=me.getAlignToXY(me.container,"c-c"),me.setPagePosition(xy)):me.needsCenter=!0,me},onFloatShow:function(){this.needsCenter&&this.center(),delete this.needsCenter,this.toFrontOnShow&&this.toFront()},fitContainer:function(animate){var me=this,parent=me.floatParent,container=parent?parent.getTargetEl():me.container,newBox=container.getViewSize(!1),newPosition=parent||container.dom!==document.body?[0,0]:container.getXY();newBox.x=newPosition[0],newBox.y=newPosition[1],me.setBox(newBox,animate)}});Ext.define("Ext.Component",{alias:["widget.component","widget.box"],extend:"Ext.AbstractComponent",uses:["Ext.util.DelayedTask","Ext.Layer","Ext.resizer.Resizer","Ext.util.ComponentDragger"],mixins:{floating:"Ext.util.Floating"},statics:{DIRECTION_TOP:"top",DIRECTION_RIGHT:"right",DIRECTION_BOTTOM:"bottom",DIRECTION_LEFT:"left",VERTICAL_DIRECTION_Re:/^(?:top|bottom)$/,INVALID_ID_CHARS_Re:/[\.,\s]/g},resizeHandles:"all",floating:!1,defaultAlign:"tl-bl?",toFrontOnShow:!0,hideMode:"display",offsetsCls:Ext.baseCSSPrefix+"hide-offsets",bubbleEvents:[],defaultComponentLayoutType:"autocomponent",constructor:function(config){var me=this;config=config||{},config.initialConfig?(config.isAction&&(me.baseAction=config),config=config.initialConfig):(config.tagName||config.dom||Ext.isString(config))&&(config={applyTo:config,id:config.id||config}),me.callParent([config]),me.baseAction&&me.baseAction.addComponent(me)},initComponent:function(){var me=this;me.callParent(),me.listeners&&(me.on(me.listeners),me.listeners=null),me.enableBubble(me.bubbleEvents)},afterRender:function(){var me=this;me.callParent(),me.x&&me.y||!me.pageX&&!me.pageY||me.setPagePosition(me.pageX,me.pageY)},setAutoScroll:function(scroll){var me=this;return me.autoScroll=!!scroll,me.rendered&&me.getOverflowEl().setStyle(me.getOverflowStyle()),me.updateLayout(),me},setOverflowXY:function(overflowX,overflowY){var me=this,argCount=arguments.length;return argCount&&(me.overflowX=overflowX||"",argCount>1&&(me.overflowY=overflowY||"")),me.rendered&&me.getOverflowEl().setStyle(me.getOverflowStyle()),me.updateLayout(),me},beforeRender:function(){var cls,me=this,floating=me.floating;return floating&&(me.addCls(Ext.baseCSSPrefix+"layer"),(cls=floating.cls)&&me.addCls(cls)),me.callParent()},beforeLayout:function(){this.callParent(arguments),this.floating&&this.onBeforeFloatLayout()},afterComponentLayout:function(){this.callParent(arguments),this.floating&&this.onAfterFloatLayout()},makeFloating:function(dom){this.mixins.floating.constructor.call(this,dom)},wrapPrimaryEl:function(dom){this.floating?this.makeFloating(dom):this.callParent(arguments)},initResizable:function(resizable){var me=this;resizable=Ext.apply({target:me,dynamic:!1,constrainTo:me.constrainTo||(me.floatParent?me.floatParent.getTargetEl():null),handles:me.resizeHandles},resizable),resizable.target=me,me.resizer=new Ext.resizer.Resizer(resizable)},getDragEl:function(){return this.el},initDraggable:function(){var me=this,dragTarget=me.resizer&&me.resizer.el!==me.el?me.resizerComponent=new Ext.Component({ariaRole:"presentation",el:me.resizer.el,rendered:!0,container:me.container}):me,ddConfig=Ext.applyIf({el:dragTarget.getDragEl(),constrainTo:me.constrain||me.draggable.constrain?me.constrainTo||(me.floatParent?me.floatParent.getTargetEl():me.container):void 0},me.draggable);(me.constrain||me.constrainDelegate)&&(ddConfig.constrain=me.constrain,ddConfig.constrainDelegate=me.constrainDelegate),me.dd=new Ext.util.ComponentDragger(dragTarget,ddConfig)},scrollBy:function(deltaX,deltaY,animate){var el;(el=this.getTargetEl())&&el.dom&&el.scrollBy.apply(el,arguments)},setLoading:function(load,targetEl){var me=this,config={target:me};return me.rendered&&(Ext.destroy(me.loadMask),me.loadMask=null,!1===load||me.collapsed||(Ext.isObject(load)?Ext.apply(config,load):Ext.isString(load)&&(config.msg=load),targetEl&&Ext.applyIf(config,{useTargetEl:!0}),me.loadMask=new Ext.LoadMask(config),me.loadMask.show())),me.loadMask},beforeSetPosition:function(){var adj,me=this,pos=me.callParent(arguments);return pos&&(adj=me.adjustPosition(pos.x,pos.y),pos.x=adj.x,pos.y=adj.y),pos||null},afterSetPosition:function(ax,ay){this.onPosition(ax,ay),this.fireEvent("move",this,ax,ay)},showAt:function(x,y,animate){var me=this;if(!me.rendered&&(me.autoRender||me.floating))return me.x=x,me.y=y,me.show();me.floating?me.setPosition(x,y,animate):me.setPagePosition(x,y,animate),me.show()},showBy:function(cmp,pos,off){var me=this;return me.floating?(me.floating&&cmp&&(me.show(),me.rendered&&!me.hidden&&me.alignTo(cmp,pos||me.defaultAlign,off)),me):(Ext.log.warn("Using showBy on a non-floating component"),me)},setPagePosition:function(x,y,animate){var p,floatParentBox,me=this;return Ext.isArray(x)&&(y=x[1],x=x[0]),me.pageX=x,me.pageY=y,me.floating?(me.isContainedFloater()?(floatParentBox=me.floatParent.getTargetEl().getViewRegion(),Ext.isNumber(x)&&Ext.isNumber(floatParentBox.left)&&(x-=floatParentBox.left),Ext.isNumber(y)&&Ext.isNumber(floatParentBox.top)&&(y-=floatParentBox.top)):(p=me.el.translateXY(x,y),x=p.x,y=p.y),me.setPosition(x,y,animate)):(p=me.el.translateXY(x,y),me.setPosition(p.x,p.y,animate)),me},isContainedFloater:function(){return this.floating&&this.floatParent},updateBox:function(box){return this.setSize(box.width,box.height),this.setPagePosition(box.x,box.y),this},getOuterSize:function(){var el=this.el;return{width:el.getWidth()+el.getMargin("lr"),height:el.getHeight()+el.getMargin("tb")}},adjustPosition:function(x,y){var floatParentBox,me=this;return me.isContainedFloater()&&(floatParentBox=me.floatParent.getTargetEl().getViewRegion(),x+=floatParentBox.left,y+=floatParentBox.top),{x:x,y:y}},getPosition:function(local){var xy,floatParentBox,me=this,isContainedFloater=me.isContainedFloater();return!0!==local||isContainedFloater?(xy=me.getXY(),!0===local&&isContainedFloater&&(floatParentBox=me.floatParent.getTargetEl().getViewRegion(),xy[0]-=floatParentBox.left,xy[1]-=floatParentBox.top),xy):[me.getLocalX(),me.getLocalY()]},getId:function(){var xtype,me=this;return me.id||(xtype=me.getXType(),xtype=xtype?xtype.replace(Ext.Component.INVALID_ID_CHARS_Re,"-"):Ext.name.toLowerCase()+"-comp",me.id=xtype+"-"+me.getAutoId()),me.id},show:function(animateTarget,cb,scope){var me=this,rendered=me.rendered;return me.hierarchicallyHidden||me.floating&&!rendered&&me.isHierarchicallyHidden()?(rendered||me.initHierarchyEvents(),arguments.length>1?(arguments[0]=null,me.pendingShow=arguments):me.pendingShow=!0):rendered&&me.isVisible()?me.floating&&me.onFloatShow():!1!==me.fireEvent("beforeshow",me)?(me.hidden=!1,delete this.getHierarchyState().hidden,Ext.suspendLayouts(),rendered||!me.autoRender&&!me.floating||(me.doAutoRender(),rendered=me.rendered),rendered?(me.beforeShow(),Ext.resumeLayouts(),me.onShow.apply(me,arguments),me.afterShow.apply(me,arguments)):Ext.resumeLayouts(!0)):me.onShowVeto(),me},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var me=this;me.el.show(),me.callParent(arguments),me.floating&&(me.maximized?me.fitContainer():me.constrain&&me.doConstrain())},getAnimateTarget:function(target){return target=target||this.animateTarget,target&&(target=target.isComponent?target.getEl():Ext.get(target)),target||null},afterShow:function(animateTarget,cb,scope){var fromBox,toBox,ghostPanel,me=this,myEl=me.el;animateTarget=me.getAnimateTarget(animateTarget),me.ghost||(animateTarget=null),animateTarget?(toBox={x:myEl.getX(),y:myEl.getY(),width:myEl.dom.offsetWidth,height:myEl.dom.offsetHeight},fromBox={x:animateTarget.getX(),y:animateTarget.getY(),width:animateTarget.dom.offsetWidth,height:animateTarget.dom.offsetHeight},myEl.addCls(me.offsetsCls),ghostPanel=me.ghost(),ghostPanel.el.stopAnimation(),ghostPanel.setX(-1e4),me.ghostBox=toBox,ghostPanel.el.animate({from:fromBox,to:toBox,listeners:{afteranimate:function(){delete ghostPanel.componentLayout.lastComponentSize,me.unghost(),delete me.ghostBox,myEl.removeCls(me.offsetsCls),me.onShowComplete(cb,scope)}}})):me.onShowComplete(cb,scope),me.fireHierarchyEvent("show")},onShowComplete:function(cb,scope){var me=this;me.floating&&me.onFloatShow(),Ext.callback(cb,scope||me),me.fireEvent("show",me),delete me.hiddenByLayout},hide:function(animateTarget,cb,scope){var continueHide,me=this;return me.pendingShow&&delete me.pendingShow,me.rendered&&!me.isVisible()||(continueHide=!1!==me.fireEvent("beforehide",me),(me.hierarchicallyHidden||continueHide)&&(me.hidden=!0,me.getHierarchyState().hidden=!0,me.rendered&&me.onHide.apply(me,arguments))),me},onHide:function(animateTarget,cb,scope){var ghostPanel,fromSize,toBox,me=this,activeEl=Ext.Element.getActiveElement();(activeEl===me.el||me.el.contains(activeEl))&&Ext.fly(activeEl).blur(),animateTarget=me.getAnimateTarget(animateTarget),me.ghost||(animateTarget=null),animateTarget&&(toBox={x:animateTarget.getX(),y:animateTarget.getY(),width:animateTarget.dom.offsetWidth,height:animateTarget.dom.offsetHeight},ghostPanel=me.ghost(),ghostPanel.el.stopAnimation(),fromSize=me.getSize(),ghostPanel.el.animate({to:toBox,listeners:{afteranimate:function(){delete ghostPanel.componentLayout.lastComponentSize,ghostPanel.el.hide(),ghostPanel.setHiddenState(!0),ghostPanel.el.setSize(fromSize),me.afterHide(cb,scope)}}})),me.el.hide(),animateTarget||me.afterHide(cb,scope)},afterHide:function(cb,scope){var me=this;me.hiddenByLayout=null,Ext.AbstractComponent.prototype.onHide.call(me),Ext.callback(cb,scope||me),me.fireEvent("hide",me),me.fireHierarchyEvent("hide")},onDestroy:function(){var me=this;me.rendered&&Ext.destroy(me.dd,me.resizer,me.proxy,me.proxyWrap,me.resizerComponent),delete me.focusTask,me.callParent()},deleteMembers:function(){for(var args=arguments,len=args.length,i=0;i<len;++i)delete this[args[i]]},focus:function(selectText,delay,callback,scope){var focusEl,focusElDom,containerScrollTop,me=this;if(delay)return me.getFocusTask().delay(Ext.isNumber(delay)?delay:10,me.focus,me,[selectText,!1,callback,scope]),me;if(me.focusTask&&me.focusTask.cancel(),me.rendered&&!me.isDestroyed&&me.isVisible(!0)&&(focusEl=me.getFocusEl())){if(focusEl.isComponent)return focusEl.focus(selectText,delay);(focusElDom=focusEl.dom)&&(focusEl.needsTabIndex()&&(focusElDom.tabIndex=-1),me.floating&&(containerScrollTop=me.container.dom.scrollTop),focusEl.focus(),selectText&&(Ext.isArray(selectText)?me.selectText&&me.selectText.apply(me,selectText):focusElDom.select()),Ext.callback(callback,scope)),me.floating&&(me!==me.zIndexManager.getActive()&&me.toFront(!0),void 0!==containerScrollTop&&(me.container.dom.scrollTop=containerScrollTop))}return me},getFocusTask:function(){return this.focusTask||(Ext.Component.prototype.focusTask=new Ext.util.DelayedTask),this.focusTask},cancelFocus:function(){var task=this.focusTask;task&&task.cancel()},blur:function(){var focusEl,me=this;return me.rendered&&(focusEl=me.getFocusEl())&&(me.blurring=!0,focusEl.blur(),delete me.blurring),me},getEl:function(){return this.el},getResizeEl:function(){return this.el},getPositionEl:function(){return this.el},getActionEl:function(){return this.el},getVisibilityEl:function(){return this.el},getRefOwner:function(){return this.ownerCt||this.floatParent},getBubbleTarget:function(){return this.getRefOwner()},getContentTarget:function(){return this.el},cloneConfig:function(overrides){overrides=overrides||{};var id=overrides.id||Ext.id(),cfg=Ext.applyIf(overrides,this.initialConfig);return cfg.id=id,new(Ext.getClass(this))(cfg)},getXType:function(){return this.self.xtype},findParentBy:function(fn){var p;for(p=this.getBubbleTarget();p&&!fn(p,this);p=p.getBubbleTarget());return p||null},findParentByType:function(xtype){return Ext.isFunction(xtype)?this.findParentBy(function(p){return p.constructor===xtype}):this.up(xtype)},bubble:function(fn,scope,args){for(var p=this;p&&!1!==fn.apply(scope||p,args||[p]);)p=p.getBubbleTarget();return this},getProxy:function(){var target,me=this;return me.proxy||(target=Ext.getBody(),me.proxy=me.el.createProxy(Ext.baseCSSPrefix+"proxy-el",target,!0)),me.proxy},fireHierarchyEvent:function(ename){this.hierarchyEventSource.fireEvent(ename,this)},onAdded:function(){this.callParent(arguments),this.hierarchyEventSource.hasListeners.added&&this.fireHierarchyEvent("added")}},function(){this.hierarchyEventSource=this.prototype.hierarchyEventSource=new Ext.util.Observable({events:{hide:!0,show:!0,collapse:!0,expand:!0,added:!0}})});Ext.define("Ext.layout.container.border.Region",{override:"Ext.Component",initBorderRegion:function(){var me=this;me._borderRegionInited||(me._borderRegionInited=!0,me.addStateEvents(["changeregion","changeweight"]),Ext.override(me,{getState:function(){var state=me.callParent();return state=me.addPropertyToState(state,"region"),state=me.addPropertyToState(state,"weight")}}))},getOwningBorderContainer:function(){var layout=this.getOwningBorderLayout();return layout&&layout.owner},getOwningBorderLayout:function(){var layout=this.ownerLayout;return layout&&layout.isBorderLayout?layout:null},setBorderRegion:function(region){var borderLayout,me=this,old=me.region;if(region!==old)if(borderLayout=me.getOwningBorderLayout()){var delta,items,index,regionFlags=borderLayout.regionFlags[region],placeholder=me.placeholder,splitter=me.splitter,owner=borderLayout.owner,regionMeta=borderLayout.regionMeta,collapsed=me.collapsed||me.floated;if(!1===me.fireEventArgs("beforechangeregion",[me,region]))return old;Ext.suspendLayouts(),me.region=region,Ext.apply(me,regionFlags),me.updateCollapseTool&&me.updateCollapseTool(),splitter&&(Ext.apply(splitter,regionFlags),splitter.updateOrientation(),items=owner.items,(index=items.indexOf(me))>=0&&(delta=regionMeta[region].splitterDelta,items.getAt(index+delta)!==splitter&&(items.remove(splitter),index=items.indexOf(me),delta>0&&++index,items.insert(index,splitter)))),placeholder&&(collapsed&&me.expand(!1),owner.remove(placeholder),me.placeholder=null,collapsed&&me.collapse(null,!1)),owner.updateLayout(),Ext.resumeLayouts(!0),me.fireEventArgs("changeregion",[me,old])}else me.region=region;return old},setRegionWeight:function(weight){var me=this,ownerCt=me.getOwningBorderContainer(),placeholder=me.placeholder,old=me.weight;return weight!==old&&!1!==me.fireEventArgs("beforechangeweight",[me,weight])&&(me.weight=weight,placeholder&&(placeholder.weight=weight),ownerCt&&ownerCt.updateLayout(),me.fireEventArgs("changeweight",[me,old])),old}});Ext.define("Ext.ElementLoader",{mixins:{observable:"Ext.util.Observable"},uses:["Ext.data.Connection","Ext.Ajax"],statics:{Renderer:{Html:function(loader,response,active){return loader.getTarget().update(response.responseText,!0===active.scripts),!0}}},url:null,params:null,baseParams:null,autoLoad:!1,target:null,loadMask:!1,ajaxOptions:null,scripts:!1,isLoader:!0,constructor:function(config){var autoLoad,me=this;config=config||{},Ext.apply(me,config),me.setTarget(me.target),me.addEvents("beforeload","exception","load"),me.mixins.observable.constructor.call(me),me.autoLoad&&(autoLoad=me.autoLoad,!0===autoLoad&&(autoLoad={}),me.load(autoLoad))},setTarget:function(target){var me=this;target=Ext.get(target),me.target&&me.target!=target&&me.abort(),me.target=target},getTarget:function(){return this.target||null},abort:function(){var active=this.active;void 0!==active&&(Ext.Ajax.abort(active.request),active.mask&&this.removeMask(),delete this.active)},removeMask:function(){this.target.unmask()},addMask:function(mask){this.target.mask(!0===mask?null:mask)},load:function(options){this.target||Ext.Error.raise("A valid target is required when loading content"),options=Ext.apply({},options);var me=this,mask=Ext.isDefined(options.loadMask)?options.loadMask:me.loadMask,params=Ext.apply({},options.params),ajaxOptions=Ext.apply({},options.ajaxOptions),callback=options.callback||me.callback,scope=options.scope||me.scope||me;Ext.applyIf(ajaxOptions,me.ajaxOptions),Ext.applyIf(options,ajaxOptions),Ext.applyIf(params,me.params),Ext.apply(params,me.baseParams),Ext.applyIf(options,{url:me.url}),options.url||Ext.Error.raise("You must specify the URL from which content should be loaded"),Ext.apply(options,{scope:me,params:params,callback:me.onComplete}),!1!==me.fireEvent("beforeload",me,options)&&(mask&&me.addMask(mask),me.active={options:options,mask:mask,scope:scope,callback:callback,success:options.success||me.success,failure:options.failure||me.failure,renderer:options.renderer||me.renderer,scripts:Ext.isDefined(options.scripts)?options.scripts:me.scripts},me.active.request=Ext.Ajax.request(options),me.setOptions(me.active,options))},setOptions:Ext.emptyFn,onComplete:function(options,success,response){var scope,me=this,active=me.active;active&&(scope=active.scope,success&&(success=!1!==me.getRenderer(active.renderer).call(me,me,response,active)),success?(Ext.callback(active.success,scope,[me,response,options]),me.fireEvent("load",me,response,options)):(Ext.callback(active.failure,scope,[me,response,options]),me.fireEvent("exception",me,response,options)),Ext.callback(active.callback,scope,[me,success,response,options]),active.mask&&me.removeMask()),delete me.active},getRenderer:function(renderer){return Ext.isFunction(renderer)?renderer:this.statics().Renderer.Html},startAutoRefresh:function(interval,options){var me=this;me.stopAutoRefresh(),me.autoRefresh=setInterval(function(){me.load(options)},interval)},stopAutoRefresh:function(){clearInterval(this.autoRefresh),delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var me=this;me.stopAutoRefresh(),delete me.target,me.abort(),me.clearListeners()}});Ext.define("Ext.ComponentLoader",{extend:"Ext.ElementLoader",statics:{Renderer:{Data:function(loader,response,active){var success=!0;try{loader.getTarget().update(Ext.decode(response.responseText))}catch(e){success=!1}return success},Component:function(loader,response,active){var success=!0,target=loader.getTarget(),items=[];target.isContainer||Ext.Error.raise({target:target,msg:"Components can only be loaded into a container"});try{items=Ext.decode(response.responseText)}catch(e){success=!1}return success&&(target.suspendLayouts(),active.removeAll&&target.removeAll(),target.add(items),target.resumeLayouts(!0)),success}}},target:null,loadMask:!1,renderer:"html",setTarget:function(target){var me=this;Ext.isString(target)&&(target=Ext.getCmp(target)),me.target&&me.target!=target&&me.abort(),me.target=target},removeMask:function(){this.target.setLoading(!1)},addMask:function(mask){this.target.setLoading(mask)},setOptions:function(active,options){active.removeAll=Ext.isDefined(options.removeAll)?options.removeAll:this.removeAll},getRenderer:function(renderer){if(Ext.isFunction(renderer))return renderer;var renderers=this.statics().Renderer;switch(renderer){case"component":return renderers.Component;case"data":return renderers.Data;default:return Ext.ElementLoader.Renderer.Html}}});Ext.define("Ext.layout.SizeModel",{constructor:function(config){var name,me=this,SizeModel=me.self,sizeModelsArray=SizeModel.sizeModelsArray;Ext.apply(me,config),me[name=me.name]=!0,me.fixed=!(me.auto=me.natural||me.shrinkWrap),sizeModelsArray[me.ordinal=sizeModelsArray.length]=SizeModel[name]=SizeModel.sizeModels[name]=me},statics:{sizeModelsArray:[],sizeModels:{}},calculated:!1,configured:!1,constrainedMax:!1,constrainedMin:!1,natural:!1,shrinkWrap:!1,calculatedFromConfigured:!1,calculatedFromNatural:!1,calculatedFromShrinkWrap:!1,names:null},function(){var i,j,n,pairs,sizeModel,SizeModel=this,sizeModelsArray=SizeModel.sizeModelsArray;for(new SizeModel({name:"calculated"}),new SizeModel({name:"configured",names:{width:"width",height:"height"}}),new SizeModel({name:"natural"}),new SizeModel({name:"shrinkWrap"}),new SizeModel({name:"calculatedFromConfigured",configured:!0,names:{width:"width",height:"height"}}),new SizeModel({name:"calculatedFromNatural",natural:!0}),new SizeModel({name:"calculatedFromShrinkWrap",shrinkWrap:!0}),new SizeModel({name:"constrainedMax",configured:!0,constrained:!0,names:{width:"maxWidth",height:"maxHeight"}}),new SizeModel({name:"constrainedMin",configured:!0,constrained:!0,names:{width:"minWidth",height:"minHeight"}}),new SizeModel({name:"constrainedDock",configured:!0,constrained:!0,constrainedByMin:!0,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}}),i=0,n=sizeModelsArray.length;i<n;++i)for(sizeModel=sizeModelsArray[i],sizeModel.pairsByHeightOrdinal=pairs=[],j=0;j<n;++j)pairs.push({width:sizeModel,height:sizeModelsArray[j]})});Ext.define("Ext.layout.Layout",{requires:["Ext.XTemplate","Ext.layout.SizeModel"],uses:["Ext.layout.Context"],isLayout:!0,initialized:!1,running:!1,autoSizePolicy:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},statics:{layoutsByType:{},create:function(layout,defaultType){var alias,className,config,layoutClass,type,load,ClassManager=Ext.ClassManager,layoutsByType=this.layoutsByType;if(layout&&"string"!=typeof layout){if(layout.isLayout)return layout;config=layout,type=layout.type||defaultType}else type=layout||defaultType,config={};if(!(layoutClass=layoutsByType[type])){if(alias="layout."+type,className=ClassManager.getNameByAlias(alias),className||(load=!0),layoutClass=ClassManager.get(className),load||!layoutClass)return ClassManager.instantiateByAlias(alias,config||{});layoutsByType[type]=layoutClass}return new layoutClass(config)}},constructor:function(config){var me=this;me.id=Ext.id(null,me.type+"-"),Ext.apply(me,config),me.layoutCount=0},beginLayout:Ext.emptyFn,beginLayoutCycle:function(ownerContext){var changed,me=this,context=me.context;me.lastWidthModel!=ownerContext.widthModel&&(me.lastWidthModel&&(changed=!0),me.lastWidthModel=ownerContext.widthModel),me.lastHeightModel!=ownerContext.heightModel&&(me.lastWidthModel&&(changed=!0),me.lastHeightModel=ownerContext.heightModel),changed&&((context=ownerContext.context).clearTriggers(me,!1),context.clearTriggers(me,!0),me.triggerCount=0)},finishedLayout:function(ownerContext){this.lastWidthModel=ownerContext.widthModel,this.lastHeightModel=ownerContext.heightModel,this.ownerContext=null},redoLayout:Ext.emptyFn,undoLayout:Ext.emptyFn,getAnimatePolicy:function(){return this.animatePolicy},getItemSizePolicy:function(item){return this.autoSizePolicy},isItemBoxParent:function(itemContext){return!1},isItemLayoutRoot:function(item){var sizeModel=item.getSizeModel(),width=sizeModel.width,height=sizeModel.height;return!(!item.componentLayout.lastComponentSize&&(width.calculated||height.calculated))&&(!width.shrinkWrap&&!height.shrinkWrap)},isItemShrinkWrap:function(item){return item.shrinkWrap},isRunning:function(){return!!this.ownerContext},getItemsRenderTree:function(items,renderCfgs){var i,item,itemConfig,result,length=items.length;if(length)for(result=[],i=0;i<length;++i)item=items[i],item.rendered||(renderCfgs&&void 0!==renderCfgs[item.id]?itemConfig=renderCfgs[item.id]:(this.configureItem(item),itemConfig=item.getRenderTree(),renderCfgs&&(renderCfgs[item.id]=itemConfig)),itemConfig&&result.push(itemConfig));return result},finishRender:Ext.emptyFn,finishRenderItems:function(target,items){var i,item,length=items.length;for(i=0;i<length;i++)item=items[i],item.rendering&&(item.finishRender(i),this.afterRenderItem(item))},renderChildren:function(){var me=this,items=me.getLayoutItems(),target=me.getRenderTarget();me.renderItems(items,target)},renderItems:function(items,target){var item,me=this,ln=items.length,i=0;if(ln){for(Ext.suspendLayouts();i<ln;i++)item=items[i],item&&!item.rendered?me.renderItem(item,target,i):me.isValidParent(item,target,i)?me.configureItem(item):me.moveItem(item,target,i);Ext.resumeLayouts(!0)}},isValidParent:function(item,target,position){var className,itemDom=item.el?item.el.dom:Ext.getDom(item),targetDom=target&&target.dom||target,parentNode=itemDom.parentNode;return parentNode&&(className=parentNode.className)&&-1!==className.indexOf(Ext.baseCSSPrefix+"resizable-wrap")&&(itemDom=itemDom.parentNode),!(!itemDom||!targetDom)&&("number"==typeof position?(position=this.getPositionOffset(position),itemDom===targetDom.childNodes[position]):itemDom.parentNode===targetDom)},getPositionOffset:function(position){return position},configureItem:function(item){item.ownerLayout=this},renderItem:function(item,target,position){var me=this;item.rendered||(me.configureItem(item),item.render(target,position),me.afterRenderItem(item))},moveItem:function(item,target,position){target=target.dom||target,"number"==typeof position&&(position=target.childNodes[position]),target.insertBefore(item.el.dom,position||null),item.container=Ext.get(target),this.configureItem(item)},onContentChange:function(){return this.owner.updateLayout(),!0},initLayout:function(){this.initialized=!0},setOwner:function(owner){this.owner=owner},getLayoutItems:function(){return[]},onAdd:function(item){item.ownerLayout=this},afterRenderItem:Ext.emptyFn,onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,afterRemove:function(item){var removeClasses,me=this,el=item.el,owner=me.owner;item.rendered&&(removeClasses=[].concat(me.itemCls||[]),owner.itemCls&&(removeClasses=Ext.Array.push(removeClasses,owner.itemCls)),removeClasses.length&&el.removeCls(removeClasses)),delete item.ownerLayout},destroy:function(){var target,me=this;me.targetCls&&(target=me.getTarget())&&target.removeCls(me.targetCls),me.onDestroy()},sortWeightedItems:function(items,reverseProp){for(var i=0,length=items.length;i<length;++i)items[i].$i=i;for(Ext.Array.sort(items,function(item1,item2){var ret=item2.weight-item1.weight;return ret||(ret=item1.$i-item2.$i,item1[reverseProp]&&(ret=-ret)),ret}),i=0;i<length;++i)delete items[i].$i}},function(){var Layout=this;Layout.prototype.sizeModels=Layout.sizeModels=Ext.layout.SizeModel.sizeModels});Ext.define("Ext.layout.container.Container",{alias:["layout.container"],extend:"Ext.layout.Layout",alternateClassName:"Ext.layout.ContainerLayout",mixins:{elementCt:"Ext.util.ElementContainer"},requires:["Ext.XTemplate"],type:"container",beginCollapse:Ext.emptyFn,beginExpand:Ext.emptyFn,animatePolicy:null,childEls:["overflowPadderEl"],renderTpl:["{%this.renderBody(out,values)%}"],usesContainerHeight:!0,usesContainerWidth:!0,usesHeight:!0,usesWidth:!0,constructor:function(){this.callParent(arguments),this.mixins.elementCt.constructor.call(this)},destroy:function(){this.callParent(),this.mixins.elementCt.destroy.call(this)},beginLayout:function(ownerContext){this.callParent(arguments),ownerContext.targetContext=ownerContext.paddingContext=ownerContext.getEl("getTarget",this),this.cacheChildItems(ownerContext)},beginLayoutCycle:function(ownerContext,firstCycle){var me=this;me.callParent(arguments),firstCycle&&(me.usesContainerHeight&&++ownerContext.consumersContainerHeight,me.usesContainerWidth&&++ownerContext.consumersContainerWidth)},cacheChildItems:function(ownerContext){var i,context=ownerContext.context,childItems=[],items=this.getVisibleItems(),length=items.length;for(ownerContext.childItems=childItems,ownerContext.visibleItems=items,i=0;i<length;++i)childItems.push(context.getCmp(items[i]))},cacheElements:function(){var owner=this.owner;this.applyChildEls(owner.el,owner.id)},configureItem:function(item){var addClasses,me=this,itemCls=me.itemCls,ownerItemCls=me.owner.itemCls;item.ownerLayout=me,itemCls&&(addClasses="string"==typeof itemCls?[itemCls]:itemCls),ownerItemCls&&(addClasses=Ext.Array.push(addClasses||[],ownerItemCls)),addClasses&&item.addCls(addClasses)},doRenderBody:function(out,renderData){this.renderItems(out,renderData),this.renderContent(out,renderData)},doRenderContainer:function(out,renderData){var me=renderData.$comp.layout,tpl=me.getRenderTpl(),data=me.getRenderData();tpl.applyOut(data,out)},doRenderItems:function(out,renderData){var me=renderData.$layout,tree=me.getRenderTree();tree&&Ext.DomHelper.generateMarkup(tree,out)},finishRender:function(){var target,items,me=this;me.callParent(),me.cacheElements(),target=me.getRenderTarget(),items=me.getLayoutItems(),me.targetCls&&!me.getTarget().hasCls(me.targetCls)&&Ext.log.warn("targetCls is missing. This may mean that getTargetEl() is being overridden but not applyTargetCls(). "+me.owner.id),me.finishRenderItems(target,items)},notifyOwner:function(){this.owner.afterLayout(this)},getContainerSize:function(ownerContext,inDom){var gotWidth,gotHeight,width,height,targetContext=ownerContext.targetContext,frameInfo=targetContext.getFrameInfo(),padding=ownerContext.paddingContext.getPaddingInfo(),got=0,needed=0;return ownerContext.widthModel.shrinkWrap||(++needed,width=inDom?targetContext.getDomProp("width"):targetContext.getProp("width"),(gotWidth="number"==typeof width)&&(++got,(width-=frameInfo.width+padding.width)<0&&(width=0))),ownerContext.heightModel.shrinkWrap||(++needed,height=inDom?targetContext.getDomProp("height"):targetContext.getProp("height"),(gotHeight="number"==typeof height)&&(++got,(height-=frameInfo.height+padding.height)<0&&(height=0))),{width:width,height:height,needed:needed,got:got,gotAll:got==needed,gotWidth:gotWidth,gotHeight:gotHeight}},getPositionOffset:function(position){if(!this.createsInnerCt){var offset=this.owner.itemNodeOffset;offset&&(position+=offset)}return position},getLayoutItems:function(){var owner=this.owner,items=owner&&owner.items;return items&&items.items||[]},getRenderData:function(){var comp=this.owner;return{$comp:comp,$layout:this,ownerId:comp.id}},getRenderedItems:function(){var i,item,me=this,target=me.getRenderTarget(),items=me.getLayoutItems(),ln=items.length,renderedItems=[];for(i=0;i<ln;i++)item=items[i],item.rendered&&me.isValidParent(item,target,i)&&renderedItems.push(item);return renderedItems},getRenderTarget:function(){return this.owner.getTargetEl()},getElementTarget:function(){return this.getRenderTarget()},getRenderTpl:function(){var me=this,renderTpl=Ext.XTemplate.getTpl(this,"renderTpl");return renderTpl.renderContent||me.owner.setupRenderTpl(renderTpl),renderTpl},getRenderTree:function(){var result,itemsGen,items=this.owner.items,renderCfgs={};do{itemsGen=items.generation,result=this.getItemsRenderTree(this.getLayoutItems(),renderCfgs)}while(items.generation!==itemsGen);return result},renderChildren:function(){var itemsGen,items,me=this,ownerItems=me.owner.items,target=me.getRenderTarget();do{itemsGen=ownerItems.generation,items=me.getLayoutItems(),me.renderItems(items,target)}while(ownerItems.generation!==itemsGen)},getScrollbarsNeeded:function(width,height,contentWidth,contentHeight){var scrollbarSize=Ext.getScrollbarSize(),hasWidth="number"==typeof width,hasHeight="number"==typeof height,needHorz=0,needVert=0;return scrollbarSize.width?(hasHeight&&height<contentHeight&&(needVert=2,width-=scrollbarSize.width),hasWidth&&width<contentWidth&&(needHorz=1,!needVert&&hasHeight&&(height-=scrollbarSize.height)<contentHeight&&(needVert=2)),needVert+needHorz):0},getTarget:function(){return this.owner.getTargetEl()},getVisibleItems:function(){var i,item,target=this.getRenderTarget(),items=this.getLayoutItems(),ln=items.length,visibleItems=[];for(i=0;i<ln;i++)item=items[i],item.rendered&&this.isValidParent(item,target,i)&&!0!==item.hidden&&visibleItems.push(item);return visibleItems},setupRenderTpl:function(renderTpl){var me=this;renderTpl.renderBody=me.doRenderBody,renderTpl.renderContainer=me.doRenderContainer,renderTpl.renderItems=me.doRenderItems},getContentTarget:function(){return this.owner.getDefaultContentTarget()}});Ext.define("Ext.layout.container.Auto",{alias:["layout.auto","layout.autocontainer"],extend:"Ext.layout.container.Container",type:"autocontainer",childEls:["outerCt","innerCt","clearEl"],reserveScrollbar:!1,managePadding:!0,manageOverflow:!1,lastOverflowAdjust:{width:0,height:0},renderTpl:["{% if (!(Ext.isIEQuirks || Ext.isIE7m)) { %}",'<span id="{ownerId}-outerCt" style="display:table;" role="presentation">','<div id="{ownerId}-innerCt" style="display:table-cell;height:100%;','vertical-align:top;{%this.renderPadding(out, values)%}" class="{innerCtCls}" role="presentation">',"{%this.renderBody(out,values)%}","</div>","</span>","{% } else if (values.shrinkWrapWidth) { %}",'<table id="{ownerId}-outerCt" class="'+Ext.plainTableCls+'" role="presentation">','<tbody role="presentation">','<tr role="presentation">','<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}" role="presentation">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</td>","</tr>","</tbody>","</table>","{% } else { %}",'<div id="{ownerId}-outerCt" style="zoom:1;{%this.renderPadding(out, values)%}" role="presentation">','<div id="{ownerId}-innerCt" style="zoom:1;height:100%;" class="{innerCtCls}" role="presentation">',"{%this.renderBody(out,values)%}",'<div id="{ownerId}-clearEl" class="',Ext.baseCSSPrefix,'clear"','role="presentation"></div>',"</div>","</div>","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['<table id="{ownerId}-outerCt" class="'+Ext.plainTableCls+'" role="presentation">','<tbody role="presentation">','<tr role="presentation">','<td id="{ownerId}-innerCt" style="vertical-align:top;padding:0;','{%this.renderPadding(out, values)%}" class="{innerCtCls}" role="presentation">',"</td>","</tr>","</tbody>","</table>"],isShrinkWrapTpl:!0,beginLayout:function(ownerContext){var bottomPadding,overflowYStyle,overflowXStyle,needsTable,me=this;me.callParent(arguments),me.initContextItems(ownerContext),me.isShrinkWrapTpl||(ownerContext.widthModel.shrinkWrap&&(needsTable=!0),Ext.isStrict&&Ext.isIE7&&("auto"!==(overflowXStyle=me.getOverflowXStyle(ownerContext))&&"scroll"!==overflowXStyle||!ownerContext.paddingContext.getPaddingInfo().right||(needsTable=!0)),needsTable&&me.insertTableCt(ownerContext)),!me.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!me.clearElHasPadding&&(bottomPadding=ownerContext.paddingContext.getPaddingInfo().bottom,overflowYStyle=me.getOverflowYStyle(ownerContext),!bottomPadding||"auto"!==overflowYStyle&&"scroll"!==overflowYStyle||(me.clearEl.setStyle("height",bottomPadding),me.clearElHasPadding=!0))},beforeLayoutCycle:function(ownerContext){var comp=this.owner,hierarchyState=comp.hierarchyState,hierarchyStateInner=comp.hierarchyStateInner;hierarchyState&&!hierarchyState.invalid||(hierarchyState=comp.getHierarchyState(),hierarchyStateInner=comp.hierarchyStateInner),ownerContext.widthModel.shrinkWrap&&this.isShrinkWrapTpl?hierarchyStateInner.inShrinkWrapTable=!0:delete hierarchyStateInner.inShrinkWrapTable},beginLayoutCycle:function(ownerContext){var overflowXStyle,overflowYStyle,outerCtWidth,outerCtHeight,outerCtTableLayout,deferWidth,hierarchyStateInner,me=this,outerCt=me.outerCt,lastOuterCtWidth=me.lastOuterCtWidth||"",lastOuterCtHeight=me.lastOuterCtHeight||"",lastOuterCtTableLayout=me.lastOuterCtTableLayout||"",state=ownerContext.state;me.callParent(arguments),outerCtWidth=outerCtHeight=outerCtTableLayout="",!ownerContext.widthModel.shrinkWrap&&me.isShrinkWrapTpl&&(Ext.isIE7m&&Ext.isStrict&&("auto"!==(overflowYStyle=me.getOverflowYStyle(ownerContext))&&"scroll"!==overflowYStyle||(deferWidth=!0)),deferWidth||(outerCtWidth="100%"),hierarchyStateInner=me.owner.hierarchyStateInner,overflowXStyle=me.getOverflowXStyle(ownerContext),outerCtTableLayout=hierarchyStateInner.inShrinkWrapTable||"auto"===overflowXStyle||"scroll"===overflowXStyle?"":"fixed"),ownerContext.heightModel.shrinkWrap||Ext.supports.PercentageHeightOverflowBug||(outerCtHeight="100%"),(outerCtWidth!==lastOuterCtWidth||me.hasOuterCtPxWidth)&&(outerCt.setStyle("width",outerCtWidth),me.lastOuterCtWidth=outerCtWidth,me.hasOuterCtPxWidth=!1),outerCtTableLayout!==lastOuterCtTableLayout&&(outerCt.setStyle("table-layout",outerCtTableLayout),me.lastOuterCtTableLayout=outerCtTableLayout),(outerCtHeight!==lastOuterCtHeight||me.hasOuterCtPxHeight)&&(outerCt.setStyle("height",outerCtHeight),me.lastOuterCtHeight=outerCtHeight,me.hasOuterCtPxHeight=!1),me.hasInnerCtPxHeight&&(me.innerCt.setStyle("height",""),me.hasInnerCtPxHeight=!1),state.overflowAdjust=state.overflowAdjust||me.lastOverflowAdjust},calculate:function(ownerContext){var me=this,state=ownerContext.state,containerSize=me.getContainerSize(ownerContext,!0),calculatedItems=state.calculatedItems||(state.calculatedItems=!me.calculateItems||me.calculateItems(ownerContext,containerSize));if(me.setCtSizeIfNeeded(ownerContext,containerSize),calculatedItems&&ownerContext.hasDomProp("containerChildrenSizeDone")&&(me.calculateContentSize(ownerContext),containerSize.gotAll))return void(!me.manageOverflow||ownerContext.state.secondPass||me.reserveScrollbar||me.calculateOverflow(ownerContext,containerSize));me.done=!1},calculateContentSize:function(ownerContext){var me=this,containerDimensions=(ownerContext.widthModel.shrinkWrap?1:0)|(ownerContext.heightModel.shrinkWrap?2:0),calcWidth=1&containerDimensions||void 0,calcHeight=2&containerDimensions||void 0,needed=0,props=ownerContext.props;calcWidth&&(isNaN(props.contentWidth)?++needed:calcWidth=void 0),calcHeight&&(isNaN(props.contentHeight)?++needed:calcHeight=void 0),needed&&(calcWidth&&!ownerContext.setContentWidth(me.measureContentWidth(ownerContext))&&(me.done=!1),calcHeight&&!ownerContext.setContentHeight(me.measureContentHeight(ownerContext))&&(me.done=!1))},calculateOverflow:function(ownerContext){var width,height,scrollbarSize,scrollbars,xauto,yauto,targetEl,me=this;xauto="auto"===me.getOverflowXStyle(ownerContext),yauto="auto"===me.getOverflowYStyle(ownerContext),(xauto||yauto)&&(scrollbarSize=Ext.getScrollbarSize(),targetEl=ownerContext.overflowContext.el.dom,scrollbars=0,targetEl.scrollWidth>targetEl.clientWidth&&(scrollbars|=1),targetEl.scrollHeight>targetEl.clientHeight&&(scrollbars|=2),width=yauto&&2&scrollbars?scrollbarSize.width:0,height=xauto&&1&scrollbars?scrollbarSize.height:0,width===me.lastOverflowAdjust.width&&height===me.lastOverflowAdjust.height||(me.done=!1,ownerContext.invalidate({state:{overflowAdjust:{width:width,height:height},overflowState:scrollbars,secondPass:!0}})))},completeLayout:function(ownerContext){this.lastOverflowAdjust=ownerContext.state.overflowAdjust},doRenderPadding:function(out,renderData){var me=renderData.$layout,owner=renderData.$layout.owner,padding=owner[owner.contentPaddingProperty];me.managePadding&&padding&&out.push("padding:",owner.unitizeBox(padding))},finishedLayout:function(ownerContext){var innerCt=this.innerCt;this.callParent(arguments),(Ext.isIEQuirks||Ext.isIE8m)&&innerCt.repaint(),Ext.isOpera&&(innerCt.setStyle("position","relative"),innerCt.dom.scrollWidth,innerCt.setStyle("position",""))},getContainerSize:function(ownerContext,inDom){var size=this.callParent(arguments),overflowAdjust=ownerContext.state.overflowAdjust;return overflowAdjust&&(size.width-=overflowAdjust.width,size.height-=overflowAdjust.height),size},getRenderData:function(){var owner=this.owner,data=this.callParent();return(Ext.isIEQuirks||Ext.isIE7m)&&(1&owner.shrinkWrap||owner.floating&&!owner.width)&&(data.shrinkWrapWidth=!0),data},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(ownerContext){return ownerContext.overflowXStyle||(ownerContext.overflowXStyle=this.owner.scrollFlags.overflowX||ownerContext.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(ownerContext){return ownerContext.overflowYStyle||(ownerContext.overflowYStyle=this.owner.scrollFlags.overflowY||ownerContext.overflowContext.getStyle("overflow-y"))},initContextItems:function(ownerContext){var me=this,target=ownerContext.target,customOverflowEl=me.owner.customOverflowEl;ownerContext.outerCtContext=ownerContext.getEl("outerCt",me),ownerContext.innerCtContext=ownerContext.getEl("innerCt",me),ownerContext.overflowContext=customOverflowEl?ownerContext.getEl(customOverflowEl):ownerContext.targetContext,void 0!==target[target.contentPaddingProperty]&&(ownerContext.paddingContext=me.isShrinkWrapTpl?ownerContext.innerCtContext:ownerContext.outerCtContext)},initLayout:function(){var me=this,scrollbarWidth=Ext.getScrollbarSize().width,owner=me.owner;me.callParent(),scrollbarWidth&&me.manageOverflow&&!me.hasOwnProperty("lastOverflowAdjust")&&(owner.autoScroll||me.reserveScrollbar)&&(me.lastOverflowAdjust={width:scrollbarWidth,height:0})},insertTableCt:function(ownerContext){var renderTpl,fragment,childNodes,childLength,targetEl,me=this,owner=me.owner,i=0;for(renderTpl=Ext.XTemplate.getTpl(this,"tableTpl"),renderTpl.renderPadding=me.doRenderPadding,me.outerCt.dom.removeChild(me.innerCt.dom),fragment=document.createDocumentFragment(),childNodes=me.innerCt.dom.childNodes,childLength=childNodes.length;i<childLength;i++)fragment.appendChild(childNodes[0]);targetEl=me.getTarget(),targetEl.dom.innerHTML=renderTpl.apply({$layout:me,ownerId:me.owner.id}),targetEl.down("td").dom.appendChild(fragment),me.applyChildEls(owner.el,owner.id),me.isShrinkWrapTpl=!0,ownerContext.removeEl(me.outerCt),ownerContext.removeEl(me.innerCt),me.initContextItems(ownerContext)},measureContentHeight:function(ownerContext){var contentHeight=this.outerCt.getHeight(),target=ownerContext.target;return this.managePadding&&void 0===target[target.contentPaddingProperty]&&(contentHeight+=ownerContext.targetContext.getPaddingInfo().height),contentHeight},measureContentWidth:function(ownerContext){var dom,style,old,contentWidth,target;return this.chromeCellMeasureBug&&(dom=this.innerCt.dom,style=dom.style,"table-cell"==(old=style.display)&&(style.display="",dom.offsetWidth,style.display=old)),contentWidth=this.outerCt.getWidth(),target=ownerContext.target,this.managePadding&&void 0===target[target.contentPaddingProperty]&&(contentWidth+=ownerContext.targetContext.getPaddingInfo().width),contentWidth},setCtSizeIfNeeded:function(ownerContext,containerSize){var overflowStyleName,needsOuterHeight,needsInnerHeight,needsInnerCtPaddingHeight,me=this,width=containerSize.width,height=containerSize.height,padding=ownerContext.paddingContext.getPaddingInfo(),targetEl=me.getTarget(),overflowXStyle=me.getOverflowXStyle(ownerContext),overflowYStyle=me.getOverflowYStyle(ownerContext),canOverflowX="auto"===overflowXStyle||"scroll"===overflowXStyle,canOverflowY="auto"===overflowYStyle||"scroll"===overflowYStyle,scrollbarSize=Ext.getScrollbarSize(),isShrinkWrapTpl=me.isShrinkWrapTpl,manageOverflow=me.manageOverflow;width&&!ownerContext.widthModel.shrinkWrap&&(Ext.isIE7m&&Ext.isStrict&&isShrinkWrapTpl&&canOverflowY||Ext.isIEQuirks&&!isShrinkWrapTpl&&!canOverflowX)&&(manageOverflow||canOverflowY&&targetEl.dom.scrollHeight>targetEl.dom.clientHeight&&(width-=scrollbarSize.width),ownerContext.outerCtContext.setProp("width",width+padding.width),me.hasOuterCtPxWidth=!0),height&&!ownerContext.heightModel.shrinkWrap&&(Ext.supports.PercentageHeightOverflowBug&&(needsOuterHeight=!0),(Ext.isIE8&&Ext.isStrict||Ext.isIE7m&&Ext.isStrict&&isShrinkWrapTpl)&&(needsInnerHeight=!0,needsInnerCtPaddingHeight=!Ext.isIE8),(needsOuterHeight||needsInnerHeight)&&canOverflowX&&targetEl.dom.scrollWidth>targetEl.dom.clientWidth&&(height=Math.max(height-scrollbarSize.height,0)),needsOuterHeight&&(ownerContext.outerCtContext.setProp("height",height+padding.height),me.hasOuterCtPxHeight=!0),needsInnerHeight&&(needsInnerCtPaddingHeight&&(height+=padding.height),ownerContext.innerCtContext.setProp("height",height),me.hasInnerCtPxHeight=!0)),Ext.isIE7&&Ext.isStrict&&!isShrinkWrapTpl&&"auto"===overflowYStyle&&(overflowStyleName="auto"===overflowXStyle?"overflow-x":"overflow-y",targetEl.setStyle(overflowStyleName,"hidden"),targetEl.setStyle(overflowStyleName,"auto"))},setupRenderTpl:function(renderTpl){this.callParent(arguments),renderTpl.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26});Ext.define("Ext.ZIndexManager",{alternateClassName:"Ext.WindowGroup",statics:{zBase:9e3},constructor:function(container){var me=this;me.map={},me.zIndexStack=[],me.front=null,container?container.isContainer?(container.on("resize",me._onContainerResize,me),me.zseed=Ext.Number.from(me.rendered?container.getEl().getStyle("zIndex"):void 0,me.getNextZSeed()),me.targetEl=container.getTargetEl(),me.container=container):(Ext.EventManager.onWindowResize(me._onContainerResize,me),me.zseed=me.getNextZSeed(),me.targetEl=Ext.get(container)):(Ext.EventManager.onWindowResize(me._onContainerResize,me),me.zseed=me.getNextZSeed(),Ext.onDocumentReady(function(){me.targetEl=Ext.getBody()}))},getNextZSeed:function(){return Ext.ZIndexManager.zBase+=1e4},setBase:function(baseZIndex){this.zseed=baseZIndex;var result=this.assignZIndices();return this._activateLast(),result},assignZIndices:function(){for(var comp,topModal,a=this.zIndexStack,len=a.length,i=0,zIndex=this.zseed;i<len;i++)(comp=a[i])&&!comp.hidden&&(zIndex=comp.setZIndex(zIndex),comp.modal&&(topModal=comp));return topModal&&this._showModalMask(topModal),zIndex},_setActiveChild:function(comp,oldFront){var front=this.front,oldPreventFocus=comp.preventFocusOnActivate;comp!==front&&(front&&!front.destroying&&front.setActive(!1,comp),this.front=comp,comp&&comp!=oldFront&&(comp.preventFocusOnActivate=comp.preventFocusOnActivate||oldFront&&(oldFront.preventFocusOnActivate||!oldFront.focusOnToFront),comp.setActive(!0),comp.modal&&this._showModalMask(comp),comp.preventFocusOnActivate=oldPreventFocus))},onComponentHide:function(comp){this._activateLast()},_activateLast:function(){for(var comp,me=this,stack=me.zIndexStack,i=stack.length-1;i>=0&&stack[i].hidden;--i);if(comp=stack[i]){if(me._setActiveChild(comp,me.front),comp.modal)return}else me.front&&!me.front.destroying&&me.front.setActive(!1),me.front=null;for(;i>=0;--i)if(comp=stack[i],comp.isVisible()&&comp.modal)return void me._showModalMask(comp);me._hideModalMask()},_showModalMask:function(comp){var viewSize,me=this,zIndex=comp.el.getStyle("zIndex")-4,maskTarget=comp.floatParent?comp.floatParent.getTargetEl():comp.container,mask=me.mask,shim=me.maskShim;mask||(Ext.isIE6&&(shim=me.maskShim=Ext.getBody().createChild({"data-sticky":!0,tag:"iframe",role:"presentation",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"}),shim.setVisibilityMode(Ext.Element.DISPLAY)),mask=me.mask=Ext.getBody().createChild({"data-sticky":!0,role:"presentation",cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"}),mask.setVisibilityMode(Ext.Element.DISPLAY),mask.on("click",me._onMaskClick,me)),mask.maskTarget=maskTarget,viewSize=me.getMaskBox(),shim&&(shim.setStyle("zIndex",zIndex),shim.show(),shim.setBox(viewSize)),mask.setStyle("zIndex",zIndex),mask.show(),mask.setBox(viewSize)},_hideModalMask:function(){var mask=this.mask,maskShim=this.maskShim;mask&&mask.isVisible()&&(mask.maskTarget=void 0,mask.hide(),maskShim&&maskShim.hide())},_onMaskClick:function(){this.front&&this.front.focus()},getMaskBox:function(){var maskTarget=this.mask.maskTarget;return maskTarget.dom===document.body?{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}:maskTarget.getBox()},_onContainerResize:function(){var viewSize,me=this,mask=me.mask,maskShim=me.maskShim;mask&&mask.isVisible()&&(mask.hide(),maskShim&&maskShim.hide(),viewSize=me.getMaskBox(),maskShim&&(maskShim.setSize(viewSize),maskShim.show()),mask.setSize(viewSize),mask.show())},register:function(comp){var me=this,compAfterHide=comp.afterHide;comp.zIndexManager&&comp.zIndexManager.unregister(comp),comp.zIndexManager=me,me.map[comp.id]=comp,me.zIndexStack.push(comp),comp.afterHide=function(){compAfterHide.apply(comp,arguments),me.onComponentHide(comp)}},unregister:function(comp){var me=this,map=me.map;delete comp.zIndexManager,map&&map[comp.id]&&(delete map[comp.id],delete comp.afterHide,Ext.Array.remove(me.zIndexStack,comp),me._activateLast())},get:function(id){return id.isComponent?id:this.map[id]},bringToFront:function(comp,preventFocus){var me=this,result=!1,zIndexStack=me.zIndexStack;return comp=me.get(comp),comp!==me.front&&(Ext.Array.remove(zIndexStack,comp),comp.preventBringToFront?zIndexStack.unshift(comp):zIndexStack.push(comp),me.assignZIndices(),preventFocus||me._activateLast(),result=!0,me.front=comp,comp.modal&&me._showModalMask(comp)),result},sendToBack:function(comp){var me=this;return comp=me.get(comp),Ext.Array.remove(me.zIndexStack,comp),me.zIndexStack.unshift(comp),me.assignZIndices(),this._activateLast(),comp},hideAll:function(){var item,id,map=this.map;for(id in map)map.hasOwnProperty(id)&&(item=map[id],item.isComponent&&item.isVisible()&&item.hide())},hide:function(){var comp,i=0,stack=this.zIndexStack,len=stack.length;for(this.tempHidden=[];i<len;i++)comp=stack[i],comp.isVisible()&&(this.tempHidden.push(comp),comp.el.hide(),comp.hidden=!0)},show:function(){for(var comp,i=0,tempHidden=this.tempHidden,len=tempHidden?tempHidden.length:0;i<len;i++)comp=tempHidden[i],comp.el.show(),comp.hidden=!1,comp.setPosition(comp.x,comp.y);delete this.tempHidden},getActive:function(){return this.front},getBy:function(fn,scope){for(var comp,r=[],i=0,stack=this.zIndexStack,len=stack.length;i<len;i++)comp=stack[i],!1!==fn.call(scope||comp,comp)&&r.push(comp);return r},each:function(fn,scope){var id,comp,map=this.map;for(id in map)if(map.hasOwnProperty(id)&&(comp=map[id],comp.isComponent&&!1===fn.call(scope||comp,comp)))return},eachBottomUp:function(fn,scope){for(var comp,stack=this.zIndexStack,i=0,len=stack.length;i<len;i++)if(comp=stack[i],comp.isComponent&&!1===fn.call(scope||comp,comp))return},eachTopDown:function(fn,scope){for(var comp,stack=this.zIndexStack,i=stack.length;i-- >0;)if(comp=stack[i],comp.isComponent&&!1===fn.call(scope||comp,comp))return},destroy:function(){var comp,id,me=this,map=me.map;for(id in map)map.hasOwnProperty(id)&&(comp=map[id],comp.isComponent&&comp.destroy());Ext.destroy(me.mask),Ext.destroy(me.maskShim),delete me.zIndexStack,delete me.map,delete me.container,delete me.targetEl}},function(){Ext.WindowManager=Ext.WindowMgr=new this});Ext.define("Ext.Queryable",{isQueryable:!0,query:function(selector){return selector=selector||"*",Ext.ComponentQuery.query(selector,this)},queryBy:function(fn,scope){for(var item,out=[],items=this.getRefItems(!0),i=0,len=items.length;i<len;++i)item=items[i],!1!==fn.call(scope||item,item)&&out.push(item);return out},queryById:function(id){return this.down("#"+id)},child:function(selector){return selector&&selector.isComponent&&(selector="#"+Ext.escapeId(selector.getItemId())),selector=selector||"",this.query("> "+selector)[0]||null},down:function(selector){return selector&&selector.isComponent&&(selector="#"+Ext.escapeId(selector.getItemId())),selector=selector||"",this.query(selector)[0]||null},getRefItems:function(){return[]}});Ext.define("Ext.layout.component.Component",{extend:"Ext.layout.Layout",type:"component",isComponentLayout:!0,nullBox:{},usesContentHeight:!0,usesContentWidth:!0,usesHeight:!0,usesWidth:!0,beginLayoutCycle:function(ownerContext,firstCycle){var ownerLayout,v,widthName,heightName,me=this,owner=me.owner,ownerCtContext=ownerContext.ownerCtContext,heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel,body=owner.el.dom===document.body,lastBox=owner.lastBox||me.nullBox,lastSize=owner.el.lastBox||me.nullBox,dirty=!body;me.callParent(arguments),firstCycle&&(me.usesContentWidth&&++ownerContext.consumersContentWidth,me.usesContentHeight&&++ownerContext.consumersContentHeight,me.usesWidth&&++ownerContext.consumersWidth,me.usesHeight&&++ownerContext.consumersHeight,ownerCtContext&&!ownerCtContext.hasRawContent&&(ownerLayout=owner.ownerLayout,ownerLayout.usesWidth&&++ownerContext.consumersWidth,ownerLayout.usesHeight&&++ownerContext.consumersHeight)),widthModel.configured?(widthName=widthModel.names.width,body||(dirty=me.setWidthInDom||(firstCycle?owner[widthName]!==lastSize.width:widthModel.constrained)),ownerContext.setWidth(owner[widthName],dirty)):ownerContext.isTopLevel&&(widthModel.calculated&&(v=lastBox.width,ownerContext.setWidth(v,v!=lastSize.width)),v=lastBox.x,ownerContext.setProp("x",v,v!=lastSize.x)),heightModel.configured?(heightName=heightModel.names.height,body||(dirty=firstCycle?owner[heightName]!==lastSize.height:heightModel.constrained),ownerContext.setHeight(owner[heightName],dirty)):ownerContext.isTopLevel&&(heightModel.calculated&&(v=lastBox.height,ownerContext.setHeight(v,v!=lastSize.height)),v=lastBox.y,ownerContext.setProp("y",v,v!=lastSize.y))},finishedLayout:function(ownerContext){var len,i,elContext,lastBox,props,me=this,elementChildren=ownerContext.children,owner=me.owner;if(elementChildren)for(len=elementChildren.length,i=0;i<len;i++)elContext=elementChildren[i],elContext.el.lastBox=elContext.props;ownerContext.previousSize=me.lastComponentSize,me.lastComponentSize=owner.el.lastBox=props=ownerContext.props,lastBox=owner.lastBox||(owner.lastBox={}),lastBox.x=props.x,lastBox.y=props.y,lastBox.width=props.width,lastBox.height=props.height,lastBox.invalid=!1,me.callParent(arguments)},notifyOwner:function(ownerContext){var me=this,currentSize=me.lastComponentSize,prevSize=ownerContext.previousSize,args=[currentSize.width,currentSize.height];prevSize&&args.push(prevSize.width,prevSize.height),me.owner.afterComponentLayout.apply(me.owner,args)},getTarget:function(){return this.owner.el},getRenderTarget:function(){return this.owner.el},cacheTargetInfo:function(ownerContext){var target,me=this,targetInfo=me.targetInfo;return targetInfo||(target=ownerContext.getEl("getTarget",me),me.targetInfo=targetInfo={padding:target.getPaddingInfo(),border:target.getBorderInfo()}),targetInfo},measureAutoDimensions:function(ownerContext,dimensions){var isContainer,zeroWidth,zeroHeight,size,temp,me=this,owner=me.owner,containerLayout=owner.layout,heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel,boxParent=ownerContext.boxParent,isBoxParent=ownerContext.isBoxParent,props=ownerContext.props,ret={gotWidth:!1,gotHeight:!1,isContainer:isContainer=!ownerContext.hasRawContent},hv=dimensions||3,needed=0,got=0;return widthModel.shrinkWrap&&ownerContext.consumersContentWidth?(++needed,zeroWidth=!(1&hv),isContainer?zeroWidth?(ret.contentWidth=0,ret.gotWidth=!0,++got):void 0!==(ret.contentWidth=ownerContext.getProp("contentWidth"))&&(ret.gotWidth=!0,++got):(size=props.contentWidth,"number"==typeof size?(ret.contentWidth=size,ret.gotWidth=!0,++got):(!!zeroWidth||!!ownerContext.hasDomProp("containerChildrenSizeDone")&&(!(!isBoxParent&&boxParent&&!boxParent.widthModel.shrinkWrap)||boxParent.hasDomProp("width")))&&(temp=zeroWidth?0:containerLayout&&containerLayout.measureContentWidth?containerLayout.measureContentWidth(ownerContext):me.measureContentWidth(ownerContext),isNaN(ret.contentWidth=temp)||(ownerContext.setContentWidth(temp,!0),ret.gotWidth=!0,++got)))):widthModel.natural&&ownerContext.consumersWidth&&(++needed,size=props.width,"number"==typeof size?(ret.width=size,ret.gotWidth=!0,++got):(!(!isBoxParent&&boxParent)||boxParent.hasDomProp("width"))&&(isNaN(ret.width=me.measureOwnerWidth(ownerContext))||(ownerContext.setWidth(ret.width,!1),ret.gotWidth=!0,++got))),heightModel.shrinkWrap&&ownerContext.consumersContentHeight?(++needed,zeroHeight=!(2&hv),isContainer?zeroHeight?(ret.contentHeight=0,ret.gotHeight=!0,++got):void 0!==(ret.contentHeight=ownerContext.getProp("contentHeight"))&&(ret.gotHeight=!0,++got):(size=props.contentHeight,"number"==typeof size?(ret.contentHeight=size,ret.gotHeight=!0,++got):(!!zeroHeight||!!ownerContext.hasDomProp("containerChildrenSizeDone")&&(!!owner.noWrap||(widthModel.shrinkWrap?!(!isBoxParent&&boxParent&&!boxParent.widthModel.shrinkWrap)||boxParent.hasDomProp("width"):(ownerContext.bodyContext||ownerContext).hasDomProp("width"))))&&(temp=zeroHeight?0:containerLayout&&containerLayout.measureContentHeight?containerLayout.measureContentHeight(ownerContext):me.measureContentHeight(ownerContext),isNaN(ret.contentHeight=temp)||(ownerContext.setContentHeight(temp,!0),ret.gotHeight=!0,++got)))):heightModel.natural&&ownerContext.consumersHeight&&(++needed,size=props.height,"number"==typeof size?(ret.height=size,ret.gotHeight=!0,++got):(!(!isBoxParent&&boxParent)||boxParent.hasDomProp("width"))&&(isNaN(ret.height=me.measureOwnerHeight(ownerContext))||(ownerContext.setHeight(ret.height,!1),ret.gotHeight=!0,++got))),boxParent&&ownerContext.onBoxMeasured(),ret.gotAll=got==needed,ret},measureContentWidth:function(ownerContext){return ownerContext.el.getWidth()-ownerContext.getFrameInfo().width},measureContentHeight:function(ownerContext){return ownerContext.el.getHeight()-ownerContext.getFrameInfo().height},measureOwnerHeight:function(ownerContext){return ownerContext.el.getHeight()},measureOwnerWidth:function(ownerContext){return ownerContext.el.getWidth()}});Ext.define("Ext.layout.component.Auto",{alias:"layout.autocomponent",extend:"Ext.layout.component.Component",type:"autocomponent",setHeightInDom:!1,setWidthInDom:!1,waitForOuterHeightInDom:!1,waitForOuterWidthInDom:!1,beginLayoutCycle:function(ownerContext,firstCycle){var me=this,lastWidthModel=me.lastWidthModel,lastHeightModel=me.lastHeightModel,el=me.owner.el;me.callParent(arguments),lastWidthModel&&lastWidthModel.fixed&&ownerContext.widthModel.shrinkWrap&&el.setWidth(null),lastHeightModel&&lastHeightModel.fixed&&ownerContext.heightModel.shrinkWrap&&el.setHeight(null)},calculate:function(ownerContext){var width,height,me=this,measurement=me.measureAutoDimensions(ownerContext),heightModel=ownerContext.heightModel,widthModel=ownerContext.widthModel;measurement.gotWidth?widthModel.shrinkWrap?me.publishOwnerWidth(ownerContext,measurement.contentWidth):me.publishInnerWidth&&me.publishInnerWidth(ownerContext,measurement.width):!widthModel.auto&&me.publishInnerWidth&&(width=me.waitForOuterWidthInDom?ownerContext.getDomProp("width"):ownerContext.getProp("width"),void 0===width?me.done=!1:me.publishInnerWidth(ownerContext,width)),measurement.gotHeight?heightModel.shrinkWrap?me.publishOwnerHeight(ownerContext,measurement.contentHeight):me.publishInnerHeight&&me.publishInnerHeight(ownerContext,measurement.height):!heightModel.auto&&me.publishInnerHeight&&(height=me.waitForOuterHeightInDom?ownerContext.getDomProp("height"):ownerContext.getProp("height"),void 0===height?me.done=!1:me.publishInnerHeight(ownerContext,height)),measurement.gotAll||(me.done=!1)},calculateOwnerHeightFromContentHeight:function(ownerContext,contentHeight){return contentHeight+ownerContext.getFrameInfo().height},calculateOwnerWidthFromContentWidth:function(ownerContext,contentWidth){return contentWidth+ownerContext.getFrameInfo().width},publishOwnerHeight:function(ownerContext,contentHeight){var constrainedHeight,dirty,heightModel,me=this,owner=me.owner,height=me.calculateOwnerHeightFromContentHeight(ownerContext,contentHeight);isNaN(height)?me.done=!1:(constrainedHeight=Ext.Number.constrain(height,owner.minHeight,owner.maxHeight),constrainedHeight==height?dirty=me.setHeightInDom:(heightModel=me.sizeModels[constrainedHeight<height?"constrainedMax":"constrainedMin"],height=constrainedHeight,ownerContext.heightModel.calculatedFromShrinkWrap?ownerContext.heightModel=heightModel:ownerContext.invalidate({heightModel:heightModel})),ownerContext.setHeight(height,dirty))},publishOwnerWidth:function(ownerContext,contentWidth){var constrainedWidth,dirty,widthModel,me=this,owner=me.owner,width=me.calculateOwnerWidthFromContentWidth(ownerContext,contentWidth);isNaN(width)?me.done=!1:(constrainedWidth=Ext.Number.constrain(width,owner.minWidth,owner.maxWidth),constrainedWidth==width?dirty=me.setWidthInDom:(widthModel=me.sizeModels[constrainedWidth<width?"constrainedMax":"constrainedMin"],width=constrainedWidth,ownerContext.widthModel.calculatedFromShrinkWrap?ownerContext.widthModel=widthModel:ownerContext.invalidate({widthModel:widthModel})),ownerContext.setWidth(width,dirty))}});Ext.define("Ext.container.AbstractContainer",{extend:"Ext.Component",requires:["Ext.util.MixedCollection","Ext.layout.container.Auto","Ext.ZIndexManager"],mixins:{queryable:"Ext.Queryable"},renderTpl:"{%this.renderContainer(out,values)%}",suspendLayout:!1,autoDestroy:!0,defaultType:"panel",detachOnRemove:!0,isContainer:!0,layoutCounter:0,baseCls:Ext.baseCSSPrefix+"container",defaultLayoutType:"auto",ariaRole:"presentation",initComponent:function(){var me=this;me.addEvents("afterlayout","beforeadd","beforeremove","add","remove"),me.callParent(),me.getLayout(),me.initItems()},initItems:function(){var me=this,items=me.items;me.items=new Ext.util.AbstractMixedCollection(!1,me.getComponentId),me.floatingItems=new Ext.util.MixedCollection(!1,me.getComponentId),items&&(Ext.isArray(items)||(items=[items]),me.add(items))},getFocusEl:function(){return this.getTargetEl()},finishRenderChildren:function(){this.callParent();var layout=this.getLayout();layout&&layout.finishRender()},beforeRender:function(){var targetCls,me=this,layout=me.getLayout();me.callParent(),layout.initialized||layout.initLayout(),(targetCls=layout.targetCls)&&me.applyTargetCls(targetCls)},applyTargetCls:function(targetCls){this.addCls(targetCls)},afterComponentLayout:function(){var i,floater,floaters=this.floatingItems.items,floaterCount=floaters.length;for(this.callParent(arguments),i=0;i<floaterCount;i++)floater=floaters[i],!floater.rendered&&floater.autoShow&&floater.show()},onPosition:function(){this.callParent(arguments),this.repositionFloatingItems()},onResize:function(){this.callParent(arguments),this.repositionFloatingItems()},repositionFloatingItems:function(){var i,floater,floaters=this.floatingItems.items,floaterCount=floaters.length;for(i=0;i<floaterCount;i++)floater=floaters[i],floater.el&&!floater.hidden&&floater.setPosition(floater.x,floater.y)},setupRenderTpl:function(renderTpl){this.callParent(arguments),this.getLayout().setupRenderTpl(renderTpl)},getDefaultContentTarget:function(){return this.el},getContentTarget:function(){return this.getLayout().getContentTarget()},setLayout:function(layout){var currentLayout=this.layout;currentLayout&&currentLayout.isLayout&&currentLayout!=layout&&currentLayout.setOwner(null),this.layout=layout,layout.setOwner(this)},getLayout:function(){var me=this;return me.layout&&me.layout.isLayout||me.setLayout(Ext.layout.Layout.create(me.layout,me.self.prototype.layout||me.defaultLayoutType)),me.layout},doLayout:function(){return this.updateLayout(),this},afterLayout:function(layout){var me=this;++me.layoutCounter,me.hasListeners.afterlayout&&me.fireEvent("afterlayout",me,layout)},prepareItems:function(items,applyDefaults){items=Ext.isArray(items)?items.slice():[items];for(var item,me=this,i=0,len=items.length;i<len;i++)item=items[i],null==item?(Ext.Array.erase(items,i,1),--i,--len):(applyDefaults&&(item=this.applyDefaults(item)),item.isContained=me,items[i]=me.lookupComponent(item),delete item.isContained,delete items[i].isContained);return items},applyDefaults:function(config){var defaults=this.defaults;return defaults&&(Ext.isFunction(defaults)&&(defaults=defaults.call(this,config)),Ext.isString(config)&&(config=Ext.ComponentManager.get(config)),Ext.applyIf(config,defaults)),config},lookupComponent:function(comp){return"string"==typeof comp?Ext.ComponentManager.get(comp):Ext.ComponentManager.create(comp,this.defaultType)},getComponentId:function(comp){return comp.getItemId&&comp.getItemId()},add:function(){var addingArray,items,i,length,item,pos,ret,me=this,args=Ext.Array.slice(arguments),index="number"==typeof args[0]?args.shift():-1,layout=me.getLayout(),needsLayout=!1;for(1==args.length&&Ext.isArray(args[0])?(items=args[0],addingArray=!0):items=args,me.rendered&&Ext.suspendLayouts(),ret=items=me.prepareItems(items,!0),length=items.length,addingArray||1!=length||(ret=items[0]),i=0;i<length;i++)item=items[i],item||Ext.Error.raise("Cannot add null item to Container with itemId/id: "+me.getItemId()),pos=index<0?me.items.length:index+i,item.floating?(me.floatingItems.add(item),item.onAdded(me,pos),me.hasListeners.add&&me.fireEvent("add",me,item,pos)):me.hasListeners.beforeadd&&!1===me.fireEvent("beforeadd",me,item,pos)||!1===me.onBeforeAdd(item)||(me.items.insert(pos,item),item.onAdded(me,pos),me.onAdd(item,pos),layout.onAdd(item,pos),needsLayout=!0,me.hasListeners.add&&me.fireEvent("add",me,item,pos));return needsLayout&&me.updateLayout(),me.rendered&&Ext.resumeLayouts(!0),ret},onAdd:Ext.emptyFn,onRemove:Ext.emptyFn,insert:function(index,comp){var compIdx;return comp&&comp.isComponent&&-1!==(compIdx=this.items.indexOf(comp))?this.move(compIdx,index):this.add(index,comp)},move:function(fromIdx,toIdx){var item,items=this.items;return fromIdx.isComponent&&(fromIdx=items.indexOf(fromIdx)),!1!==(item=items.removeAt(fromIdx))&&(items.insert(toIdx,item),this.onMove(item,fromIdx,toIdx),this.updateLayout(),item)},onMove:Ext.emptyFn,onBeforeAdd:function(item){item.ownerCt&&item.ownerCt!==this&&item.ownerCt.remove(item,!1)},remove:function(comp,autoDestroy){var me=this,c=me.getComponent(comp);return Ext.isDefined(Ext.global.console)&&!c&&Ext.global.console.warn("Attempted to remove a component that does not exist. Ext.container.Container: remove takes an argument of the component to remove. cmp.remove() is incorrect usage."),!c||me.hasListeners.beforeremove&&!1===me.fireEvent("beforeremove",me,c)||(me.doRemove(c,autoDestroy),me.hasListeners.remove&&me.fireEvent("remove",me,c),me.destroying||c.floating||me.updateLayout()),c},doRemove:function(component,doDestroy){doDestroy=!0===doDestroy||!1!==doDestroy&&this.autoDestroy;var me=this,layout=me.layout,hasLayout=layout&&me.rendered,isDestroying=component.destroying||doDestroy,floating=component.floating;floating?me.floatingItems.remove(component):me.items.remove(component),hasLayout&&!floating&&(layout.running&&Ext.AbstractComponent.cancelLayout(component,isDestroying),layout.onRemove(component,isDestroying)),component.onRemoved(isDestroying),me.onRemove(component,isDestroying),doDestroy?component.destroy():(hasLayout&&!floating&&layout.afterRemove(component),me.detachOnRemove&&component.rendered&&me.detachComponent(component))},detachComponent:function(component){Ext.getDetachedBody().appendChild(component.getEl())},removeAll:function(autoDestroy){var item,me=this,removeItems=me.items.items.slice().concat(me.floatingItems.items),items=[],i=0,len=removeItems.length;for(me.suspendLayouts();i<len;i++)item=removeItems[i],me.remove(item,autoDestroy),item.ownerCt!==me&&items.push(item);return me.resumeLayouts(!!len),items},getRefItems:function(deep){for(var item,me=this,items=me.items.items,len=items.length,i=0,result=[];i<len;i++)item=items[i],result[result.length]=item,deep&&item.getRefItems&&result.push.apply(result,item.getRefItems(!0));for(items=me.floatingItems.items,len=items.length,i=0;i<len;i++)item=items[i],result[result.length]=item,deep&&item.getRefItems&&result.push.apply(result,item.getRefItems(!0));return result},cascade:function(fn,scope,origArgs){var c,me=this,cs=me.items?me.items.items:[],len=cs.length,i=0,args=origArgs?origArgs.concat(me):[me],componentIndex=args.length-1;if(!1!==fn.apply(scope||me,args))for(;i<len;i++)c=cs[i],c.cascade?c.cascade(fn,scope,origArgs):(args[componentIndex]=c,fn.apply(scope||cs,args));return this},isAncestor:function(possibleDescendant){for(;possibleDescendant;){if(possibleDescendant.ownerCt===this)return!0;possibleDescendant=possibleDescendant.ownerCt}},getComponent:function(comp){Ext.isObject(comp)&&(comp=comp.getItemId());var c=this.items.get(comp);return c||"number"==typeof comp||(c=this.floatingItems.get(comp)),c},contains:function(comp,deep){var result=!1;return deep?(this.cascade(function(c){if(c.contains&&c.contains(comp))return result=!0,!1}),result):this.items.contains(comp)||this.floatingItems.contains(comp)},nextChild:function(child,selector){var result,me=this,childIndex=me.items.indexOf(child);return-1!==childIndex&&!(result=selector?Ext.ComponentQuery(selector,me.items.items.slice(childIndex+1)):me.items.getAt(childIndex+1))&&me.ownerCt&&(result=me.ownerCt.nextChild(me,selector)),result},prevChild:function(child,selector){var result,me=this,childIndex=me.items.indexOf(child);return-1!==childIndex&&!(result=selector?Ext.ComponentQuery(selector,me.items.items.slice(childIndex+1)):me.items.getAt(childIndex+1))&&me.ownerCt&&(result=me.ownerCt.nextChild(me,selector)),result},enable:function(){this.callParent(arguments);var item,i,itemsToDisable=this.getChildItemsToDisable(),length=itemsToDisable.length;for(i=0;i<length;i++)item=itemsToDisable[i],item.resetDisable&&item.enable();return this},disable:function(){this.callParent(arguments);var item,i,itemsToDisable=this.getChildItemsToDisable(),length=itemsToDisable.length;for(i=0;i<length;i++)item=itemsToDisable[i],!1===item.resetDisable||item.disabled||(item.disable(),item.resetDisable=!0);return this},getChildItemsToDisable:function(){return this.query("[isFormField],button")},beforeDestroy:function(){var c,me=this,items=me.items,floatingItems=me.floatingItems;if(items)for(;c=items.first();)me.doRemove(c,!0);if(floatingItems)for(;c=floatingItems.first();)me.doRemove(c,!0);Ext.destroy(me.layout),me.callParent()}});Ext.define("Ext.container.Container",{extend:"Ext.container.AbstractContainer",alias:"widget.container",alternateClassName:"Ext.Container",getChildByElement:function(el,deep){var item,itemEl,i=0,it=this.getRefItems(),ln=it.length;for(el=Ext.getDom(el);i<ln;i++)if(item=it[i],(itemEl=item.getEl())&&(itemEl.dom===el||itemEl.contains(el)))return deep&&item.getChildByElement?item.getChildByElement(el,deep):item;return null}});Ext.define("Ext.layout.container.Editor",{alias:"layout.editor",extend:"Ext.layout.container.Container",autoSizeDefault:{width:"field",height:"field"},sizePolicies:{$:{$:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},boundEl:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1}},boundEl:{$:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},boundEl:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1}}},getItemSizePolicy:function(item){var me=this,autoSize=me.owner.autoSize,key=autoSize&&autoSize.width,policy=me.sizePolicies;return policy=policy[key]||policy.$,key=autoSize&&autoSize.height,policy=policy[key]||policy.$},calculate:function(ownerContext){var fieldWidth,fieldHeight,me=this,owner=me.owner,autoSize=owner.autoSize;!0===autoSize&&(autoSize=me.autoSizeDefault),autoSize&&(fieldWidth=me.getDimension(owner,autoSize.width,"getWidth",owner.width),fieldHeight=me.getDimension(owner,autoSize.height,"getHeight",owner.height)),ownerContext.childItems[0].setSize(fieldWidth,fieldHeight),ownerContext.setWidth(fieldWidth),ownerContext.setHeight(fieldHeight),ownerContext.setContentSize(fieldWidth||owner.field.getWidth(),fieldHeight||owner.field.getHeight())},getDimension:function(owner,type,getMethod,ownerSize){switch(type){case"boundEl":return owner.boundEl[getMethod]();case"field":return;default:return ownerSize}}});Ext.define("Ext.Editor",{extend:"Ext.container.Container",alias:"widget.editor",requires:["Ext.layout.container.Editor"],layout:"editor",allowBlur:!0,revertInvalid:!0,value:"",alignment:"c-c?",offsets:[0,0],shadow:"frame",constrain:!1,swallowKeys:!0,completeOnEnter:!0,cancelOnEsc:!0,updateEl:!1,focusOnToFront:!1,hidden:!0,baseCls:Ext.baseCSSPrefix+"editor",initComponent:function(){var me=this,field=me.field=Ext.ComponentManager.create(me.field,"textfield");field.inEditor=!0,field.msgTarget=field.msgTarget||"qtip",me.mon(field,{scope:me,blur:me.onFieldBlur,specialkey:me.onSpecialKey}),field.grow&&me.mon(field,"autosize",me.onFieldAutosize,me,{delay:1}),me.floating={constrain:me.constrain},me.items=field,me.callParent(arguments),me.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")},onFieldAutosize:function(){this.updateLayout()},afterRender:function(ct,position){var me=this,field=me.field,inputEl=field.inputEl;me.callParent(arguments),inputEl&&(inputEl.dom.name="",me.swallowKeys&&inputEl.swallowEvent(["keypress","keydown"]))},onSpecialKey:function(field,event){var me=this,key=event.getKey(),complete=me.completeOnEnter&&key==event.ENTER,cancel=me.cancelOnEsc&&key==event.ESC;(complete||cancel)&&(event.stopEvent(),Ext.defer(function(){complete?me.completeEdit():me.cancelEdit()},1)),me.fireEvent("specialkey",me,field,event)},startEdit:function(el,value){var me=this,field=me.field;me.completeEdit(),me.boundEl=Ext.get(el),value=Ext.isDefined(value)?value:Ext.String.trim(me.boundEl.dom.innerText||me.boundEl.dom.innerHTML),me.rendered||(me.ownerCt&&(me.parentEl=me.ownerCt.el,me.parentEl.position()),me.render(me.parentEl||document.body)),!1!==me.fireEvent("beforestartedit",me,me.boundEl,value)&&(me.startValue=value,me.show(),field.suspendEvents(),field.reset(),field.setValue(value),field.resumeEvents(),me.realign(!0),field.focus([field.getRawValue().length]),field.autoSize&&field.autoSize(),me.editing=!0)},realign:function(autoSize){var me=this;!0===autoSize&&me.updateLayout(),me.alignTo(me.boundEl,me.alignment,me.offsets)},completeEdit:function(remainVisible){var value,me=this,field=me.field;if(me.editing)return field.assertValue&&field.assertValue(),value=me.getValue(),field.isValid()?String(value)===String(me.startValue)&&me.ignoreNoChange?void me.hideEdit(remainVisible):void(!1!==me.fireEvent("beforecomplete",me,value,me.startValue)&&(value=me.getValue(),me.updateEl&&me.boundEl&&me.boundEl.update(value),me.hideEdit(remainVisible),me.fireEvent("complete",me,value,me.startValue))):void(!1!==me.revertInvalid&&me.cancelEdit(remainVisible))},onShow:function(){var me=this;me.callParent(arguments),!1!==me.hideEl&&me.boundEl.hide(),me.fireEvent("startedit",me,me.boundEl,me.startValue)},cancelEdit:function(remainVisible){var value,me=this,startValue=me.startValue,field=me.field;me.editing&&(field&&(value=me.editedValue=me.getValue(),field.suspendEvents(),me.setValue(startValue),field.resumeEvents()),me.hideEdit(remainVisible),me.fireEvent("canceledit",me,value,startValue),delete me.editedValue)},hideEdit:function(remainVisible){!0!==remainVisible&&(this.editing=!1,this.hide())},onFieldBlur:function(field,e){var me=this,target=Ext.Element.getActiveElement();!0===me.allowBlur&&me.editing&&!0!==me.selectSameEditor&&me.completeEdit(),(Ext.fly(target).isFocusable()||target.getAttribute("tabIndex"))&&target.focus()},onHide:function(){var me=this,field=me.field;if(me.editing)return void me.completeEdit();field.hasFocus&&field.triggerBlur&&field.triggerBlur(),field.collapse&&field.collapse(),!1!==me.hideEl&&me.boundEl.show(),me.callParent(arguments)},setValue:function(value){this.field.setValue(value)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){var me=this;Ext.destroy(me.field),delete me.field,delete me.parentEl,delete me.boundEl,me.callParent(arguments)}});Ext.define("Ext.util.KeyMap",{alternateClassName:"Ext.KeyMap",eventName:"keydown",constructor:function(config){var me=this;if(1!==arguments.length||"string"==typeof config||config.dom||config.tagName||config===document||config.isComponent)return void me.legacyConstructor.apply(me,arguments);Ext.apply(me,config),me.bindings=[],me.target.isComponent||(me.target=Ext.get(me.target)),me.binding?me.addBinding(me.binding):config.key&&me.addBinding(config),me.enable()},legacyConstructor:function(el,binding,eventName){var me=this;Ext.apply(me,{target:Ext.get(el),eventName:eventName||me.eventName,bindings:[]}),binding&&me.addBinding(binding),me.enable()},addBinding:function(binding){var i,len,me=this,keyCode=binding.key;if(me.processing&&(me.bindings=bindings.slice(0)),Ext.isArray(binding))for(i=0,len=binding.length;i<len;i++)me.addBinding(binding[i]);else me.bindings.push(Ext.apply({keyCode:me.processKeys(keyCode)},binding))},removeBinding:function(binding){var i,item,keys,me=this,bindings=me.bindings,len=bindings.length;for(me.processing&&(me.bindings=bindings.slice(0)),keys=me.processKeys(binding.key),i=0;i<len;++i)if(item=bindings[i],item.fn===binding.fn&&item.scope===binding.scope&&binding.alt==item.alt&&binding.crtl==item.crtl&&binding.shift==item.shift&&Ext.Array.equals(item.keyCode,keys))return void Ext.Array.erase(me.bindings,i,1)},processKeys:function(keyCode){var key,keys,keyString,len,i,processed=!1;if(Ext.isString(keyCode)){for(keys=[],keyString=keyCode.toUpperCase(),i=0,len=keyString.length;i<len;++i)keys.push(keyString.charCodeAt(i));keyCode=keys,processed=!0}if(Ext.isArray(keyCode)||(keyCode=[keyCode]),!processed)for(i=0,len=keyCode.length;i<len;++i)key=keyCode[i],Ext.isString(key)&&(keyCode[i]=key.toUpperCase().charCodeAt(0));return keyCode},handleTargetEvent:function(){var tagRe=/input|textarea/i;return function(event){var bindings,i,len,target,contentEditable,me=this;if(me.enabled){if(bindings=me.bindings,i=0,len=bindings.length,event=me.processEvent.apply(me||me.processEventScope,arguments),me.ignoreInputFields&&(target=event.target,contentEditable=target.contentEditable,tagRe.test(target.tagName)||""===contentEditable||"true"===contentEditable))return;if(!event.getKey)return event;for(me.processing=!0;i<len;++i)me.processBinding(bindings[i],event);me.processing=!1}}}(),processEvent:Ext.identityFn,processBinding:function(binding,event){if(this.checkModifiers(binding,event)){var i,len,key=event.getKey(),handler=binding.fn||binding.handler,scope=binding.scope||this,keyCode=binding.keyCode,defaultEventAction=binding.defaultEventAction,keydownEvent=new Ext.EventObjectImpl(event);for(i=0,len=keyCode.length;i<len;++i)if(key===keyCode[i]){!0!==handler.call(scope,key,event)&&defaultEventAction&&keydownEvent[defaultEventAction]();break}}},checkModifiers:function(binding,e){for(var val,key,keys=["shift","ctrl","alt"],i=0,len=keys.length;i<len;++i)if(key=keys[i],void 0!==(val=binding[key])&&val!==e[key+"Key"])return!1;return!0},on:function(key,fn,scope){var keyCode,shift,ctrl,alt;Ext.isObject(key)&&!Ext.isArray(key)?(keyCode=key.key,shift=key.shift,ctrl=key.ctrl,alt=key.alt):keyCode=key,this.addBinding({key:keyCode,shift:shift,ctrl:ctrl,alt:alt,fn:fn,scope:scope})},un:function(key,fn,scope){var keyCode,shift,ctrl,alt;Ext.isObject(key)&&!Ext.isArray(key)?(keyCode=key.key,shift=key.shift,ctrl=key.ctrl,alt=key.alt):keyCode=key,this.removeBinding({key:keyCode,shift:shift,ctrl:ctrl,alt:alt,fn:fn,scope:scope})},isEnabled:function(){return this.enabled},enable:function(){var me=this;me.enabled||(me.target.on(me.eventName,me.handleTargetEvent,me),me.enabled=!0)},disable:function(){var me=this;me.enabled&&(me.target.removeListener(me.eventName,me.handleTargetEvent,me),me.enabled=!1)},setDisabled:function(disabled){disabled?this.disable():this.enable()},destroy:function(removeTarget){var me=this,target=me.target;me.bindings=[],me.disable(),!0===removeTarget&&(target.isComponent?target.destroy():target.remove()),delete me.target}});Ext.define("Ext.util.KeyNav",{alternateClassName:"Ext.KeyNav",requires:["Ext.util.KeyMap"],statics:{keyOptions:{left:37,right:39,up:38,down:40,space:32,pageUp:33,pageDown:34,del:46,backspace:8,home:36,end:35,enter:13,esc:27,tab:9}},constructor:function(config){var me=this;if(2===arguments.length)return void me.legacyConstructor.apply(me,arguments);me.setConfig(config)},legacyConstructor:function(el,config){this.setConfig(Ext.apply({target:el},config))},setConfig:function(config){var map,keyCodes,defaultScope,keyName,binding,me=this,keymapCfg={target:config.target,ignoreInputFields:config.ignoreInputFields,eventName:me.getKeyEvent("forceKeyDown"in config?config.forceKeyDown:me.forceKeyDown,config.eventName)};me.map&&me.map.destroy(),config.processEvent&&(keymapCfg.processEvent=config.processEvent,keymapCfg.processEventScope=config.processEventScope||me),config.keyMap?map=me.map=config.keyMap:(map=me.map=new Ext.util.KeyMap(keymapCfg),me.destroyKeyMap=!0),keyCodes=Ext.util.KeyNav.keyOptions,defaultScope=config.scope||me;for(keyName in keyCodes)keyCodes.hasOwnProperty(keyName)&&(binding=config[keyName])&&("function"==typeof binding&&(binding={handler:binding,defaultEventAction:void 0!==config.defaultEventAction?config.defaultEventAction:me.defaultEventAction}),map.addBinding({key:keyCodes[keyName],handler:Ext.Function.bind(me.handleEvent,binding.scope||defaultScope,binding.handler||binding.fn,!0),defaultEventAction:void 0!==binding.defaultEventAction?binding.defaultEventAction:me.defaultEventAction}));map.disable(),config.disabled||map.enable()},handleEvent:function(keyCode,event,handler){return handler.call(this,event)},disabled:!1,defaultEventAction:"stopEvent",forceKeyDown:!1,eventName:"keypress",destroy:function(removeEl){this.destroyKeyMap&&this.map.destroy(removeEl),delete this.map},enable:function(){this.map&&(this.map.enable(),this.disabled=!1)},disable:function(){this.map&&this.map.disable(),this.disabled=!0},setDisabled:function(disabled){this.map.setDisabled(disabled),this.disabled=disabled},getKeyEvent:function(forceKeyDown,configuredEventName){return forceKeyDown||Ext.EventManager.useKeyDown&&!configuredEventName?"keydown":configuredEventName||this.eventName}});Ext.define("Ext.FocusManager",{singleton:!0,alternateClassName:["Ext.FocusMgr"],mixins:{observable:"Ext.util.Observable"},requires:["Ext.AbstractComponent","Ext.Component","Ext.ComponentManager","Ext.ComponentQuery","Ext.util.HashMap","Ext.util.KeyNav"],enabled:!1,focusElementCls:Ext.baseCSSPrefix+"focus-element",focusFrameCls:Ext.baseCSSPrefix+"focus-frame",whitelist:["textfield"],constructor:function(config){var me=this,CQ=Ext.ComponentQuery;me.mixins.observable.constructor.call(me,config),me.addEvents("beforecomponentfocus","componentfocus","disable","enable"),me.focusTask=new Ext.util.DelayedTask(me.handleComponentFocus,me),Ext.override(Ext.AbstractComponent,{onFocus:function(){this.callParent(arguments),me.enabled&&this.hasFocus&&(Array.prototype.unshift.call(arguments,this),me.onComponentFocus.apply(me,arguments))},onBlur:function(){this.callParent(arguments),me.enabled&&!this.hasFocus&&(Array.prototype.unshift.call(arguments,this),me.onComponentBlur.apply(me,arguments))},onDestroy:function(){this.callParent(arguments),me.enabled&&(Array.prototype.unshift.call(arguments,this),me.onComponentDestroy.apply(me,arguments))}}),Ext.override(Ext.Component,{afterHide:function(){this.callParent(arguments),me.enabled&&(Array.prototype.unshift.call(arguments,this),me.onComponentHide.apply(me,arguments))}}),me.keyNav=new Ext.util.KeyNav(Ext.getDoc(),{disabled:!0,scope:me,backspace:me.focusLast,enter:me.navigateIn,esc:me.navigateOut,tab:me.navigateSiblings,space:me.navigateIn,del:me.focusLast,left:me.navigateSiblings,right:me.navigateSiblings,down:me.navigateSiblings,up:me.navigateSiblings}),me.focusData={},me.subscribers=new Ext.util.HashMap,me.focusChain={},Ext.apply(CQ.pseudos,{nextFocus:function(cmps,idx,step){step=step||1,idx=parseInt(idx,10);for(var c,len=cmps.length,i=idx;;){if((i+=step)>=len?i=0:i<0&&(i=len-1),i===idx)return[];if((c=cmps[i]).isFocusable())return[c]}return[]},prevFocus:function(cmps,idx){return this.nextFocus(cmps,idx,-1)},root:function(cmps){for(var c,len=cmps.length,results=[],i=0;i<len;i++)c=cmps[i],c.ownerCt||results.push(c);return results}})},addXTypeToWhitelist:function(xtype){var me=this;if(Ext.isArray(xtype))return void Ext.Array.forEach(xtype,me.addXTypeToWhitelist,me);Ext.Array.contains(me.whitelist,xtype)||me.whitelist.push(xtype)},clearComponent:function(cmp){clearTimeout(this.cmpFocusDelay),cmp.isDestroyed||cmp.blur()},disable:function(){var me=this;me.enabled&&(delete me.options,me.enabled=!1,me.removeDOM(),me.keyNav.disable(),me.fireEvent("disable",me))},enable:function(options){var me=this;!0===options&&(options={focusFrame:!0}),me.options=options=options||{},me.enabled||(me.enabled=!0,me.initDOM(options),me.keyNav.enable(),me.focusEl.focus(),delete me.focusedCmp,me.fireEvent("enable",me))},focusLast:function(e){var me=this;if(me.isWhitelisted(me.focusedCmp))return!0;me.previousFocusedCmp&&me.previousFocusedCmp.focus()},getRootComponents:function(){var CQ=Ext.ComponentQuery,inline=CQ.query(":focusable:root:not([floating])"),floating=CQ.query(":focusable:root[floating]");return floating.sort(function(a,b){return a.el.getZIndex()>b.el.getZIndex()}),floating.concat(inline)},initDOM:function(options){var me=this,cls=me.focusFrameCls,needListeners=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),i=0,len=needListeners.length;if(!Ext.isReady)return Ext.onReady(me.initDOM,me);for(;i<len;i++)needListeners[i].addFocusListener();me.focusEl||(me.focusEl=Ext.getBody(),me.focusEl.dom.tabIndex=-1),!me.focusFrame&&options.focusFrame&&(me.focusFrame=Ext.getBody().createChild({cls:cls,children:[{cls:cls+"-top"},{cls:cls+"-bottom"},{cls:cls+"-left"},{cls:cls+"-right"}],style:"top: -100px; left: -100px;"}),me.focusFrame.setVisibilityMode(Ext.Element.DISPLAY),me.focusFrame.hide().setLocalXY(0,0))},isWhitelisted:function(cmp){return cmp&&Ext.Array.some(this.whitelist,function(x){return cmp.isXType(x)})},navigateIn:function(e){var defaultRoot,firstChild,me=this,focusedCmp=me.focusedCmp;if(me.isWhitelisted(focusedCmp))return!0;focusedCmp?(firstChild=focusedCmp.hasFocus?Ext.ComponentQuery.query(">:focusable",focusedCmp)[0]:focusedCmp,firstChild?firstChild.focus():Ext.isFunction(focusedCmp.onClick)&&(e.button=0,focusedCmp.onClick(e),focusedCmp.isVisible(!0)?focusedCmp.focus():me.navigateOut())):(defaultRoot=me.getRootComponents()[0])&&(defaultRoot.getFocusEl()===me.focusEl&&me.focusEl.blur(),defaultRoot.focus())},navigateOut:function(e){var parent,me=this;return me.focusedCmp&&(parent=me.focusedCmp.up(":focusable"))?parent.focus():me.focusEl.focus(),!0},navigateSiblings:function(e,source,parent){var idx,next,focusedCmp,siblings,me=this,src=source||me,key=e.getKey(),EO=Ext.EventObject,goBack=e.shiftKey||key==EO.LEFT||key==EO.UP,checkWhitelist=key==EO.LEFT||key==EO.RIGHT||key==EO.UP||key==EO.DOWN,nextSelector=goBack?"prev":"next";return!(focusedCmp=src.focusedCmp&&src.focusedCmp.comp||src.focusedCmp)&&!parent||(!(!checkWhitelist||!me.isWhitelisted(focusedCmp))||(!focusedCmp||focusedCmp.is(":root")?siblings=me.getRootComponents():(parent=parent||focusedCmp.up())&&(siblings=parent.getRefItems()),siblings&&(idx=focusedCmp?Ext.Array.indexOf(siblings,focusedCmp):-1,(next=Ext.ComponentQuery.query(":"+nextSelector+"Focus("+idx+")",siblings)[0])&&focusedCmp!==next)?(next.focus(),next):void 0))},onComponentBlur:function(cmp,e){var me=this;me.focusedCmp===cmp&&(me.previousFocusedCmp=cmp,delete me.focusedCmp),me.focusFrame&&me.focusFrame.hide()},onComponentFocus:function(cmp,e){var parent,me=this,chain=me.focusChain;if(!cmp.isFocusable()){if(me.clearComponent(cmp),chain[cmp.id])return;return void((parent=cmp.up())&&(chain[cmp.id]=!0,parent.focus()))}me.focusChain={},me.focusTask.delay(10,null,null,[cmp,cmp.getFocusEl()])},handleComponentFocus:function(cmp,focusEl){var cls,ff,box,bt,bl,bw,bh,ft,fb,fl,fr,me=this;if(!1===me.fireEvent("beforecomponentfocus",me,cmp,me.previousFocusedCmp))return void me.clearComponent(cmp);me.focusedCmp=cmp,me.shouldShowFocusFrame(cmp)&&(cls="."+me.focusFrameCls+"-",ff=me.focusFrame,box=(focusEl.dom?focusEl:focusEl.el).getBox(),bt=box.top,bl=box.left,bw=box.width,bh=box.height,ft=ff.child(cls+"top"),fb=ff.child(cls+"bottom"),fl=ff.child(cls+"left"),fr=ff.child(cls+"right"),ft.setWidth(bw).setLocalXY(bl,bt),fb.setWidth(bw).setLocalXY(bl,bt+bh-2),fl.setHeight(bh-2).setLocalXY(bl,bt+2),fr.setHeight(bh-2).setLocalXY(bl+bw-2,bt+2),ff.show()),me.fireEvent("componentfocus",me,cmp,me.previousFocusedCmp)},onComponentHide:function(cmp){var parent,me=this,cmpHadFocus=!1,focusedCmp=me.focusedCmp;focusedCmp&&(cmpHadFocus=cmp.hasFocus||cmp.isContainer&&cmp.isAncestor(me.focusedCmp)),me.clearComponent(cmp),cmpHadFocus&&(parent=cmp.up(":focusable"))?parent.focus():me.focusEl.focus()},onComponentDestroy:function(){},removeDOM:function(){var me=this;me.enabled||me.subscribers.length||(Ext.destroy(me.focusFrame),delete me.focusEl,delete me.focusFrame)},removeXTypeFromWhitelist:function(xtype){var me=this;if(Ext.isArray(xtype))return void Ext.Array.forEach(xtype,me.removeXTypeFromWhitelist,me);Ext.Array.remove(me.whitelist,xtype)},setupSubscriberKeys:function(container,keys){var me=this,el=container.getFocusEl(),scope=keys.scope,handlers={backspace:me.focusLast,enter:me.navigateIn,esc:me.navigateOut,scope:me},navSiblings=function(e){return me.focusedCmp===container?me.navigateSiblings(e,me,container):me.navigateSiblings(e)};return Ext.iterate(keys,function(key,cb){handlers[key]=function(e){var ret=navSiblings(e);return!(!Ext.isFunction(cb)||!0!==cb.call(scope||container,e,ret))||ret}},me),new Ext.util.KeyNav(el,handlers)},shouldShowFocusFrame:function(cmp){var me=this,opts=me.options||{};return!(!me.focusFrame||!cmp)&&(!!opts.focusFrame||!!me.focusData[cmp.id].focusFrame)}});Ext.define("Ext.Img",{extend:"Ext.Component",alias:["widget.image","widget.imagecomponent"],autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",ariaRole:"img",initComponent:function(){this.glyph&&(this.autoEl="div"),this.callParent()},getElConfig:function(){var img,glyphParts,me=this,autoEl=me.autoEl,config=me.callParent(),glyphFontFamily=Ext._glyphFontFamily,glyph=me.glyph;return"img"===autoEl||Ext.isObject(autoEl)&&"img"===autoEl.tag?img=config:me.glyph?("string"==typeof glyph&&(glyphParts=glyph.split("@"),glyph=glyphParts[0],glyphFontFamily=glyphParts[1]),config.html="&#"+glyph+";",glyphFontFamily&&(config.style="font-family:"+glyphFontFamily)):config.cn=[img={tag:"img",role:me.ariaRole,id:me.id+"-img"}],img&&(me.imgCls&&(img.cls=(img.cls?img.cls+" ":"")+me.imgCls),img.src=me.src||Ext.BLANK_IMAGE_URL),me.alt&&((img||config).alt=me.alt),me.title&&((img||config).title=me.title),config},onRender:function(){var el,me=this,autoEl=me.autoEl;me.callParent(arguments),el=me.el,"img"===autoEl||Ext.isObject(autoEl)&&"img"===autoEl.tag?me.imgEl=el:me.imgEl=el.getById(me.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl),this.imgEl=null,this.callParent()},setSrc:function(src){var me=this,imgEl=me.imgEl;me.src=src,imgEl&&(imgEl.dom.src=src||Ext.BLANK_IMAGE_URL)},setGlyph:function(glyph){var glyphParts,dom,me=this,glyphFontFamily=Ext._glyphFontFamily;glyph!=me.glyph&&("string"==typeof glyph&&(glyphParts=glyph.split("@"),glyph=glyphParts[0],glyphFontFamily=glyphParts[1]),dom=me.el.dom,dom.innerHTML="&#"+glyph+";",glyphFontFamily&&(dom.style="font-family:"+glyphFontFamily))}});Ext.define("Ext.util.Bindable",{bindStore:function(store,initial,propertyName){propertyName=propertyName||"store";var me=this,oldStore=me[propertyName];return!initial&&oldStore&&(me.onUnbindStore(oldStore,initial,propertyName),store!==oldStore&&oldStore.autoDestroy?oldStore.destroyStore():me.unbindStoreListeners(oldStore)),store&&(store=Ext.data.StoreManager.lookup(store),me.bindStoreListeners(store),me.onBindStore(store,initial,propertyName)),me[propertyName]=store||null,me},getStore:function(){return this.store},unbindStoreListeners:function(store){var listeners=this.storeListeners;listeners&&store.un(listeners)},bindStoreListeners:function(store){var me=this,listeners=Ext.apply({},me.getStoreListeners(store));listeners.scope||(listeners.scope=me),me.storeListeners=listeners,store.on(listeners)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn});Ext.define("Ext.LoadMask",{extend:"Ext.Component",alias:"widget.loadmask",mixins:{floating:"Ext.util.Floating",bindable:"Ext.util.Bindable"},uses:["Ext.data.StoreManager"],msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:!0,useTargetEl:!1,baseCls:Ext.baseCSSPrefix+"mask-msg",ariaRole:"presentation",childEls:["msgEl","msgTextEl"],renderTpl:['<div id="{id}-msgEl" role="{role}"','<tpl if="ariaAttr"> {ariaAttr}</tpl>',' class="{[values.$comp.msgCls]} ',Ext.baseCSSPrefix,'mask-msg-inner{childElCls}">','<div id="{id}-msgTextEl" class="',Ext.baseCSSPrefix,"mask-msg-text",'{childElCls}"></div>',"</div>"],floating:{shadow:"frame"},focusOnToFront:!1,bringParentToFront:!1,constructor:function(config){var comp,me=this;2===arguments.length?(Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.LoadMask: LoadMask now uses a standard 1 arg constructor: use the target config"),comp=config,config=arguments[1]):comp=config.target,comp.isComponent||(Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.LoadMask: LoadMask for elements has been deprecated, use Ext.dom.Element.mask & Ext.dom.Element.unmask"),comp=Ext.get(comp),this.isElement=!0),me.ownerCt=comp,this.isElement||me.bindComponent(comp),me.callParent([config]),me.store&&me.bindStore(me.store,!0)},bindComponent:function(comp){var me=this,listeners={scope:this,resize:me.sizeMask,added:me.onComponentAdded,removed:me.onComponentRemoved};comp.floating?(listeners.move=me.sizeMask,me.activeOwner=comp):comp.ownerCt?me.onComponentAdded(comp.ownerCt):me.preventBringToFront=!0,me.mon(comp,listeners),me.mon(me.hierarchyEventSource,{show:me.onContainerShow,hide:me.onContainerHide,expand:me.onContainerExpand,collapse:me.onContainerCollapse,scope:me})},onComponentAdded:function(owner){var me=this;delete me.activeOwner,me.floatParent=owner,owner.floating||(owner=owner.up("[floating]")),owner?(me.activeOwner=owner,me.mon(owner,"move",me.sizeMask,me)):me.preventBringToFront=!0,owner=me.floatParent.ownerCt,me.rendered&&me.isVisible()&&owner&&(me.floatOwner=owner,me.mon(owner,"afterlayout",me.sizeMask,me,{single:!0}))},onComponentRemoved:function(owner){var me=this,activeOwner=me.activeOwner,floatOwner=me.floatOwner;activeOwner&&me.mun(activeOwner,"move",me.sizeMask,me),floatOwner&&me.mun(floatOwner,"afterlayout",me.sizeMask,me),delete me.activeOwner,delete me.floatOwner},afterRender:function(){this.callParent(arguments),this.container=this.floatParent.getContentTarget()},onContainerShow:function(container){this.isActiveContainer(container)&&this.onComponentShow()},onContainerHide:function(container){this.isActiveContainer(container)&&this.onComponentHide()},onContainerExpand:function(container){this.isActiveContainer(container)&&this.onComponentShow()},onContainerCollapse:function(container){this.isActiveContainer(container)&&this.onComponentHide()},isActiveContainer:function(container){return this.isDescendantOf(container)},onComponentHide:function(){var me=this;me.rendered&&me.isVisible()&&(me.hide(),me.showNext=!0)},onComponentShow:function(){this.showNext&&this.show(),delete this.showNext},sizeMask:function(){var target,me=this;me.rendered&&me.isVisible()&&(me.center(),target=me.getMaskTarget(),me.getMaskEl().show().setSize(target.getSize()).alignTo(target,"tl-tl"))},bindStore:function(store,initial){var me=this;me.mixins.bindable.bindStore.apply(me,arguments),(store=me.store)&&store.isLoading()&&me.onBeforeLoad()},getStoreListeners:function(store){var load=this.onLoad,beforeLoad=this.onBeforeLoad,result={cachemiss:beforeLoad,cachefilled:load};return store.proxy.isSynchronous||(result.beforeLoad=beforeLoad,result.load=load),result},onDisable:function(){this.callParent(arguments),this.loading&&this.onLoad()},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var owner=this.getOwner();return this.useTargetEl?owner.getTargetEl():owner.getEl()},onBeforeLoad:function(){var origin,me=this,owner=me.getOwner();me.disabled||(me.loading=!0,owner.componentLayoutCounter?me.maybeShow():(origin=owner.afterComponentLayout,owner.afterComponentLayout=function(){owner.afterComponentLayout=origin,origin.apply(owner,arguments),me.maybeShow()}))},maybeShow:function(){var me=this,owner=me.getOwner();owner.isVisible(!0)?me.loading&&owner.rendered&&me.show():me.showNext=!0},getMaskEl:function(){var me=this;return me.maskEl||(me.maskEl=me.el.insertSibling({role:"presentation",cls:me.maskCls,style:{zIndex:me.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var me=this,msgEl=me.msgEl;me.callParent(arguments),me.loading=!0,me.useMsg?(msgEl.show(),me.msgTextEl.update(me.msg)):msgEl.parent().hide()},hide:function(){return this.isElement?(this.ownerCt.unmask(),void this.fireEvent("hide",this)):(delete this.showNext,this.callParent(arguments))},onHide:function(){this.callParent(),this.getMaskEl().hide()},show:function(){return this.isElement?(this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls),void this.fireEvent("show",this)):this.callParent(arguments)},afterShow:function(){this.callParent(arguments),this.sizeMask()},setZIndex:function(index){var me=this,owner=me.activeOwner;return owner&&(index=parseInt(owner.el.getStyle("zIndex"),10)+1),me.getMaskEl().setStyle("zIndex",index-1),me.mixins.floating.setZIndex.apply(me,arguments)},onLoad:function(){this.loading=!1,this.hide()},onDestroy:function(){var me=this;me.isElement&&me.ownerCt.unmask(),Ext.destroy(me.maskEl),me.callParent()}});Ext.define("Ext.data.association.Association",{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:!0,initialConfig:null,statics:{AUTO_ID:1e3,create:function(association){switch(Ext.isString(association)&&(association={type:association}),association.type){case"belongsTo":return new Ext.data.association.BelongsTo(association);case"hasMany":return new Ext.data.association.HasMany(association);case"hasOne":return new Ext.data.association.HasOne(association);default:Ext.Error.raise('Unknown Association type: "'+association.type+'"')}return association}},constructor:function(config){Ext.apply(this,config);var keyReIdx,me=this,types=Ext.ModelManager.types,ownerName=config.ownerModel,associatedName=config.associatedModel,ownerModel=types[ownerName],associatedModel=types[associatedName],associationKey=config.associationKey;associationKey&&(keyReIdx=String(associationKey).search(/[\[\.]/))>=0&&(me.associationKeyFunction=Ext.functionFactory("obj","return obj"+(keyReIdx>0?".":"")+associationKey)),me.initialConfig=config,void 0===ownerModel&&Ext.Error.raise("The configured ownerModel was not valid (you tried "+ownerName+")"),void 0===associatedModel&&Ext.Error.raise("The configured associatedModel was not valid (you tried "+associatedName+")"),me.ownerModel=ownerModel,me.associatedModel=associatedModel,Ext.applyIf(me,{ownerName:ownerName,associatedName:associatedName}),me.associationId="association"+ ++me.statics().AUTO_ID},getReader:function(){var me=this,reader=me.reader,model=me.associatedModel;return reader&&(Ext.isString(reader)&&(reader={type:reader}),reader.isReader?reader.setModel(model):Ext.applyIf(reader,{model:model,type:me.defaultReaderType}),me.reader=Ext.createByAlias("reader."+reader.type,reader)),me.reader||null}});Ext.define("Ext.ModelManager",{extend:"Ext.AbstractManager",alternateClassName:"Ext.ModelMgr",requires:["Ext.data.association.Association"],singleton:!0,typeName:"mtype",associationStack:[],registerType:function(name,config){var model,proto=config.prototype;return proto&&proto.isModel?model=config:(config.extend||(config.extend="Ext.data.Model"),model=Ext.define(name,config)),this.types[name]=model,model},unregisterType:function(name){delete this.types[name]},onModelDefined:function(model){var association,i,created,stack=this.associationStack,length=stack.length,create=[];for(i=0;i<length;i++)association=stack[i],association.associatedModel==model.modelName&&create.push(association);for(i=0,length=create.length;i<length;i++)created=create[i],this.types[created.ownerModel].prototype.associations.add(Ext.data.association.Association.create(created)),Ext.Array.remove(stack,created)},registerDeferredAssociation:function(association){this.associationStack.push(association)},getModel:function(id){var model=id;return"string"==typeof model&&(model=this.types[model]),model},create:function(config,name,id){return new("function"==typeof name?name:this.types[name||config.name])(config,id)}},function(){Ext.regModel=function(){return Ext.isDefined(Ext.global.console)&&Ext.global.console.warn('Ext.regModel has been deprecated. Models can now be created by extending Ext.data.Model: Ext.define("MyModel", {extend: "Ext.data.Model", fields: []});.'),this.ModelManager.registerType.apply(this.ModelManager,arguments)}});Ext.define("Ext.layout.component.ProgressBar",{alias:["layout.progressbar"],extend:"Ext.layout.component.Auto",type:"progressbar",beginLayout:function(ownerContext){var i,textEls,me=this;if(me.callParent(arguments),!ownerContext.textEls)if(textEls=me.owner.textEl,textEls.isComposite)for(ownerContext.textEls=[],textEls=textEls.elements,i=textEls.length;i--;)ownerContext.textEls[i]=ownerContext.getEl(Ext.get(textEls[i]));else ownerContext.textEls=[ownerContext.getEl("textEl")]},calculate:function(ownerContext){var i,textEls,width,me=this;if(me.callParent(arguments),Ext.isNumber(width=ownerContext.getProp("width")))for(width-=ownerContext.getBorderInfo().width,textEls=ownerContext.textEls,i=textEls.length;i--;)textEls[i].setWidth(width);else me.done=!1}});Ext.define("Ext.ProgressBar",{extend:"Ext.Component",alias:"widget.progressbar",requires:["Ext.Template","Ext.CompositeElement","Ext.TaskManager","Ext.layout.component.ProgressBar"],uses:["Ext.fx.Anim"],baseCls:Ext.baseCSSPrefix+"progress",animate:!1,text:"",waitTimer:null,childEls:["bar"],renderTpl:['<tpl if="internalText">','<div class="{baseCls}-text {baseCls}-text-back">{text}</div>',"</tpl>",'<div id="{id}-bar" class="{baseCls}-bar {baseCls}-bar-{ui}" role="presentation" style="width:{percentage}%">','<tpl if="internalText">','<div class="{baseCls}-text">',"<div>{text}</div>","</div>","</tpl>","</div>"],componentLayout:"progressbar",ariaRole:"progressbar",initComponent:function(){this.callParent(),this.addEvents("update")},initRenderData:function(){var me=this;return Ext.apply(me.callParent(),{internalText:!me.hasOwnProperty("textEl"),text:me.text||"&#160;",percentage:me.value?100*me.value:0})},onRender:function(){var me=this;me.callParent(arguments),me.textEl?(me.textEl=Ext.get(me.textEl),me.updateText(me.text)):me.textEl=me.el.select("."+me.baseCls+"-text")},updateProgress:function(value,text,animate){var me=this,oldValue=me.value;return me.value=value||0,text&&me.updateText(text),me.rendered&&!me.isDestroyed&&(!0===animate||!1!==animate&&me.animate?(me.bar.stopAnimation(),me.bar.animate(Ext.apply({from:{width:100*oldValue+"%"},to:{width:100*me.value+"%"}},me.animate))):me.bar.setStyle("width",100*me.value+"%")),me.fireEvent("update",me,me.value,text),me},updateText:function(text){var me=this;return me.text=text,me.rendered&&me.textEl.update(me.text),me},applyText:function(text){this.updateText(text)},getText:function(){return this.text},wait:function(o){var scope,me=this;return me.waitTimer||(scope=me,o=o||{},me.updateText(o.text),me.waitTimer=Ext.TaskManager.start({run:function(i){var inc=o.increment||10;i-=1,me.updateProgress(100/inc*((i+inc)%inc+1)*.01,null,o.animate)},interval:o.interval||1e3,duration:o.duration,onStop:function(){o.fn&&o.fn.apply(o.scope||me),me.reset()},scope:scope})),me},isWaiting:function(){return null!==this.waitTimer},reset:function(hide){var me=this;return me.updateProgress(0),me.clearTimer(),!0===hide&&me.hide(),me},clearTimer:function(){var me=this;me.waitTimer&&(me.waitTimer.onStop=null,Ext.TaskManager.stop(me.waitTimer),me.waitTimer=null)},onDestroy:function(){var me=this,bar=me.bar;me.clearTimer(),me.rendered&&(me.textEl.isComposite&&me.textEl.clear(),Ext.destroyMembers(me,"textEl","progressBar"),bar&&me.animate&&bar.stopAnimation()),me.callParent()}});Ext.define("Ext.ShadowPool",{singleton:!0,requires:["Ext.DomHelper"],markup:function(){return Ext.String.format('<div class="{0}{1}-shadow" role="presentation"></div>',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}(),shadows:[],pull:function(){var sh=this.shadows.shift();return sh||(sh=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup)),sh.autoBoxAdjust=!1,sh.dom.setAttribute("data-sticky",!0)),sh},push:function(sh){this.shadows.push(sh)},reset:function(){var s,shadows=[].concat(this.shadows),sLen=shadows.length;for(s=0;s<sLen;s++)shadows[s].remove();this.shadows=[]}});Ext.define("Ext.Shadow",{requires:["Ext.ShadowPool"],localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(config){var adjusts,offset,rad,me=this;switch(Ext.apply(me,config),Ext.isString(me.mode)||(me.mode=me.defaultMode),offset=me.offset,rad=Math.floor(offset/2),me.opacity=50,me.mode.toLowerCase()){case"drop":adjusts=Ext.supports.CSS3BoxShadow?{t:offset,l:offset,h:-offset,w:-offset}:{t:-rad,l:-rad,h:-rad,w:-rad};break;case"sides":adjusts=Ext.supports.CSS3BoxShadow?{t:offset,l:0,h:-offset,w:0}:{t:-(1+rad),l:1+rad-2*offset,h:-1,w:rad-1};break;case"frame":adjusts=Ext.supports.CSS3BoxShadow?{t:0,l:0,h:0,w:0}:{t:1+rad-2*offset,l:1+rad-2*offset,h:offset-rad-1,w:offset-rad-1};break;case"bottom":adjusts=Ext.supports.CSS3BoxShadow?{t:offset,l:0,h:-offset,w:0}:{t:offset,l:0,h:0,w:0}}me.adjusts=adjusts},getShadowSize:function(){var me=this,offset=me.el?me.offset:0,result=[offset,offset,offset,offset],mode=me.mode.toLowerCase();return me.el&&"frame"!==mode&&(result[0]=0,"drop"==mode&&(result[3]=0)),result},offset:4,defaultMode:"drop",boxShadowProperty:function(){var property="boxShadow",style=document.documentElement.style;return"boxShadow"in style||("WebkitBoxShadow"in style?property="WebkitBoxShadow":"MozBoxShadow"in style&&(property="MozBoxShadow")),property}(),show:function(target){var index,xy,me=this;target=Ext.get(target),index=parseInt(target.getStyle("z-index"),10)-1||0,xy=target[me.localXYNames.get](),me.el||(me.el=Ext.ShadowPool.pull(),me.fixed?me.el.dom.style.position="fixed":me.el.dom.style.position="",me.el.dom.nextSibling!=target.dom&&me.el.insertBefore(target)),me.el.setStyle("z-index",me.zIndex||index),Ext.isIE&&!Ext.supports.CSS3BoxShadow&&(me.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity="+me.opacity+") progid:DXImageTransform.Microsoft.Blur(pixelradius="+me.offset+")"),me.realign(xy[0],xy[1],target.dom.offsetWidth,target.dom.offsetHeight),me.el.dom.style.display="block"},isVisible:function(){return!!this.el},realign:function(l,t,targetWidth,targetHeight){if(this.el){var shadowWidth,shadowHeight,sws,shs,adjusts=this.adjusts,el=this.el,targetStyle=el.dom.style;el[this.localXYNames.set](l+adjusts.l,t+adjusts.t),shadowWidth=Math.max(targetWidth+adjusts.w,0),shadowHeight=Math.max(targetHeight+adjusts.h,0),sws=shadowWidth+"px",shs=shadowHeight+"px",targetStyle.width==sws&&targetStyle.height==shs||(targetStyle.width=sws,targetStyle.height=shs,Ext.supports.CSS3BoxShadow&&(targetStyle[this.boxShadowProperty]="0 0 "+(this.offset+2)+"px #888"))}},hide:function(){var me=this;me.el&&(me.el.dom.style.display="none",Ext.ShadowPool.push(me.el),delete me.el)},setZIndex:function(z){this.zIndex=z,this.el&&this.el.setStyle("z-index",z)},setOpacity:function(opacity){this.el&&(Ext.isIE&&!Ext.supports.CSS3BoxShadow&&(opacity=Math.floor(100*opacity/2)/100),this.opacity=opacity,this.el.setOpacity(opacity))}});Ext.define("Ext.app.EventDomain",{requires:["Ext.util.Event"],statics:{instances:{}},isEventDomain:!0,constructor:function(){var me=this;Ext.app.EventDomain.instances[me.type]=me,me.bus={},me.monitoredClasses=[]},dispatch:function(target,ev,args){var selector,controllers,id,events,event,i,ln,me=this,bus=me.bus,selectors=bus[ev];if(!selectors)return!0;for(selector in selectors)if(selectors.hasOwnProperty(selector)&&me.match(target,selector)){controllers=selectors[selector];for(id in controllers)if(controllers.hasOwnProperty(id))for(events=controllers[id],i=0,ln=events.length;i<ln;i++)if(event=events[i],!1===event.fire.apply(event,args))return!1}return!0},listen:function(selectors,controller){var i,tree,list,selector,options,listener,scope,event,listeners,ev,me=this,bus=me.bus,idProperty=me.idProperty,monitoredClasses=me.monitoredClasses,monitoredClassesCount=monitoredClasses.length;for(selector in selectors)if(selectors.hasOwnProperty(selector)&&(listeners=selectors[selector])){idProperty&&(/^[*#]/.test(selector)||Ext.Error.raise("Selectors containing id should begin with #"),selector="*"===selector?selector:selector.substring(1));for(ev in listeners)if(listeners.hasOwnProperty(ev)){for(options=null,listener=listeners[ev],scope=controller,event=new Ext.util.Event(controller,ev),Ext.isObject(listener)&&(options=listener,listener=options.fn,scope=options.scope||controller,delete options.fn,delete options.scope),"string"==typeof listener&&(listener=scope[listener]),event.addListener(listener,scope,options),i=monitoredClassesCount;i-- >0;)monitoredClasses[i].hasListeners._incr_(ev);tree=bus[ev]||(bus[ev]={}),tree=tree[selector]||(tree[selector]={}),list=tree[controller.id]||(tree[controller.id]=[]),list.push(event)}}},match:function(target,selector){var idProperty=this.idProperty;return!!idProperty&&("*"===selector||target[idProperty]===selector)},monitor:function(observable){var domain=this,prototype=observable.isInstance?observable:observable.prototype,fireEventArgs=prototype.fireEventArgs;domain.monitoredClasses.push(observable),prototype.fireEventArgs=function(ev,args){var ret=fireEventArgs.apply(this,arguments);return!1!==ret&&(ret=domain.dispatch(this,ev,args)),ret}},unlisten:function(controllerId){var controllers,ev,selector,selectors,bus=this.bus;for(ev in bus)if(bus.hasOwnProperty(ev)&&(selectors=bus[ev]))for(selector in selectors)controllers=selectors[selector],delete controllers[controllerId]}});Ext.define("Ext.app.domain.Component",{extend:"Ext.app.EventDomain",singleton:!0,requires:["Ext.Component"],type:"component",constructor:function(){var me=this;me.callParent(),me.monitor(Ext.Component)},match:function(target,selector){return target.is(selector)}});Ext.define("Ext.app.EventBus",{singleton:!0,requires:["Ext.app.domain.Component"],constructor:function(){var me=this,domains=Ext.app.EventDomain.instances;me.callParent(),me.domains=domains,me.bus=domains.component.bus},control:function(selectors,controller){return this.domains.component.listen(selectors,controller)},listen:function(to,controller){var domain,domains=this.domains;for(domain in to)to.hasOwnProperty(domain)&&domains[domain].listen(to[domain],controller)},unlisten:function(controllerId){var domain,domains=Ext.app.EventDomain.instances;for(domain in domains)domains[domain].unlisten(controllerId)}});Ext.define("Ext.data.StoreManager",{extend:"Ext.util.MixedCollection",alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:!0,uses:["Ext.data.ArrayStore"],register:function(){for(var s,i=0;s=arguments[i];i++)this.add(s)},unregister:function(){for(var s,i=0;s=arguments[i];i++)this.remove(this.lookup(s))},lookup:function(store){if(Ext.isArray(store)){var i,len,fields=["field1"],expand=!Ext.isArray(store[0]),data=store;if(expand)for(data=[],i=0,len=store.length;i<len;++i)data.push([store[i]]);else for(i=2,len=store[0].length;i<=len;++i)fields.push("field"+i);return new Ext.data.ArrayStore({data:data,fields:fields,autoDestroy:!0,autoCreated:!0,expanded:expand})}return Ext.isString(store)?this.get(store):Ext.data.AbstractStore.create(store)},getKey:function(o){return o.storeId}},function(){Ext.regStore=function(name,config){var store;return Ext.isObject(name)?config=name:config.storeId=name,store=config instanceof Ext.data.Store?config:new Ext.data.Store(config),Ext.data.StoreManager.register(store)},Ext.getStore=function(name){return Ext.data.StoreManager.lookup(name)}});Ext.define("Ext.app.domain.Global",{extend:"Ext.app.EventDomain",singleton:!0,type:"global",constructor:function(){var me=this;me.callParent(),me.monitor(Ext.globalEvents)},listen:function(listeners,controller){this.callParent([{global:listeners},controller])},match:function(){return!0}});Ext.define("Ext.data.ResultSet",{loaded:!0,count:0,total:0,success:!1,constructor:function(config){Ext.apply(this,config),this.totalRecords=this.total,void 0===config.count&&(this.count=this.records.length)}});Ext.define("Ext.data.reader.Reader",{requires:["Ext.data.ResultSet","Ext.XTemplate"],alternateClassName:["Ext.data.Reader","Ext.data.DataReader"],mixins:{observable:"Ext.util.Observable"},totalProperty:"total",successProperty:"success",root:"",implicitIncludes:!0,readRecordsOnFailure:!0,isReader:!0,applyDefaults:!0,lastFieldGeneration:null,constructor:function(config){var me=this;me.mixins.observable.constructor.call(me,config),me.model=Ext.ModelManager.getModel(me.model),me.model&&me.model.prototype.fields&&me.buildExtractors(),this.addEvents("exception")},setModel:function(model,setOnProxy){var me=this,oldModel=me.model,force=!0;model=me.model=Ext.ModelManager.getModel(model),model&&oldModel===model&&(force=me.lastFieldGeneration!==model.prototype.fields.generation),model&&me.buildExtractors(force),setOnProxy&&me.proxy&&me.proxy.setModel(model,!0)},read:function(response){var data;return response&&(data=response.responseText?this.getResponseData(response):this.readRecords(response)),data||this.nullResultSet},readRecords:function(data){var success,recordCount,records,root,total,value,message,me=this;return me.lastFieldGeneration!==me.model.prototype.fields.generation&&me.buildExtractors(!0),me.rawData=data,data=me.getData(data),success=!0,recordCount=0,records=[],me.successProperty&&(!1!==(value=me.getSuccess(data))&&"false"!==value||(success=!1)),me.messageProperty&&(message=me.getMessage(data)),(me.readRecordsOnFailure||success)&&(root=Ext.isArray(data)?data:me.getRoot(data),root&&(total=root.length),me.totalProperty&&(value=parseInt(me.getTotal(data),10),isNaN(value)||(total=value)),root&&(records=me.extractData(root),recordCount=records.length)),new Ext.data.ResultSet({total:total||recordCount,count:recordCount,records:records,success:success,message:message})},extractData:function(root){var convertedValues,node,record,i,me=this,Model=me.model,length=root.length,records=new Array(length);for(!root.length&&Ext.isObject(root)&&(root=[root],length=1),i=0;i<length;i++)node=root[i],node.isModel?records[i]=node:(records[i]=record=new Model(void 0,me.getId(node),node,convertedValues={}),record.phantom=!1,me.convertRecordData(convertedValues,node,record),me.implicitIncludes&&record.associations.length&&me.readAssociated(record,node));return records},readAssociated:function(record,data){for(var association,associationData,proxy,reader,associations=record.associations.items,i=0,length=associations.length;i<length;i++)association=associations[i],(associationData=this.getAssociatedDataRoot(data,association.associationKeyFunction||association.associationKey||association.name))&&(reader=association.getReader(),reader||(proxy=association.associatedModel.getProxy(),reader=proxy?proxy.getReader():new this.constructor({model:association.associatedName})),association.read(record,reader,associationData))},getAssociatedDataRoot:function(data,associationName){return Ext.isFunction(associationName)?associationName(data):data[associationName]},getFields:function(){return this.model.prototype.fields.items},getData:Ext.identityFn,getRoot:Ext.identityFn,getResponseData:function(response){Ext.Error.raise("getResponseData must be implemented in the Ext.data.reader.Reader subclass")},onMetaChange:function(meta){var newModel,clientIdProperty,me=this,fields=meta.fields||me.getFields();me.metaData=meta,me.root=meta.root||me.root,me.idProperty=meta.idProperty||me.idProperty,me.totalProperty=meta.totalProperty||me.totalProperty,me.successProperty=meta.successProperty||me.successProperty,me.messageProperty=meta.messageProperty||me.messageProperty,clientIdProperty=meta.clientIdProperty,me.model?(me.model.setFields(fields,me.idProperty,clientIdProperty),me.setModel(me.model,!0)):(newModel=Ext.define("Ext.data.reader.Json-Model"+Ext.id(),{extend:"Ext.data.Model",fields:fields,clientIdProperty:clientIdProperty}),me.idProperty&&(newModel.idProperty=me.idProperty),me.setModel(newModel,!0))},getIdProperty:function(){var idField=this.model.prototype.idField,idProperty=this.idProperty;return!idProperty&&idField&&null==(idProperty=idField.mapping)&&(idProperty=idField.name),idProperty},buildExtractors:function(force){var accessor,me=this,idProp=me.getIdProperty(),totalProp=me.totalProperty,successProp=me.successProperty,messageProp=me.messageProperty;!0===force&&delete me.convertRecordData,me.convertRecordData||(totalProp&&(me.getTotal=me.createAccessor(totalProp)),successProp&&(me.getSuccess=me.createAccessor(successProp)),messageProp&&(me.getMessage=me.createAccessor(messageProp)),idProp?(accessor=me.createAccessor(idProp),me.getId=function(record){var id=accessor.call(me,record);return void 0===id||""===id?null:id}):me.getId=function(){return null},me.convertRecordData=me.buildRecordDataExtractor(),me.lastFieldGeneration=me.model.prototype.fields.generation)},recordDataExtractorTemplate:["var me = this\n","    ,fields = me.model.prototype.fields\n","    ,value\n","    ,internalId\n",'<tpl for="fields">','    ,__field{#} = fields.map["{name}"]\n',"</tpl>",";\n","return function(dest, source, record) {\n",'<tpl for="fields">','{% var fieldAccessExpression =  this.createFieldAccessExpression(values, "__field" + xindex, "source");',"   if (fieldAccessExpression) { %}",'    value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','<tpl if="hasCustomConvert">','    dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n','<tpl elseif="defaultValue !== undefined">',"    if (value === undefined) {\n","        if (me.applyDefaults) {\n",'<tpl if="convert">','            dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'            dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","        };\n","    } else {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    };\n","<tpl else>","    if (value !== undefined) {\n",'<tpl if="convert">','        dest["{name}"] = __field{#}.convert(value, record);\n',"<tpl else>",'        dest["{name}"] = value;\n',"</tpl>","    }\n","</tpl>","{% } else { %}",'<tpl if="defaultValue !== undefined">','<tpl if="convert">','    dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"<tpl else>",'    dest["{name}"] = __field{#}.defaultValue\n',"</tpl>","</tpl>","{% } %}","</tpl>",'<tpl if="clientIdProp">','    if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n','        record.{["internalId"]} = internalId;\n',"    }\n","</tpl>","};"],buildRecordDataExtractor:function(){var me=this,modelProto=me.model.prototype,templateData={clientIdProp:modelProto.clientIdProperty,fields:modelProto.fields.items};return me.recordDataExtractorTemplate.createFieldAccessExpression=function(){return me.createFieldAccessExpression.apply(me,arguments)},Ext.functionFactory(me.recordDataExtractorTemplate.apply(templateData)).call(me)},destroyReader:function(){var me=this;delete me.proxy,delete me.model,delete me.convertRecordData,delete me.getId,delete me.getTotal,delete me.getSuccess,delete me.getMessage}},function(){var proto=this.prototype;Ext.apply(proto,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:!0,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(proto.recordDataExtractorTemplate)})});Ext.define("Ext.data.reader.Json",{extend:"Ext.data.reader.Reader",alternateClassName:"Ext.data.JsonReader",alias:"reader.json",root:"",metaProperty:"metaData",useSimpleAccessors:!1,readRecords:function(data){var meta,me=this;return me.getMeta?(meta=me.getMeta(data))&&me.onMetaChange(meta):data.metaData&&me.onMetaChange(data.metaData),me.jsonData=data,me.callParent([data])},getResponseData:function(response){var data,error;try{return data=Ext.decode(response.responseText),this.readRecords(data)}catch(ex){return error=new Ext.data.ResultSet({total:0,count:0,records:[],success:!1,message:ex.message}),this.fireEvent("exception",this,response,error),Ext.Logger.warn("Unable to parse the JSON returned by the server"),error}},buildExtractors:function(){var me=this,metaProp=me.metaProperty;me.callParent(arguments),me.root?me.getRoot=me.createAccessor(me.root):me.getRoot=Ext.identityFn,metaProp&&(me.getMeta=me.createAccessor(metaProp))},extractData:function(root){var length,i,recordName=this.record,data=[];if(recordName)for(length=root.length,!length&&Ext.isObject(root)&&(length=1,root=[root]),i=0;i<length;i++)data[i]=root[i][recordName];else data=root;return this.callParent([data])},createAccessor:function(){var re=/[\[\.]/;return function(expr){if(Ext.isEmpty(expr))return Ext.emptyFn;if(Ext.isFunction(expr))return expr;if(!0!==this.useSimpleAccessors){var i=String(expr).search(re);if(i>=0)return Ext.functionFactory("obj","return obj"+(i>0?".":"")+expr)}return function(obj){return obj[expr]}}}(),createFieldAccessExpression:function(){var re=/[\[\.]/;return function(field,fieldVarName,dataName){var result,operatorIndex,mapping=field.mapping,hasMap=mapping||0===mapping,map=hasMap?mapping:field.name;if(!1!==mapping){if("function"==typeof map)result=fieldVarName+".mapping("+dataName+", this)";else if(!0===this.useSimpleAccessors||(operatorIndex=String(map).search(re))<0)hasMap&&!isNaN(map)||(map='"'+map+'"'),result=dataName+"["+map+"]";else if(0===operatorIndex)result=dataName+map;else{for(var parts=map.split("."),len=parts.length,i=1,tempResult=dataName+"."+parts[0],buffer=[tempResult];i<len;i++)tempResult+="."+parts[i],buffer.push(tempResult);result=buffer.join(" && ")}return result}}}()});Ext.define("Ext.data.writer.Writer",{alias:"writer.base",alternateClassName:["Ext.data.DataWriter","Ext.data.Writer"],writeAllFields:!0,nameProperty:"name",writeRecordId:!0,isWriter:!0,constructor:function(config){Ext.apply(this,config)},write:function(request){for(var operation=request.operation,records=operation.records||[],len=records.length,i=0,data=[];i<len;i++)data.push(this.getRecordData(records[i],operation));return this.writeRecords(request,data)},getRecordData:function(record,operation){var changes,field,key,mappedIdProperty,f,fLen,isPhantom=!0===record.phantom,writeAll=this.writeAllFields||isPhantom,fields=record.fields,fieldItems=fields.items,data={},clientIdProperty=record.clientIdProperty;if(writeAll)for(fLen=fieldItems.length,f=0;f<fLen;f++)field=fieldItems[f],field.persist&&this.writeValue(data,field,record);else if("destroy"===operation.action)this.writeValue(data,record.idField,record);else{changes=record.getChanges();for(key in changes)changes.hasOwnProperty(key)&&(field=fields.get(key),field.persist&&this.writeValue(data,field,record))}return isPhantom?clientIdProperty&&operation&&operation.records.length>1&&(data[clientIdProperty]=record.internalId):this.writeRecordId&&(mappedIdProperty=fields.get(record.idProperty)[this.nameProperty]||record.idProperty,data[mappedIdProperty]=record.getId()),data},writeValue:function(data,field,record){var name=field[this.nameProperty],dateFormat=this.dateFormat||field.dateWriteFormat||field.dateFormat,value=record.get(field.name);null==name&&(name=field.name),field.serialize?data[name]=field.serialize(value,record):field.type===Ext.data.Types.DATE&&dateFormat&&Ext.isDate(value)?data[name]=Ext.Date.format(value,dateFormat):data[name]=value}});Ext.define("Ext.data.writer.Json",{extend:"Ext.data.writer.Writer",alternateClassName:"Ext.data.JsonWriter",alias:"writer.json",root:void 0,encode:!1,allowSingle:!0,expandData:!1,getExpandedData:function(data){for(var item,prop,nameParts,j,tempObj,dataLength=data.length,i=0;i<dataLength;i++){item=data[i];for(prop in item)if(item.hasOwnProperty(prop)&&(nameParts=prop.split("."),(j=nameParts.length-1)>0)){for(tempObj=item[prop];j>0;j--)tempObj=function(name,value){var o={};return o[name]=value,o}(nameParts[j],tempObj);item[nameParts[0]]=item[nameParts[0]]||{},Ext.Object.merge(item[nameParts[0]],tempObj),delete item[prop]}}return data},writeRecords:function(request,data){var root=this.root;return this.expandData&&(data=this.getExpandedData(data)),this.allowSingle&&1===data.length&&(data=data[0]),this.encode?root?request.params[root]=Ext.encode(data):Ext.Error.raise("Must specify a root when using encode"):(request.jsonData=request.jsonData||{},root?request.jsonData[root]=data:request.jsonData=data),request}});Ext.define("Ext.data.proxy.Proxy",{alias:"proxy.proxy",alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],requires:["Ext.data.reader.Json","Ext.data.writer.Json"],uses:["Ext.data.Batch","Ext.data.Operation","Ext.data.Model"],mixins:{observable:"Ext.util.Observable"},batchOrder:"create,update,destroy",batchActions:!0,defaultReaderType:"json",defaultWriterType:"json",isProxy:!0,isSynchronous:!1,constructor:function(config){var me=this;config=config||{},me.proxyConfig=config,me.mixins.observable.constructor.call(me,config),void 0===me.model||me.model instanceof Ext.data.Model?(me.reader&&me.setReader(me.reader),me.writer&&me.setWriter(me.writer)):me.setModel(me.model)},setModel:function(model,setOnStore){var me=this;me.model=Ext.ModelManager.getModel(model),me.setReader(this.reader),me.setWriter(this.writer),setOnStore&&me.store&&me.store.setModel(me.model)},getModel:function(){return this.model},setReader:function(reader){var me=this,needsCopy=!0,current=me.reader;return void 0!==reader&&"string"!=typeof reader||(reader={type:reader},needsCopy=!1),reader.isReader?reader.setModel(me.model):(needsCopy&&(reader=Ext.apply({},reader)),Ext.applyIf(reader,{proxy:me,model:me.model,type:me.defaultReaderType}),reader=Ext.createByAlias("reader."+reader.type,reader)),reader!==current&&reader.onMetaChange&&(reader.onMetaChange=Ext.Function.createSequence(reader.onMetaChange,this.onMetaChange,this)),me.reader=reader,me.reader},getReader:function(){return this.reader},onMetaChange:function(meta){this.fireEvent("metachange",this,meta)},setWriter:function(writer){var me=this,needsCopy=!0;return void 0!==writer&&"string"!=typeof writer||(writer={type:writer},needsCopy=!1),writer.isWriter||(needsCopy&&(writer=Ext.apply({},writer)),Ext.applyIf(writer,{model:me.model,type:me.defaultWriterType}),writer=Ext.createByAlias("writer."+writer.type,writer)),me.writer=writer,me.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(options,listeners){var batch,records,actions,aLen,action,a,r,rLen,record,me=this,useBatch=me.batchActions;for(void 0===options.operations&&(options={operations:options,listeners:listeners}),options.batch?Ext.isDefined(options.batch.runOperation)&&(batch=Ext.applyIf(options.batch,{proxy:me,listeners:{}})):options.batch={proxy:me,listeners:options.listeners||{}},batch||(batch=new Ext.data.Batch(options.batch)),batch.on("complete",Ext.bind(me.onBatchComplete,me,[options],0)),actions=me.batchOrder.split(","),aLen=actions.length,a=0;a<aLen;a++)if(action=actions[a],records=options.operations[action])if(useBatch)batch.add(new Ext.data.Operation({action:action,records:records}));else for(rLen=records.length,r=0;r<rLen;r++)record=records[r],batch.add(new Ext.data.Operation({action:action,records:[record]}));return batch.start(),batch},onBatchComplete:function(batchOptions,batch){var scope=batchOptions.scope||this;batch.hasException?Ext.isFunction(batchOptions.failure)&&Ext.callback(batchOptions.failure,scope,[batch,batchOptions]):Ext.isFunction(batchOptions.success)&&Ext.callback(batchOptions.success,scope,[batch,batchOptions]),Ext.isFunction(batchOptions.callback)&&Ext.callback(batchOptions.callback,scope,[batch,batchOptions])},clone:function(){return new this.self(this.proxyConfig)}});Ext.define("Ext.data.Operation",{synchronous:!0,action:void 0,filters:void 0,sorters:void 0,groupers:void 0,start:void 0,limit:void 0,batch:void 0,callback:void 0,scope:void 0,started:!1,running:!1,complete:!1,success:void 0,exception:!1,error:void 0,actionCommitRecordsRe:/^(?:create|update)$/i,actionSkipSyncRe:/^destroy$/i,constructor:function(config){Ext.apply(this,config||{})},commitRecords:function(serverRecords){var mc,index,clientRecords,serverRec,clientRec,i,len,modifiedFields,recordModifiedFields,me=this,commitRecords=me.actionCommitRecordsRe.test(me.action);if(!me.actionSkipSyncRe.test(me.action)&&(clientRecords=me.records)&&clientRecords.length){if(commitRecords&&(recordModifiedFields=[]),clientRecords.length>1)if("update"==me.action||clientRecords[0].clientIdProperty)for(mc=new Ext.util.MixedCollection,mc.addAll(serverRecords),index=clientRecords.length;index--;)clientRec=clientRecords[index],serverRec=mc.findBy(me.matchClientRec,clientRec),modifiedFields=clientRec.copyFrom(serverRec),commitRecords&&recordModifiedFields.push(modifiedFields);else for(i=0,len=clientRecords.length;i<len;++i)clientRec=clientRecords[i],serverRec=serverRecords[i],clientRec&&serverRec&&(modifiedFields=me.updateRecord(clientRec,serverRec),commitRecords&&recordModifiedFields.push(modifiedFields));else modifiedFields=me.updateRecord(clientRecords[0],serverRecords[0]),commitRecords&&(recordModifiedFields[0]=modifiedFields);if(commitRecords)for(index=clientRecords.length;index--;)clientRecords[index].commit(!1,recordModifiedFields[index])}},updateRecord:function(clientRec,serverRec){return serverRec&&(clientRec.phantom||clientRec.getId()===serverRec.getId())?clientRec.copyFrom(serverRec):[]},matchClientRec:function(record){var clientRec=this,clientRecordId=clientRec.getId();return!(!clientRecordId||record.getId()!==clientRecordId)||record.internalId===clientRec.internalId},setStarted:function(){this.started=!0,this.running=!0},setCompleted:function(){this.complete=!0,this.running=!1},setSuccessful:function(){this.success=!0},setException:function(error){this.exception=!0,this.success=!1,this.running=!1,this.error=error},hasException:function(){return!0===this.exception},getError:function(){return this.error},getRecords:function(){var resultSet=this.getResultSet();return this.records||(resultSet?resultSet.records:null)},getResultSet:function(){return this.resultSet},isStarted:function(){return!0===this.started},isRunning:function(){return!0===this.running},isComplete:function(){return!0===this.complete},wasSuccessful:function(){return this.isComplete()&&!0===this.success},setBatch:function(batch){this.batch=batch},allowWrite:function(){return"read"!=this.action}});Ext.define("Ext.data.AbstractStore",{requires:["Ext.util.MixedCollection","Ext.data.proxy.Proxy","Ext.data.Operation","Ext.util.Filter"],mixins:{observable:"Ext.util.Observable",sortable:"Ext.util.Sortable"},statics:{create:function(store){return store.isStore||(store.type||(store.type="store"),store=Ext.createByAlias("store."+store.type,store)),store}},onClassExtended:function(cls,data,hooks){var onBeforeClassCreated,model=data.model;"string"==typeof model&&(onBeforeClassCreated=hooks.onBeforeCreated,hooks.onBeforeCreated=function(){var me=this,args=arguments;Ext.require(model,function(){onBeforeClassCreated.apply(me,args)})})},remoteSort:!1,remoteFilter:!1,autoLoad:void 0,autoSync:!1,batchUpdateMode:"operation",filterOnLoad:!0,sortOnLoad:!0,implicitModel:!1,defaultProxyType:"memory",isDestroyed:!1,isStore:!0,sortRoot:"data",constructor:function(config){var filters,me=this;Ext.apply(me,config),me.removed=[],me.mixins.observable.constructor.apply(me,arguments);var configModel=me.model;if(me.model=Ext.ModelManager.getModel(me.model),Ext.applyIf(me,{modelDefaults:null}),!me.model&&me.fields&&(me.model=Ext.define("Ext.data.Store.ImplicitModel-"+(me.storeId||Ext.id()),{extend:"Ext.data.Model",fields:me.fields,proxy:me.proxy||me.defaultProxyType}),delete me.fields,me.implicitModel=!0),!me.model&&!1!==me.useModelWarning){var logMsg=[Ext.getClassName(me)||"Store"," created with no model."];"string"==typeof configModel&&logMsg.push(" The name '",configModel,"'"," does not correspond to a valid model."),Ext.log.warn(logMsg.join(""))}me.setProxy(me.proxy||me.model.getProxy()),me.id&&!me.storeId&&(me.storeId=me.id,delete me.id),me.storeId&&Ext.data.StoreManager.register(me),me.mixins.sortable.initSortable.call(me),filters=me.decodeFilters(me.filters),me.filters=new Ext.util.MixedCollection,me.filters.addAll(filters)},setProxy:function(proxy){var me=this,model=me.model;return proxy instanceof Ext.data.proxy.Proxy?proxy.setModel(model):(Ext.isString(proxy)?proxy={type:proxy,model:model}:proxy.model||(proxy=Ext.apply({model:model},proxy)),proxy=Ext.createByAlias("proxy."+proxy.type,proxy)),me.disableMetaChangeEvent||proxy.on("metachange",me.onMetaChange,me),me.proxy=proxy,me.proxy},getProxy:function(){return this.proxy},onMetaChange:function(proxy,meta){this.fireEvent("metachange",this,meta)},create:function(data,options){var operation,me=this,instance=Ext.ModelManager.create(Ext.applyIf(data,me.modelDefaults),me.model.modelName);return options=options||{},Ext.applyIf(options,{action:"create",records:[instance]}),operation=new Ext.data.Operation(options),me.proxy.create(operation,me.onProxyWrite,me),instance},read:function(){return this.load.apply(this,arguments)},update:function(options){var operation,me=this;return options=options||{},Ext.applyIf(options,{action:"update",records:me.getUpdatedRecords()}),operation=new Ext.data.Operation(options),me.proxy.update(operation,me.onProxyWrite,me)},onProxyWrite:function(operation){var me=this,success=operation.wasSuccessful(),records=operation.getRecords();switch(operation.action){case"create":me.onCreateRecords(records,operation,success);break;case"update":me.onUpdateRecords(records,operation,success);break;case"destroy":me.onDestroyRecords(records,operation,success)}success&&(me.fireEvent("write",me,operation),me.fireEvent("datachanged",me),me.fireEvent("refresh",me)),Ext.callback(operation.callback,operation.scope||me,[records,operation,success])},onCreateRecords:Ext.emptyFn,onUpdateRecords:Ext.emptyFn,onDestroyRecords:function(records,operation,success){success&&(this.removed=[])},destroy:function(options){var operation,me=this;return options=options||{},Ext.applyIf(options,{action:"destroy",records:me.getRemovedRecords()}),operation=new Ext.data.Operation(options),me.proxy.destroy(operation,me.onProxyWrite,me)},onBatchOperationComplete:function(batch,operation){return this.onProxyWrite(operation)},onBatchComplete:function(batch,operation){var i,me=this,operations=batch.operations,length=operations.length;for(me.suspendEvents(),i=0;i<length;i++)me.onProxyWrite(operations[i]);me.resumeEvents(),me.fireEvent("datachanged",me),me.fireEvent("refresh",me)},onBatchException:function(batch,operation){},filterNew:function(item){return!0===item.phantom&&item.isValid()},getNewRecords:function(){return[]},getUpdatedRecords:function(){return[]},getModifiedRecords:function(){return[].concat(this.getNewRecords(),this.getUpdatedRecords())},filterUpdated:function(item){return!0===item.dirty&&!0!==item.phantom&&item.isValid()},getRemovedRecords:function(){return this.removed},filter:function(filters,value){},decodeFilters:function(filters){Ext.isArray(filters)||(filters=void 0===filters?[]:[filters]);var config,i,length=filters.length,Filter=Ext.util.Filter;for(i=0;i<length;i++)(config=filters[i])instanceof Filter||(Ext.apply(config,{root:"data"}),config.fn&&(config.filterFn=config.fn),"function"==typeof config&&(config={filterFn:config}),filters[i]=new Filter(config));return filters},clearFilter:function(supressEvent){},isFiltered:function(){},filterBy:function(fn,scope){},sync:function(options){var me=this,operations={},toCreate=me.getNewRecords(),toUpdate=me.getUpdatedRecords(),toDestroy=me.getRemovedRecords(),needsSync=!1;return toCreate.length>0&&(operations.create=toCreate,needsSync=!0),toUpdate.length>0&&(operations.update=toUpdate,needsSync=!0),toDestroy.length>0&&(operations.destroy=toDestroy,needsSync=!0),needsSync&&!1!==me.fireEvent("beforesync",operations)&&(options=options||{},me.proxy.batch(Ext.apply(options,{operations:operations,listeners:me.getBatchListeners()}))),me},getBatchListeners:function(){var me=this,listeners={scope:me,exception:me.onBatchException};return"operation"==me.batchUpdateMode?listeners.operationcomplete=me.onBatchOperationComplete:listeners.complete=me.onBatchComplete,listeners},save:function(){return this.sync.apply(this,arguments)},load:function(options){var me=this,operation={action:"read"};return me.remoteFilter&&(operation.filters=me.filters.items),me.remoteSort&&(operation.sorters=me.getSorters()),Ext.apply(operation,options),me.lastOptions=operation,operation=new Ext.data.Operation(operation),!1!==me.fireEvent("beforeload",me,operation)&&(me.loading=!0,me.proxy.read(operation,me.onProxyLoad,me)),me},reload:function(options){var o=Ext.apply({},options,this.lastOptions);return this.load(o)},afterEdit:function(record,modifiedFieldNames){var i,shouldSync,me=this;if(me.autoSync&&!me.autoSyncSuspended){for(i=modifiedFieldNames.length;i--;)if(record.fields.get(modifiedFieldNames[i]).persist){shouldSync=!0;break}shouldSync&&me.sync()}me.onUpdate(record,Ext.data.Model.EDIT,modifiedFieldNames),me.fireEvent("update",me,record,Ext.data.Model.EDIT,modifiedFieldNames)},afterReject:function(record){this.onUpdate(record,Ext.data.Model.REJECT,null),this.fireEvent("update",this,record,Ext.data.Model.REJECT,null)},afterCommit:function(record,modifiedFieldNames){modifiedFieldNames||(modifiedFieldNames=null),this.onUpdate(record,Ext.data.Model.COMMIT,modifiedFieldNames),this.fireEvent("update",this,record,Ext.data.Model.COMMIT,modifiedFieldNames)},onUpdate:Ext.emptyFn,onIdChanged:function(model,oldId,newId,oldInternalId){this.fireEvent("idchanged",this,model,oldId,newId,oldInternalId)},destroyStore:function(){var implicitModelName,me=this;me.isDestroyed||(me.clearListeners(),me.storeId&&Ext.data.StoreManager.unregister(me),me.clearData(),me.data=me.tree=me.sorters=me.filters=me.groupers=null,me.reader&&me.reader.destroyReader(),me.proxy=me.reader=me.writer=null,me.isDestroyed=!0,me.implicitModel?(implicitModelName=Ext.getClassName(me.model),Ext.undefine(implicitModelName),Ext.ModelManager.unregisterType(implicitModelName)):me.model=null)},getState:function(){var hasState,result,me=this,hasGroupers=!!me.groupers,groupers=[],sorters=[],filters=[];if(hasGroupers&&me.groupers.each(function(g){groupers[groupers.length]=g.serialize(),hasState=!0}),me.sorters&&me.sorters.each(function(s){hasGroupers&&!me.groupers.contains(s)&&(sorters[sorters.length]=s.serialize(),hasState=!0)}),me.filters&&me.statefulFilters&&me.filters.each(function(f){filters[filters.length]=f.serialize(),hasState=!0}),hasState)return result={},groupers.length&&(result.groupers=groupers),sorters.length&&(result.sorters=sorters),filters.length&&(result.filters=filters),result},applyState:function(state){var locallySorted,me=this,hasSorters=!!me.sorters,hasGroupers=!!me.groupers,hasFilters=!!me.filters;hasGroupers&&state.groupers&&(me.groupers.clear(),me.groupers.addAll(me.decodeGroupers(state.groupers))),hasSorters&&state.sorters&&(me.sorters.clear(),me.sorters.addAll(me.decodeSorters(state.sorters))),hasFilters&&state.filters&&(me.filters.clear(),me.filters.addAll(me.decodeFilters(state.filters))),hasSorters&&hasGroupers&&me.sorters.insert(0,me.groupers.getRange()),me.autoLoad&&(me.remoteSort||me.remoteGroup||me.remoteFilter)&&(!0===me.autoLoad?me.reload():me.reload(me.autoLoad)),hasFilters&&me.filters.length&&!me.remoteFilter&&(me.filter(),locallySorted=me.sortOnFilter),hasSorters&&me.sorters.length&&!me.remoteSort&&!locallySorted&&me.sort()},doSort:function(sorterFn){var me=this;me.remoteSort?me.load():(me.data.sortBy(sorterFn),me.fireEvent("datachanged",me),me.fireEvent("refresh",me)),me.fireEvent("sort",me,me.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return!!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=!0},resumeAutoSync:function(){this.autoSyncSuspended=!1}});Ext.define("Ext.app.domain.Store",{extend:"Ext.app.EventDomain",singleton:!0,requires:["Ext.data.AbstractStore"],type:"store",idProperty:"storeId",constructor:function(){var me=this;me.callParent(),me.monitor(Ext.data.AbstractStore)}});Ext.define("Ext.app.Controller",{requires:["Ext.app.EventBus","Ext.ModelManager","Ext.data.StoreManager","Ext.ComponentManager","Ext.app.domain.Global","Ext.app.domain.Component","Ext.app.domain.Store"],uses:["Ext.app.domain.Controller"],mixins:{observable:"Ext.util.Observable"},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(baseGetter,name){return function(){return this[baseGetter](name)}},getGetterName:function(name,kindUpper){var index,fn="get",parts=name.split("."),numParts=parts.length;for(index=0;index<numParts;index++)fn+=Ext.String.capitalize(parts[index]);return fn+=kindUpper},processDependencies:function(cls,requires,namespace,kind,names){if(names&&names.length){var o,absoluteName,shortName,name,j,subLn,getterName,getter,me=this,strings=me.strings[kind];for(Ext.isArray(names)||(names=[names]),j=0,subLn=names.length;j<subLn;j++)name=names[j],o=me.getFullName(name,kind,namespace),absoluteName=o.absoluteName,shortName=o.shortName,requires.push(absoluteName),getterName=me.getGetterName(shortName,strings.upper),cls[getterName]=getter=me.createGetter(strings.getter,name),"controller"!==kind&&(getter["Ext.app.getter"]=!0)}},getFullName:function(name,kind,namespace){var sep,absoluteName,shortName=name;return(sep=name.indexOf("@"))>0?(shortName=name.substring(0,sep),absoluteName=name.substring(sep+1)+"."+shortName):name.indexOf(".")>0&&(Ext.ClassManager.isCreated(name)||Ext.Loader.isAClassNameWithAKnownPrefix(name))?absoluteName=name:(namespace||Ext.log.warn("Cannot find namespace for "+kind+" "+name+", assuming it is fully qualified class name"),namespace?(absoluteName=namespace+"."+kind+"."+name,shortName=name):absoluteName=name),{absoluteName:absoluteName,shortName:shortName}}},application:null,onClassExtended:function(cls,data,hooks){var onBeforeClassCreated=hooks.onBeforeCreated;hooks.onBeforeCreated=function(cls,data){var className,namespace,requires,proto,match,Controller=Ext.app.Controller,ctrlRegex=Controller.controllerRegex,requires=[];proto=cls.prototype,className=Ext.getClassName(cls),namespace=data.$namespace||Ext.app.getNamespace(className)||(match=ctrlRegex.exec(className))&&match[1],namespace?proto.$namespace=namespace:Ext.log.warn("Missing namespace for "+className+", please define it in namespaces property of your Application class."),Controller.processDependencies(proto,requires,namespace,"model",data.models),Controller.processDependencies(proto,requires,namespace,"view",data.views),Controller.processDependencies(proto,requires,namespace,"store",data.stores),Controller.processDependencies(proto,requires,namespace,"controller",data.controllers),Ext.require(requires,Ext.Function.pass(onBeforeClassCreated,arguments,this))}},constructor:function(config){var me=this;me.mixins.observable.constructor.call(me,config),me.refs&&me.ref(me.refs),me.eventbus=Ext.app.EventBus,me.initAutoGetters()},initAutoGetters:function(){var prop,fn,proto=this.self.prototype;for(prop in proto)(fn=proto[prop])&&fn["Ext.app.getter"]&&fn.call(this)},doInit:function(app){var me=this;me._initialized||(me.init(app),me._initialized=!0)},finishInit:function(app){var controller,i,l,me=this,controllers=me.controllers;if(me._initialized&&controllers&&controllers.length)for(i=0,l=controllers.length;i<l;i++)controller=me.getController(controllers[i]),controller.finishInit(app)},init:Ext.emptyFn,onLaunch:Ext.emptyFn,ref:function(refs){var info,ref,fn,me=this,i=0,length=refs.length;for(refs=Ext.Array.from(refs),me.references=me.references||[];i<length;i++)info=refs[i],ref=info.ref,fn="get"+Ext.String.capitalize(ref),me[fn]||(me[fn]=Ext.Function.pass(me.getRef,[ref,info],me)),me.references.push(ref.toLowerCase())},addRef:function(refs){this.ref(refs)},getRef:function(ref,info,config){var me=this,refCache=me.refCache||(me.refCache={}),cached=refCache[ref];return info=info||{},config=config||{},Ext.apply(info,config),info.forceCreate?Ext.ComponentManager.create(info,"component"):(cached||(info.selector&&(refCache[ref]=cached=Ext.ComponentQuery.query(info.selector)[0]),!cached&&info.autoCreate&&(refCache[ref]=cached=Ext.ComponentManager.create(info,"component")),cached&&cached.on("beforedestroy",function(){refCache[ref]=null})),cached)},hasRef:function(ref){var references=this.references;return references&&-1!==Ext.Array.indexOf(references,ref.toLowerCase())},control:function(selectors,listeners,controller){var obj,me=this,ctrl=controller;Ext.isString(selectors)?(obj={},obj[selectors]=listeners):(obj=selectors,ctrl=listeners),me.eventbus.control(obj,ctrl||me)},listen:function(to,controller){this.eventbus.listen(to,controller||this)},getController:function(id){var me=this,app=me.application;return id===me.id?me:app&&app.getController(id)},getStore:function(name){var storeId,store;return storeId=-1==name.indexOf("@")?name:name.split("@")[0],store=Ext.StoreManager.get(storeId),store||(name=Ext.app.Controller.getFullName(name,"store",this.$namespace))&&(store=Ext.create(name.absoluteName,{storeId:storeId})),store},getModel:function(model){var name=Ext.app.Controller.getFullName(model,"model",this.$namespace);return name&&Ext.ModelManager.getModel(name.absoluteName)},getView:function(view){var name=Ext.app.Controller.getFullName(view,"view",this.$namespace);return name&&Ext.ClassManager.get(name.absoluteName)},getApplication:function(){return this.application}});Ext.define("Ext.container.DockingContainer",{requires:["Ext.util.MixedCollection","Ext.Element"],isDockingContainer:!0,defaultDockWeights:{top:{render:1,visual:1},left:{render:3,visual:5},right:{render:5,visual:7},bottom:{render:7,visual:3}},dockOrder:{top:-1,left:-1,right:1,bottom:1},horizontalDocks:0,addDocked:function(items,pos){var item,length,me=this,i=0;for(items=me.prepareItems(items),length=items.length;i<length;i++)item=items[i],item.dock=item.dock||"top","left"!==item.dock&&"right"!==item.dock||me.horizontalDocks++,void 0!==pos?(i+=pos,me.dockedItems.insert(i,item)):me.dockedItems.add(item),item.onAdded(me,i),me.hasListeners.dockedadd&&me.fireEvent("dockedadd",me,item,i),me.onDockedAdd!==Ext.emptyFn&&me.onDockedAdd(item);return me.rendered&&!me.suspendLayout&&me.updateLayout(),items},destroyDockedItems:function(){var c,dockedItems=this.dockedItems;if(dockedItems)for(;c=dockedItems.first();)this.removeDocked(c,!0)},doRenderDockedItems:function(out,renderData,after){var items,tree,me=renderData.$comp,layout=me.componentLayout;layout.getDockedItems&&!renderData.$skipDockedItems&&(items=layout.getDockedItems("render",!after),(tree=items&&layout.getItemsRenderTree(items))&&Ext.DomHelper.generateMarkup(tree,out))},getDockedComponent:function(comp){return Ext.isObject(comp)&&(comp=comp.getItemId()),this.dockedItems.get(comp)},getDockedItems:function(selector,beforeBody){var dockedItems=this.getComponentLayout().getDockedItems("render",beforeBody);return selector&&dockedItems.length&&(dockedItems=Ext.ComponentQuery.query(selector,dockedItems)),dockedItems},getDockingRefItems:function(deep,containerItems){var items,selector=deep&&"*,* *",dockedItems=this.getDockedItems(selector,!0);return dockedItems.push.apply(dockedItems,containerItems),items=this.getDockedItems(selector,!1),dockedItems.push.apply(dockedItems,items),dockedItems},initDockingItems:function(){var me=this,items=me.dockedItems;me.dockedItems=new Ext.util.AbstractMixedCollection(!1,me.getComponentId),items&&me.addDocked(items)},insertDocked:function(pos,items){this.addDocked(items,pos)},onDockedAdd:Ext.emptyFn,onDockedRemove:Ext.emptyFn,removeDocked:function(item,autoDestroy){var layout,hasLayout,me=this;return autoDestroy=!0===autoDestroy||!1!==autoDestroy&&me.autoDestroy,me.dockedItems.contains(item)?("left"!==item.dock&&"right"!==item.dock||me.horizontalDocks--,layout=me.componentLayout,hasLayout=layout&&me.rendered,hasLayout&&layout.onRemove(item),me.dockedItems.remove(item),item.onRemoved(item.destroying||autoDestroy),me.onDockedRemove(item),autoDestroy?item.destroy():hasLayout&&layout.afterRemove(item),me.hasListeners.dockedremove&&me.fireEvent("dockedremove",me,item),me.destroying||me.suspendLayout||me.updateLayout(),item):item},setupDockingRenderTpl:function(renderTpl){renderTpl.renderDockedItems=this.doRenderDockedItems}});Ext.define("Ext.toolbar.Fill",{extend:"Ext.Component",alias:"widget.tbfill",alternateClassName:"Ext.Toolbar.Fill",ariaRole:"presentation",isFill:!0,flex:1});Ext.define("Ext.layout.container.boxOverflow.None",{alternateClassName:"Ext.layout.boxOverflow.None",constructor:function(layout,config){this.layout=layout,Ext.apply(this,config)},handleOverflow:Ext.emptyFn,clearOverflow:Ext.emptyFn,beginLayout:Ext.emptyFn,beginLayoutCycle:Ext.emptyFn,calculate:function(ownerContext){var overflow,me=this,plan=ownerContext.state.boxPlan;plan&&plan.tooNarrow?(overflow=me.handleOverflow(ownerContext))&&overflow.reservedSpace&&me.layout.publishInnerCtSize(ownerContext,overflow.reservedSpace):me.clearOverflow()},completeLayout:Ext.emptyFn,finishedLayout:function(ownerContext){var hiddens,hiddenCount,me=this,owner=me.layout.owner;owner.hasListeners.overflowchange&&(hiddens=owner.query(">[hidden]"),(hiddenCount=hiddens.length)!==me.lastHiddenCount&&(owner.fireEvent("overflowchange",me.lastHiddenCount,hiddenCount,hiddens),me.lastHiddenCount=hiddenCount))},onRemove:Ext.emptyFn,getItem:function(item){return this.layout.owner.getComponent(item)},getOwnerType:function(owner){return owner.isToolbar?"toolbar":owner.isTabBar?"tabbar":owner.isMenu?"menu":owner.getXType()},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}});Ext.define("Ext.toolbar.Item",{extend:"Ext.Component",alias:"widget.tbitem",alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.define("Ext.toolbar.Separator",{extend:"Ext.toolbar.Item",alias:"widget.tbseparator",alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:!1,ariaRole:"separator"});Ext.define("Ext.button.Manager",{singleton:!0,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var me=this;me.initialized||(Ext.getDoc().on({keydown:me.onDocumentKeyDown,mouseup:me.onDocumentMouseUp,scope:me}),me.initialized=!0)},onDocumentKeyDown:function(e){var btn,k=e.getKey();k!==e.SPACE&&k!==e.ENTER||(btn=e.getTarget(this.buttonSelector))&&Ext.getCmp(btn.id).onClick(e)},onButtonMousedown:function(button,e){var pressed=this.pressedButton;pressed&&pressed.onMouseUp(e),this.pressedButton=button},onDocumentMouseUp:function(e){var pressed=this.pressedButton;pressed&&(pressed.onMouseUp(e),this.pressedButton=null)},toggleGroup:function(btn,state){if(state){var i,g=this.groups[btn.toggleGroup],length=g.length;for(i=0;i<length;i++)g[i]!==btn&&g[i].toggle(!1)}},register:function(btn){var me=this,groups=this.groups,group=groups[btn.toggleGroup];me.init(),btn.toggleGroup&&(group||(group=groups[btn.toggleGroup]=[]),group.push(btn),btn.on("toggle",me.toggleGroup,me))},unregister:function(btn){if(btn.toggleGroup){var me=this,group=me.groups[btn.toggleGroup];group&&(Ext.Array.remove(group,btn),btn.un("toggle",me.toggleGroup,me))}},getPressed:function(group){var len,g=this.groups[group],i=0;if(g)for(len=g.length;i<len;i++)if(!0===g[i].pressed)return g[i];return null}});Ext.define("Ext.menu.Manager",{singleton:!0,requires:["Ext.util.MixedCollection","Ext.util.KeyMap"],alternateClassName:"Ext.menu.MenuMgr",uses:["Ext.menu.Menu"],menuSelector:"."+Ext.baseCSSPrefix+"menu",menus:{},groups:{},attached:!1,lastShow:new Date,init:function(){var me=this;me.active=new Ext.util.MixedCollection,Ext.getDoc().addKeyListener(27,function(){me.active.length>0&&me.hideAll()},me)},hideAll:function(){var menus,m,mLen,active=this.active;if(active&&active.length>0){for(menus=Ext.Array.slice(active.items),mLen=menus.length,m=0;m<mLen;m++)menus[m].hide();return!0}return!1},onHide:function(m){var me=this,active=me.active;active.remove(m),active.length<1&&(Ext.getDoc().un("mousedown",me.onMouseDown,me),me.attached=!1)},onShow:function(m){var me=this,active=me.active,attached=me.attached;me.lastShow=new Date,active.add(m),attached||(Ext.getDoc().on("mousedown",me.onMouseDown,me,{buffer:Ext.isIE9m?10:void 0}),me.attached=!0),m.toFront()},onBeforeHide:function(m){m.activeChild&&m.activeChild.hide(),m.autoHideTimer&&(clearTimeout(m.autoHideTimer),delete m.autoHideTimer)},onBeforeShow:function(m){var active=this.active,parentMenu=m.parentMenu;active.remove(m),parentMenu||m.allowOtherMenus?parentMenu&&parentMenu.activeChild&&m!=parentMenu.activeChild&&parentMenu.activeChild.hide():this.hideAll()},onMouseDown:function(e){var me=this,active=me.active,lastShow=me.lastShow,doHide=!0;Ext.Date.getElapsed(lastShow)>50&&active.length>0&&!e.getTarget(me.menuSelector)&&(Ext.isIE9m&&!Ext.getDoc().contains(e.target)&&(doHide=!1),doHide&&me.hideAll())},register:function(menu){var me=this;me.active||me.init(),menu.floating&&(me.menus[menu.id]=menu,menu.on({beforehide:me.onBeforeHide,hide:me.onHide,beforeshow:me.onBeforeShow,show:me.onShow,scope:me}))},get:function(menu){var menus=this.menus;return"string"==typeof menu?menus?menus[menu]:null:menu.isMenu?menu:Ext.isArray(menu)?new Ext.menu.Menu({items:menu}):Ext.ComponentManager.create(menu,"menu")},unregister:function(menu){var me=this,menus=me.menus,active=me.active;delete menus[menu.id],active.remove(menu),menu.un({beforehide:me.onBeforeHide,hide:me.onHide,beforeshow:me.onBeforeShow,show:me.onShow,scope:me})},registerCheckable:function(menuItem){var groups=this.groups,groupId=menuItem.group;groupId&&(groups[groupId]||(groups[groupId]=[]),groups[groupId].push(menuItem))},unregisterCheckable:function(menuItem){var groups=this.groups,groupId=menuItem.group;groupId&&Ext.Array.remove(groups[groupId],menuItem)},onCheckChange:function(menuItem,state){var group,ln,curr,groups=this.groups,groupId=menuItem.group,i=0;if(groupId&&state)for(group=groups[groupId],ln=group.length;i<ln;i++)(curr=group[i])!=menuItem&&curr.setChecked(!1)}});Ext.define("Ext.util.ClickRepeater",{extend:"Ext.util.Observable",constructor:function(el,config){var me=this;me.el=Ext.get(el),me.el.unselectable(),Ext.apply(me,config),me.callParent(),me.addEvents("mousedown","click","mouseup"),me.disabled||(me.disabled=!0,me.enable()),me.handler&&me.on("click",me.handler,me.scope||me)},interval:20,delay:250,preventDefault:!0,stopDefault:!1,timer:0,enable:function(){this.disabled&&(this.el.on("mousedown",this.handleMouseDown,this),Ext.isIE&&!(Ext.isIE10p||Ext.isStrict&&Ext.isIE9)&&this.el.on("dblclick",this.handleDblClick,this),(this.preventDefault||this.stopDefault)&&this.el.on("click",this.eventOptions,this)),this.disabled=!1},disable:function(force){!force&&this.disabled||(clearTimeout(this.timer),this.pressedCls&&this.el.removeCls(this.pressedCls),Ext.getDoc().un("mouseup",this.handleMouseUp,this),this.el.removeAllListeners()),this.disabled=!0},setDisabled:function(disabled){this[disabled?"disable":"enable"]()},eventOptions:function(e){this.preventDefault&&e.preventDefault(),this.stopDefault&&e.stopEvent()},destroy:function(){this.disable(!0),Ext.destroy(this.el),this.clearListeners()},handleDblClick:function(e){clearTimeout(this.timer),this.el.blur(),this.fireEvent("mousedown",this,e),this.fireEvent("click",this,e)},handleMouseDown:function(e){clearTimeout(this.timer),this.el.blur(),this.pressedCls&&this.el.addCls(this.pressedCls),this.mousedownTime=new Date,Ext.getDoc().on("mouseup",this.handleMouseUp,this),this.el.on("mouseout",this.handleMouseOut,this),this.fireEvent("mousedown",this,e),this.fireEvent("click",this,e),this.accelerate&&(this.delay=400),e=new Ext.EventObjectImpl(e),this.timer=Ext.defer(this.click,this.delay||this.interval,this,[e])},click:function(e){this.fireEvent("click",this,e),this.timer=Ext.defer(this.click,this.accelerate?this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime),400,-390,12e3):this.interval,this,[e])},easeOutExpo:function(t,b,c,d){return t==d?b+c:c*(1-Math.pow(2,-10*t/d))+b},handleMouseOut:function(){clearTimeout(this.timer),this.pressedCls&&this.el.removeCls(this.pressedCls),this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn,this),this.pressedCls&&this.el.addCls(this.pressedCls),this.click()},handleMouseUp:function(e){clearTimeout(this.timer),this.el.un("mouseover",this.handleMouseReturn,this),this.el.un("mouseout",this.handleMouseOut,this),Ext.getDoc().un("mouseup",this.handleMouseUp,this),this.pressedCls&&this.el.removeCls(this.pressedCls),this.fireEvent("mouseup",this,e)}});Ext.define("Ext.layout.component.Button",{alias:["layout.button"],extend:"Ext.layout.component.Auto",type:"button",htmlRE:/<.*>/,beginLayout:function(ownerContext){var me=this,owner=me.owner,text=owner.text;me.callParent(arguments),ownerContext.btnWrapContext=ownerContext.getEl("btnWrap"),ownerContext.btnElContext=ownerContext.getEl("btnEl"),ownerContext.btnInnerElContext=ownerContext.getEl("btnInnerEl"),ownerContext.btnIconElContext=ownerContext.getEl("btnIconEl"),text&&me.htmlRE.test(text)&&(ownerContext.isHtmlText=!0,owner.btnInnerEl.setStyle("line-height","normal"),owner.btnInnerEl.setStyle("padding-top",""))},beginLayoutCycle:function(ownerContext){var owner=this.owner,lastWidthModel=this.lastWidthModel;this.callParent(arguments),lastWidthModel&&!this.lastWidthModel.shrinkWrap&&ownerContext.widthModel.shrinkWrap&&(owner.btnWrap.setStyle("height",""),owner.btnEl.setStyle("height",""),owner.btnInnerEl.setStyle("line-height",""))},calculate:function(ownerContext){var ownerHeight,contentHeight,btnElHeight,innerElHeight,me=this,owner=me.owner,btnElContext=ownerContext.btnElContext,btnInnerElContext=ownerContext.btnInnerElContext,btnWrapContext=ownerContext.btnWrapContext,mmax=Math.max;me.callParent(arguments),ownerContext.heightModel.shrinkWrap?(btnElHeight=owner.btnEl.getHeight(),ownerContext.isHtmlText&&(me.centerInnerEl(ownerContext,btnElHeight),me.ieCenterIcon(ownerContext,btnElHeight))):(ownerHeight=ownerContext.getProp("height"),ownerHeight?(contentHeight=ownerHeight-ownerContext.getFrameInfo().height-ownerContext.getPaddingInfo().height,btnElHeight=contentHeight,(owner.menu||owner.split)&&"bottom"===owner.arrowAlign&&(btnElHeight-=btnWrapContext.getPaddingInfo().bottom),innerElHeight=btnElHeight,!(owner.icon||owner.iconCls||owner.glyph)||"top"!==owner.iconAlign&&"bottom"!==owner.iconAlign||(innerElHeight-=btnInnerElContext.getPaddingInfo().height),btnWrapContext.setProp("height",mmax(0,contentHeight)),btnElContext.setProp("height",mmax(0,btnElHeight)),ownerContext.isHtmlText?me.centerInnerEl(ownerContext,btnElHeight):btnInnerElContext.setProp("line-height",mmax(0,innerElHeight)+"px"),me.ieCenterIcon(ownerContext,btnElHeight)):0!==ownerHeight&&(me.done=!1))},centerInnerEl:function(ownerContext,btnElHeight){var me=this,btnInnerElContext=ownerContext.btnInnerElContext,innerElHeight=me.owner.btnInnerEl.getHeight();ownerContext.heightModel.shrinkWrap&&btnElHeight<innerElHeight?ownerContext.btnElContext.setHeight(innerElHeight):btnElHeight>innerElHeight&&btnInnerElContext.setProp("padding-top",Math.round((btnElHeight-innerElHeight)/2)+btnInnerElContext.getPaddingInfo().top)},ieCenterIcon:function(ownerContext,btnElHeight){var iconAlign=this.owner.iconAlign;!Ext.isIEQuirks&&!Ext.isIE6||"left"!==iconAlign&&"right"!==iconAlign||ownerContext.btnIconElContext.setHeight(btnElHeight)},publishInnerWidth:function(ownerContext,width){this.owner.getFrameInfo().table&&ownerContext.btnInnerElContext.setWidth(width-ownerContext.getFrameInfo().width-ownerContext.getPaddingInfo().width-ownerContext.btnWrapContext.getPaddingInfo().width)}});Ext.define("Ext.util.TextMetrics",{statics:{shared:null,measure:function(el,text,fixedWidth){var me=this,shared=me.shared;return shared||(shared=me.shared=new me(el,fixedWidth)),shared.bind(el),shared.setFixedWidth(fixedWidth||"auto"),shared.getSize(text)},destroy:function(){var me=this;Ext.destroy(me.shared),me.shared=null}},constructor:function(bindTo,fixedWidth){var me=this,measure=Ext.getBody().createChild({"data-sticky":!0,role:"presentation",cls:Ext.baseCSSPrefix+"textmetrics"});me.measure=measure,bindTo&&me.bind(bindTo),measure.position("absolute"),measure.setLocalXY(-1e3,-1e3),measure.hide(),fixedWidth&&measure.setWidth(fixedWidth)},getSize:function(text){var size,measure=this.measure;return measure.update(text),size=measure.getSize(),measure.update(""),size},bind:function(el){var me=this;me.el=Ext.get(el),me.measure.setStyle(me.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(width){this.measure.setWidth(width)},getWidth:function(text){return this.measure.dom.style.width="auto",this.getSize(text).width},getHeight:function(text){return this.getSize(text).height},destroy:function(){var me=this;me.measure.remove(),delete me.el,delete me.measure}},function(){Ext.Element.addMethods({getTextWidth:function(text,min,max){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(text,this.dom.innerHTML,!0)).width,min||0,max||1e6)}})});Ext.define("Ext.button.Button",{alias:"widget.button",extend:"Ext.Component",requires:["Ext.button.Manager","Ext.menu.Manager","Ext.util.ClickRepeater","Ext.layout.component.Button","Ext.util.TextMetrics","Ext.util.KeyMap"],mixins:{queryable:"Ext.Queryable"},alternateClassName:"Ext.Button",isButton:!0,componentLayout:"button",hidden:!1,disabled:!1,pressed:!1,tabIndex:0,enableToggle:!1,menuAlign:"tl-bl?",showEmptyMenu:!1,textAlign:"center",clickEvent:"click",preventDefault:!0,handleMouseEvents:!0,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",ariaRole:"button",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:['<span id="{id}-btnWrap" role="presentation" class="{baseCls}-wrap','<tpl if="splitCls"> {splitCls}</tpl>','{childElCls}" unselectable="on">','<span id="{id}-btnEl" class="{baseCls}-button" role="presentation">','<span id="{id}-btnInnerEl" class="{baseCls}-inner {innerCls}','{childElCls}" unselectable="on">',"{text}","</span>",'<span role="presentation" id="{id}-btnIconEl" class="{baseCls}-icon-el {iconCls}','{childElCls} {glyphCls}" unselectable="on" style="','<tpl if="iconUrl">background-image:url({iconUrl});</tpl>','<tpl if="glyph && glyphFontFamily">font-family:{glyphFontFamily};</tpl>">','<tpl if="glyph">&#{glyph};</tpl><tpl if="iconCls || iconUrl">&#160;</tpl>',"</span>","</span>","</span>",'<tpl if="closable">','<span id="{id}-closeEl" role="presentation"',' class="{baseCls}-close-btn"','<tpl if="closeText">',' title="{closeText}" aria-label="{closeText}"',"</tpl>",">","</span>","</tpl>"],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:!1,shrinkWrap:3,frame:!0,hasFrameTable:function(){return this.href&&this.frameTable},frameTableListener:function(){this.disabled||this.doNavigate()},doNavigate:function(){"_blank"===this.hrefTarget?window.open(this.href,this.hrefTarget):location.href=this.href},_triggerRegion:{},initComponent:function(){var me=this;me.autoEl={tag:"a",hidefocus:"on",unselectable:"on"},me.addCls(Ext.baseCSSPrefix+"unselectable"),me.callParent(arguments),me.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange"),me.menu&&(me.split=!0,me.menu=Ext.menu.Manager.get(me.menu),me.menu.ownerButton=me),me.url&&(me.href=me.url),me.href&&!me.hasOwnProperty("preventDefault")&&(me.preventDefault=!1),Ext.isString(me.toggleGroup)&&""!==me.toggleGroup&&(me.enableToggle=!0),me.html&&!me.text&&(me.text=me.html,delete me.html),me.glyphCls=me.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var me=this,cls=me.getComponentCls();Ext.isEmpty(me.oldCls)||(me.removeClsWithUI(me.oldCls),me.removeClsWithUI(me.pressedCls)),me.oldCls=cls,me.addClsWithUI(cls)},getComponentCls:function(){var cls,me=this;return cls=me.iconCls||me.icon||me.glyph?[me.text?"icon-text-"+me.iconAlign:"icon"]:me.text?["noicon"]:[],me.pressed&&(cls[cls.length]=me.pressedCls),cls},beforeRender:function(){var me=this,autoEl=me.autoEl,href=me.getHref(),hrefTarget=me.hrefTarget;me.disabled||(autoEl.tabIndex=me.tabIndex),href&&(autoEl.href=href,hrefTarget&&(autoEl.target=hrefTarget)),me.callParent(),me.oldCls=me.getComponentCls(),me.addClsWithUI(me.oldCls),Ext.applyIf(me.renderData,me.getTemplateArgs())},onRender:function(){var addOnclick,btn,btnListeners,me=this;me.doc=Ext.getDoc(),me.callParent(arguments),btn=me.el,me.tooltip&&me.setTooltip(me.tooltip,!0),me.handleMouseEvents?(btnListeners={scope:me,mouseover:me.onMouseOver,mouseout:me.onMouseOut,mousedown:me.onMouseDown},me.split&&(btnListeners.mousemove=me.onMouseMove)):btnListeners={scope:me},me.menu&&(me.mon(me.menu,{scope:me,show:me.onMenuShow,hide:me.onMenuHide}),me.keyMap=new Ext.util.KeyMap({target:me.el,key:Ext.EventObject.DOWN,handler:me.onDownKey,scope:me})),me.repeat?me.mon(new Ext.util.ClickRepeater(btn,Ext.isObject(me.repeat)?me.repeat:{}),"click",me.onRepeatClick,me):btnListeners[me.clickEvent]?addOnclick=!0:btnListeners[me.clickEvent]=me.onClick,me.mon(btn,btnListeners),me.hasFrameTable()&&me.mon(me.frameTable,"click",me.frameTableListener,me),addOnclick&&me.mon(btn,me.clickEvent,me.onClick,me),Ext.button.Manager.register(me)},getTemplateArgs:function(){var glyphParts,me=this,glyph=me.glyph,glyphFontFamily=Ext._glyphFontFamily;return"string"==typeof glyph&&(glyphParts=glyph.split("@"),glyph=glyphParts[0],glyphFontFamily=glyphParts[1]),{innerCls:me.getInnerCls(),splitCls:me.getSplitCls(),iconUrl:me.icon,iconCls:me.iconCls,glyph:glyph,glyphCls:glyph?me.glyphCls:"",glyphFontFamily:glyphFontFamily,text:me.text||"&#160;",closeText:me.closeText}},setHref:function(href){this.href=href,this.el.dom.href=this.getHref()},getHref:function(){var me=this,href=me.href;return!!href&&Ext.urlAppend(href,Ext.Object.toQueryString(Ext.apply({},me.params,me.baseParams)))},setParams:function(params){this.params=params,this.el.dom.href=this.getHref()},getSplitCls:function(){var me=this;return me.split?me.baseCls+"-"+me.arrowCls+" "+me.baseCls+"-"+me.arrowCls+"-"+me.arrowAlign:""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(icon){icon=icon||"";var me=this,btnIconEl=me.btnIconEl,oldIcon=me.icon||"";return me.icon=icon,icon!=oldIcon&&(btnIconEl&&(btnIconEl.setStyle("background-image",icon?"url("+icon+")":""),me.setComponentCls(),me.didIconStateChange(oldIcon,icon)&&me.updateLayout()),me.fireEvent("iconchange",me,oldIcon,icon)),me},setIconCls:function(cls){cls=cls||"";var me=this,btnIconEl=me.btnIconEl,oldCls=me.iconCls||"";return me.iconCls=cls,oldCls!=cls&&(btnIconEl&&(btnIconEl.removeCls(oldCls),btnIconEl.addCls(cls),me.setComponentCls(),me.didIconStateChange(oldCls,cls)&&me.updateLayout()),me.fireEvent("iconchange",me,oldCls,cls)),me},setGlyph:function(glyph){glyph=glyph||0;var fontFamily,glyphParts,me=this,btnIconEl=me.btnIconEl,oldGlyph=me.glyph;return me.glyph=glyph,btnIconEl&&("string"==typeof glyph&&(glyphParts=glyph.split("@"),glyph=glyphParts[0],fontFamily=glyphParts[1]||Ext._glyphFontFamily),glyph?oldGlyph!=glyph&&(btnIconEl.dom.innerHTML="&#"+glyph+";"):btnIconEl.dom.innerHTML="",fontFamily&&btnIconEl.setStyle("font-family",fontFamily)),me.fireEvent("glyphchange",me,me.glyph,oldGlyph),me},setTooltip:function(tooltip,initial){var me=this;return me.rendered?(initial&&tooltip||me.clearTip(),tooltip&&(Ext.quickTipsActive&&Ext.isObject(tooltip)?(Ext.tip.QuickTipManager.register(Ext.apply({target:me.el.id},tooltip)),me.tooltip=tooltip):me.el.dom.setAttribute(me.getTipAttr(),tooltip))):me.tooltip=tooltip,me},setTextAlign:function(align){var me=this,btnEl=me.btnEl;return btnEl&&(btnEl.removeCls(me.baseCls+"-inner-"+me.textAlign),btnEl.addCls(me.baseCls+"-inner-"+align)),me.textAlign=align,me},getTipAttr:function(){return"qtip"==this.tooltipType?"data-qtip":"title"},getRefItems:function(deep){var items,menu=this.menu;return menu&&(items=menu.getRefItems(deep),items.unshift(menu)),items||[]},clearTip:function(){var me=this,el=me.el;Ext.quickTipsActive&&Ext.isObject(me.tooltip)?Ext.tip.QuickTipManager.unregister(el):el.dom.removeAttribute(me.getTipAttr())},beforeDestroy:function(){var me=this;me.rendered&&me.clearTip(),me.menu&&!1!==me.destroyMenu&&Ext.destroy(me.menu),Ext.destroy(me.btnInnerEl,me.repeater),me.callParent()},onDestroy:function(){var me=this;me.rendered&&(me.doc.un("mouseover",me.monitorMouseOver,me),delete me.doc,Ext.destroy(me.keyMap),delete me.keyMap),Ext.button.Manager.unregister(me),me.callParent()},setHandler:function(handler,scope){return this.handler=handler,this.scope=scope,this},setText:function(text){text=text||"";var me=this,oldText=me.text||"";return text!=oldText&&(me.text=text,me.rendered&&(me.btnInnerEl.update(text||"&#160;"),me.setComponentCls(),Ext.isStrict&&Ext.isIE8&&me.el.repaint(),me.updateLayout()),me.fireEvent("textchange",me,oldText,text)),me},didIconStateChange:function(old,current){var currentEmpty=Ext.isEmpty(current);return Ext.isEmpty(old)?!currentEmpty:currentEmpty},getText:function(){return this.text},toggle:function(state,suppressEvent){var me=this;return state=void 0===state?!me.pressed:!!state,state!==me.pressed&&(me.rendered&&me[state?"addClsWithUI":"removeClsWithUI"](me.pressedCls),me.pressed=state,suppressEvent||(me.fireEvent("toggle",me,state),Ext.callback(me.toggleHandler,me.scope||me,[me,state]))),me},maybeShowMenu:function(){var me=this;!me.menu||me.hasVisibleMenu()||me.ignoreNextClick||me.showMenu(!0)},showMenu:function(fromEvent){var me=this,menu=me.menu;return me.rendered&&(me.tooltip&&Ext.quickTipsActive&&"title"!=me.getTipAttr()&&Ext.tip.QuickTipManager.getQuickTip().cancelShow(me.el),menu.isVisible()&&menu.hide(),(!fromEvent||me.showEmptyMenu||menu.items.getCount()>0)&&menu.showBy(me.el,me.menuAlign)),me},hideMenu:function(){return this.hasVisibleMenu()&&this.menu.hide(),this},hasVisibleMenu:function(){var menu=this.menu;return menu&&menu.rendered&&menu.isVisible()},onRepeatClick:function(repeat,e){this.onClick(e)},onClick:function(e){var me=this;me.doPreventDefault(e),"keydown"!==e.type&&0!==e.button||me.disabled||(me.doToggle(),me.maybeShowMenu(),me.fireHandler(e))},doPreventDefault:function(e){(this.preventDefault||this.disabled&&this.getHref()&&e)&&e.preventDefault()},fireHandler:function(e){var me=this,handler=me.handler;!1!==me.fireEvent("click",me,e)&&handler&&handler.call(me.scope||me,me,e)},doToggle:function(){var me=this;!me.enableToggle||!1===me.allowDepress&&me.pressed||me.toggle()},onMouseOver:function(e){var me=this;me.disabled||e.within(me.el,!0,!0)||me.onMouseEnter(e)},onMouseOut:function(e){var me=this;e.within(me.el,!0,!0)||(me.overMenuTrigger&&me.onMenuTriggerOut(e),me.onMouseLeave(e))},onMouseMove:function(e){var overPosition,triggerRegion,me=this,el=me.el,over=me.overMenuTrigger;me.split&&(overPosition="right"===me.arrowAlign?e.getX()-me.getX():e.getY()-el.getY(),triggerRegion=me.getTriggerRegion(),overPosition>triggerRegion.begin&&overPosition<triggerRegion.end?over||me.onMenuTriggerOver(e):over&&me.onMenuTriggerOut(e))},getTriggerRegion:function(){var me=this,region=me._triggerRegion,triggerSize=me.getTriggerSize(),btnSize="right"===me.arrowAlign?me.getWidth():me.getHeight();return region.begin=btnSize-triggerSize,region.end=btnSize,region},getTriggerSize:function(){var side,sideFirstLetter,me=this,size=me.triggerSize;return null==size&&(side=me.arrowAlign,sideFirstLetter=side.charAt(0),size=me.triggerSize=me.el.getFrameWidth(sideFirstLetter)+me.getBtnWrapFrameWidth(sideFirstLetter),me.frameSize&&(size=me.triggerSize+=me.frameSize[side])),size},getBtnWrapFrameWidth:function(side){return this.btnWrap.getFrameWidth(side)},addOverCls:function(){this.disabled||this.addClsWithUI(this.overCls)},removeOverCls:function(){this.removeClsWithUI(this.overCls)},onMouseEnter:function(e){this.fireEvent("mouseover",this,e)},onMouseLeave:function(e){this.fireEvent("mouseout",this,e)},onMenuTriggerOver:function(e){var me=this,arrowTip=me.arrowTooltip;me.overMenuTrigger=!0,me.split&&arrowTip&&me.btnWrap.dom.setAttribute(me.getTipAttr(),arrowTip),me.fireEvent("menutriggerover",me,me.menu,e)},onMenuTriggerOut:function(e){var me=this;delete me.overMenuTrigger,me.split&&me.arrowTooltip&&me.btnWrap.dom.setAttribute(me.getTipAttr(),""),me.fireEvent("menutriggerout",me,me.menu,e)},enable:function(silent){var me=this;return me.callParent(arguments),me.removeClsWithUI("disabled"),me.rendered&&me.el.dom.setAttribute("tabIndex",me.tabIndex),me},disable:function(silent){var me=this;return me.callParent(arguments),me.addClsWithUI("disabled"),me.removeClsWithUI(me.overCls),me.rendered&&me.el.dom.removeAttribute("tabIndex"),me.btnInnerEl&&Ext.isIE7m&&me.btnInnerEl.repaint(),me},setScale:function(scale){var me=this,ui=me.ui.replace("-"+me.scale,"");if(!Ext.Array.contains(me.allowedScales,scale))throw"#setScale: scale must be an allowed scale ("+me.allowedScales.join(", ")+")";me.scale=scale,me.setUI(ui)},setUI:function(ui){var me=this;me.scale&&!ui.match(me.scale)&&(ui=ui+"-"+me.scale),me.callParent([ui])},onMouseDown:function(e){var me=this;Ext.isIE&&me.getFocusEl().focus(),me.disabled||0!==e.button||(Ext.button.Manager.onButtonMousedown(me,e),me.addClsWithUI(me.pressedCls))},onMouseUp:function(e){var me=this;me.isDestroyed||0!==e.button||me.pressed||me.removeClsWithUI(me.pressedCls)},onMenuShow:function(e){var me=this;me.ignoreNextClick=0,me.addClsWithUI(me.menuActiveCls),me.fireEvent("menushow",me,me.menu)},onMenuHide:function(e){var me=this;me.removeClsWithUI(me.menuActiveCls),me.ignoreNextClick=Ext.defer(me.restoreClick,250,me),me.fireEvent("menuhide",me,me.menu),me.focus()},restoreClick:function(){this.ignoreNextClick=0},onDownKey:function(k,e){var me=this;if(me.menu&&!me.disabled)return me.showMenu(),e.stopEvent(),!1}});Ext.define("Ext.layout.container.boxOverflow.Menu",{extend:"Ext.layout.container.boxOverflow.None",requires:["Ext.toolbar.Separator","Ext.button.Button"],alternateClassName:"Ext.layout.boxOverflow.Menu",noItemsMenuText:'<div class="'+Ext.baseCSSPrefix+'toolbar-no-items" role="menuitem">(None)</div>',constructor:function(layout){var me=this;me.callParent(arguments),me.triggerButtonCls=me.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after",me.menuItems=[]},beginLayout:function(ownerContext){this.callParent(arguments),this.clearOverflow(ownerContext)},beginLayoutCycle:function(ownerContext,firstCycle){this.callParent(arguments),firstCycle||(this.clearOverflow(ownerContext),this.layout.cacheChildItems(ownerContext))},onRemove:function(comp){Ext.Array.remove(this.menuItems,comp)},getSuffixConfig:function(){var me=this,layout=me.layout,owner=layout.owner,oid=owner.id;return me.menu=new Ext.menu.Menu({listeners:{scope:me,beforeshow:me.beforeMenuShow}}),me.menuTrigger=new Ext.button.Button({id:oid+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+me.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:owner.usePlainButtons,ownerCt:owner,ownerLayout:layout,iconCls:Ext.baseCSSPrefix+me.getOwnerType(owner)+"-more-icon",ui:owner instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:me.menu,showEmptyMenu:!0,getSplitCls:function(){return""}}),me.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(ownerContext){var me=this,layout=me.layout,names=layout.names,plan=ownerContext.state.boxPlan,posArgs=[null,null];return me.showTrigger(ownerContext),"vertical"!==me.layout.direction&&(posArgs[names.heightIndex]=(plan.maxSize-me.menuTrigger[names.getHeight]())/2,me.menuTrigger.setPosition.apply(me.menuTrigger,posArgs)),{reservedSpace:me.triggerTotalWidth}},captureChildElements:function(){var me=this,menuTrigger=me.menuTrigger,names=me.layout.names;menuTrigger.rendering&&(menuTrigger.finishRender(),me.triggerTotalWidth=menuTrigger[names.getWidth]()+menuTrigger.el.getMargin(names.parallelMargins))},_asLayoutRoot:{isRoot:!0},clearOverflow:function(ownerContext){var item,me=this,items=me.menuItems,i=0,length=items.length,owner=me.layout.owner,asLayoutRoot=me._asLayoutRoot;for(owner.suspendLayouts(),me.captureChildElements(),me.hideTrigger(),owner.resumeLayouts();i<length;i++)item=items[i],item.suspendLayouts(),item.show(),item.resumeLayouts(asLayoutRoot);items.length=0},showTrigger:function(ownerContext){var childContext,comp,i,props,me=this,layout=me.layout,owner=layout.owner,names=layout.names,startProp=names.x,sizeProp=names.width,plan=ownerContext.state.boxPlan,available=plan.targetSize[sizeProp],childItems=ownerContext.childItems,len=childItems.length,menuTrigger=me.menuTrigger;for(menuTrigger.suspendLayouts(),menuTrigger.show(),menuTrigger.resumeLayouts(me._asLayoutRoot),available-=me.triggerTotalWidth,owner.suspendLayouts(),me.menuItems.length=0,i=0;i<len;i++)childContext=childItems[i],props=childContext.props,props[startProp]+props[sizeProp]>available&&(comp=childContext.target,me.menuItems.push(comp),comp.hide());owner.resumeLayouts()},hideTrigger:function(){var menuTrigger=this.menuTrigger;menuTrigger&&menuTrigger.hide()},beforeMenuShow:function(menu){var item,prev,me=this,items=me.menuItems,i=0,len=items.length,needsSep=function(group,prev){return group.isXType("buttongroup")&&!(prev instanceof Ext.toolbar.Separator)};for(menu.suspendLayouts(),me.clearMenu(),menu.removeAll();i<len;i++)item=items[i],!i&&item instanceof Ext.toolbar.Separator||(prev&&(needsSep(item,prev)||needsSep(prev,item))&&menu.add("-"),me.addComponentToMenu(menu,item),prev=item);menu.items.length<1&&menu.add(me.noItemsMenuText),menu.resumeLayouts()},createMenuConfig:function(component,hideOnClick){var me=this,config=Ext.apply({},component.initialConfig),group=component.toggleGroup;return Ext.copyTo(config,component,["iconCls","icon","itemId","disabled","handler","scope","menu","tabIndex"]),Ext.apply(config,{text:component.overflowText||component.text,hideOnClick:hideOnClick,destroyMenu:!1,listeners:{}}),component.isFormField?(config.value=component.getValue(),config.listeners.change=function(c,newVal,oldVal){component.setValue(newVal)}):(group||component.enableToggle)&&Ext.apply(config,{hideOnClick:!1,group:group,checked:component.pressed,handler:function(item,e){component.onClick(e)}}),component.isButton&&!component.changeListenersAdded&&(component.on({textchange:me.onButtonAttrChange,iconchange:me.onButtonAttrChange,toggle:me.onButtonToggle}),component.changeListenersAdded=!0),delete config.margin,delete config.ownerCt,delete config.xtype,delete config.id,delete config.itemId,config},onButtonAttrChange:function(btn){var clone=btn.overflowClone;clone.suspendLayouts(),clone.setText(btn.text),clone.setIcon(btn.icon),clone.setIconCls(btn.iconCls),clone.resumeLayouts(!0)},onButtonToggle:function(btn,state){btn.overflowClone.checked!==state&&btn.overflowClone.setChecked(state)},addComponentToMenu:function(menu,component){var i,items,iLen,me=this;if(component instanceof Ext.toolbar.Separator)menu.add("-");else if(component.isComponent)if(component.isXType("splitbutton"))component.overflowClone=menu.add(me.createMenuConfig(component,!0));else if(component.isXType("button"))component.overflowClone=menu.add(me.createMenuConfig(component,!component.menu));else if(component.isXType("buttongroup"))for(items=component.items.items,iLen=items.length,i=0;i<iLen;i++)me.addComponentToMenu(menu,items[i]);else component.overflowClone=menu.add(Ext.create(Ext.getClassName(component),me.createMenuConfig(component)))},clearMenu:function(){var items,i,iLen,item,menu=this.menu;if(menu&&menu.items)for(items=menu.items.items,iLen=items.length,i=0;i<iLen;i++)item=items[i],item.setMenu&&item.setMenu(null)},destroy:function(){var trigger=this.menuTrigger;trigger&&!this.layout.owner.items.contains(trigger)&&delete trigger.ownerCt,Ext.destroy(this.menu,trigger)}});Ext.define("Ext.layout.container.boxOverflow.Scroller",{extend:"Ext.layout.container.boxOverflow.None",requires:["Ext.util.ClickRepeater","Ext.Element"],alternateClassName:"Ext.layout.boxOverflow.Scroller",mixins:{observable:"Ext.util.Observable"},animateScroll:!1,scrollIncrement:20,wheelIncrement:10,scrollRepeatInterval:60,scrollDuration:400,scrollerCls:Ext.baseCSSPrefix+"box-scroller",constructor:function(layout,config){var me=this;me.layout=layout,Ext.apply(me,config||{}),me.mixins.observable.constructor.call(me),me.addEvents("scroll"),me.scrollPosition=0,me.scrollSize=0},getPrefixConfig:function(){var cls,me=this,layout=me.layout,owner=layout.owner;return me.initCSSClasses(),cls=Ext.layout.container.Box.prototype.innerCls+" "+me.beforeCtCls,owner.plain&&(cls+=" "+me.scrollerCls+"-plain"),{role:"presentation",cls:cls,cn:{role:"presentation",id:owner.id+layout.names.beforeScrollerSuffix,cls:me.scrollerCls+" "+me.beforeScrollerCls,style:"display:none"}}},getSuffixConfig:function(){var me=this,layout=me.layout,owner=layout.owner,cls=Ext.layout.container.Box.prototype.innerCls+" "+me.afterCtCls;return owner.plain&&(cls+=" "+me.scrollerCls+"-plain"),{role:"presentation",cls:cls,cn:{role:"presentation",id:owner.id+layout.names.afterScrollerSuffix,cls:me.scrollerCls+" "+me.afterScrollerCls,style:"display:none"}}},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},initCSSClasses:function(){var me=this,prefix=Ext.baseCSSPrefix,layout=me.layout,names=layout.names,beforeXName=names.beforeX,afterXName=names.afterX,type=me.getOwnerType(layout.owner);me.beforeCtCls=me.beforeCtCls||prefix+"box-scroller-"+beforeXName,me.afterCtCls=me.afterCtCls||prefix+"box-scroller-"+afterXName,me.beforeScrollerCls=me.beforeScrollerCls||prefix+type+"-scroll-"+beforeXName,me.afterScrollerCls=me.afterScrollerCls||prefix+type+"-scroll-"+afterXName},beginLayout:function(ownerContext){this.layout;ownerContext.innerCtScrollPos=this.getScrollPosition(),this.callParent(arguments)},completeLayout:function(ownerContext){var last,me=this,plan=ownerContext.state.boxPlan,names=me.layout.names;plan&&plan.tooNarrow&&(last=ownerContext.childItems[ownerContext.childItems.length-1],me.scrollSize=last.props[names.x]+last.props[names.width],me.updateScrollButtons()),this.callParent(arguments)},finishedLayout:function(ownerContext){var me=this,layout=me.layout,scrollPos=Math.min(me.getMaxScrollPosition(),ownerContext.innerCtScrollPos);layout.innerCt[layout.names.setScrollLeft](scrollPos)},handleOverflow:function(ownerContext){var me=this,methodName=me.layout.names.getWidth;return me.showScrollers(),{reservedSpace:me.beforeCt[methodName]()+me.afterCt[methodName]()}},captureChildElements:function(){var before,after,hoverCls,pressedSuffix,pressedCls,hoverSuffix,me=this,el=me.layout.owner.el;me.beforeCt||(hoverSuffix="-hover",pressedSuffix="-pressed",hoverCls=me.scrollerCls+hoverSuffix,pressedCls=me.scrollerCls+pressedSuffix,before=me.beforeScroller=el.getById(me.layout.owner.id+"-before-scroller"),after=me.afterScroller=el.getById(me.layout.owner.id+"-after-scroller"),me.beforeCt=before.up(""),me.afterCt=after.up(""),me.createWheelListener(),before.addClsOnOver(hoverCls),before.addClsOnOver(me.beforeScrollerCls+hoverSuffix),before.addClsOnClick(pressedCls),before.addClsOnClick(me.beforeScrollerCls+pressedSuffix),after.addClsOnOver(hoverCls),after.addClsOnOver(me.afterScrollerCls+hoverSuffix),after.addClsOnClick(pressedCls),after.addClsOnClick(me.afterScrollerCls+pressedSuffix),before.setVisibilityMode(Ext.Element.DISPLAY),after.setVisibilityMode(Ext.Element.DISPLAY),me.beforeRepeater=new Ext.util.ClickRepeater(before,{interval:me.scrollRepeatInterval,handler:me.scrollLeft,scope:me}),me.afterRepeater=new Ext.util.ClickRepeater(after,{interval:me.scrollRepeatInterval,handler:me.scrollRight,scope:me}))},createWheelListener:function(){var me=this;me.layout.innerCt.on({mousewheel:function(e){me.scrollBy(me.getWheelDelta(e)*me.wheelIncrement*-1,!1)},stopEvent:!0})},getWheelDelta:function(e){return e.getWheelDelta()},clearOverflow:function(){this.hideScrollers()},showScrollers:function(){var me=this;me.captureChildElements(),me.beforeScroller.show(),me.afterScroller.show(),me.layout.owner.addClsWithUI("vertical"===me.layout.direction?"vertical-scroller":"scroller")},hideScrollers:function(){var me=this;void 0!==me.beforeScroller&&(me.beforeScroller.hide(),me.afterScroller.hide(),me.layout.owner.removeClsWithUI("vertical"===me.layout.direction?"vertical-scroller":"scroller"))},destroy:function(){var me=this;Ext.destroy(me.beforeRepeater,me.afterRepeater,me.beforeScroller,me.afterScroller,me.beforeCt,me.afterCt)},scrollBy:function(delta,animate){this.scrollTo(this.getScrollPosition()+delta,animate)},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},updateScrollButtons:function(){var beforeMeth,afterMeth,beforeCls,afterCls,disabledCls,me=this;null!=me.beforeScroller&&null!=me.afterScroller&&(beforeMeth=me.atExtremeBefore()?"addCls":"removeCls",afterMeth=me.atExtremeAfter()?"addCls":"removeCls",disabledCls=me.scrollerCls+"-disabled",beforeCls=[disabledCls,me.beforeScrollerCls+"-disabled"],afterCls=[disabledCls,me.afterScrollerCls+"-disabled"],me.beforeScroller[beforeMeth](beforeCls),me.afterScroller[afterMeth](afterCls),me.scrolling=!1)},scrollLeft:function(){this.scrollBy(-this.scrollIncrement,!1)},scrollRight:function(){this.scrollBy(this.scrollIncrement,!1)},getScrollPosition:function(){var me=this,layout=me.layout;return isNaN(me.scrollPosition)?layout.innerCt[layout.names.getScrollLeft]():me.scrollPosition},getMaxScrollPosition:function(){var me=this,layout=me.layout,maxScrollPos=me.scrollSize-layout.innerCt[layout.names.getWidth]();return maxScrollPos<0?0:maxScrollPos},atExtremeBefore:function(){return!this.getScrollPosition()},atExtremeAfter:function(){return this.getScrollPosition()>=this.getMaxScrollPosition()},scrollTo:function(position,animate){var me=this,layout=me.layout,names=layout.names,oldPosition=me.getScrollPosition(),newPosition=Ext.Number.constrain(position,0,me.getMaxScrollPosition());newPosition==oldPosition||me.scrolling||(me.scrollPosition=NaN,void 0===animate&&(animate=me.animateScroll),layout.innerCt[names.scrollTo](names.beforeScrollX,newPosition,!!animate&&me.getScrollAnim()),animate?me.scrolling=!0:me.updateScrollButtons(),me.fireEvent("scroll",me,newPosition,!!animate&&me.getScrollAnim()))},scrollToItem:function(item,animate){var visibility,box,newPos,me=this,layout=me.layout,owner=layout.owner,names=layout.names;void 0!==(item=me.getItem(item))&&(item==owner.items.first()?newPos=0:item===owner.items.last()?newPos=me.getMaxScrollPosition():(visibility=me.getItemVisibility(item),visibility.fullyVisible||(box=item.getBox(!1,!0),newPos=box[names.x],visibility.hiddenEnd&&(newPos-=me.layout.innerCt[names.getWidth]()-box[names.width]))),void 0!==newPos&&me.scrollTo(newPos,animate))},getItemVisibility:function(item){var me=this,box=me.getItem(item).getBox(!0,!0),layout=me.layout,names=layout.names,itemStart=box[names.x],itemEnd=itemStart+box[names.width],scrollStart=me.getScrollPosition(),scrollEnd=scrollStart+layout.innerCt[names.getWidth]();return{hiddenStart:itemStart<scrollStart,hiddenEnd:itemEnd>scrollEnd,fullyVisible:itemStart>scrollStart&&itemEnd<scrollEnd}}});Ext.define("Ext.util.Offset",{statics:{fromObject:function(obj){return new this(obj.x,obj.y)}},constructor:function(x,y){return this.x=null==x||isNaN(x)?0:x,this.y=null==y||isNaN(y)?0:y,this},copy:function(){return new Ext.util.Offset(this.x,this.y)},copyFrom:function(p){this.x=p.x,this.y=p.y},toString:function(){return"Offset["+this.x+","+this.y+"]"},equals:function(offset){return offset instanceof this.statics()||Ext.Error.raise("Offset must be an instance of Ext.util.Offset"),this.x==offset.x&&this.y==offset.y},round:function(to){if(isNaN(to))this.x=Math.round(this.x),this.y=Math.round(this.y);else{var factor=Math.pow(10,to);this.x=Math.round(this.x*factor)/factor,this.y=Math.round(this.y*factor)/factor}},isZero:function(){return 0==this.x&&0==this.y}});Ext.define("Ext.util.Region",{requires:["Ext.util.Offset"],statics:{getRegion:function(el){return Ext.fly(el).getRegion()},from:function(o){return new this(o.top,o.right,o.bottom,o.left)}},constructor:function(t,r,b,l){var me=this;me.y=me.top=me[1]=t,me.right=r,me.bottom=b,me.x=me.left=me[0]=l},contains:function(region){var me=this;return region.x>=me.x&&region.right<=me.right&&region.y>=me.y&&region.bottom<=me.bottom},intersect:function(region){var me=this,t=Math.max(me.y,region.y),r=Math.min(me.right,region.right),b=Math.min(me.bottom,region.bottom),l=Math.max(me.x,region.x);return b>t&&r>l&&new this.self(t,r,b,l)},union:function(region){var me=this,t=Math.min(me.y,region.y),r=Math.max(me.right,region.right),b=Math.max(me.bottom,region.bottom),l=Math.min(me.x,region.x);return new this.self(t,r,b,l)},constrainTo:function(r){var me=this,constrain=Ext.Number.constrain;return me.top=me.y=constrain(me.top,r.y,r.bottom),me.bottom=constrain(me.bottom,r.y,r.bottom),me.left=me.x=constrain(me.left,r.x,r.right),me.right=constrain(me.right,r.x,r.right),me},adjust:function(t,r,b,l){var me=this;return me.top=me.y+=t,me.left=me.x+=l,me.right+=r,me.bottom+=b,me},getOutOfBoundOffset:function(axis,p){if(Ext.isObject(axis)){p=axis;var d=new Ext.util.Offset;return d.x=this.getOutOfBoundOffsetX(p.x),d.y=this.getOutOfBoundOffsetY(p.y),d}return"x"==axis?this.getOutOfBoundOffsetX(p):this.getOutOfBoundOffsetY(p)},getOutOfBoundOffsetX:function(p){return p<=this.x?this.x-p:p>=this.right?this.right-p:0},getOutOfBoundOffsetY:function(p){return p<=this.y?this.y-p:p>=this.bottom?this.bottom-p:0},isOutOfBound:function(axis,p){return Ext.isObject(axis)?(p=axis,this.isOutOfBoundX(p.x)||this.isOutOfBoundY(p.y)):"x"==axis?this.isOutOfBoundX(p):this.isOutOfBoundY(p)},isOutOfBoundX:function(p){return p<this.x||p>this.right},isOutOfBoundY:function(p){return p<this.y||p>this.bottom},restrict:function(axis,p,factor){if(Ext.isObject(axis)){var newP;return factor=p,p=axis,newP=p.copy?p.copy():{x:p.x,y:p.y},newP.x=this.restrictX(p.x,factor),newP.y=this.restrictY(p.y,factor),newP}return"x"==axis?this.restrictX(p,factor):this.restrictY(p,factor)},restrictX:function(p,factor){return factor||(factor=1),p<=this.x?p-=(p-this.x)*factor:p>=this.right&&(p-=(p-this.right)*factor),p},restrictY:function(p,factor){return factor||(factor=1),p<=this.y?p-=(p-this.y)*factor:p>=this.bottom&&(p-=(p-this.bottom)*factor),p},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(p){var me=this;return me.top=me.y=me[1]=p.y,me.right=p.right,me.bottom=p.bottom,me.left=me.x=me[0]=p.x,this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(x,y){1==arguments.length&&(y=x.y,x=x.x);var me=this;return me.top=me.y+=y,me.right+=x,me.bottom+=y,me.left=me.x+=x,me},round:function(){var me=this;return me.top=me.y=Math.round(me.y),me.right=Math.round(me.right),me.bottom=Math.round(me.bottom),me.left=me.x=Math.round(me.x),me},equals:function(region){return this.top==region.top&&this.right==region.right&&this.bottom==region.bottom&&this.left==region.left}});Ext.define("Ext.dd.DragDropManager",{singleton:!0,requires:["Ext.util.Region"],uses:["Ext.tip.QuickTipManager"],alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:!0,stopPropagation:!0,initialized:!1,locked:!1,init:function(){this.initialized=!0},POINT:0,INTERSECT:1,mode:0,notifyOccluded:!1,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(sMethod,args){var i,j,oDD,item,ids=this.ids;for(i in ids)if(ids.hasOwnProperty(i)){item=ids[i];for(j in item)if(item.hasOwnProperty(j)){if(oDD=item[j],!this.isTypeOfDD(oDD))continue;oDD[sMethod].apply(oDD,args)}}},_onLoad:function(){this.init();var Event=Ext.EventManager;Event.on(document,"mouseup",this.handleMouseUp,this,!0),Event.on(document,"mousemove",this.handleMouseMove,this,!0),Event.on(window,"unload",this._onUnload,this,!0),Event.on(window,"resize",this._onResize,this,!0)},_onResize:function(e){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=!0},unlock:function(){this.locked=!1},isLocked:function(){return this.locked},locationCache:{},useCache:!0,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:!1,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,sGroup){this.initialized||this.init(),this.ids[sGroup]||(this.ids[sGroup]={}),this.ids[sGroup][oDD.id]=oDD},removeDDFromGroup:function(oDD,sGroup){this.ids[sGroup]||(this.ids[sGroup]={});var obj=this.ids[sGroup];obj&&obj[oDD.id]&&delete obj[oDD.id]},_remove:function(oDD,clearGroup){if(!this.clearingAll){var g,ids=this.ids,groups=oDD.groups;for(g in groups)groups.hasOwnProperty(g)&&(clearGroup?delete ids[g]:ids[g]&&delete ids[g][oDD.id]);delete this.handleIds[oDD.id]}},regHandle:function(sDDId,sHandleId){this.handleIds[sDDId]||(this.handleIds[sDDId]={}),this.handleIds[sDDId][sHandleId]=sHandleId},isDragDrop:function(id){return!!this.getDDById(id)},getRelated:function(p_oDD,bTargetsOnly){var i,j,dd,oDDs=[];for(i in p_oDD.groups)for(j in this.ids[i])dd=this.ids[i][j],this.isTypeOfDD(dd)&&(bTargetsOnly&&!dd.isTarget||(oDDs[oDDs.length]=dd));return oDDs},isLegalTarget:function(oDD,oTargetDD){var i,len,targets=this.getRelated(oDD,!0);for(i=0,len=targets.length;i<len;++i)if(targets[i].id==oTargetDD.id)return!0;return!1},isTypeOfDD:function(oDD){return oDD&&oDD.__ygDragDrop},isHandle:function(sDDId,sHandleId){return this.handleIds[sDDId]&&this.handleIds[sDDId][sHandleId]},getDDById:function(id){var i,dd;for(i in this.ids)if((dd=this.ids[i][id])instanceof Ext.dd.DDTarget)return dd;return null},handleMouseDown:function(e,oDD){var el,me=this;Ext.quickTipsActive&&Ext.tip.QuickTipManager.ddDisable(),me.dragCurrent&&me.handleMouseUp(e),me.mousedownEvent=e.clone(),me.currentTarget=e.getTarget(),me.dragCurrent=oDD,el=oDD.getEl(),Ext.isIE9m&&el.setCapture&&el.setCapture(),me.startX=e.getPageX(),me.startY=e.getPageY(),me.deltaX=me.startX-el.offsetLeft,me.deltaY=me.startY-el.offsetTop,me.dragThreshMet=!1,me.clickTimeout=setTimeout(function(){me.startDrag(me.startX,me.startY)},me.clickTimeThresh)},startDrag:function(x,y){var dragEl,me=this,current=me.dragCurrent;clearTimeout(me.clickTimeout),current&&(current.b4StartDrag(x,y),current.startDrag(x,y),(dragEl=current.getDragEl())&&Ext.fly(dragEl).addCls(me.dragCls)),me.dragThreshMet=!0},handleMouseUp:function(e){var me=this;Ext.quickTipsActive&&Ext.tip.QuickTipManager.ddEnable(),me.dragCurrent&&(Ext.isIE&&document.releaseCapture&&document.releaseCapture(),clearTimeout(me.clickTimeout),me.dragThreshMet&&me.fireEvents(e,!0),me.stopDrag(e),me.stopEvent(e))},stopEvent:function(e){this.stopPropagation&&e.stopPropagation(),this.preventDefault&&e.preventDefault()},stopDrag:function(e){var dragEl,me=this,current=me.dragCurrent;current&&(me.dragThreshMet&&(dragEl=current.getDragEl(),dragEl&&Ext.fly(dragEl).removeCls(me.dragCls),current.b4EndDrag(e),current.endDrag(e)),me.dragCurrent.onMouseUp(e)),me.dragCurrent=null,me.dragOvers={}},handleMouseMove:function(e){var diffX,diffY,me=this,current=me.dragCurrent;return!current||(me.dragThreshMet||(diffX=Math.abs(me.startX-e.getPageX()),diffY=Math.abs(me.startY-e.getPageY()),(diffX>me.clickPixelThresh||diffY>me.clickPixelThresh)&&me.startDrag(me.startX,me.startY)),me.dragThreshMet&&(current.b4Drag(e),current.onDrag(e),current.moveOnly||me.fireEvents(e,!1)),me.stopEvent(e),!0)},fireEvents:function(e,isDrop){var dragEl,oldDragElTop,overTarget,overTargetEl,xy,needsSort,i,len,sGroup,me=this,dragCurrent=me.dragCurrent,mousePoint=e.getPoint(),allTargets=[],oldOvers=[],outEvts=[],overEvts=[],dropEvts=[],enterEvts=[];if(dragCurrent&&!dragCurrent.isLocked()){me.notifyOccluded||Ext.supports.PointerEvents&&!Ext.isIE10m&&!Ext.isOpera||dragCurrent.deltaX<0||dragCurrent.deltaY<0||(dragEl=dragCurrent.getDragEl(),oldDragElTop=dragEl.style.top,dragEl.style.top="-10000px",xy=e.getXY(),e.target=document.elementFromPoint(xy[0],xy[1]),dragEl.style.top=oldDragElTop);for(i in me.dragOvers)overTarget=me.dragOvers[i],me.isTypeOfDD(overTarget)&&(me.notifyOccluded?this.isOverTarget(mousePoint,overTarget,me.mode)||outEvts.push(overTarget):e.within(overTarget.getEl())||outEvts.push(overTarget),oldOvers[i]=!0,delete me.dragOvers[i]);for(sGroup in dragCurrent.groups)if("string"==typeof sGroup)for(i in me.ids[sGroup])if(overTarget=me.ids[sGroup][i],me.isTypeOfDD(overTarget)&&(overTargetEl=overTarget.getEl())&&overTarget.isTarget&&!overTarget.isLocked()&&Ext.fly(overTargetEl).isVisible(!0)&&(overTarget!=dragCurrent||!1===dragCurrent.ignoreSelf))if(me.notifyOccluded)-1!==(overTarget.zIndex=me.getZIndex(overTargetEl))&&(needsSort=!0),allTargets.push(overTarget);else if(e.within(overTarget.getEl())){allTargets.push(overTarget);break}for(needsSort&&Ext.Array.sort(allTargets,me.byZIndex),i=0,len=allTargets.length;i<len&&(overTarget=allTargets[i],!me.isOverTarget(mousePoint,overTarget,me.mode)||(isDrop?dropEvts.push(overTarget):(oldOvers[overTarget.id]?overEvts.push(overTarget):enterEvts.push(overTarget),me.dragOvers[overTarget.id]=overTarget),me.notifyOccluded));i++);if(me.mode)outEvts.length&&(dragCurrent.b4DragOut(e,outEvts),dragCurrent.onDragOut(e,outEvts)),enterEvts.length&&dragCurrent.onDragEnter(e,enterEvts),overEvts.length&&(dragCurrent.b4DragOver(e,overEvts),dragCurrent.onDragOver(e,overEvts)),dropEvts.length&&(dragCurrent.b4DragDrop(e,dropEvts),dragCurrent.onDragDrop(e,dropEvts));else{for(i=0,len=outEvts.length;i<len;++i)dragCurrent.b4DragOut(e,outEvts[i].id),dragCurrent.onDragOut(e,outEvts[i].id);for(i=0,len=enterEvts.length;i<len;++i)dragCurrent.onDragEnter(e,enterEvts[i].id);for(i=0,len=overEvts.length;i<len;++i)dragCurrent.b4DragOver(e,overEvts[i].id),dragCurrent.onDragOver(e,overEvts[i].id);for(i=0,len=dropEvts.length;i<len;++i)dragCurrent.b4DragDrop(e,dropEvts[i].id),dragCurrent.onDragDrop(e,dropEvts[i].id)}isDrop&&!dropEvts.length&&dragCurrent.onInvalidDrop(e)}},getZIndex:function(element){var z,body=document.body,zIndex=-1;for(element=Ext.getDom(element);element!==body;)isNaN(z=Number(Ext.fly(element).getStyle("zIndex")))||(zIndex=z),element=element.parentNode;return zIndex},byZIndex:function(d1,d2){return d1.zIndex<d2.zIndex},getBestMatch:function(dds){var i,dd,winner=null,len=dds.length;if(1==len)winner=dds[0];else for(i=0;i<len;++i){if(dd=dds[i],dd.cursorIsOver){winner=dd;break}(!winner||winner.overlap.getArea()<dd.overlap.getArea())&&(winner=dd)}return winner},refreshCache:function(groups){var sGroup,i,oDD,loc;for(sGroup in groups)if("string"==typeof sGroup)for(i in this.ids[sGroup])oDD=this.ids[sGroup][i],this.isTypeOfDD(oDD)&&(loc=this.getLocation(oDD),loc?this.locationCache[oDD.id]=loc:delete this.locationCache[oDD.id])},verifyEl:function(el){if(el){var parent;if(Ext.isIE)try{parent=el.offsetParent}catch(e){}else parent=el.offsetParent;if(parent)return!0}return!1},getLocation:function(oDD){if(!this.isTypeOfDD(oDD))return null;if(oDD.getRegion)return oDD.getRegion();var pos,x1,x2,y1,y2,t,r,b,l,el=oDD.getEl();try{pos=Ext.Element.getXY(el)}catch(e){}return pos?(x1=pos[0],x2=x1+el.offsetWidth,y1=pos[1],y2=y1+el.offsetHeight,t=y1-oDD.padding[0],r=x2+oDD.padding[1],b=y2+oDD.padding[2],l=x1-oDD.padding[3],new Ext.util.Region(t,r,b,l)):null},isOverTarget:function(pt,oTarget,intersect){var dc,pos,el,curRegion,overlap,loc=this.locationCache[oTarget.id];return loc&&this.useCache||(loc=this.getLocation(oTarget),this.locationCache[oTarget.id]=loc),!!loc&&(oTarget.cursorIsOver=loc.contains(pt),(dc=this.dragCurrent)&&dc.getTargetCoord&&(intersect||dc.constrainX||dc.constrainY)?(oTarget.overlap=null,pos=dc.getTargetCoord(pt.x,pt.y),el=dc.getDragEl(),curRegion=new Ext.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x),!!(overlap=curRegion.intersect(loc))&&(oTarget.overlap=overlap,!!intersect||oTarget.cursorIsOver)):oTarget.cursorIsOver)},_onUnload:function(e,me){Ext.dd.DragDropManager.unregAll()},unregAll:function(){var i,me=this,cache=me.elementCache;me.dragCurrent&&(me.stopDrag(),me.dragCurrent=null),me.clearingAll=!0,me._execOnAll("unreg",[]),delete me.clearingAll;for(i in cache)delete cache[i];me.elementCache={},me.ids={},me.handleIds={}},elementCache:{},getElWrapper:function(id){var oWrapper=this.elementCache[id];return oWrapper&&oWrapper.el||(oWrapper=this.elementCache[id]=new this.ElementWrapper(Ext.getDom(id))),oWrapper},getElement:function(id){return Ext.getDom(id)},getCss:function(id){var el=Ext.getDom(id);return el?el.style:null},ElementWrapper:function(el){this.el=el||null,this.id=this.el&&el.id,this.css=this.el&&el.style},getPosX:function(el){return Ext.Element.getX(el)},getPosY:function(el){return Ext.Element.getY(el)},swapNode:function(n1,n2){if(n1.swapNode)n1.swapNode(n2);else{var p=n2.parentNode,s=n2.nextSibling;s==n1?p.insertBefore(n1,n2):n2==n1.nextSibling?p.insertBefore(n2,n1):(n1.parentNode.replaceChild(n2,n1),p.insertBefore(n1,s))}},getScroll:function(){var doc=window.document,docEl=doc.documentElement,body=doc.body,top=0,left=0;return Ext.isGecko4?(top=window.scrollYOffset,left=window.scrollXOffset):docEl&&(docEl.scrollTop||docEl.scrollLeft)?(top=docEl.scrollTop,left=docEl.scrollLeft):body&&(top=body.scrollTop,left=body.scrollLeft),{top:top,left:left}},getStyle:function(el,styleProp){return Ext.fly(el).getStyle(styleProp)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(moveEl,targetEl){var aCoord=Ext.Element.getXY(targetEl);Ext.Element.setXY(moveEl,aCoord)},numericSort:function(a,b){return a-b},_timeoutCount:0,_addListeners:function(){document?this._onLoad():this._timeoutCount<=2e3&&(setTimeout(this._addListeners,10),document&&document.body&&(this._timeoutCount+=1))},handleWasClicked:function(node,id){if(this.isHandle(id,node.id))return!0;for(var p=node.parentNode;p;){if(this.isHandle(id,p.id))return!0;p=p.parentNode}return!1}},function(){this._addListeners()});Ext.define("Ext.layout.container.Box",{alias:["layout.box"],extend:"Ext.layout.container.Container",alternateClassName:"Ext.layout.BoxLayout",requires:["Ext.layout.container.boxOverflow.None","Ext.layout.container.boxOverflow.Menu","Ext.layout.container.boxOverflow.Scroller","Ext.util.Format","Ext.dd.DragDropManager"],defaultMargins:{top:0,right:0,bottom:0,left:0},padding:0,pack:"start",flex:void 0,stretchMaxPartner:void 0,alignRoundingMethod:"round",type:"box",scrollOffset:0,itemCls:Ext.baseCSSPrefix+"box-item",targetCls:Ext.baseCSSPrefix+"box-layout-ct",targetElCls:Ext.baseCSSPrefix+"box-target",innerCls:Ext.baseCSSPrefix+"box-inner",availableSpaceOffset:0,reserveOffset:!0,manageMargins:!0,createsInnerCt:!0,childEls:["innerCt","targetEl"],renderTpl:["{%var oc,l=values.$comp.layout,oh=l.overflowHandler;","if (oh.getPrefixConfig!==Ext.emptyFn) {","if(oc=oh.getPrefixConfig())dh.generateMarkup(oc, out)","}%}",'<div id="{ownerId}-innerCt" class="{[l.innerCls]} {[oh.getOverflowCls()]}" role="presentation">','<div id="{ownerId}-targetEl" class="{targetElCls}" role="presentation">',"{%this.renderBody(out, values)%}","</div>","</div>","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:!0,definitions:"var dh=Ext.DomHelper;"}],constructor:function(config){var type,me=this;me.callParent(arguments),me.flexSortFn=Ext.Function.bind(me.flexSort,me),me.initOverflowHandler(),"string"!=(type=typeof me.padding)&&"number"!=type||(me.padding=Ext.util.Format.parseBox(me.padding),me.padding.height=me.padding.top+me.padding.bottom,me.padding.width=me.padding.left+me.padding.right)},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(item,ownerSizeModel){var me=this,policy=me.sizePolicy,align=me.align,flex=item.flex,key=align,names=me.names,width=item[names.width],height=item[names.height],percentageRe=me._percentageRe,percentageWidth=percentageRe.test(width),isStretch="stretch"==align,isStretchMax="stretchmax"==align,constrain=me.constrainAlign;return!ownerSizeModel&&(isStretch||flex||percentageWidth||constrain&&!isStretchMax)&&(ownerSizeModel=me.owner.getSizeModel()),isStretch?!percentageRe.test(height)&&ownerSizeModel[names.height].shrinkWrap&&(key="stretchmax"):isStretchMax||(key=percentageRe.test(height)?"stretch":constrain&&!ownerSizeModel[names.height].shrinkWrap?"stretchmax":""),(flex||percentageWidth)&&(ownerSizeModel[names.width].shrinkWrap||(policy=policy.flex)),policy[key]},flexSort:function(a,b){var aMin,bMin,aMax,bMax,hasMin,hasMax,maxWidthName=this.names.maxWidth,minWidthName=this.names.minWidth,aTarget=a.target,bTarget=b.target,result=0;return aMax=aTarget[maxWidthName]||1/0,bMax=bTarget[maxWidthName]||1/0,aMin=aTarget[minWidthName]||0,bMin=bTarget[minWidthName]||0,hasMin=isFinite(aMin)||isFinite(bMin),hasMax=isFinite(aMax)||isFinite(bMax),(hasMin||hasMax)&&(hasMax&&(result=aMax-bMax),0===result&&hasMin&&(result=bMin-aMin)),result},isItemBoxParent:function(itemContext){return!0},isItemShrinkWrap:function(item){return!0},roundFlex:function(width){return Math.ceil(width)},beginCollapse:function(child){var me=this;"vertical"===me.direction&&child.collapsedVertical()?(child.collapseMemento.capture(["flex"]),delete child.flex):"horizontal"===me.direction&&child.collapsedHorizontal()&&(child.collapseMemento.capture(["flex"]),delete child.flex)},beginExpand:function(child){child.collapseMemento.restore(["flex"])},beginLayout:function(ownerContext){var me=this,owner=me.owner,smp=owner.stretchMaxPartner,style=me.innerCt.dom.style,names=me.names;ownerContext.boxNames=names,me.overflowHandler.beginLayout(ownerContext),"string"==typeof smp&&(smp=Ext.getCmp(smp)||owner.query(smp)[0]),ownerContext.stretchMaxPartner=smp&&ownerContext.context.getCmp(smp),me.callParent(arguments),ownerContext.innerCtContext=ownerContext.getEl("innerCt",me),me.scrollParallel=owner.scrollFlags[names.x],me.scrollPerpendicular=owner.scrollFlags[names.y],me.scrollParallel&&(me.scrollPos=owner.getTargetEl().dom[names.scrollLeft]),style.width="",style.height=""},beginLayoutCycle:function(ownerContext,firstCycle){var me=this,align=me.align,names=ownerContext.boxNames,pack=me.pack,heightModelName=names.heightModel;me.overflowHandler.beginLayoutCycle(ownerContext,firstCycle),me.callParent(arguments),ownerContext.parallelSizeModel=ownerContext[names.widthModel],ownerContext.perpendicularSizeModel=ownerContext[heightModelName],ownerContext.boxOptions={align:align={stretch:"stretch"==align,stretchmax:"stretchmax"==align,center:align==names.center,bottom:align==names.afterY},pack:pack={center:"center"==pack,end:"end"==pack}},align.stretch&&ownerContext.perpendicularSizeModel.shrinkWrap&&(align.stretchmax=!0,align.stretch=!1),align.nostretch=!(align.stretch||align.stretchmax),ownerContext.parallelSizeModel.shrinkWrap&&(pack.center=pack.end=!1),me.cacheFlexes(ownerContext),me.targetEl.setWidth(2e4)},cacheFlexes:function(ownerContext){for(var child,childContext,flex,match,me=this,names=ownerContext.boxNames,widthModelName=names.widthModel,heightModelName=names.heightModel,nostretch=ownerContext.boxOptions.align.nostretch,totalFlex=0,childItems=ownerContext.childItems,i=childItems.length,flexedItems=[],minWidth=0,minWidthName=names.minWidth,percentageRe=me._percentageRe,percentageWidths=0,percentageHeights=0;i--;)childContext=childItems[i],child=childContext.target,childContext[widthModelName].calculated&&(childContext.flex=flex=child.flex,flex?(totalFlex+=flex,flexedItems.push(childContext),minWidth+=child[minWidthName]||0):(match=percentageRe.exec(child[names.width]),childContext.percentageParallel=parseFloat(match[1])/100,++percentageWidths)),nostretch&&childContext[heightModelName].calculated&&(match=percentageRe.exec(child[names.height]),childContext.percentagePerpendicular=parseFloat(match[1])/100,++percentageHeights);ownerContext.flexedItems=flexedItems,ownerContext.flexedMinSize=minWidth,ownerContext.totalFlex=totalFlex,ownerContext.percentageWidths=percentageWidths,ownerContext.percentageHeights=percentageHeights,Ext.Array.sort(flexedItems,me.flexSortFn)},calculate:function(ownerContext){var me=this,targetSize=me.getContainerSize(ownerContext),names=ownerContext.boxNames,state=ownerContext.state,plan=state.boxPlan||(state.boxPlan={}),targetContext=ownerContext.targetContext;plan.targetSize=targetSize,state.parallelDone||(state.parallelDone=me.calculateParallel(ownerContext,names,plan)),state.perpendicularDone||(state.perpendicularDone=me.calculatePerpendicular(ownerContext,names,plan)),state.parallelDone&&state.perpendicularDone?(!me.owner.dock||!Ext.isIE7m&&!Ext.isIEQuirks||me.owner.width||me.horizontal||(plan.isIEVerticalDock=!0,plan.calculatedWidth=plan.maxSize+ownerContext.getPaddingInfo().width+ownerContext.getFrameInfo().width,targetContext!==ownerContext&&(plan.calculatedWidth+=targetContext.getPaddingInfo().width)),me.publishInnerCtSize(ownerContext,me.reserveOffset?me.availableSpaceOffset:0),me.done&&ownerContext.boxOptions.align.stretchmax&&!state.stretchMaxDone&&(me.calculateStretchMax(ownerContext,names,plan),state.stretchMaxDone=!0),me.overflowHandler.calculate(ownerContext)):me.done=!1},calculateParallel:function(ownerContext,names,plan){var i,childMargins,remainingWidth,remainingFlex,childContext,flex,flexedWidth,contentWidth,mayNeedScrollbarAdjust,childWidth,percentageSpace,me=this,widthName=names.width,childItems=ownerContext.childItems,beforeXName=names.beforeX,afterXName=names.afterX,setWidthName=names.setWidth,childItemsLength=childItems.length,flexedItems=ownerContext.flexedItems,flexedItemsLength=flexedItems.length,pack=ownerContext.boxOptions.pack,padding=me.padding,targetSize=plan.targetSize,containerWidth=targetSize[widthName],totalMargin=0,left=padding[beforeXName],nonFlexWidth=left+padding[afterXName]+me.scrollOffset+(me.reserveOffset?me.availableSpaceOffset:0),scrollbarWidth=Ext.getScrollbarSize()[names.width];if(!ownerContext.parallelSizeModel.shrinkWrap&&!targetSize[names.gotWidth])return!1;if(scrollbarWidth&&me.scrollPerpendicular&&ownerContext.parallelSizeModel.shrinkWrap&&!ownerContext.boxOptions.align.stretch&&!ownerContext.perpendicularSizeModel.shrinkWrap){if(!ownerContext.state.perpendicularDone)return!1;mayNeedScrollbarAdjust=!0}for(i=0;i<childItemsLength;++i)if(childContext=childItems[i],childMargins=childContext.marginInfo||childContext.getMarginInfo(),totalMargin+=childMargins[widthName],!childContext[names.widthModel].calculated&&(childWidth=childContext.getProp(widthName),nonFlexWidth+=childWidth,isNaN(nonFlexWidth)))return!1;if(nonFlexWidth+=totalMargin,ownerContext.percentageWidths){if(percentageSpace=containerWidth-totalMargin,isNaN(percentageSpace))return!1;for(i=0;i<childItemsLength;++i)childContext=childItems[i],childContext.percentageParallel&&(childWidth=Math.ceil(percentageSpace*childContext.percentageParallel),childWidth=childContext.setWidth(childWidth),nonFlexWidth+=childWidth)}if(ownerContext.parallelSizeModel.shrinkWrap)plan.availableSpace=0,plan.tooNarrow=!1;else if(plan.availableSpace=containerWidth-nonFlexWidth,plan.tooNarrow=plan.availableSpace<ownerContext.flexedMinSize,plan.tooNarrow&&Ext.getScrollbarSize()[names.height]&&me.scrollParallel&&ownerContext.state.perpendicularDone)for(ownerContext.state.perpendicularDone=!1,i=0;i<childItemsLength;++i)childItems[i].invalidate();for(contentWidth=nonFlexWidth,remainingWidth=plan.availableSpace,remainingFlex=ownerContext.totalFlex,i=0;i<flexedItemsLength;i++)childContext=flexedItems[i],flex=childContext.flex,flexedWidth=me.roundFlex(flex/remainingFlex*remainingWidth),flexedWidth=childContext[setWidthName](flexedWidth),contentWidth+=flexedWidth,remainingWidth=Math.max(0,remainingWidth-flexedWidth),remainingFlex-=flex;for(pack.center?(left+=remainingWidth/2)<0&&(left=0):pack.end&&(left+=remainingWidth),i=0;i<childItemsLength;++i)childContext=childItems[i],childMargins=childContext.marginInfo,left+=childMargins[beforeXName],childContext.setProp(names.x,left),left+=childMargins[afterXName]+childContext.props[widthName];return contentWidth+=ownerContext.targetContext.getPaddingInfo()[widthName],ownerContext.state.contentWidth=contentWidth,mayNeedScrollbarAdjust&&ownerContext.peek(names.contentHeight)>plan.targetSize[names.height]&&(contentWidth+=scrollbarWidth,ownerContext[names.hasOverflowY]=!0,ownerContext.target.componentLayout[names.setWidthInDom]=!0,ownerContext[names.invalidateScrollY]=Ext.isStrict&&Ext.isIE8),ownerContext[names.setContentWidth](contentWidth),!0},calculatePerpendicular:function(ownerContext,names,plan){var childTop,i,childHeight,childMargins,diff,height,childContext,stretchMaxPartner,stretchMaxChildren,shrinkWrapParallelOverflow,percentagePerpendicular,me=this,heightShrinkWrap=ownerContext.perpendicularSizeModel.shrinkWrap,targetSize=plan.targetSize,childItems=ownerContext.childItems,childItemsLength=childItems.length,mmax=Math.max,heightName=names.height,setHeightName=names.setHeight,beforeYName=names.beforeY,topPositionName=names.y,padding=me.padding,top=padding[beforeYName],availHeight=targetSize[heightName]-top-padding[names.afterY],align=ownerContext.boxOptions.align,isStretch=align.stretch,isStretchMax=align.stretchmax,isCenter=align.center,isBottom=align.bottom,constrain=me.constrainAlign,maxHeight=0,hasPercentageSizes=0,onBeforeInvalidateChild=me.onBeforeConstrainInvalidateChild,onAfterInvalidateChild=me.onAfterConstrainInvalidateChild,scrollbarHeight=Ext.getScrollbarSize().height;if((isStretch||(isCenter||isBottom)&&!heightShrinkWrap)&&isNaN(availHeight))return!1;if(!isStretch&&!ownerContext.parallelSizeModel.shrinkWrap&&!ownerContext.state.parallelDone&&me.scrollParallel)return!1;if(me.scrollParallel&&plan.tooNarrow&&(heightShrinkWrap?shrinkWrapParallelOverflow=!0:(availHeight-=scrollbarHeight,plan.targetSize[heightName]-=scrollbarHeight)),isStretch)height=availHeight;else{for(i=0;i<childItemsLength;i++){if(childContext=childItems[i],childMargins=(childContext.marginInfo||childContext.getMarginInfo())[heightName],percentagePerpendicular=childContext.percentagePerpendicular){if(++hasPercentageSizes,heightShrinkWrap)continue;childHeight=percentagePerpendicular*availHeight-childMargins,childHeight=childContext[names.setHeight](childHeight)}else childHeight=childContext.getProp(heightName);if(!heightShrinkWrap&&constrain&&childContext[names.heightModel].shrinkWrap&&childHeight>availHeight&&(childContext.invalidate({before:onBeforeInvalidateChild,after:onAfterInvalidateChild,layout:me,childHeight:availHeight,names:names}),ownerContext.state.parallelDone=!1),isNaN(maxHeight=mmax(maxHeight,childHeight+childMargins,childContext.target[names.minHeight]||0)))return!1}if(shrinkWrapParallelOverflow&&(maxHeight+=scrollbarHeight,ownerContext[names.hasOverflowX]=!0,ownerContext.target.componentLayout[names.setHeightInDom]=!0,ownerContext[names.invalidateScrollX]=Ext.isStrict&&Ext.isIE8),(stretchMaxPartner=ownerContext.stretchMaxPartner)&&(ownerContext.setProp("maxChildHeight",maxHeight),(stretchMaxChildren=stretchMaxPartner.childItems)&&stretchMaxChildren.length&&(maxHeight=mmax(maxHeight,stretchMaxPartner.getProp("maxChildHeight")),isNaN(maxHeight))))return!1;ownerContext[names.setContentHeight](maxHeight+me.padding[heightName]+ownerContext.targetContext.getPaddingInfo()[heightName]),shrinkWrapParallelOverflow&&(maxHeight-=scrollbarHeight),plan.maxSize=maxHeight,isStretchMax?height=maxHeight:(isCenter||isBottom||hasPercentageSizes)&&(height=constrain?heightShrinkWrap?maxHeight:availHeight:heightShrinkWrap?maxHeight:mmax(availHeight,maxHeight),height-=ownerContext.innerCtContext.getBorderInfo()[heightName])}for(i=0;i<childItemsLength;i++)childContext=childItems[i],childMargins=childContext.marginInfo||childContext.getMarginInfo(),childTop=top+childMargins[beforeYName],isStretch?childContext[setHeightName](height-childMargins[heightName]):(percentagePerpendicular=childContext.percentagePerpendicular,heightShrinkWrap&&percentagePerpendicular&&(childMargins=childContext.marginInfo||childContext.getMarginInfo(),childHeight=percentagePerpendicular*height-childMargins[heightName],childHeight=childContext.setHeight(childHeight)),isCenter?(diff=height-childContext.props[heightName])>0&&(childTop=top+Math[me.alignRoundingMethod](diff/2)):isBottom&&(childTop=mmax(0,height-childTop-childContext.props[heightName]))),childContext.setProp(topPositionName,childTop);return!0},onBeforeConstrainInvalidateChild:function(childContext,options){var heightModelName=options.names.heightModel;childContext[heightModelName].constrainedMin||(childContext[heightModelName]=Ext.layout.SizeModel.calculated)},onAfterConstrainInvalidateChild:function(childContext,options){var names=options.names;childContext.setProp(names.beforeY,0),childContext[names.heightModel].calculated&&childContext[names.setHeight](options.childHeight)},calculateStretchMax:function(ownerContext,names,plan){var childContext,props,i,childHeight,me=this,heightName=names.height,widthName=names.width,childItems=ownerContext.childItems,length=childItems.length,height=plan.maxSize,onBeforeStretchMaxInvalidateChild=me.onBeforeStretchMaxInvalidateChild,onAfterStretchMaxInvalidateChild=me.onAfterStretchMaxInvalidateChild;for(i=0;i<length;++i)childContext=childItems[i],props=childContext.props,((childHeight=height-childContext.getMarginInfo()[heightName])!=props[heightName]||childContext[names.heightModel].constrained)&&childContext.invalidate({before:onBeforeStretchMaxInvalidateChild,after:onAfterStretchMaxInvalidateChild,layout:me,childWidth:props[widthName],childHeight:childHeight,childX:props.x,childY:props.y,names:names})},onBeforeStretchMaxInvalidateChild:function(childContext,options){var heightModelName=options.names.heightModel;childContext[heightModelName].constrainedMax||(childContext[heightModelName]=Ext.layout.SizeModel.calculated)},onAfterStretchMaxInvalidateChild:function(childContext,options){var names=options.names,childHeight=options.childHeight,childWidth=options.childWidth;childContext.setProp("x",options.childX),childContext.setProp("y",options.childY),childContext[names.heightModel].calculated&&childContext[names.setHeight](childHeight),childContext[names.widthModel].calculated&&childContext[names.setWidth](childWidth)},completeLayout:function(ownerContext){var dom,el,overflowX,overflowY,styles,me=this,names=ownerContext.boxNames,invalidateScrollX=ownerContext.invalidateScrollX,invalidateScrollY=ownerContext.invalidateScrollY;me.overflowHandler.completeLayout(ownerContext),(invalidateScrollX||invalidateScrollY)&&(el=me.getTarget(),dom=el.dom,styles=dom.style,invalidateScrollX&&(overflowX=el.getStyle("overflowX"),"auto"==overflowX?(overflowX=styles.overflowX,styles.overflowX="scroll"):invalidateScrollX=!1),invalidateScrollY&&(overflowY=el.getStyle("overflowY"),"auto"==overflowY?(overflowY=styles.overflowY,styles.overflowY="scroll"):invalidateScrollY=!1),(invalidateScrollX||invalidateScrollY)&&(dom.scrollWidth,invalidateScrollX&&(styles.overflowX=overflowX),invalidateScrollY&&(styles.overflowY=overflowY))),me.scrollParallel&&(me.owner.getTargetEl().dom[names.scrollLeft]=me.scrollPos)},finishedLayout:function(ownerContext){this.overflowHandler.finishedLayout(ownerContext),this.callParent(arguments),this.targetEl.setWidth(ownerContext.innerCtContext.props.width)},publishInnerCtSize:function(ownerContext,reservedSpace){var innerCtHeight,me=this,names=ownerContext.boxNames,heightName=names.height,widthName=names.width,align=ownerContext.boxOptions.align,dock=me.owner.dock,padding=me.padding,plan=ownerContext.state.boxPlan,targetSize=plan.targetSize,height=targetSize[heightName],innerCtContext=ownerContext.innerCtContext,innerCtWidth=(ownerContext.parallelSizeModel.shrinkWrap||plan.tooNarrow&&me.scrollParallel?ownerContext.state.contentWidth-ownerContext.targetContext.getPaddingInfo()[widthName]:targetSize[widthName])-(reservedSpace||0);align.stretch?innerCtHeight=height:(innerCtHeight=plan.maxSize+padding[names.beforeY]+padding[names.afterY]+innerCtContext.getBorderInfo()[heightName],ownerContext.perpendicularSizeModel.shrinkWrap||!align.center&&!align.bottom||(innerCtHeight=Math.max(height,innerCtHeight))),innerCtContext[names.setWidth](innerCtWidth),innerCtContext[names.setHeight](innerCtHeight),isNaN(innerCtWidth+innerCtHeight)&&(me.done=!1),!plan.calculatedWidth||"left"!=dock&&"right"!=dock||ownerContext.setWidth(plan.calculatedWidth,!0,!0)},onRemove:function(comp,isDestroying){var el,me=this,names=me.names;me.callParent(arguments),me.overflowHandler&&me.overflowHandler.onRemove(comp),comp.layoutMarginCap==me.id&&delete comp.layoutMarginCap,me.owner.destroying||isDestroying||!comp.rendered||(el=comp.getEl(),el.setStyle(names.beforeY,""),el.setStyle(names.beforeX,""))},initOverflowHandler:function(){var handlerType,constructor,me=this,handler=me.overflowHandler;"string"==typeof handler&&(handler={type:handler}),handlerType="None",handler&&void 0!==handler.type&&(handlerType=handler.type),constructor=Ext.layout.container.boxOverflow[handlerType],constructor[me.type]&&(constructor=constructor[me.type]),me.overflowHandler=Ext.create("Ext.layout.container.boxOverflow."+handlerType,me,handler)},getRenderTarget:function(){return this.targetEl},getElementTarget:function(){return this.innerCt},calculateChildBox:Ext.deprecated(),calculateChildBoxes:Ext.deprecated(),updateChildBoxes:Ext.deprecated(),destroy:function(){var me=this;Ext.destroy(me.innerCt,me.overflowHandler),me.flexSortFn=me.innerCt=null,me.callParent(arguments)},getRenderData:function(){var data=this.callParent();return data.targetElCls=this.targetElCls,data}});Ext.define("Ext.layout.container.HBox",{alias:["layout.hbox"],extend:"Ext.layout.container.Box",alternateClassName:"Ext.layout.HBoxLayout",align:"top",constrainAlign:!1,type:"hbox",direction:"horizontal",horizontal:!0,names:{beforeX:"left",beforeScrollX:"left",beforeScrollerSuffix:"-before-scroller",afterScrollerSuffix:"-after-scroller",leftCap:"Left",afterX:"right",width:"width",contentWidth:"contentWidth",minWidth:"minWidth",maxWidth:"maxWidth",widthCap:"Width",widthModel:"widthModel",widthIndex:0,x:"x",scrollLeft:"scrollLeft",overflowX:"overflowX",hasOverflowX:"hasOverflowX",invalidateScrollX:"invalidateScrollX",parallelMargins:"lr",center:"middle",beforeY:"top",afterY:"bottom",height:"height",contentHeight:"contentHeight",minHeight:"minHeight",maxHeight:"maxHeight",heightCap:"Height",heightModel:"heightModel",heightIndex:1,y:"y",overflowY:"overflowY",hasOverflowY:"hasOverflowY",invalidateScrollY:"invalidateScrollY",perpendicularMargins:"tb",getWidth:"getWidth",getHeight:"getHeight",setWidth:"setWidth",setHeight:"setHeight",gotWidth:"gotWidth",gotHeight:"gotHeight",setContentWidth:"setContentWidth",setContentHeight:"setContentHeight",setWidthInDom:"setWidthInDom",setHeightInDom:"setHeightInDom",getScrollLeft:"getScrollLeft",setScrollLeft:"setScrollLeft",scrollTo:"scrollTo"},sizePolicy:{flex:{"":{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:1}}});Ext.define("Ext.layout.container.VBox",{alias:["layout.vbox"],extend:"Ext.layout.container.Box",alternateClassName:"Ext.layout.VBoxLayout",align:"left",constrainAlign:!1,type:"vbox",direction:"vertical",horizontal:!1,names:{beforeX:"top",beforeScrollX:"top",beforeScrollerSuffix:"-before-scroller",afterScrollerSuffix:"-after-scroller",leftCap:"Top",afterX:"bottom",width:"height",contentWidth:"contentHeight",minWidth:"minHeight",maxWidth:"maxHeight",widthCap:"Height",widthModel:"heightModel",widthIndex:1,x:"y",scrollLeft:"scrollTop",overflowX:"overflowY",hasOverflowX:"hasOverflowY",invalidateScrollX:"invalidateScrollY",parallelMargins:"tb",center:"center",beforeY:"left",afterY:"right",height:"width",contentHeight:"contentWidth",minHeight:"minWidth",maxHeight:"maxWidth",heightCap:"Width",heightModel:"widthModel",heightIndex:0,y:"x",overflowY:"overflowX",hasOverflowY:"hasOverflowX",invalidateScrollY:"invalidateScrollX",perpendicularMargins:"lr",getWidth:"getHeight",getHeight:"getWidth",setWidth:"setHeight",setHeight:"setWidth",gotWidth:"gotHeight",gotHeight:"gotWidth",setContentWidth:"setContentHeight",setContentHeight:"setContentWidth",setWidthInDom:"setHeightInDom",setHeightInDom:"setWidthInDom",getScrollLeft:"getScrollTop",setScrollLeft:"setScrollTop",scrollTo:"scrollTo"},sizePolicy:{flex:{"":{readsWidth:1,readsHeight:0,setsWidth:0,setsHeight:1},stretch:{readsWidth:0,readsHeight:0,setsWidth:1,setsHeight:1},stretchmax:{readsWidth:1,readsHeight:0,setsWidth:1,setsHeight:1}},"":{readsWidth:1,readsHeight:1,setsWidth:0,setsHeight:0},stretch:{readsWidth:0,readsHeight:1,setsWidth:1,setsHeight:0},stretchmax:{readsWidth:1,readsHeight:1,setsWidth:1,setsHeight:0}}});Ext.define("Ext.toolbar.Toolbar",{extend:"Ext.container.Container",requires:["Ext.toolbar.Fill","Ext.layout.container.HBox","Ext.layout.container.VBox"],uses:["Ext.toolbar.Separator"],alias:"widget.toolbar",alternateClassName:"Ext.Toolbar",isToolbar:!0,baseCls:Ext.baseCSSPrefix+"toolbar",ariaRole:"toolbar",defaultType:"button",vertical:!1,enableOverflow:!1,menuTriggerCls:Ext.baseCSSPrefix+"toolbar-more-icon",trackMenus:!0,itemCls:Ext.baseCSSPrefix+"toolbar-item",statics:{shortcuts:{"-":"tbseparator"," ":"tbspacer"},shortcutsHV:{0:{"->":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var me=this;!me.layout&&me.enableOverflow&&(me.layout={overflowHandler:"Menu"}),"right"!==me.dock&&"left"!==me.dock||(me.vertical=!0),me.layout=Ext.applyIf(Ext.isString(me.layout)?{type:me.layout}:me.layout||{},{type:me.vertical?"vbox":"hbox",align:me.vertical?"stretchmax":"middle"}),me.vertical&&me.addClsWithUI("vertical"),"footer"===me.ui&&(me.ignoreBorderManagement=!0),me.callParent(),me.addEvents("overflowchange")},getRefItems:function(deep){var handler,me=this,items=me.callParent(arguments),layout=me.layout;return deep&&me.enableOverflow&&(handler=layout.overflowHandler)&&handler.menu&&(items=items.concat(handler.menu.getRefItems(deep))),items},lookupComponent:function(c){var args=arguments;if("string"==typeof c){var T=Ext.toolbar.Toolbar,shortcut=T.shortcutsHV[this.vertical?1:0][c]||T.shortcuts[c];c="string"==typeof shortcut?{xtype:shortcut}:shortcut?Ext.apply({},shortcut):{xtype:"tbtext",text:c},this.applyDefaults(c),args=[c]}return this.callParent(args)},applyDefaults:function(c){return Ext.isString(c)||(c=this.callParent(arguments)),c},trackMenu:function(item,remove){if(this.trackMenus&&item.menu){var method=remove?"mun":"mon",me=this;me[method](item,"mouseover",me.onButtonOver,me),me[method](item,"menushow",me.onButtonMenuShow,me),me[method](item,"menuhide",me.onButtonMenuHide,me)}},onBeforeAdd:function(component){var me=this,isButton=component.isButton;isButton&&me.defaultButtonUI&&"default"===component.ui&&!component.hasOwnProperty("ui")?component.ui=me.defaultButtonUI:(isButton||component.isFormField)&&"footer"!==me.ui&&(component.ui=component.ui+"-toolbar",component.addCls(component.baseCls+"-toolbar")),component instanceof Ext.toolbar.Separator&&component.setUI(me.vertical?"vertical":"horizontal"),me.callParent(arguments)},onAdd:function(component){this.callParent(arguments),this.trackMenu(component)},onRemove:function(c){this.callParent(arguments),this.trackMenu(c,!0)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(btn){this.activeMenuBtn&&this.activeMenuBtn!=btn&&(this.activeMenuBtn.hideMenu(),btn.showMenu(),this.activeMenuBtn=btn)},onButtonMenuShow:function(btn){this.activeMenuBtn=btn},onButtonMenuHide:function(btn){delete this.activeMenuBtn}});Ext.define("Ext.layout.component.Dock",{extend:"Ext.layout.component.Component",alias:"layout.dock",alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",horzAxisProps:{name:"horz",oppositeName:"vert",dockBegin:"left",dockEnd:"right",horizontal:!0,marginBegin:"margin-left",maxSize:"maxWidth",minSize:"minWidth",pos:"x",setSize:"setWidth",shrinkWrapDock:"shrinkWrapDockWidth",size:"width",sizeModel:"widthModel"},vertAxisProps:{name:"vert",oppositeName:"horz",dockBegin:"top",dockEnd:"bottom",horizontal:!1,marginBegin:"margin-top",maxSize:"maxHeight",minSize:"minHeight",pos:"y",setSize:"setHeight",shrinkWrapDock:"shrinkWrapDockHeight",size:"height",sizeModel:"heightModel"},initializedBorders:-1,horizontalCollapsePolicy:{width:!0,x:!0},verticalCollapsePolicy:{height:!0,y:!0},finishRender:function(){var target,items,me=this;me.callParent(),target=me.getRenderTarget(),items=me.getDockedItems(),me.finishRenderItems(target,items)},isItemBoxParent:function(itemContext){return!0},isItemShrinkWrap:function(item){return!0},noBorderClasses:[Ext.baseCSSPrefix+"docked-noborder-top",Ext.baseCSSPrefix+"docked-noborder-right",Ext.baseCSSPrefix+"docked-noborder-bottom",Ext.baseCSSPrefix+"docked-noborder-left"],noBorderClassesSides:{top:Ext.baseCSSPrefix+"docked-noborder-top",right:Ext.baseCSSPrefix+"docked-noborder-right",bottom:Ext.baseCSSPrefix+"docked-noborder-bottom",left:Ext.baseCSSPrefix+"docked-noborder-left"},borderWidthProps:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},handleItemBorders:function(){var borders,docked,i,ln,item,dock,side,me=this,owner=me.owner,lastItems=me.lastDockedItems,oldBorders=me.borders,currentGeneration=owner.dockedItems.generation,noBorderClassesSides=me.noBorderClassesSides,borderWidthProps=me.borderWidthProps,collapsed=me.collapsed;if(me.initializedBorders!=currentGeneration&&(!owner.border||owner.manageBodyBorders)){for(me.initializedBorders=currentGeneration,me.collapsed=!1,me.lastDockedItems=docked=me.getLayoutItems(),me.collapsed=collapsed,borders={top:[],right:[],bottom:[],left:[]},i=0,ln=docked.length;i<ln;i++)item=docked[i],dock=item.dock,item.ignoreBorderManagement||(borders[dock].satisfied||(borders[dock].push(item),borders[dock].satisfied=!0),borders.top.satisfied||"bottom"===dock||borders.top.push(item),borders.right.satisfied||"left"===dock||borders.right.push(item),borders.bottom.satisfied||"top"===dock||borders.bottom.push(item),borders.left.satisfied||"right"===dock||borders.left.push(item));if(lastItems)for(i=0,ln=lastItems.length;i<ln;i++)item=lastItems[i],item.isDestroyed||item.ignoreBorderManagement||owner.manageBodyBorders||item.removeCls(me.noBorderClasses);if(oldBorders)for(side in oldBorders)owner.manageBodyBorders&&oldBorders[side].satisfied&&owner.setBodyStyle(borderWidthProps[side],"");for(side in borders)if(ln=borders[side].length,owner.manageBodyBorders)borders[side].satisfied&&owner.setBodyStyle(borderWidthProps[side],"1px");else{for(i=0;i<ln;i++)borders[side][i].addCls(noBorderClassesSides[side]);(borders[side].satisfied||owner.bodyBorder)&&!1!==owner.bodyBorder||owner.addBodyCls(noBorderClassesSides[side])}me.borders=borders}},beforeLayoutCycle:function(ownerContext){var collapsedHorz,collapsedVert,me=this,owner=me.owner,shrinkWrap=me.sizeModels.shrinkWrap,shrinkWrapDock=owner.shrinkWrapDock;owner.collapsed&&(owner.collapsedVertical()?(collapsedVert=!0,ownerContext.measureDimensions=1):(collapsedHorz=!0,ownerContext.measureDimensions=2)),ownerContext.collapsedVert=collapsedVert,ownerContext.collapsedHorz=collapsedHorz,collapsedVert?ownerContext.heightModel=shrinkWrap:collapsedHorz&&(ownerContext.widthModel=shrinkWrap),shrinkWrapDock=!0===shrinkWrapDock?3:shrinkWrapDock||0,ownerContext.shrinkWrapDockHeight=1&shrinkWrapDock&&ownerContext.heightModel.shrinkWrap,ownerContext.shrinkWrapDockWidth=2&shrinkWrapDock&&ownerContext.widthModel.shrinkWrap},beginLayout:function(ownerContext){var dockedItems,i,item,itemContext,offsets,collapsed,dock,me=this,owner=me.owner,docked=me.getLayoutItems(),layoutContext=ownerContext.context,dockedItemCount=docked.length;for(me.callParent(arguments),collapsed=owner.getCollapsed(),collapsed!==me.lastCollapsedState&&Ext.isDefined(me.lastCollapsedState)&&(me.owner.collapsed?(ownerContext.isCollapsingOrExpanding=1,owner.addClsWithUI(owner.collapsedCls)):(ownerContext.isCollapsingOrExpanding=2,owner.removeClsWithUI(owner.collapsedCls),ownerContext.lastCollapsedState=me.lastCollapsedState)),me.lastCollapsedState=collapsed,ownerContext.dockedItems=dockedItems=[],i=0;i<dockedItemCount;i++)item=docked[i],item.rendered&&(dock=item.dock,itemContext=layoutContext.getCmp(item),itemContext.dockedAt={x:0,y:0},itemContext.offsets=offsets=Ext.Element.parseBox(item.offsets||0),itemContext.horizontal="top"==dock||"bottom"==dock,offsets.width=offsets.left+offsets.right,offsets.height=offsets.top+offsets.bottom,dockedItems.push(itemContext));ownerContext.bodyContext=ownerContext.getEl("body")},beginLayoutCycle:function(ownerContext){var i,item,dock,me=this,docked=ownerContext.dockedItems,len=docked.length,owner=me.owner,frameBody=owner.frameBody,lastHeightModel=me.lastHeightModel;for(me.callParent(arguments),me.owner.manageHeight?me.lastBodyDisplay&&(owner.body.dom.style.display=me.lastBodyDisplay=""):("inline-block"!==me.lastBodyDisplay&&(owner.body.dom.style.display=me.lastBodyDisplay="inline-block"),lastHeightModel&&lastHeightModel.shrinkWrap&&!ownerContext.heightModel.shrinkWrap&&(owner.body.dom.style.marginBottom="")),ownerContext.widthModel.auto&&(ownerContext.widthModel.shrinkWrap&&owner.el.setWidth(null),owner.body.setWidth(null),frameBody&&frameBody.setWidth(null)),ownerContext.heightModel.auto&&(owner.body.setHeight(null),frameBody&&frameBody.setHeight(null)),ownerContext.collapsedVert?ownerContext.setContentHeight(0):ownerContext.collapsedHorz&&ownerContext.setContentWidth(0),i=0;i<len;i++)if(item=docked[i].target,"right"==(dock=item.dock))item.setLocalX(0);else if("left"!=dock)continue},calculate:function(ownerContext){var framing,horz,vert,forward,backward,me=this,measure=me.measureAutoDimensions(ownerContext,ownerContext.measureDimensions),state=ownerContext.state,horzDone=state.horzDone,vertDone=state.vertDone,bodyContext=ownerContext.bodyContext;for(ownerContext.borderInfo||ownerContext.getBorderInfo(),ownerContext.paddingInfo||ownerContext.getPaddingInfo(),ownerContext.frameInfo||ownerContext.getFrameInfo(),bodyContext.borderInfo||bodyContext.getBorderInfo(),bodyContext.paddingInfo||bodyContext.getPaddingInfo(),ownerContext.frameBorder||((framing=ownerContext.framing)?(ownerContext.frameBorder=framing.border,ownerContext.framePadding=framing.padding):(ownerContext.frameBorder=ownerContext.borderInfo,ownerContext.framePadding=ownerContext.paddingInfo)),horz=!horzDone&&me.createAxis(ownerContext,measure.contentWidth,ownerContext.widthModel,me.horzAxisProps,ownerContext.collapsedHorz),vert=!vertDone&&me.createAxis(ownerContext,measure.contentHeight,ownerContext.heightModel,me.vertAxisProps,ownerContext.collapsedVert),forward=0,backward=ownerContext.dockedItems.length;backward--;++forward)horz&&me.dockChild(ownerContext,horz,backward,forward),vert&&me.dockChild(ownerContext,vert,backward,forward);horz&&me.finishAxis(ownerContext,horz)&&(state.horzDone=horzDone=horz),vert&&me.finishAxis(ownerContext,vert)&&(state.vertDone=vertDone=vert),horzDone&&vertDone&&me.finishConstraints(ownerContext,horzDone,vertDone)?me.finishPositions(ownerContext,horzDone,vertDone):me.done=!1},createAxis:function(ownerContext,contentSize,sizeModel,axisProps,collapsedAxis){var bodyContext,framing,padding,end,me=this,begin=0,owner=me.owner,maxSize=owner[axisProps.maxSize],minSize=owner[axisProps.minSize]||0,dockBegin=axisProps.dockBegin,dockEnd=axisProps.dockEnd,posProp=axisProps.pos,sizeProp=axisProps.size,hasMaxSize=null!=maxSize,shrinkWrap=sizeModel.shrinkWrap;return shrinkWrap?collapsedAxis?end=0:(bodyContext=ownerContext.bodyContext,end=contentSize+bodyContext.borderInfo[sizeProp]):(framing=ownerContext.frameBorder,padding=ownerContext.framePadding,begin=framing[dockBegin]+padding[dockBegin],end=ownerContext.getProp(sizeProp)-(framing[dockEnd]+padding[dockEnd])),{shrinkWrap:sizeModel.shrinkWrap,sizeModel:sizeModel,initialBegin:begin,begin:begin,end:end,collapsed:collapsedAxis,horizontal:axisProps.horizontal,ignoreFrameBegin:null,ignoreFrameEnd:null,initialSize:end-begin,maxChildSize:0,hasMinMaxConstraints:(minSize||hasMaxSize)&&sizeModel.shrinkWrap,minSize:minSize,maxSize:hasMaxSize?maxSize:1e9,bodyPosProp:me.owner.manageHeight?posProp:axisProps.marginBegin,dockBegin:dockBegin,dockEnd:dockEnd,posProp:posProp,sizeProp:sizeProp,setSize:axisProps.setSize,shrinkWrapDock:ownerContext[axisProps.shrinkWrapDock],sizeModelName:axisProps.sizeModel,dockedPixelsEnd:0}},dockChild:function(ownerContext,axis,backward,forward){var pos,size,me=this,itemContext=ownerContext.dockedItems[axis.shrinkWrap?backward:forward],item=itemContext.target,dock=item.dock,sizeProp=axis.sizeProp;item.ignoreParentFrame&&ownerContext.isCollapsingOrExpanding&&itemContext.clearMarginCache(),itemContext.marginInfo||itemContext.getMarginInfo(),dock==axis.dockBegin?pos=axis.shrinkWrap?me.dockOutwardBegin(ownerContext,itemContext,item,axis):me.dockInwardBegin(ownerContext,itemContext,item,axis):dock==axis.dockEnd?pos=axis.shrinkWrap?me.dockOutwardEnd(ownerContext,itemContext,item,axis):me.dockInwardEnd(ownerContext,itemContext,item,axis):axis.shrinkWrapDock?(size=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],axis.maxChildSize=Math.max(axis.maxChildSize,size),pos=0):pos=me.dockStretch(ownerContext,itemContext,item,axis),itemContext.dockedAt[axis.posProp]=pos},dockInwardBegin:function(ownerContext,itemContext,item,axis){var delta,size,dock,pos=axis.begin,sizeProp=axis.sizeProp,ignoreParentFrame=item.ignoreParentFrame;return ignoreParentFrame&&(axis.ignoreFrameBegin=itemContext,dock=item.dock,delta=ownerContext.frameBorder[dock],pos-=delta+ownerContext.framePadding[dock]),item.overlay||(size=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],axis.begin+=size,ignoreParentFrame&&(axis.begin-=delta)),pos},dockInwardEnd:function(ownerContext,itemContext,item,axis){var frameEnd,sizeProp=axis.sizeProp,size=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],pos=axis.end-size;return item.overlay||(axis.end=pos),item.ignoreParentFrame&&(axis.ignoreFrameEnd=itemContext,frameEnd=ownerContext.frameBorder[item.dock],pos+=frameEnd+ownerContext.framePadding[item.dock],axis.end+=frameEnd),pos},dockOutwardBegin:function(ownerContext,itemContext,item,axis){var size,pos=axis.begin,sizeProp=axis.sizeProp;return axis.collapsed?axis.ignoreFrameBegin=axis.ignoreFrameEnd=itemContext:item.ignoreParentFrame&&(axis.ignoreFrameBegin=itemContext),item.overlay||(size=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],pos-=size,axis.begin=pos),pos},dockOutwardEnd:function(ownerContext,itemContext,item,axis){var size,pos=axis.end,sizeProp=axis.sizeProp;return size=itemContext.getProp(sizeProp)+itemContext.marginInfo[sizeProp],axis.collapsed?axis.ignoreFrameBegin=axis.ignoreFrameEnd=itemContext:item.ignoreParentFrame&&(axis.ignoreFrameEnd=itemContext),item.overlay||(axis.end=pos+size,axis.dockedPixelsEnd+=size),pos},dockStretch:function(ownerContext,itemContext,item,axis){var margin,size,dock=item.dock,sizeProp=axis.sizeProp,horizontal="top"==dock||"bottom"==dock,border=ownerContext.frameBorder,offsets=itemContext.offsets,padding=ownerContext.framePadding,endProp=horizontal?"right":"bottom",startProp=horizontal?"left":"top",pos=axis.begin+offsets[startProp];return!1!==item.stretch&&(size=axis.end-pos-offsets[endProp],item.ignoreParentFrame&&(pos-=padding[startProp]+border[startProp],size+=padding[sizeProp]+border[sizeProp]),margin=itemContext.marginInfo,size-=margin[sizeProp],itemContext[axis.setSize](size)),pos},finishAxis:function(ownerContext,axis){if(isNaN(axis.maxChildSize))return!1;var bodyPos,bodySize,delta,dirty,axisBegin=axis.begin,size=axis.end-axisBegin,collapsed=axis.collapsed,setSizeMethod=axis.setSize,beginName=axis.dockBegin,endName=axis.dockEnd,padding=ownerContext.framePadding,border=ownerContext.frameBorder,borderBegin=border[beginName],framing=ownerContext.framing,framingBegin=framing&&framing[beginName],paddingBegin=collapsed?0:padding[beginName],sizeProp=axis.sizeProp,ignoreFrameBegin=axis.ignoreFrameBegin,ignoreFrameEnd=axis.ignoreFrameEnd,bodyContext=ownerContext.bodyContext,extraPaddingBegin=Math.max(borderBegin+paddingBegin-framingBegin,0);return axis.shrinkWrap?(bodySize=axis.initialSize,framing?(delta=-axisBegin+borderBegin+paddingBegin,bodyPos=delta-framingBegin-extraPaddingBegin):(bodyPos=-axisBegin,delta=bodyPos+paddingBegin),collapsed||(size+=padding[sizeProp]),ignoreFrameBegin?(delta-=borderBegin,bodyPos-=borderBegin,ignoreFrameBegin.dockedAt[axis.posProp]-=paddingBegin):size+=borderBegin,collapsed||(ignoreFrameEnd?ignoreFrameEnd.dockedAt[axis.posProp]+=padding[endName]:size+=border[endName]),axis.size=size,axis.horizontal||this.owner.manageHeight||(dirty=!1)):(framing?(delta=0,bodyPos=axisBegin-framingBegin-extraPaddingBegin):(delta=-borderBegin,bodyPos=axisBegin-paddingBegin-borderBegin),bodySize=size),axis.delta=delta,bodyContext[setSizeMethod](bodySize,dirty),bodyContext.setProp(axis.bodyPosProp,bodyPos),!isNaN(size)},beforeInvalidateShrinkWrapDock:function(itemContext,options){var sizeModelName=options.axis.sizeModelName;itemContext[sizeModelName].constrainedMin||(itemContext[sizeModelName]=Ext.layout.SizeModel.calculated)},afterInvalidateShrinkWrapDock:function(itemContext,options){var pos,axis=options.axis,me=options.layout;itemContext[axis.sizeModelName].calculated&&(pos=me.dockStretch(options.ownerContext,itemContext,itemContext.target,axis),itemContext.setProp(axis.posProp,axis.delta+pos))},finishConstraints:function(ownerContext,horz,vert){var dirty,height,width,heightModel,widthModel,size,minSize,maxSize,maxChildSize,desiredSize,me=this,sizeModels=me.sizeModels,publishWidth=horz.shrinkWrap,publishHeight=vert.shrinkWrap,owner=me.owner;if(publishWidth&&(size=horz.size,minSize=horz.collapsed?0:horz.minSize,maxSize=horz.maxSize,maxChildSize=horz.maxChildSize,desiredSize=Math.max(size,maxChildSize),desiredSize>maxSize?(widthModel=sizeModels.constrainedMax,width=maxSize):desiredSize<minSize?(widthModel=sizeModels.constrainedMin,width=minSize):size<maxChildSize?(widthModel=sizeModels.constrainedDock,owner.dockConstrainedWidth=width=maxChildSize):width=size),publishHeight&&(size=vert.size,minSize=vert.collapsed?0:vert.minSize,maxSize=vert.maxSize,maxChildSize=vert.maxChildSize,desiredSize=Math.max(size,maxChildSize+size-vert.initialSize),desiredSize>maxSize?(heightModel=sizeModels.constrainedMax,height=maxSize):desiredSize<minSize?(heightModel=sizeModels.constrainedMin,height=minSize):size<maxChildSize?(heightModel=sizeModels.constrainedDock,owner.dockConstrainedHeight=height=maxChildSize):(ownerContext.collapsedVert||owner.manageHeight||(dirty=!1,ownerContext.bodyContext.setProp("margin-bottom",vert.dockedPixelsEnd)),height=size)),widthModel||heightModel){if(widthModel&&heightModel&&widthModel.constrainedMax&&heightModel.constrainedByMin)return ownerContext.invalidate({widthModel:widthModel}),!1;if(!ownerContext.widthModel.calculatedFromShrinkWrap&&!ownerContext.heightModel.calculatedFromShrinkWrap)return ownerContext.invalidate({widthModel:widthModel,heightModel:heightModel}),!1}else me.invalidateAxes(ownerContext,horz,vert);return publishWidth&&(ownerContext.setWidth(width),widthModel&&(ownerContext.widthModel=widthModel)),publishHeight&&(ownerContext.setHeight(height,dirty),heightModel&&(ownerContext.heightModel=heightModel)),!0},invalidateAxes:function(ownerContext,horz,vert){var dockedItems,len,i,itemContext,itemSize,isHorz,axis,sizeProp,before=this.beforeInvalidateShrinkWrapDock,after=this.afterInvalidateShrinkWrapDock,horzSize=horz.end-horz.begin,vertSize=vert.initialSize,invalidateHorz=horz.shrinkWrapDock&&horz.maxChildSize<=horzSize,invalidateVert=vert.shrinkWrapDock&&vert.maxChildSize<=vertSize;if(invalidateHorz||invalidateVert)for(invalidateVert&&(vert.begin=vert.initialBegin,vert.end=vert.begin+vert.initialSize),dockedItems=ownerContext.dockedItems,i=0,len=dockedItems.length;i<len;++i)itemContext=dockedItems[i],isHorz=itemContext.horizontal,axis=null,invalidateHorz&&isHorz?(sizeProp=horz.sizeProp,itemSize=horzSize,axis=horz):invalidateVert&&!isHorz&&(sizeProp=vert.sizeProp,itemSize=vertSize,axis=vert),axis&&(itemSize-=itemContext.getMarginInfo()[sizeProp])!==itemContext.props[sizeProp]&&itemContext.invalidate({before:before,after:after,axis:axis,ownerContext:ownerContext,layout:this})},finishPositions:function(ownerContext,horz,vert){var index,itemContext,dockedItems=ownerContext.dockedItems,length=dockedItems.length,deltaX=horz.delta,deltaY=vert.delta;for(index=0;index<length;++index)itemContext=dockedItems[index],itemContext.setProp("x",deltaX+itemContext.dockedAt.x),itemContext.setProp("y",deltaY+itemContext.dockedAt.y)},finishedLayout:function(ownerContext){var me=this,target=ownerContext.target;me.callParent(arguments),ownerContext.animatePolicy||(1===ownerContext.isCollapsingOrExpanding?target.afterCollapse(!1):2===ownerContext.isCollapsingOrExpanding&&target.afterExpand(!1))},getAnimatePolicy:function(ownerContext){var lastCollapsedState,policy,me=this;return 1==ownerContext.isCollapsingOrExpanding?lastCollapsedState=me.lastCollapsedState:2==ownerContext.isCollapsingOrExpanding&&(lastCollapsedState=ownerContext.lastCollapsedState),"left"==lastCollapsedState||"right"==lastCollapsedState?policy=me.horizontalCollapsePolicy:"top"!=lastCollapsedState&&"bottom"!=lastCollapsedState||(policy=me.verticalCollapsePolicy),policy},getDockedItems:function(order,beforeBody){var renderOrder,dock,dockedItems,i,isBefore,length,me=this,renderedOnly="visual"===order,all=renderedOnly?Ext.ComponentQuery.query("[rendered]",me.owner.dockedItems.items):me.owner.dockedItems.items,sort=all&&all.length&&!1!==order;if(null==beforeBody)dockedItems=sort&&!renderedOnly?all.slice():all;else{for(dockedItems=[],i=0,length=all.length;i<length;++i)dock=all[i].dock,isBefore="top"==dock||"left"==dock,(beforeBody?isBefore:!isBefore)&&dockedItems.push(all[i]);sort=sort&&dockedItems.length}return sort&&(renderOrder="render"==(order=order||"render"),Ext.Array.sort(dockedItems,function(a,b){var aw,bw;return!renderOrder||(aw=me.owner.dockOrder[a.dock])===(bw=me.owner.dockOrder[b.dock])||aw+bw?(aw=me.getItemWeight(a,order),bw=me.getItemWeight(b,order),void 0!==aw&&void 0!==bw?aw-bw:0):aw-bw})),dockedItems||[]},getItemWeight:function(item,order){var weight=item.weight||this.owner.defaultDockWeights[item.dock];return weight[order]||weight},getLayoutItems:function(){var items,itemCount,item,i,result,me=this;if(me.owner.collapsed)result=me.owner.getCollapsedDockedItems();else for(items=me.getDockedItems("visual"),itemCount=items.length,result=[],i=0;i<itemCount;i++)item=items[i],item.hidden||result.push(item);return result},measureContentWidth:function(ownerContext){var bodyContext=ownerContext.bodyContext;return bodyContext.el.getWidth()-bodyContext.getBorderInfo().width},measureContentHeight:function(ownerContext){var bodyContext=ownerContext.bodyContext;return bodyContext.el.getHeight()-bodyContext.getBorderInfo().height},redoLayout:function(ownerContext){var me=this,owner=me.owner;1==ownerContext.isCollapsingOrExpanding?(owner.reExpander&&owner.reExpander.el.show(),owner.addClsWithUI(owner.collapsedCls),ownerContext.redo(!0)):2==ownerContext.isCollapsingOrExpanding&&(owner.removeClsWithUI(owner.collapsedCls),ownerContext.bodyContext.redo())},renderChildren:function(){var me=this,items=me.getDockedItems(),target=me.getRenderTarget();me.handleItemBorders(),me.renderItems(items,target)},renderItems:function(items,target){var i,j,targetChildNode,item,me=this,dockedItemCount=items.length,itemIndex=0,correctPosition=0,staticNodeCount=0,targetNodes=me.getRenderTarget().dom.childNodes,targetChildCount=targetNodes.length;for(i=0,j=0;i<targetChildCount&&(targetChildNode=targetNodes[i],!Ext.fly(targetChildNode).hasCls(Ext.baseCSSPrefix+"resizable-handle"));i++){for(j=0;j<dockedItemCount&&(item=items[j],!item.rendered||item.el.dom!==targetChildNode);j++);j===dockedItemCount&&staticNodeCount++}for(;itemIndex<dockedItemCount;itemIndex++,correctPosition++)item=items[itemIndex],itemIndex!==correctPosition||"right"!==item.dock&&"bottom"!==item.dock||(correctPosition+=staticNodeCount),item&&!item.rendered?me.renderItem(item,target,correctPosition):me.isValidParent(item,target,correctPosition)||me.moveItem(item,target,correctPosition)},undoLayout:function(ownerContext){var me=this,owner=me.owner;1==ownerContext.isCollapsingOrExpanding?(owner.reExpander&&owner.reExpander.el.hide(),owner.removeClsWithUI(owner.collapsedCls),ownerContext.undo(!0)):2==ownerContext.isCollapsingOrExpanding&&(owner.addClsWithUI(owner.collapsedCls),ownerContext.bodyContext.undo())},sizePolicy:{nostretch:{setsWidth:0,setsHeight:0},horz:{shrinkWrap:{setsWidth:1,setsHeight:0,readsWidth:1},stretch:{setsWidth:1,setsHeight:0}},vert:{shrinkWrap:{setsWidth:0,setsHeight:1,readsHeight:1},stretch:{setsWidth:0,setsHeight:1}},stretchV:{setsWidth:0,setsHeight:1},autoStretchH:{readsWidth:1,setsWidth:1,setsHeight:0},autoStretchV:{readsHeight:1,setsWidth:0,setsHeight:1}},getItemSizePolicy:function(item,ownerSizeModel){var dock,vertical,me=this,policy=me.sizePolicy,shrinkWrapDock=me.owner.shrinkWrapDock;return!1===item.stretch?policy.nostretch:(dock=item.dock,vertical="left"==dock||"right"==dock,shrinkWrapDock=!0===shrinkWrapDock?3:shrinkWrapDock||0,vertical?(policy=policy.vert,shrinkWrapDock&=1):(policy=policy.horz,shrinkWrapDock&=2),shrinkWrapDock&&(ownerSizeModel||(ownerSizeModel=me.owner.getSizeModel()),ownerSizeModel[vertical?"height":"width"].shrinkWrap)?policy.shrinkWrap:policy.stretch)},configureItem:function(item,pos){this.callParent(arguments),item.addCls(Ext.baseCSSPrefix+"docked"),item.addClsWithUI(this.getDockCls(item.dock))},getDockCls:function(dock){return"docked-"+dock},afterRemove:function(item){this.callParent(arguments),this.itemCls&&item.el.removeCls(this.itemCls+"-"+item.dock);var dom=item.el.dom;!item.destroying&&dom&&dom.parentNode.removeChild(dom),this.childrenChanged=!0},borderCollapseMap:{},getBorderCollapseTable:function(){var table,me=this,map=me.borderCollapseMap,owner=me.owner,baseCls=owner.baseCls,ui=owner.ui;return map=map[baseCls]||(map[baseCls]={}),table=map[ui],table||(baseCls+="-"+ui+"-outer-border-",map[ui]=table=[0,baseCls+"l",baseCls+"b",baseCls+"bl",baseCls+"r",baseCls+"rl",baseCls+"rb",baseCls+"rbl",baseCls+"t",baseCls+"tl",baseCls+"tb",baseCls+"tbl",baseCls+"tr",baseCls+"trl",baseCls+"trb",baseCls+"trbl"]),table}});Ext.define("Ext.panel.AbstractPanel",{extend:"Ext.container.Container",mixins:{docking:"Ext.container.DockingContainer"},requires:["Ext.util.MixedCollection","Ext.Element","Ext.toolbar.Toolbar"],baseCls:Ext.baseCSSPrefix+"panel",isPanel:!0,contentPaddingProperty:"bodyPadding",shrinkWrapDock:!1,componentLayout:"dock",childEls:["body"],renderTpl:["{% this.renderDockedItems(out,values,0); %}",Ext.isIE7m||Ext.isIEQuirks?'<div style="position:relative;font-size:0;line-height:0;" role="presentation">&nbsp;</div>':"",'<div id="{id}-body" class="{baseCls}-body<tpl if="bodyCls"> {bodyCls}</tpl>',' {baseCls}-body-{ui}<tpl if="uiCls">','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>','</tpl>{childElCls}"','<tpl if="bodyRole"> role="{bodyRole}"<tpl else> role="presentation"</tpl>','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl>>',"{%this.renderContainer(out,values);%}","</div>","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:!0,emptyArray:[],initComponent:function(){this.initBorderProps(),this.callParent()},initBorderProps:function(){var me=this;me.frame&&me.border&&void 0===me.bodyBorder&&(me.bodyBorder=!1),me.frame&&me.border&&(!1===me.bodyBorder||0===me.bodyBorder)&&(me.manageBodyBorders=!0)},beforeDestroy:function(){this.destroyDockedItems(),this.callParent()},initItems:function(){this.callParent(),this.initDockingItems()},initRenderData:function(){var me=this,data=me.callParent();return me.initBodyStyles(),me.protoBody.writeTo(data),delete me.protoBody,data},getComponent:function(comp){var component=this.callParent(arguments);return void 0!==component||Ext.isNumber(comp)||(component=this.getDockedComponent(comp)),component},getProtoBody:function(){var me=this,body=me.protoBody;return body||(me.protoBody=body=new Ext.util.ProtoElement({cls:me.bodyCls,style:me.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:!0})),body},initBodyStyles:function(){var me=this,body=me.getProtoBody();void 0!==me.bodyPadding&&(me.layout.managePadding?body.setStyle("padding",0):body.setStyle("padding",this.unitizeBox(!0===me.bodyPadding?5:me.bodyPadding))),me.initBodyBorder()},initBodyBorder:function(){var me=this;me.frame&&me.bodyBorder&&(Ext.isNumber(me.bodyBorder)||(me.bodyBorder=1),me.getProtoBody().setStyle("border-width",this.unitizeBox(me.bodyBorder)))},getCollapsedDockedItems:function(){var me=this;return!1===me.header||"placeholder"==me.collapseMode?me.emptyArray:[me.getReExpander()]},setBodyStyle:function(style,value){var me=this,body=me.rendered?me.body:me.getProtoBody();return Ext.isFunction(style)&&(style=style()),1==arguments.length?(Ext.isString(style)&&(style=Ext.Element.parseStyles(style)),body.setStyle(style)):body.setStyle(style,value),me},addBodyCls:function(cls){var me=this;return(me.rendered?me.body:me.getProtoBody()).addCls(cls),me},removeBodyCls:function(cls){var me=this;return(me.rendered?me.body:me.getProtoBody()).removeCls(cls),me},addUIClsToElement:function(cls){var me=this,result=me.callParent(arguments);return me.addBodyCls([Ext.baseCSSPrefix+cls,me.baseCls+"-body-"+cls,me.baseCls+"-body-"+me.ui+"-"+cls]),result},removeUIClsFromElement:function(cls){var me=this,result=me.callParent(arguments);return me.removeBodyCls([Ext.baseCSSPrefix+cls,me.baseCls+"-body-"+cls,me.baseCls+"-body-"+me.ui+"-"+cls]),result},addUIToElement:function(){var me=this;me.callParent(arguments),me.addBodyCls(me.baseCls+"-body-"+me.ui)},removeUIFromElement:function(){var me=this;me.callParent(arguments),me.removeBodyCls(me.baseCls+"-body-"+me.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(targetCls){this.getProtoBody().addCls(targetCls)},getRefItems:function(deep){var items=this.callParent(arguments);return this.getDockingRefItems(deep,items)},setupRenderTpl:function(renderTpl){this.callParent(arguments),this.setupDockingRenderTpl(renderTpl)}});Ext.define("Ext.panel.Header",{extend:"Ext.container.Container",uses:["Ext.panel.Tool","Ext.util.CSS","Ext.layout.component.Body","Ext.Img"],alias:"widget.header",isHeader:!0,defaultType:"tool",indicateDrag:!1,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['<div id="{id}-body" class="{headerCls}-body {baseCls}-body {bodyCls} {bodyTargetCls}','<tpl for="uiCls"> {parent.baseCls}-body-{parent.ui}-{.}</tpl>"','<tpl if="bodyStyle"> style="{bodyStyle}"</tpl> role="presentation">',"{%this.renderContainer(out,values)%}","</div>"],headingTpl:['<span id="{id}-textEl" class="{headerCls}-text {cls}-text {cls}-text-{ui}" unselectable="on"','<tpl if="headerRole">',' role="{headerRole}"',"</tpl>",">{title}</span>"],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var me=this,hasPosition=me.hasOwnProperty("titlePosition"),items=me.items,titlePosition=hasPosition?me.titlePosition:items?items.length:0,uiClasses=[me.orientation,me.getDockName()],ownerCt=me.ownerCt;me.addEvents("click","dblclick"),me.indicateDragCls=me.headerCls+"-draggable",me.title=me.title||"&#160;",me.tools=me.tools||[],items=me.items=items?Ext.Array.slice(items):[],me.orientation=me.orientation||"horizontal",me.dock=me.dock?me.dock:"horizontal"==me.orientation?"top":"left",(ownerCt?!1!==ownerCt.border||ownerCt.frame:!1!==me.border)||uiClasses.push(me.orientation+"-noborder"),me.addClsWithUI(uiClasses),me.addCls([me.headerCls,me.headerCls+"-"+me.orientation]),me.indicateDrag&&me.addCls(me.indicateDragCls),(me.iconCls||me.icon||me.glyph)&&(me.initIconCmp(),hasPosition||items.length||++titlePosition,items.push(me.iconCmp)),me.titleCmp=new Ext.Component({ariaRole:"presentation",focusable:!1,noWrap:!0,flex:1,rtl:me.rtl,id:me.id+"_hd",style:me.titleAlign?"text-align:"+me.titleAlign:"",cls:me.headerCls+"-text-container "+me.baseCls+"-text-container "+me.baseCls+"-text-container-"+me.ui,renderTpl:me.getTpl("headingTpl"),renderData:{title:me.title,cls:me.baseCls,headerCls:me.headerCls,headerRole:me.headerRole,ui:me.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:me.onTitleRender,scope:me}}),me.layout="vertical"==me.orientation?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"},Ext.Array.push(items,me.tools),me.tools.length=0,me.callParent(),items.length<titlePosition&&(titlePosition=items.length),me.titlePosition=titlePosition,me.insert(titlePosition,me.titleCmp),me.on({dblclick:me.onDblClick,click:me.onClick,element:"el",scope:me})},setTitlePosition:function(index){var me=this;me.titlePosition=index=Math.min(index,me.items.length-1),me.insert(index,me.titleCmp)},initIconCmp:function(){var cfg,me=this,cls=[me.headerCls+"-icon",me.baseCls+"-icon",me.iconCls];me.glyph&&cls.push(me.baseCls+"-glyph"),cfg={focusable:!1,src:Ext.BLANK_IMAGE_URL,cls:cls,baseCls:me.baseCls+"-icon",id:me.id+"-iconEl",iconCls:me.iconCls,glyph:me.glyph},Ext.isEmpty(me.icon)||(delete cfg.iconCls,cfg.src=me.icon),me.iconCmp=new Ext.Img(cfg)},beforeRender:function(){this.protoEl.unselectable(),this.callParent()},afterLayout:function(){var frameBR,frameTR,frameTL,xPos,me=this;"vertical"===me.orientation&&(me.adjustTitlePosition(),frameTR=me.frameTR,frameTR&&(frameBR=me.frameBR,frameTL=me.frameTL,xPos=me.getWidth()-frameTR.getPadding("r")-(frameTL?frameTL.getPadding("l"):me.el.getBorderWidth("l"))+"px",frameBR.setStyle("background-position-x",xPos),frameTR.setStyle("background-position-x",xPos)),Ext.isIE7&&Ext.isStrict&&me.frame&&me.el.repaint())},beforeLayout:function(){this.callParent(),this.syncBeforeAfterTitleClasses()},adjustTitlePosition:function(){var titleEl,titleCmp=this.titleCmp;!Ext.isIE9m&&titleCmp&&(titleEl=titleCmp.el,titleEl.setStyle("left",titleEl.getWidth()+"px"))},onTitleRender:function(){"vertical"===this.orientation&&this.titleCmp.el.setVertical(90)},addUIClsToElement:function(cls){var array,i,me=this,result=me.callParent(arguments),classes=[me.baseCls+"-body-"+cls,me.baseCls+"-body-"+me.ui+"-"+cls];if(me.bodyCls){for(array=me.bodyCls.split(" "),i=0;i<classes.length;i++)Ext.Array.contains(array,classes[i])||array.push(classes[i]);me.bodyCls=array.join(" ")}else me.bodyCls=classes.join(" ");return result},removeUIClsFromElement:function(cls){var array,i,me=this,result=me.callParent(arguments),classes=[me.baseCls+"-body-"+cls,me.baseCls+"-body-"+me.ui+"-"+cls];if(me.bodyCls){for(array=me.bodyCls.split(" "),i=0;i<classes.length;i++)Ext.Array.remove(array,classes[i]);me.bodyCls=array.join(" ")}return result},addUIToElement:function(){var array,cls,me=this;me.callParent(arguments),cls=me.baseCls+"-body-"+me.ui,me.rendered?me.bodyCls?me.body.addCls(me.bodyCls):me.body.addCls(cls):me.bodyCls?(array=me.bodyCls.split(" "),Ext.Array.contains(array,cls)||array.push(cls),me.bodyCls=array.join(" ")):me.bodyCls=cls,me.titleCmp&&me.titleCmp.rendered&&me.titleCmp.addCls(me.baseCls+"-text-container-"+me.ui)},removeUIFromElement:function(){var array,cls,me=this;me.callParent(arguments),cls=me.baseCls+"-body-"+me.ui,me.rendered?me.bodyCls?me.body.removeCls(me.bodyCls):me.body.removeCls(cls):me.bodyCls?(array=me.bodyCls.split(" "),Ext.Array.remove(array,cls),me.bodyCls=array.join(" ")):me.bodyCls=cls,me.titleCmp&&me.titleCmp.rendered&&me.titleCmp.removeCls(me.baseCls+"-text-container-"+me.ui)},onClick:function(e){this.fireClickEvent("click",e)},onDblClick:function(e){this.fireClickEvent("dblclick",e)},fireClickEvent:function(type,e){var toolCls="."+Ext.panel.Tool.prototype.baseCls;e.getTarget(toolCls)||this.fireEvent(type,this,e)},getFocusEl:function(){return this.el},getTargetEl:function(){return this.body||this.frameBody||this.el},applyTargetCls:function(targetCls){this.bodyTargetCls=targetCls},setTitle:function(title){var me=this,titleCmp=me.titleCmp;me.title=title,titleCmp.rendered?(titleCmp.textEl.update(me.title||"&#160;"),titleCmp.updateLayout()):me.titleCmp.on({render:function(){me.setTitle(title)},single:!0})},getMinWidth:function(){var result,l,i,me=this,textEl=me.titleCmp.textEl.dom,tools=me.tools;if(textEl.style.display="inline",result=textEl.offsetWidth,textEl.style.display="",tools&&(l=tools.length))for(i=0;i<l;i++)tools[i].el&&(result+=tools[i].el.dom.offsetWidth);return me.iconCmp&&(result+=me.iconCmp.el.dom.offsetWidth),result+10},setIconCls:function(cls){var me=this,isEmpty=!cls||!cls.length,iconCmp=me.iconCmp;me.iconCls=cls,me.iconCmp||isEmpty?iconCmp&&(isEmpty?(me.iconCmp.destroy(),delete me.iconCmp):(iconCmp.removeCls(iconCmp.iconCls),iconCmp.addCls(cls),iconCmp.iconCls=cls)):(me.initIconCmp(),me.insert(0,me.iconCmp))},setIcon:function(icon){var me=this,isEmpty=!icon||!icon.length,iconCmp=me.iconCmp;me.icon=icon,me.iconCmp||isEmpty?iconCmp&&(isEmpty?(me.iconCmp.destroy(),delete me.iconCmp):iconCmp.setSrc(me.icon)):(me.initIconCmp(),me.insert(0,me.iconCmp))},setGlyph:function(glyph){var me=this,iconCmp=me.iconCmp;me.iconCmp?iconCmp&&(glyph?me.iconCmp.setGlyph(glyph):(me.iconCmp.destroy(),delete me.iconCmp)):(me.initIconCmp(),me.insert(0,me.iconCmp))},getTools:function(){return this.tools.slice()},addTool:function(tool){this.add(Ext.ComponentManager.create(tool,"tool"))},syncBeforeAfterTitleClasses:function(force){var afterCls,beforeCls,i,item,me=this,items=me.items,childItems=items.items,titlePosition=me.titlePosition,itemCount=childItems.length,itemGeneration=items.generation,syncGen=me.syncBeforeAfterGen;if(force||syncGen!==itemGeneration)for(me.syncBeforeAfterGen=itemGeneration,i=0;i<itemCount;++i)item=childItems[i],afterCls=item.afterTitleCls||(item.afterTitleCls=item.baseCls+"-after-title"),beforeCls=item.beforeTitleCls||(item.beforeTitleCls=item.baseCls+"-before-title"),!me.title||i<titlePosition?(syncGen&&item.removeCls(afterCls),item.addCls(beforeCls)):i>titlePosition&&(syncGen&&item.removeCls(beforeCls),item.addCls(afterCls))},onAdd:function(component,index){var tools=this.tools;this.callParent(arguments),component.isTool&&(tools.push(component),tools[component.type]=component)},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var me=this,cls=me.callParent(),owner=me.ownerCt;return!me.expanding&&owner&&(owner.collapsed||me.isCollapsedExpander)&&(cls+="-"+owner.collapsedCls),cls+"-"+me.dock}});Ext.define("Ext.dd.DragDrop",{requires:["Ext.dd.DragDropManager"],constructor:function(id,sGroup,config){id&&this.init(id,sGroup,config)},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:!1,lock:function(){this.locked=!0},moveOnly:!1,unlock:function(){this.locked=!1},isTarget:!0,padding:null,_domRef:null,__ygDragDrop:!0,constrainX:!1,constrainY:!1,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:!1,xTicks:null,yTicks:null,primaryButtonOnly:!0,available:!1,hasOuterHandles:!1,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(constrainTo,pad,inContent){Ext.isNumber(pad)&&(pad={left:pad,right:pad,top:pad,bottom:pad}),pad=pad||this.defaultPadding;var c,xy,topSpace,leftSpace,b=Ext.get(this.getEl()).getBox(),ce=Ext.get(constrainTo),s=ce.getScroll(),cd=ce.dom;cd==document.body?c={x:s.left,y:s.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}:(xy=ce.getXY(),c={x:xy[0],y:xy[1],width:cd.clientWidth,height:cd.clientHeight}),topSpace=b.y-c.y,leftSpace=b.x-c.x,this.resetConstraints(),this.setXConstraint(leftSpace-(pad.left||0),c.width-leftSpace-b.width-(pad.right||0),this.xTickSize),this.setYConstraint(topSpace-(pad.top||0),c.height-topSpace-b.height-(pad.bottom||0),this.yTickSize)},getEl:function(){return this._domRef||(this._domRef=Ext.getDom(this.id)),this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(id,sGroup,config){this.initTarget(id,sGroup,config),Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(id,sGroup,config){this.config=config||{},this.DDMInstance=Ext.dd.DragDropManager,this.groups={},"string"!=typeof id&&(id=Ext.id(id)),this.id=id,this.addToGroup(sGroup||"default"),this.handleElId=id,this.setDragElId(id),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=!1!==this.config.isTarget,this.maintainOffset=this.config.maintainOffset,this.primaryButtonOnly=!1!==this.config.primaryButtonOnly},handleOnAvailable:function(){this.available=!0,this.resetConstraints(),this.onAvailable()},setPadding:function(iTop,iRight,iBot,iLeft){this.padding=iRight||0===iRight?iBot||0===iBot?[iTop,iRight,iBot,iLeft]:[iTop,iRight,iTop,iRight]:[iTop,iTop,iTop,iTop]},setInitPosition:function(diffX,diffY){var dx,dy,p,el=this.getEl();this.DDMInstance.verifyEl(el)&&(dx=diffX||0,dy=diffY||0,p=Ext.Element.getXY(el),this.initPageX=p[0]-dx,this.initPageY=p[1]-dy,this.lastPageX=p[0],this.lastPageY=p[1],this.setStartPosition(p))},setStartPosition:function(pos){var p=pos||Ext.Element.getXY(this.getEl());this.deltaSetXY=null,this.startPageX=p[0],this.startPageY=p[1]},addToGroup:function(sGroup){this.groups[sGroup]=!0,this.DDMInstance.regDragDrop(this,sGroup)},removeFromGroup:function(sGroup){this.groups[sGroup]&&delete this.groups[sGroup],this.DDMInstance.removeDDFromGroup(this,sGroup)},setDragElId:function(id){this.dragElId=id},setHandleElId:function(id){"string"!=typeof id&&(id=Ext.id(id)),this.handleElId=id,this.DDMInstance.regHandle(this.id,id)},setOuterHandleElId:function(id){"string"!=typeof id&&(id=Ext.id(id)),Ext.EventManager.on(id,"mousedown",this.handleMouseDown,this),this.setHandleElId(id),this.hasOuterHandles=!0},unreg:function(){var me=this;Ext.EventManager.un(me.id,"mousedown",me.handleMouseDown,me),me._domRef=null,me.DDMInstance._remove(me,me.autoGroup)},destroy:function(){this.unreg()},isLocked:function(){return this.DDMInstance.isLocked()||this.locked},handleMouseDown:function(e,oDD){var me=this;me.primaryButtonOnly&&0!=e.button||me.isLocked()||(me.DDMInstance.refreshCache(me.groups),(me.hasOuterHandles||me.DDMInstance.isOverTarget(e.getPoint(),me))&&me.clickValidator(e)&&(me.setStartPosition(),me.b4MouseDown(e),me.onMouseDown(e),me.DDMInstance.handleMouseDown(e,me),me.DDMInstance.stopEvent(e)))},clickValidator:function(e){var target=e.getTarget();return this.isValidHandleChild(target)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(target,this.id))},addInvalidHandleType:function(tagName){var type=tagName.toUpperCase();this.invalidHandleTypes[type]=type},addInvalidHandleId:function(id){"string"!=typeof id&&(id=Ext.id(id)),this.invalidHandleIds[id]=id},addInvalidHandleClass:function(cssClass){this.invalidHandleClasses.push(cssClass)},removeInvalidHandleType:function(tagName){var type=tagName.toUpperCase();delete this.invalidHandleTypes[type]},removeInvalidHandleId:function(id){"string"!=typeof id&&(id=Ext.id(id)),delete this.invalidHandleIds[id]},removeInvalidHandleClass:function(cssClass){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i)this.invalidHandleClasses[i]==cssClass&&delete this.invalidHandleClasses[i]},isValidHandleChild:function(node){var nodeName,i,len,valid=!0;try{nodeName=node.nodeName.toUpperCase()}catch(e){nodeName=node.nodeName}for(valid=valid&&!this.invalidHandleTypes[nodeName],valid=valid&&!this.invalidHandleIds[node.id],i=0,len=this.invalidHandleClasses.length;valid&&i<len;++i)valid=!Ext.fly(node).hasCls(this.invalidHandleClasses[i]);return valid},setXTicks:function(iStartX,iTickSize){this.xTicks=[],this.xTickSize=iTickSize;var i,tickMap={};for(i=this.initPageX;i>=this.minX;i-=iTickSize)tickMap[i]||(this.xTicks[this.xTicks.length]=i,tickMap[i]=!0);for(i=this.initPageX;i<=this.maxX;i+=iTickSize)tickMap[i]||(this.xTicks[this.xTicks.length]=i,tickMap[i]=!0);Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(iStartY,iTickSize){this.yTicks=[],this.yTickSize=iTickSize;var i,tickMap={};for(i=this.initPageY;i>=this.minY;i-=iTickSize)tickMap[i]||(this.yTicks[this.yTicks.length]=i,tickMap[i]=!0);for(i=this.initPageY;i<=this.maxY;i+=iTickSize)tickMap[i]||(this.yTicks[this.yTicks.length]=i,tickMap[i]=!0);Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(iLeft,iRight,iTickSize){this.leftConstraint=iLeft,this.rightConstraint=iRight,this.minX=this.initPageX-iLeft,this.maxX=this.initPageX+iRight,iTickSize&&this.setXTicks(this.initPageX,iTickSize),this.constrainX=!0},clearConstraints:function(){this.constrainX=!1,this.constrainY=!1,this.clearTicks()},clearTicks:function(){this.xTicks=null,this.yTicks=null,this.xTickSize=0,this.yTickSize=0},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=iUp,this.bottomConstraint=iDown,this.minY=this.initPageY-iUp,this.maxY=this.initPageY+iDown,iTickSize&&this.setYTicks(this.initPageY,iTickSize),this.constrainY=!0},resetConstraints:function(){if(this.initPageX||0===this.initPageX){var dx=this.maintainOffset?this.lastPageX-this.initPageX:0,dy=this.maintainOffset?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy)}else this.setInitPosition();this.constrainX&&this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize),this.constrainY&&this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)},getTick:function(val,tickArray){if(tickArray){if(tickArray[0]>=val)return tickArray[0];var i,len,next,diff1,diff2;for(i=0,len=tickArray.length;i<len;++i)if(next=i+1,tickArray[next]&&tickArray[next]>=val)return diff1=val-tickArray[i],diff2=tickArray[next]-val,diff2>diff1?tickArray[i]:tickArray[next];return tickArray[tickArray.length-1]}return val},toString:function(){return"DragDrop "+this.id}});Ext.define("Ext.dd.DD",{extend:"Ext.dd.DragDrop",requires:["Ext.dd.DragDropManager"],constructor:function(id,sGroup,config){id&&this.init(id,sGroup,config)},scroll:!0,autoOffset:function(iPageX,iPageY){var x=iPageX-this.startPageX,y=iPageY-this.startPageY;this.setDelta(x,y)},setDelta:function(iDeltaX,iDeltaY){this.deltaX=iDeltaX,this.deltaY=iDeltaY},setDragElPos:function(iPageX,iPageY){var el=this.getDragEl();this.alignElWithMouse(el,iPageX,iPageY)},alignElWithMouse:function(el,iPageX,iPageY){var vpSize,aCoord,newLeft,newTop,oCoord=this.getTargetCoord(iPageX,iPageY),fly=el.dom?el:Ext.fly(el,"_dd"),elSize=fly.getSize(),EL=Ext.Element;return this.deltaSetXY?(vpSize=this.cachedViewportSize,this.setLocalXY(fly,Math.max(0,Math.min(oCoord.x+this.deltaSetXY[0],vpSize.width-elSize.width)),Math.max(0,Math.min(oCoord.y+this.deltaSetXY[1],vpSize.height-elSize.height)))):(vpSize=this.cachedViewportSize={width:EL.getDocumentWidth(),height:EL.getDocumentHeight()},aCoord=[Math.max(0,Math.min(oCoord.x,vpSize.width-elSize.width)),Math.max(0,Math.min(oCoord.y,vpSize.height-elSize.height))],fly.setXY(aCoord),newLeft=this.getLocalX(fly),newTop=fly.getLocalY(),this.deltaSetXY=[newLeft-oCoord.x,newTop-oCoord.y]),this.cachePosition(oCoord.x,oCoord.y),this.autoScroll(oCoord.x,oCoord.y,el.offsetHeight,el.offsetWidth),oCoord},cachePosition:function(iPageX,iPageY){if(iPageX)this.lastPageX=iPageX,this.lastPageY=iPageY;else{var aCoord=Ext.Element.getXY(this.getEl());this.lastPageX=aCoord[0],this.lastPageY=aCoord[1]}},autoScroll:function(x,y,h,w){if(this.scroll){var clientH=Ext.Element.getViewHeight(),clientW=Ext.Element.getViewWidth(),st=this.DDMInstance.getScrollTop(),sl=this.DDMInstance.getScrollLeft(),bot=h+y,right=w+x,toBot=clientH+st-y-this.deltaY,toRight=clientW+sl-x-this.deltaX,scrAmt=document.all?80:30;bot>clientH&&toBot<40&&window.scrollTo(sl,st+scrAmt),y<st&&st>0&&y-st<40&&window.scrollTo(sl,st-scrAmt),right>clientW&&toRight<40&&window.scrollTo(sl+scrAmt,st),x<sl&&sl>0&&x-sl<40&&window.scrollTo(sl-scrAmt,st)}},getTargetCoord:function(iPageX,iPageY){var x=iPageX-this.deltaX,y=iPageY-this.deltaY;return this.constrainX&&(x<this.minX&&(x=this.minX),x>this.maxX&&(x=this.maxX)),this.constrainY&&(y<this.minY&&(y=this.minY),y>this.maxY&&(y=this.maxY)),x=this.getTick(x,this.xTicks),y=this.getTick(y,this.yTicks),{x:x,y:y}},applyConfig:function(){this.callParent(),this.scroll=!1!==this.config.scroll},b4MouseDown:function(e){this.autoOffset(e.getPageX(),e.getPageY())},b4Drag:function(e){this.setDragElPos(e.getPageX(),e.getPageY())},toString:function(){return"DD "+this.id},getLocalX:function(el){return el.getLocalX()},setLocalXY:function(el,x,y){el.setLocalXY(x,y)}});Ext.define("Ext.dd.DDProxy",{extend:"Ext.dd.DD",statics:{dragElId:"ygddfdiv"},constructor:function(id,sGroup,config){id&&(this.init(id,sGroup,config),this.initFrame())},resizeFrame:!0,centerFrame:!1,createFrame:function(){var div,s,self=this,body=document.body;if(!body||!body.firstChild)return void setTimeout(function(){self.createFrame()},50);(div=this.getDragEl())||(div=document.createElement("div"),div.id=this.dragElId,div.setAttribute("role","presentation"),s=div.style,s.position="absolute",s.visibility="hidden",s.cursor="move",s.border="2px solid #aaa",s.zIndex=999,body.insertBefore(div,body.firstChild))},initFrame:function(){this.createFrame()},applyConfig:function(){this.callParent(),this.resizeFrame=!1!==this.config.resizeFrame,this.centerFrame=this.config.centerFrame,this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(iPageX,iPageY){var dragEl=(this.getEl(),this.getDragEl()),s=dragEl.style;this._resizeProxy(),this.centerFrame&&this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2)),this.setDragElPos(iPageX,iPageY),Ext.fly(dragEl).show()},_resizeProxy:function(){if(this.resizeFrame){var el=this.getEl();Ext.fly(this.getDragEl()).setSize(el.offsetWidth,el.offsetHeight)}},b4MouseDown:function(e){var x=e.getPageX(),y=e.getPageY();this.autoOffset(x,y),this.setDragElPos(x,y)},b4StartDrag:function(x,y){this.showFrame(x,y)},b4EndDrag:function(e){Ext.fly(this.getDragEl()).hide()},endDrag:function(e){var lel=this.getEl(),del=this.getDragEl();del.style.visibility="",this.beforeMove(),lel.style.visibility="hidden",Ext.dd.DDM.moveToEl(lel,del),del.style.visibility="hidden",lel.style.visibility="",this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return"DDProxy "+this.id}});Ext.define("Ext.dd.StatusProxy",{extend:"Ext.Component",animRepair:!1,childEls:["ghost"],renderTpl:['<div class="'+Ext.baseCSSPrefix+'dd-drop-icon" role="presentation"></div><div id="{id}-ghost" class="'+Ext.baseCSSPrefix+'dd-drag-ghost" role="presentation"></div>'],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",ariaRole:"presentation",constructor:function(config){var me=this;config=config||{},Ext.apply(me,{hideMode:"visibility",hidden:!0,floating:!0,id:me.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:config.shadow||!1,renderTo:Ext.getDetachedBody()}),me.callParent(arguments),this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(cssClass){cssClass=cssClass||this.dropNotAllowed,this.dropStatus!=cssClass&&(this.el.replaceCls(this.dropStatus,cssClass),this.dropStatus=cssClass)},reset:function(clearGhost){var me=this,clsPrefix=Ext.baseCSSPrefix+"dd-drag-proxy ";me.el.replaceCls(clsPrefix+me.dropAllowed,clsPrefix+me.dropNotAllowed),me.dropStatus=me.dropNotAllowed,clearGhost&&me.ghost.update("")},update:function(html){"string"==typeof html?this.ghost.update(html):(this.ghost.update(""),html.style.margin="0",this.ghost.dom.appendChild(html));var el=this.ghost.dom.firstChild;el&&Ext.fly(el).setStyle("float","none")},getGhost:function(){return this.ghost},hide:function(clear){this.callParent(),clear&&this.reset(!0)},stop:function(){this.anim&&this.anim.isAnimated&&this.anim.isAnimated()&&this.anim.stop()},sync:function(){this.el.sync()},repair:function(xy,callback,scope){var me=this;me.callback=callback,me.scope=scope,xy&&!1!==me.animRepair?(me.el.addCls(me.repairCls),me.el.hideUnders(!0),me.anim=me.el.animate({duration:me.repairDuration||500,easing:"ease-out",to:{x:xy[0],y:xy[1]},stopAnimation:!0,callback:me.afterRepair,scope:me})):me.afterRepair()},afterRepair:function(){var me=this;me.hide(!0),me.el.removeCls(me.repairCls),"function"==typeof me.callback&&me.callback.call(me.scope||me),delete me.callback,delete me.scope}});Ext.define("Ext.dd.DragSource",{extend:"Ext.dd.DDProxy",requires:["Ext.dd.StatusProxy","Ext.dd.DragDropManager"],dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:!0,repairHighlightColor:"c3daf9",constructor:function(el,config){this.el=Ext.get(el),this.dragData||(this.dragData={}),Ext.apply(this,config),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:!1,isTarget:!1,scroll:!0===this.scroll}]),this.dragging=!1},getDragData:function(e){return this.dragData},onDragEnter:function(e,id){var status,target=Ext.dd.DragDropManager.getDDById(id);this.cachedTarget=target,!1!==this.beforeDragEnter(target,e,id)&&(target.isNotifyTarget?(status=target.notifyEnter(this,e,this.dragData),this.proxy.setStatus(status)):this.proxy.setStatus(this.dropAllowed),this.afterDragEnter&&this.afterDragEnter(target,e,id))},beforeDragEnter:function(target,e,id){return!0},onDragOver:function(e,id){var status,target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);!1!==this.beforeDragOver(target,e,id)&&(target.isNotifyTarget&&(status=target.notifyOver(this,e,this.dragData),this.proxy.setStatus(status)),this.afterDragOver&&this.afterDragOver(target,e,id))},beforeDragOver:function(target,e,id){return!0},onDragOut:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);!1!==this.beforeDragOut(target,e,id)&&(target.isNotifyTarget&&target.notifyOut(this,e,this.dragData),this.proxy.reset(),this.afterDragOut&&this.afterDragOut(target,e,id)),this.cachedTarget=null},beforeDragOut:function(target,e,id){return!0},onDragDrop:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropManager.getDDById(id);!1!==this.beforeDragDrop(target,e,id)&&(target.isNotifyTarget?!1!==target.notifyDrop(this,e,this.dragData)?this.onValidDrop(target,e,id):this.onInvalidDrop(target,e,id):this.onValidDrop(target,e,id),this.afterDragDrop&&this.afterDragDrop(target,e,id)),delete this.cachedTarget},beforeDragDrop:function(target,e,id){return!0},onValidDrop:function(target,e,id){this.hideProxy(),this.afterValidDrop&&this.afterValidDrop(target,e,id)},getRepairXY:function(e,data){return this.el.getXY()},onInvalidDrop:function(target,e,id){var me=this;e||(e=target,target=null,id=e.getTarget().id),!1!==me.beforeInvalidDrop(target,e,id)&&(me.cachedTarget&&(me.cachedTarget.isNotifyTarget&&me.cachedTarget.notifyOut(me,e,me.dragData),me.cacheTarget=null),me.proxy.repair(me.getRepairXY(e,me.dragData),me.afterRepair,me),me.afterInvalidDrop&&me.afterInvalidDrop(e,id))},afterRepair:function(){var me=this;Ext.enableFx&&me.el.highlight(me.repairHighlightColor),me.dragging=!1},beforeInvalidDrop:function(target,e,id){return!0},handleMouseDown:function(e){if(!this.dragging){var data=this.getDragData(e);data&&!1!==this.onBeforeDrag(data,e)&&(this.dragData=data,this.proxy.stop(),this.callParent(arguments))}},onBeforeDrag:function(data,e){return!0},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){return this.proxy.ensureAttachedToBody(!0),this.callParent(arguments)},startDrag:function(x,y){this.proxy.reset(),this.proxy.hidden=!1,this.dragging=!0,this.proxy.update(""),this.onInitDrag(x,y),this.proxy.show()},onInitDrag:function(x,y){var clone=this.el.dom.cloneNode(!0);return clone.id=Ext.id(),this.proxy.update(clone),this.onStartDrag(x,y),!0},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide(),this.proxy.reset(!0),this.dragging=!1},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(e){},endDrag:function(e){this.onEndDrag(this.dragData,e)},onEndDrag:function(data,e){},autoOffset:function(x,y){this.setDelta(-12,-20)},destroy:function(){this.callParent(),Ext.destroy(this.proxy)}});Ext.define("Ext.panel.Proxy",{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:!0,constructor:function(panel,config){var me=this;me.panel=panel,me.id=me.panel.id+"-ddproxy",Ext.apply(me,config)},insertProxy:!0,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 me=this;me.ghost&&(me.proxy&&(me.proxy.remove(),delete me.proxy),me.panel.unghost(null,me.moveOnDrag),delete me.ghost)},show:function(){var panelSize,me=this;me.ghost||(panelSize=me.panel.getSize(),me.panel.el.setVisibilityMode(Ext.Element.DISPLAY),me.ghost=me.panel.ghost(),me.insertProxy&&(me.proxy=me.panel.el.insertSibling({role:"presentation",cls:Ext.baseCSSPrefix+"panel-dd-spacer"}),me.proxy.setSize(panelSize)))},repair:function(xy,callback,scope){this.hide(),Ext.callback(callback,scope||this)},moveProxy:function(parentNode,before){this.proxy&&parentNode.insertBefore(this.proxy.dom,before)}});Ext.define("Ext.panel.DD",{extend:"Ext.dd.DragSource",requires:["Ext.panel.Proxy"],constructor:function(panel,cfg){var me=this;me.panel=panel,me.dragData={panel:panel},me.panelProxy=new Ext.panel.Proxy(panel,cfg),me.proxy=me.panelProxy.proxy,me.callParent([panel.el,cfg]),me.setupEl(panel)},setupEl:function(panel){var me=this,header=panel.header,el=panel.body;header&&(me.setHandleElId(header.id),el=header.el),el?(el.setStyle("cursor","move"),me.scroll=!1):panel.on("boxready",me.setupEl,me,{single:!0})},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(x,y){this.panelProxy.show()},b4MouseDown:function(e){var x=e.getPageX(),y=e.getPageY();this.autoOffset(x,y)},onInitDrag:function(x,y){return this.onStartDrag(x,y),!0},createFrame:Ext.emptyFn,getDragEl:function(e){var ghost=this.panelProxy.ghost;if(ghost)return ghost.el.dom},endDrag:function(e){this.panelProxy.hide(),this.panel.saveState()},autoOffset:function(x,y){x-=this.startPageX,y-=this.startPageY,this.setDelta(x,y)},onInvalidDrop:function(target,e,id){var me=this;!1!==me.beforeInvalidDrop(target,e,id)&&(me.cachedTarget&&(me.cachedTarget.isNotifyTarget&&me.cachedTarget.notifyOut(me,e,me.dragData),me.cacheTarget=null),me.afterInvalidDrop&&me.afterInvalidDrop(e,id))}});Ext.define("Ext.util.Memento",function(){function captureOne(src,target,prop,prefix){src[prefix?prefix+prop:prop]=target[prop]}function removeOne(src,target,prop){delete src[prop]}function restoreOne(src,target,prop,prefix){var name=prefix?prefix+prop:prop,value=src[name];(value||src.hasOwnProperty(name))&&restoreValue(target,prop,value)}function restoreValue(target,prop,value){Ext.isDefined(value)?target[prop]=value:delete target[prop]}function doMany(doOne,src,target,props,prefix){if(src)if(Ext.isArray(props)){var p,pLen=props.length;for(p=0;p<pLen;p++)doOne(src,target,props[p],prefix)}else doOne(src,target,props,prefix)}return{data:null,target:null,constructor:function(target,props){target&&(this.target=target,props&&this.capture(props))},capture:function(props,target,prefix){var me=this;doMany(captureOne,me.data||(me.data={}),target||me.target,props,prefix)},remove:function(props){doMany(removeOne,this.data,null,props)},restore:function(props,clear,target,prefix){doMany(restoreOne,this.data,target||this.target,props,prefix),!1!==clear&&this.remove(props)},restoreAll:function(clear,target){var prop,me=this,t=target||this.target,data=me.data;for(prop in data)data.hasOwnProperty(prop)&&restoreValue(t,prop,data[prop]);!1!==clear&&delete me.data}}}());Ext.define("Ext.panel.Panel",{extend:"Ext.panel.AbstractPanel",requires:["Ext.panel.Header","Ext.fx.Anim","Ext.util.KeyMap","Ext.panel.DD","Ext.XTemplate","Ext.layout.component.Dock","Ext.util.Memento"],alias:"widget.panel",alternateClassName:"Ext.Panel",collapsedCls:"collapsed",animCollapse:Ext.enableFx,minButtonWidth:75,collapsed:!1,collapseFirst:!0,hideCollapseTool:!1,titleCollapse:void 0,floatable:!0,collapsible:void 0,closable:!1,closeAction:"destroy",placeholderCollapseHideMode:Ext.Element.VISIBILITY,preventHeader:!1,header:void 0,headerPosition:"top",frame:!1,frameHeader:!0,manageHeight:!0,constrain:!1,constrainHeader:!1,initComponent:function(){var me=this;me.addEvents("beforeclose","close","beforeexpand","beforecollapse","expand","collapse","titlechange","iconchange","iconclschange","glyphchange","float","unfloat"),me.collapsible&&me.addStateEvents(["expand","collapse"]),me.unstyled&&me.setUI("plain"),me.frame&&me.setUI(me.ui+"-framed"),me.bridgeToolbars(),me.callParent(),me.collapseDirection=me.collapseDirection||me.headerPosition||Ext.Component.DIRECTION_TOP,me.hiddenOnCollapse=new Ext.dom.CompositeElement},beforeDestroy:function(){var me=this;Ext.destroy(me.placeholder,me.ghostPanel,me.dd),me.callParent()},getFocusEl:function(){return this.el},getHeader:function(){return this.header},setTitle:function(newTitle){var me=this,oldTitle=me.title,header=me.header,reExpander=me.reExpander,placeholder=me.placeholder;me.title=newTitle,header?header.isHeader?header.setTitle(newTitle):header.title=newTitle:me.rendered&&me.updateHeader(),reExpander&&reExpander.setTitle(newTitle),placeholder&&placeholder.setTitle&&placeholder.setTitle(newTitle),me.fireEvent("titlechange",me,newTitle,oldTitle)},setIconCls:function(newIconCls){var me=this,oldIconCls=me.iconCls,header=me.header,placeholder=me.placeholder;me.iconCls=newIconCls,header?header.isHeader?header.setIconCls(newIconCls):header.iconCls=newIconCls:me.updateHeader(),placeholder&&placeholder.setIconCls&&placeholder.setIconCls(newIconCls),me.fireEvent("iconclschange",me,newIconCls,oldIconCls)},setIcon:function(newIcon){var me=this,oldIcon=me.icon,header=me.header,placeholder=me.placeholder;me.icon=newIcon,header?header.isHeader?header.setIcon(newIcon):header.icon=newIcon:me.updateHeader(),placeholder&&placeholder.setIcon&&placeholder.setIcon(newIcon),me.fireEvent("iconchange",me,newIcon,oldIcon)},setGlyph:function(newGlyph){var me=this,oldGlyph=me.glyph,header=me.header,placeholder=me.placeholder;me.glyph=newGlyph,header?header.isHeader?header.setGlyph(newGlyph):header.glyph=newGlyph:me.updateHeader(),placeholder&&placeholder.setGlyph&&placeholder.setIcon(newGlyph),me.fireEvent("glyphchange",me,newGlyph,oldGlyph)},bridgeToolbars:function(){function initToolbar(toolbar,pos,useButtonAlign){return Ext.isArray(toolbar)?toolbar={xtype:"toolbar",items:toolbar}:toolbar.xtype||(toolbar.xtype="toolbar"),toolbar.dock=pos,"left"!=pos&&"right"!=pos||(toolbar.vertical=!0),useButtonAlign&&(toolbar.layout=Ext.applyIf(toolbar.layout||{},{pack:{left:"start",center:"center"}[me.buttonAlign]||"end"})),toolbar}var fbar,fbarDefaults,me=this,docked=[],minButtonWidth=me.minButtonWidth;me.tbar&&(docked.push(initToolbar(me.tbar,"top")),me.tbar=null),me.bbar&&(docked.push(initToolbar(me.bbar,"bottom")),me.bbar=null),me.buttons&&(me.fbar=me.buttons,me.buttons=null),me.fbar&&(fbar=initToolbar(me.fbar,"bottom",!0),fbar.ui="footer",minButtonWidth&&(fbarDefaults=fbar.defaults,fbar.defaults=function(config){var cls,defaults=fbarDefaults||{},isButton=!config.xtype||config.isButton;return isButton||(cls=Ext.ClassManager.getByAlias("widget."+config.xtype))&&(isButton=cls.prototype.isButton),!isButton||"minWidth"in defaults||(defaults=Ext.apply({minWidth:minButtonWidth},defaults)),defaults}),docked.push(fbar),me.fbar=null),me.lbar&&(docked.push(initToolbar(me.lbar,"left")),me.lbar=null),me.rbar&&(docked.push(initToolbar(me.rbar,"right")),me.rbar=null),me.dockedItems?(Ext.isArray(me.dockedItems)||(me.dockedItems=[me.dockedItems]),me.dockedItems=me.dockedItems.concat(docked)):me.dockedItems=docked},isPlaceHolderCollapse:function(){return"placeholder"==this.collapseMode},onBoxReady:function(){this.callParent(),this.collapsed&&this.setHiddenDocked()},beforeRender:function(){var wasCollapsed,me=this;me.callParent(),me.initTools(),me.preventHeader||!1===me.header||me.updateHeader(),me.collapsed&&(me.isPlaceHolderCollapse()?me.hidden||(me.setHiddenState(!0),me.preventCollapseFire=!0,me.placeholderCollapse(),delete me.preventCollapseFire,wasCollapsed=me.collapsed,me.collapsed=!1):(me.beginCollapse(),me.addClsWithUI(me.collapsedCls))),wasCollapsed&&(me.collapsed=wasCollapsed)},initTools:function(){var i,tool,me=this,tools=me.tools;for(me.tools=[],i=tools&&tools.length;i;)--i,me.tools[i]=tool=tools[i],tool.toolOwner=me;!me.collapsible||me.hideCollapseTool||!1===me.header||me.preventHeader||(me.collapseDirection=me.collapseDirection||me.headerPosition||"top",me.collapseTool=me.expandTool=Ext.widget({xtype:"tool",handler:me.toggleCollapse,scope:me}),me.updateCollapseTool(),me.collapseFirst&&me.tools.unshift(me.collapseTool)),me.addTools(),me.closable&&(me.addClsWithUI("closable"),me.addTool(Ext.widget({xtype:"tool",type:"close",handler:Ext.Function.bind(me.close,me,[])}))),me.collapseTool&&!me.collapseFirst&&me.addTool(me.collapseTool)},addTools:Ext.emptyFn,updateCollapseTool:function(){var me=this,collapseTool=me.collapseTool;collapseTool&&(me.collapsed&&!me.isPlaceHolderCollapse()?collapseTool.setType("expand-"+me.getOppositeDirection(me.collapseDirection)):collapseTool.setType("collapse-"+me.collapseDirection))},close:function(){!1!==this.fireEvent("beforeclose",this)&&this.doClose()},doClose:function(){this.fireEvent("close",this),this[this.closeAction]()},updateHeader:function(force){var me=this,header=me.header,title=me.title,tools=me.tools,icon=me.icon||me.iconCls,vertical="left"===me.headerPosition||"right"===me.headerPosition;Ext.isObject(header)||!1!==header&&(force||title||icon||tools&&tools.length||me.collapsible&&!me.titleCollapse)?header&&header.isHeader?header.show():(header=me.header=Ext.widget(Ext.apply({xtype:"header",title:title,titleAlign:me.titleAlign,orientation:vertical?"vertical":"horizontal",dock:me.headerPosition||"top",textCls:me.headerTextCls,iconCls:me.iconCls,icon:me.icon,glyph:me.glyph,baseCls:me.baseCls+"-header",tools:tools,ui:me.ui,id:me.id+"_header",overCls:me.headerOverCls,indicateDrag:me.draggable,frame:(me.frame||me.alwaysFramed)&&me.frameHeader,ignoreParentFrame:me.frame||me.overlapHeader,ignoreBorderManagement:me.frame||me.ignoreHeaderBorderManagement,headerRole:me.headerRole,ownerCt:me,listeners:me.collapsible&&me.titleCollapse?{click:me.toggleCollapse,scope:me}:null},me.header)),me.addDocked(header,0)):header&&header.hide()},setUI:function(ui){var me=this;me.callParent(arguments),me.header&&me.header.rendered&&me.header.setUI(ui)},getDefaultContentTarget:function(){return this.body},getTargetEl:function(){var me=this;return me.body||me.protoBody||me.frameBody||me.el},isVisible:function(deep){var me=this;return me.collapsed&&me.placeholder?me.placeholder.isVisible(deep):me.callParent(arguments)},onHide:function(){var me=this,dd=me.dd;me.floatedFromCollapse&&me.slideOutFloatedPanel(!0),me.draggable&&dd&&dd.endDrag(),me.collapsed&&me.placeholder?me.placeholder.hide():me.callParent(arguments)},onShow:function(){var me=this;me.collapsed&&me.isPlaceHolderCollapse()?(me.setHiddenState(!0),me.placeholderCollapse()):me.callParent(arguments)},onRemoved:function(destroying){var me=this;me.placeholder&&!destroying&&me.ownerCt.remove(me.placeholder,!1),me.callParent(arguments)},addTool:function(tools){Ext.isArray(tools)||(tools=[tools]);var t,tool,me=this,header=me.header,tLen=tools.length;for(t=0;t<tLen;t++)tool=tools[t],tool.toolOwner=me,header&&header.isHeader?header.addTool(tool):me.tools.push(tool);me.updateHeader()},getOppositeDirection:function(d){var c=Ext.Component;switch(d){case c.DIRECTION_TOP:return c.DIRECTION_BOTTOM;case c.DIRECTION_RIGHT:return c.DIRECTION_LEFT;case c.DIRECTION_BOTTOM:return c.DIRECTION_TOP;case c.DIRECTION_LEFT:return c.DIRECTION_RIGHT}},getWidthAuthority:function(){return this.collapsed&&this.collapsedHorizontal()?1:this.callParent()},getHeightAuthority:function(){return this.collapsed&&this.collapsedVertical()?1:this.callParent()},collapsedHorizontal:function(){var dir=this.getCollapsed();return"left"===dir||"right"===dir},collapsedVertical:function(){var dir=this.getCollapsed();return"top"===dir||"bottom"===dir},restoreDimension:function(){var dir=this.collapseDirection;return"top"===dir||"bottom"===dir?"height":"width"},getCollapsed:function(){var me=this;return!0===me.collapsed?me.collapseDirection:me.collapsed},getState:function(){var memento,me=this,state=me.callParent();return state=me.addPropertyToState(state,"collapsed"),me.collapsed&&(memento=me.collapseMemento,memento=memento&&memento.data,me.collapsedVertical()?(state&&delete state.height,memento&&(state=me.addPropertyToState(state,"height",memento.height))):(state&&delete state.width,memento&&(state=me.addPropertyToState(state,"width",memento.width)))),state},findReExpander:function(direction){var comp,i,me=this,c=Ext.Component,dockedItems=me.dockedItems.items,dockedItemCount=dockedItems.length;if("mini"!==me.collapseMode)switch(direction){case c.DIRECTION_TOP:case c.DIRECTION_BOTTOM:for(i=0;i<dockedItemCount;i++)if(comp=dockedItems[i],!comp.hidden&&comp.isHeader&&(!comp.dock||"top"===comp.dock||"bottom"===comp.dock))return comp;break;case c.DIRECTION_LEFT:case c.DIRECTION_RIGHT:for(i=0;i<dockedItemCount;i++)if(comp=dockedItems[i],!comp.hidden&&comp.isHeader&&("left"===comp.dock||"right"===comp.dock))return comp;break;default:throw"Panel#findReExpander must be passed a valid collapseDirection"}},getReExpander:function(direction){var me=this,collapseDir=direction||me.collapseDirection,reExpander=me.reExpander||me.findReExpander(collapseDir);return me.expandDirection=me.getOppositeDirection(collapseDir),reExpander||(me.reExpander=reExpander=me.createReExpander(collapseDir,{dock:collapseDir,cls:Ext.baseCSSPrefix+"docked "+me.baseCls+"-"+me.ui+"-collapsed",isCollapsedExpander:!0}),me.dockedItems.insert(0,reExpander)),reExpander},createReExpander:function(direction,defaults){var me=this,isLeft="left"===direction,isRight="right"===direction,isVertical=isLeft||isRight,ownerCt=me.ownerCt,result=Ext.apply({hideMode:"offsets",title:me.title||"&#160;",titleAlign:me.titleAlign,orientation:isVertical?"vertical":"horizontal",textCls:me.headerTextCls,icon:me.icon,iconCls:me.iconCls,glyph:me.glyph,baseCls:me.self.prototype.baseCls+"-header",ui:me.ui,frame:me.frame&&me.frameHeader,ignoreParentFrame:me.frame||me.overlapHeader,ignoreBorderManagement:me.frame||me.ignoreHeaderBorderManagement,indicateDrag:me.draggable,collapseImmune:!0,headerRole:me.headerRole,ownerCt:ownerCt&&"placeholder"===me.collapseMode?ownerCt:me,ownerLayout:me.componentLayout,margin:me.margin},defaults);return"mini"===me.collapseMode&&(isVertical?result.width=1:result.height=1),me.hideCollapseTool||((isLeft||isRight&&me.isPlaceHolderCollapse())&&(result.titlePosition=1),result.tools=[{xtype:"tool",type:"expand-"+me.getOppositeDirection(direction),uiCls:["top"],handler:me.toggleCollapse,scope:me}]),result=new Ext.panel.Header(result),result.addClsWithUI(me.getHeaderCollapsedClasses(result)),result},getHeaderCollapsedClasses:function(header){var collapsedClasses,me=this,collapsedCls=me.collapsedCls;return collapsedClasses=[collapsedCls,collapsedCls+"-"+header.getDockName()],me.border&&(!me.frame||me.frame&&Ext.supports.CSS3BorderRadius)&&collapsedClasses.push(collapsedCls+"-border-"+header.getDockName()),collapsedClasses},beginCollapse:function(){var reExpander,me=this,lastBox=me.lastBox,rendered=me.rendered,collapseMemento=me.collapseMemento||(me.collapseMemento=new Ext.util.Memento(me)),sizeModel=me.getSizeModel(),header=me.header;collapseMemento.capture(["height","minHeight","width","minWidth"]),lastBox&&collapseMemento.capture(me.restoreDimension(),lastBox,"last."),me.collapsedVertical()?(sizeModel.width.shrinkWrap&&(me.width=rendered?me.getWidth():me.width||me.minWidth||100),delete me.height,me.minHeight=0):me.collapsedHorizontal()&&(sizeModel.height.shrinkWrap&&(me.height=rendered?me.getHeight():me.height||me.minHeight||100),delete me.width,me.minWidth=0),me.ownerCt&&me.ownerCt.getLayout().beginCollapse(me),me.isPlaceHolderCollapse()||!1===header||(header===(reExpander=me.getReExpander())?(header.collapseImmune=!0,header.getHierarchyState().collapseImmune=!0,header.addClsWithUI(me.getHeaderCollapsedClasses(header)),header.rendered&&header.updateFrame()):reExpander.el&&(reExpander.el.show(),reExpander.hidden=!1)),me.resizer&&me.resizer.disable()},beginExpand:function(){var reExpander,me=this,lastBox=me.lastBox,collapseMemento=me.collapseMemento,restoreDimension=me.restoreDimension(),header=me.header;collapseMemento&&(collapseMemento.restore(["minHeight","minWidth",restoreDimension]),lastBox&&collapseMemento.restore(restoreDimension,!0,lastBox,"last.")),me.ownerCt&&me.ownerCt.getLayout().beginExpand(me),me.isPlaceHolderCollapse()||!1===header||(header===(reExpander=me.getReExpander())?(delete header.collapseImmune,delete header.getHierarchyState().collapseImmune,header.removeClsWithUI(me.getHeaderCollapsedClasses(header)),header.rendered&&(header.expanding=!0,header.updateFrame(),delete header.expanding)):(reExpander.hidden=!0,reExpander.el.hide())),me.resizer&&me.resizer.enable()},collapse:function(direction,animate){var me=this,collapseDir=direction||me.collapseDirection,ownerCt=me.ownerCt,layout=me.ownerLayout;return me.isCollapsingOrExpanding?me:(arguments.length<2&&(animate=me.animCollapse),me.collapsed||!1===me.fireEvent("beforecollapse",me,direction,animate)?me:layout&&layout.onBeforeComponentCollapse&&!1===layout.onBeforeComponentCollapse(me)?me:ownerCt&&me.isPlaceHolderCollapse()?me.placeholderCollapse(direction,animate):(me.collapsed=collapseDir,me.beginCollapse(),me.getHierarchyState().collapsed=!0,me.fireHierarchyEvent("collapse"),me.doCollapseExpand(1,animate)))},doCollapseExpand:function(flags,animate){var me=this,originalAnimCollapse=me.animCollapse,ownerLayout=me.ownerLayout;return me.animCollapse=animate,me.isCollapsingOrExpanding=flags,animate&&me.addCls(Ext.baseCSSPrefix+"animating-size"),ownerLayout&&!animate?ownerLayout.onContentChange(me):me.updateLayout({isRoot:!0}),me.animCollapse=originalAnimCollapse,me},afterCollapse:function(animated){var me=this,ownerLayout=me.ownerLayout;me.isCollapsingOrExpanding=0,me.updateCollapseTool(),animated&&me.removeCls(Ext.baseCSSPrefix+"animating-size"),ownerLayout&&animated&&ownerLayout.onContentChange(me),me.setHiddenDocked(),me.fireEvent("collapse",me)},setHiddenDocked:function(){var item,reExpander,me=this,toHide=me.hiddenOnCollapse,items=me.getDockedItems(),len=items.length,i=0;for(!1!==me.header&&(reExpander=me.getReExpander()),toHide.add(me.body);i<len;i++)(item=items[i])&&item!==reExpander&&item.el&&toHide.add(item.el);toHide.setStyle("visibility","hidden")},restoreHiddenDocked:function(){var toShow=this.hiddenOnCollapse;toShow.setStyle("visibility",""),toShow.clear()},getPlaceholder:function(direction){var me=this,collapseDir=direction||me.collapseDirection,listeners=null,placeholder=me.placeholder,floatable=me.floatable,titleCollapse=me.titleCollapse;return placeholder||((floatable||me.collapsible&&titleCollapse)&&(listeners={click:{fn:!titleCollapse&&floatable?me.floatCollapsedPanel:me.toggleCollapse,element:"el",scope:me}}),me.placeholder=placeholder=Ext.widget(me.createReExpander(collapseDir,{id:me.id+"-placeholder",listeners:listeners}))),placeholder.placeholderFor||(placeholder.isComponent||(me.placeholder=placeholder=me.lookupComponent(placeholder)),Ext.applyIf(placeholder,{margins:me.margins,placeholderFor:me}),placeholder.addCls([Ext.baseCSSPrefix+"region-collapsed-placeholder",Ext.baseCSSPrefix+"region-collapsed-"+collapseDir+"-placeholder",me.collapsedCls])),placeholder},placeholderCollapse:function(direction,animate){var slideInDirection,me=this,ownerCt=me.ownerCt,collapseDir=direction||me.collapseDirection,floatCls=Ext.baseCSSPrefix+"border-region-slide-in",placeholder=me.getPlaceholder(collapseDir);return me.isCollapsingOrExpanding=1,me.setHiddenState(!0),me.collapsed=collapseDir,placeholder.rendered?(placeholder.el.dom.parentNode!==me.el.dom.parentNode&&me.el.dom.parentNode.insertBefore(placeholder.el.dom,me.el.dom),placeholder.hidden=!1,placeholder.el.show(),ownerCt.updateLayout()):ownerCt.insert(ownerCt.items.indexOf(me),placeholder),me.rendered?(me.el.setVisibilityMode(me.placeholderCollapseHideMode),animate?(me.el.addCls(floatCls),placeholder.el.hide(),slideInDirection=me.convertCollapseDir(collapseDir),me.el.slideOut(slideInDirection,{preserveScroll:!0,duration:Ext.Number.from(animate,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){me.el.removeCls(floatCls),placeholder.el.show().setStyle("display","none").slideIn(slideInDirection,{easing:"linear",duration:100,listeners:{afteranimate:function(){placeholder.focus(),me.isCollapsingOrExpanding=0,me.fireEvent("collapse",me)}}})}}})):(me.el.hide(),me.isCollapsingOrExpanding=0,me.fireEvent("collapse",me))):(me.isCollapsingOrExpanding=0,me.preventCollapseFire||me.fireEvent("collapse",me)),me},floatCollapsedPanel:function(){var myBox,slideDirection,me=this,placeholder=me.placeholder,ps=placeholder.getSize(),floatCls=Ext.baseCSSPrefix+"border-region-slide-in",collapsed=me.collapsed,layoutOwner=me.ownerCt||me;if(!me.isSliding){if(me.el.hasCls(floatCls))return void me.slideOutFloatedPanel();switch(me.isSliding=!0,placeholder.el.hide(),placeholder.hidden=!0,me.el.show(),me.setHiddenState(!1),me.collapsed=!1,layoutOwner.updateLayout(),myBox=me.getBox(!1,!0),placeholder.el.show(),placeholder.hidden=!1,me.el.hide(),me.setHiddenState(!0),me.collapsed=collapsed,layoutOwner.updateLayout(),me.slideOutTask=me.slideOutTask||new Ext.util.DelayedTask(me.slideOutFloatedPanel,me),placeholder.el.on("mouseleave",me.onMouseLeaveFloated,me),me.el.on("mouseleave",me.onMouseLeaveFloated,me),placeholder.el.on("mouseenter",me.onMouseEnterFloated,me),me.el.on("mouseenter",me.onMouseEnterFloated,me),me.el.addCls(floatCls),me.floated=!0,me.collapseTool&&me.collapseTool.el.hide(),me.collapsed){case"top":me.setLocalXY(myBox.x,myBox.y+ps.height-1);break;case"right":me.setLocalXY(myBox.x-ps.width+1,myBox.y);break;case"bottom":me.setLocalXY(myBox.x,myBox.y-ps.height+1);break;case"left":me.setLocalXY(myBox.x+ps.width-1,myBox.y)}slideDirection=me.convertCollapseDir(me.collapsed),me.floatedFromCollapse=me.collapsed,me.collapsed=!1,me.setHiddenState(!1),me.el.slideIn(slideDirection,{preserveScroll:!0,duration:Ext.Number.from(me.animCollapse,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){me.isSliding=!1,me.fireEvent("float",me)}}})}},onMouseLeaveFloated:function(e){this.slideOutTask.delay(500)},onMouseEnterFloated:function(e){this.slideOutTask.cancel()},isLayoutRoot:function(){return!!this.floatedFromCollapse||this.callParent()},slideOutFloatedPanel:function(preventAnimate){var collapseDirection,me=this,compEl=me.el;me.isSliding||me.isDestroyed||(me.isSliding=!0,me.floated=!1,me.slideOutFloatedPanelBegin(),"string"==typeof me.collapsed&&(collapseDirection=me.convertCollapseDir(me.collapsed)),compEl.slideOut(collapseDirection,{preserveScroll:!0,duration:Ext.Number.from(me.animCollapse,Ext.fx.Anim.prototype.duration),autoEnd:!0===preventAnimate,listeners:{afteranimate:function(){me.slideOutFloatedPanelEnd(),me.el.removeCls(Ext.baseCSSPrefix+"border-region-slide-in")}}}))},slideOutFloatedPanelBegin:function(){var me=this,placeholderEl=me.placeholder.el,el=me.el;me.collapsed=me.floatedFromCollapse,me.setHiddenState(!0),me.floatedFromCollapse=null,placeholderEl.un("mouseleave",me.onMouseLeaveFloated,me),el.un("mouseleave",me.onMouseLeaveFloated,me),placeholderEl.un("mouseenter",me.onMouseEnterFloated,me),el.un("mouseenter",me.onMouseEnterFloated,me)},slideOutFloatedPanelEnd:function(suppressEvents){var me=this;me.collapseTool&&me.collapseTool.el.show(),me.slideOutTask.cancel(),me.isSliding=!1,suppressEvents||me.fireEvent("unfloat",me)},expand:function(animate){var me=this,layout=me.ownerLayout;return me.isCollapsingOrExpanding?me:(arguments.length||(animate=me.animCollapse),me.collapsed||me.floatedFromCollapse?!1===me.fireEvent("beforeexpand",me,animate)?me:layout&&layout.onBeforeComponentExpand&&!1===layout.onBeforeComponentExpand(me)?me:(delete me.getHierarchyState().collapsed,me.isPlaceHolderCollapse()?me.placeholderExpand(animate):(me.restoreHiddenDocked(),me.beginExpand(),me.collapsed=!1,me.doCollapseExpand(2,animate))):me)},placeholderExpand:function(animate){var finalPos,floatedPos,me=this,collapseDir=me.collapsed,floatCls=Ext.baseCSSPrefix+"border-region-slide-in",center=me.ownerLayout?me.ownerLayout.centerRegion:null;return Ext.AbstractComponent.layoutSuspendCount&&(animate=!1),me.floatedFromCollapse&&(floatedPos=me.getPosition(!0),me.slideOutFloatedPanelBegin(),me.slideOutFloatedPanelEnd(),me.floated=!1),animate?(Ext.suspendLayouts(),me.placeholder.hide(),me.el.show(),me.collapsed=!1,me.setHiddenState(!1),center&&!floatedPos&&(center.hidden=!0),Ext.resumeLayouts(!0),center.hidden=!1,me.el.addCls(floatCls),me.isCollapsingOrExpanding=2,floatedPos?(finalPos=me.getXY(),me.setLocalXY(floatedPos[0],floatedPos[1]),me.setXY([finalPos[0],finalPos[1]],{duration:Ext.Number.from(animate,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){me.el.removeCls(floatCls),me.isCollapsingOrExpanding=0,me.fireEvent("expand",me)}}})):(me.el.hide(),me.placeholder.el.show(),me.placeholder.hidden=!1,me.setHiddenState(!1),me.el.slideIn(me.convertCollapseDir(collapseDir),{preserveScroll:!0,duration:Ext.Number.from(animate,Ext.fx.Anim.prototype.duration),listeners:{afteranimate:function(){me.el.removeCls(floatCls),me.placeholder.hide(),me.updateLayout(),me.isCollapsingOrExpanding=0,me.fireEvent("expand",me)}}}))):(me.floated=me.collapsed=!1,me.el.removeCls(floatCls),Ext.suspendLayouts(),me.placeholder.hide(),me.show(),Ext.resumeLayouts(!0),me.fireEvent("expand",me)),me},afterExpand:function(animated){var me=this,ownerLayout=me.ownerLayout;me.isCollapsingOrExpanding=0,me.updateCollapseTool(),animated&&me.removeCls(Ext.baseCSSPrefix+"animating-size"),ownerLayout&&animated&&ownerLayout.onContentChange(me),me.fireEvent("expand",me),me.fireHierarchyEvent("expand")},setBorder:function(border,targetEl){if(!targetEl){var me=this,header=me.header;border=border?!0===border?"1px":me.unitizeBox(border):0,header&&(header.isHeader?header.setBorder(border):header.border=border),me.rendered&&!1!==me.bodyBorder&&me.body.setStyle("border-width",border),me.updateLayout(),me.border=border}},toggleCollapse:function(){return this.collapsed||this.floatedFromCollapse?this.expand():this.collapse()},getKeyMap:function(){return this.keyMap||(this.keyMap=new Ext.util.KeyMap(Ext.apply({target:this.el},this.keys)))},initDraggable:function(){var me=this;me.simpleDrag?me.initSimpleDraggable():me.dd=new Ext.panel.DD(me,Ext.isBoolean(me.draggable)?null:me.draggable)},initSimpleDraggable:function(){var ddConfig,dd,me=this;me.header||me.updateHeader(!0),me.header&&(ddConfig=Ext.applyIf({el:me.el,delegate:"#"+Ext.escapeId(me.header.id)},me.draggable),(me.constrain||me.constrainHeader)&&(ddConfig.constrain=me.constrain,ddConfig.constrainDelegate=me.constrainHeader,ddConfig.constrainTo=me.constrainTo||me.container),dd=me.dd=new Ext.util.ComponentDragger(me,ddConfig),me.relayEvents(dd,["dragstart","drag","dragend"]),me.maximized&&dd.disable())},ghostTools:function(){var t,tLen,tool,tools=[],header=this.header,headerTools=header?header.query("tool[hidden=false]"):[];if(headerTools.length)for(t=0,tLen=headerTools.length;t<tLen;t++)tool=headerTools[t],tools.push({type:tool.type});else tools=[{type:"placeholder"}];return tools},ghost:function(cls){var ghostHeader,tools,i,me=this,ghostPanel=me.ghostPanel,box=me.getBox(),header=me.header;if(ghostPanel?ghostPanel.el.show():me.ghostPanel=ghostPanel=Ext.widget(me.createGhost(cls)),ghostPanel.setHiddenState(!1),ghostPanel.floatParent=me.floatParent,ghostPanel.toFront(),header&&!me.preventHeader){for(ghostHeader=ghostPanel.header,ghostHeader.suspendLayouts(),tools=ghostHeader.query("tool"),i=tools.length;i--;)ghostHeader.remove(tools[i]);ghostPanel.addTool(me.ghostTools()),ghostPanel.setTitle(me.title),ghostHeader.setTitlePosition(header.titlePosition),me.iconCls?ghostPanel.setIconCls(me.iconCls):me.icon?ghostPanel.setIcon(me.icon):me.glyph&&ghostPanel.setGlyph(me.glyph),ghostHeader.addCls(Ext.baseCSSPrefix+"header-ghost"),ghostHeader.resumeLayouts()}return ghostPanel.setPagePosition(box.x,box.y),ghostPanel.setSize(box.width,box.height),me.el.hide(),ghostPanel},createGhost:function(cls){var me=this,header=me.header,frame=me.frame&&!me.alwaysFramed;return{xtype:"panel",hidden:!1,header:header?{titleAlign:header.titleAlign}:null,ui:frame?me.ui.replace(/-framed$/,""):me.ui,id:me.id+"-ghost",renderTo:Ext.getBody(),resizable:!1,floating:{shadow:!1},frame:frame,alwaysFramed:me.alwaysFramed,overlapHeader:me.overlapHeader,headerPosition:me.headerPosition,baseCls:me.baseCls,cls:me.baseCls+"-ghost "+(cls||"")}},unghost:function(show,matchPosition){var me=this,ghostPanel=me.ghostPanel;ghostPanel&&(!1!==show&&(me.el.show(),!1!==matchPosition&&(me.setPagePosition(ghostPanel.getXY()),"offsets"==me.hideMode&&delete me.el.hideModeStyles),Ext.defer(me.focus,10,me)),ghostPanel.el.hide(),ghostPanel.setHiddenState(!0))},beginDrag:function(){this.floatingDescendants&&this.floatingDescendants.hide()},endDrag:function(){this.floatingDescendants&&this.floatingDescendants.show()},initResizable:function(){this.callParent(arguments),this.collapsed&&this.resizer.disable()},convertCollapseDir:function(collapseDir){return collapseDir.substr(0,1)}},function(){this.prototype.animCollapse=Ext.enableFx});Ext.define("Ext.tip.Tip",{extend:"Ext.panel.Panel",alternateClassName:"Ext.Tip",minWidth:40,maxWidth:500,shadow:"sides",defaultAlign:"tl-bl?",constrainPosition:!0,autoRender:!0,hidden:!0,baseCls:Ext.baseCSSPrefix+"tip",floating:{shadow:!0,shim:!0},focusOnToFront:!1,closeAction:"hide",alwaysFramed:!0,frameHeader:!1,initComponent:function(){var me=this;me.floating=Ext.apply({},{shadow:me.shadow,constrain:me.constrainPosition},me.self.prototype.floating),me.callParent(arguments),me.constrain=me.constrain||me.constrainPosition},showAt:function(xy){var me=this;this.callParent(arguments),me.isVisible()&&(me.setPagePosition(xy[0],xy[1]),(me.constrainPosition||me.constrain)&&me.doConstrain(),me.toFront(!0))},initDraggable:function(){var me=this;me.draggable={el:me.getDragEl(),delegate:me.header.el,constrain:me,constrainTo:me.el.dom.parentNode},Ext.Component.prototype.initDraggable.call(me)},ghost:void 0,unghost:void 0});Ext.define("Ext.tip.ToolTip",{extend:"Ext.tip.Tip",alias:"widget.tooltip",alternateClassName:"Ext.ToolTip",autoHide:!0,showDelay:500,hideDelay:200,dismissDelay:5e3,trackMouse:!1,anchorToTarget:!0,anchorOffset:0,targetCounter:0,quickShowInterval:250,ariaRole:"tooltip",initComponent:function(){var me=this;me.callParent(arguments),me.lastActive=new Date,me.setTarget(me.target),me.origAnchor=me.anchor},onRender:function(ct,position){var me=this;me.callParent(arguments),me.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+me.getAnchorPosition(),me.sticky&&me.el.dom.setAttribute("data-sticky",!0),me.anchorEl=me.el.createChild({role:"presentation",cls:Ext.baseCSSPrefix+"tip-anchor "+me.anchorCls})},setTarget:function(target){var tg,me=this,t=Ext.get(target);me.target&&(tg=Ext.get(me.target),me.mun(tg,"mouseover",me.onTargetOver,me),me.mun(tg,"mouseout",me.onTargetOut,me),me.mun(tg,"mousemove",me.onMouseMove,me)),me.target=t,t&&me.mon(t,{freezeEvent:!0,mouseover:me.onTargetOver,mouseout:me.onTargetOut,mousemove:me.onMouseMove,scope:me}),me.anchor&&(me.anchorTarget=me.target)},onMouseMove:function(e){var xy,me=this,t=me.delegate?e.getTarget(me.delegate):me.triggerElement=!0;t?(me.targetXY=e.getXY(),t===me.triggerElement?!me.hidden&&me.trackMouse&&(xy=me.getTargetXY(),me.constrainPosition&&(xy=me.el.adjustForConstraints(xy,me.el.parent())),me.setPagePosition(xy)):(me.hide(),me.lastActive=new Date(0),me.onTargetOver(e))):!me.closable&&me.isVisible()&&!1!==me.autoHide&&me.hide()},getTargetXY:function(){var mouseOffset,offsets,xy,dw,dh,de,bd,scrollX,scrollY,axy,sz,constrainPosition,me=this;if(me.delegate&&(me.anchorTarget=me.triggerElement),me.anchor){if(me.targetCounter++,offsets=me.getOffsets(),xy=me.anchorToTarget&&!me.trackMouse?me.getAlignToXY(me.anchorTarget,me.getAnchorAlign()):me.targetXY,dw=Ext.Element.getViewWidth()-5,dh=Ext.Element.getViewHeight()-5,de=document.documentElement,bd=document.body,scrollX=(de.scrollLeft||bd.scrollLeft||0)+5,scrollY=(de.scrollTop||bd.scrollTop||0)+5,axy=[xy[0]+offsets[0],xy[1]+offsets[1]],sz=me.getSize(),constrainPosition=me.constrainPosition,me.anchorEl.removeCls(me.anchorCls),me.targetCounter<2&&constrainPosition){if(axy[0]<scrollX)return me.anchorToTarget&&(me.defaultAlign="l-r",me.mouseOffset&&(me.mouseOffset[0]*=-1)),me.anchor="left",me.getTargetXY();if(axy[0]+sz.width>dw)return me.anchorToTarget&&(me.defaultAlign="r-l",me.mouseOffset&&(me.mouseOffset[0]*=-1)),me.anchor="right",me.getTargetXY();if(axy[1]<scrollY)return me.anchorToTarget&&(me.defaultAlign="t-b",me.mouseOffset&&(me.mouseOffset[1]*=-1)),me.anchor="top",me.getTargetXY();if(axy[1]+sz.height>dh)return me.anchorToTarget&&(me.defaultAlign="b-t",me.mouseOffset&&(me.mouseOffset[1]*=-1)),me.anchor="bottom",me.getTargetXY()}return me.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+me.getAnchorPosition(),me.anchorEl.addCls(me.anchorCls),me.targetCounter=0,axy}return mouseOffset=me.getMouseOffset(),me.targetXY?[me.targetXY[0]+mouseOffset[0],me.targetXY[1]+mouseOffset[1]]:mouseOffset},getMouseOffset:function(){var me=this,offset=me.anchor?[0,0]:[15,18];return me.mouseOffset&&(offset[0]+=me.mouseOffset[0],offset[1]+=me.mouseOffset[1]),offset},getAnchorPosition:function(){var m,me=this;switch(me.anchor?me.tipAnchor=me.anchor.charAt(0):(m=me.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/),m||Ext.Error.raise('The AnchorTip.defaultAlign value "'+me.defaultAlign+'" is invalid.'),me.tipAnchor=m[1].charAt(0)),me.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 mouseOffset,offsets,me=this,ap=me.getAnchorPosition().charAt(0);if(me.anchorToTarget&&!me.trackMouse)switch(ap){case"t":offsets=[0,9];break;case"b":offsets=[0,-13];break;case"r":offsets=[-13,0];break;default:offsets=[9,0]}else switch(ap){case"t":offsets=[-15-me.anchorOffset,30];break;case"b":offsets=[-19-me.anchorOffset,-13-me.el.dom.offsetHeight];break;case"r":offsets=[-15-me.el.dom.offsetWidth,-13-me.anchorOffset];break;default:offsets=[25,-13-me.anchorOffset]}return mouseOffset=me.getMouseOffset(),offsets[0]+=mouseOffset[0],offsets[1]+=mouseOffset[1],offsets},onTargetOver:function(e){var t,me=this,delegate=me.delegate;me.disabled||e.within(me.target.dom,!0)||(t=!delegate||e.getTarget(delegate))&&(me.triggerElement=t,me.triggerEvent=e,me.clearTimer("hide"),me.targetXY=e.getXY(),me.delayShow())},delayShow:function(){var me=this;me.hidden&&!me.showTimer?Ext.Date.getElapsed(me.lastActive)<me.quickShowInterval?me.show():me.showTimer=Ext.defer(me.showFromDelay,me.showDelay,me):me.hidden||!1===me.autoHide||me.show()},showFromDelay:function(){this.fromDelayShow=!0,this.show(),delete this.fromDelayShow},onShowVeto:function(){this.callParent(),delete this.triggerElement,this.clearTimer("show")},onTargetOut:function(e){var me=this,triggerEl=me.triggerElement,target=!0===triggerEl?me.target:triggerEl;me.disabled||!triggerEl||e.within(target,!0)||(me.showTimer&&(me.clearTimer("show"),me.triggerElement=null),!1!==me.autoHide&&me.delayHide())},delayHide:function(){var me=this;me.hidden||me.hideTimer||(me.hideTimer=Ext.defer(me.hide,me.hideDelay,me))},hide:function(){var me=this;me.clearTimer("dismiss"),me.lastActive=new Date,me.anchorEl&&me.anchorEl.hide(),me.callParent(arguments),delete me.triggerElement},show:function(){var me=this;this.callParent(),!1===this.hidden&&(me.setPagePosition(-1e4,-1e4),me.anchor&&(me.anchor=me.origAnchor),me.calledFromShowAt||me.showAt(me.getTargetXY()),me.anchor?(me.syncAnchor(),me.anchorEl.show()):me.anchorEl.hide())},showAt:function(xy){var me=this;me.lastActive=new Date,me.clearTimers(),me.calledFromShowAt=!0,me.isVisible()||this.callParent(arguments),me.isVisible()&&(me.setPagePosition(xy[0],xy[1]),(me.constrainPosition||me.constrain)&&me.doConstrain(),me.toFront(!0),me.el.sync(!0),me.dismissDelay&&!1!==me.autoHide&&(me.dismissTimer=Ext.defer(me.hide,me.dismissDelay,me)),me.anchor?(me.syncAnchor(),me.anchorEl.isVisible()||me.anchorEl.show()):me.anchorEl.hide()),delete me.calledFromShowAt},syncAnchor:function(){var anchorPos,targetPos,offset,me=this;switch(me.tipAnchor.charAt(0)){case"t":anchorPos="b",targetPos="tl",offset=[20+me.anchorOffset,1];break;case"r":anchorPos="l",targetPos="tr",offset=[-1,12+me.anchorOffset];break;case"b":anchorPos="t",targetPos="bl",offset=[20+me.anchorOffset,-1];break;default:anchorPos="r",targetPos="tl",offset=[1,12+me.anchorOffset]}me.anchorEl.alignTo(me.el,anchorPos+"-"+targetPos,offset),me.anchorEl.setStyle("z-index",parseInt(me.el.getZIndex(),10)||1).setVisibilityMode(Ext.Element.DISPLAY)},setPagePosition:function(x,y){var me=this;me.callParent(arguments),me.anchor&&me.syncAnchor()},_timerNames:{},clearTimer:function(name){var me=this,names=me._timerNames,propName=names[name]||(names[name]=name+"Timer"),timer=me[propName];timer&&(clearTimeout(timer),me[propName]=null)},clearTimers:function(){var me=this;me.clearTimer("show"),me.clearTimer("dismiss"),me.clearTimer("hide")},onShow:function(){var me=this;me.callParent(),me.mon(Ext.getDoc(),"mousedown",me.onDocMouseDown,me)},onHide:function(){var me=this;me.callParent(),me.mun(Ext.getDoc(),"mousedown",me.onDocMouseDown,me)},onDocMouseDown:function(e){var me=this;me.closable||e.within(me.el.dom)||(me.disable(),Ext.defer(me.doEnable,100,me))},doEnable:function(){this.isDestroyed||this.enable()},onDisable:function(){this.callParent(),this.clearTimers(),this.hide()},beforeDestroy:function(){var me=this;me.clearTimers(),Ext.destroy(me.anchorEl),delete me.anchorEl,delete me.target,delete me.anchorTarget,delete me.triggerElement,me.callParent()},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this),this.callParent()}});Ext.define("Ext.tip.QuickTip",{extend:"Ext.tip.ToolTip",alias:"widget.quicktip",alternateClassName:"Ext.QuickTip",interceptTitles:!1,title:"&#160;",tagConfig:{namespace:"data-",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor",showDelay:"qshowDelay"},shrinkWrapDock:!0,initComponent:function(){var me=this;me.target=me.target||Ext.getDoc(),me.targets=me.targets||{},me.callParent()},register:function(config){for(var target,j,targetLen,configs=Ext.isArray(config)?config:arguments,i=0,len=configs.length;i<len;i++)if(config=configs[i],target=config.target)if(Ext.isArray(target))for(j=0,targetLen=target.length;j<targetLen;j++)this.targets[Ext.id(target[j])]=config;else this.targets[Ext.id(target)]=config},unregister:function(el){delete this.targets[Ext.id(el)]},cancelShow:function(el){var me=this,activeTarget=me.activeTarget;el=Ext.get(el).dom,me.isVisible()?activeTarget&&activeTarget.el==el&&me.hide():activeTarget&&activeTarget.el==el&&me.clearTimer("show")},getTipCfg:function(e){var cfg,t=e.getTarget(),titleText=t.title;return this.interceptTitles&&titleText&&Ext.isString(titleText)?(t.qtip=titleText,t.removeAttribute("title"),e.preventDefault(),{text:titleText}):(cfg=this.tagConfig,(t=e.getTarget("["+cfg.namespace+cfg.attribute+"]"))?{target:t,text:t.getAttribute(cfg.namespace+cfg.attribute)}:void 0)},onTargetOver:function(e){var hasShowDelay,delay,elTarget,cfg,ns,tipConfig,autoHide,targets,targetEl,value,key,me=this,target=e.getTarget(me.delegate);if(!me.disabled&&(me.targetXY=e.getXY(),target&&1===target.nodeType&&target!=document.documentElement&&target!=document.body)){if(me.activeTarget&&(target==me.activeTarget.el||Ext.fly(me.activeTarget.el).contains(target)))return void(me.targetTextEmpty()?(me.onShowVeto(),delete me.activeTarget):(me.clearTimer("hide"),me.show()));if(target){targets=me.targets;for(key in targets)if(targets.hasOwnProperty(key)&&(value=targets[key],(targetEl=Ext.fly(value.target))&&(targetEl.dom===target||targetEl.contains(target)))){elTarget=targetEl.dom;break}if(elTarget)return me.activeTarget=me.targets[elTarget.id],me.activeTarget.el=target,me.anchor=me.activeTarget.anchor,me.anchor&&(me.anchorTarget=target),hasShowDelay=parseInt(me.activeTarget.showDelay,10),hasShowDelay&&(delay=me.showDelay,me.showDelay=hasShowDelay),me.delayShow(),void(hasShowDelay&&(me.showDelay=delay))}elTarget=Ext.fly(target,"_quicktip-target"),cfg=me.tagConfig,ns=cfg.namespace,tipConfig=me.getTipCfg(e),tipConfig&&(tipConfig.target&&(target=tipConfig.target,elTarget=Ext.fly(target,"_quicktip-target")),autoHide=elTarget.getAttribute(ns+cfg.hide),me.activeTarget={el:target,text:tipConfig.text,width:+elTarget.getAttribute(ns+cfg.width)||null,autoHide:"user"!=autoHide&&"false"!==autoHide,title:elTarget.getAttribute(ns+cfg.title),cls:elTarget.getAttribute(ns+cfg.cls),align:elTarget.getAttribute(ns+cfg.align),showDelay:parseInt(elTarget.getAttribute(ns+cfg.showDelay),10)},me.anchor=elTarget.getAttribute(ns+cfg.anchor),me.anchor&&(me.anchorTarget=target),hasShowDelay=parseInt(me.activeTarget.showDelay,10),hasShowDelay&&(delay=me.showDelay,me.showDelay=hasShowDelay),me.delayShow(),hasShowDelay&&(me.showDelay=delay))}},onTargetOut:function(e){var hasHideDelay,delay,me=this,active=me.activeTarget;active&&e.within(me.activeTarget.el)&&!me.getTipCfg(e)||(me.clearTimer("show"),delete me.activeTarget,!1!==me.autoHide&&(hasHideDelay=active&&parseInt(active.hideDelay,10),hasHideDelay&&(delay=me.hideDelay,me.hideDelay=hasHideDelay),me.delayHide(),hasHideDelay&&(me.hideDelay=delay)))},targetTextEmpty:function(){var el,me=this,target=me.activeTarget,cfg=me.tagConfig;return!(!target||!(el=target.el)||el.getAttribute(cfg.namespace+cfg.attribute)||me.targets[Ext.id(target.target)])},show:function(){var me=this;if(me.fromDelayShow&&me.targetTextEmpty())return me.onShowVeto(),void delete me.activeTarget;me.callParent(arguments)},showAt:function(xy){var dismiss,cls,me=this,target=me.activeTarget,header=me.header;target&&(me.rendered||(me.render(Ext.getBody()),me.activeTarget=target),me.suspendLayouts(),target.title?(me.setTitle(target.title),header.show()):header&&header.hide(),me.update(target.text),me.autoHide=target.autoHide,dismiss=target.dismissDelay,me.dismissDelay=Ext.isNumber(dismiss)?dismiss:me.dismissDelay,target.mouseOffset&&(xy[0]+=target.mouseOffset[0],xy[1]+=target.mouseOffset[1]),cls=me.lastCls,cls&&(me.removeCls(cls),delete me.lastCls),cls=target.cls,cls&&(me.addCls(cls),me.lastCls=cls),me.setWidth(target.width),me.anchor?me.constrainPosition=!1:target.align?(xy=me.getAlignToXY(target.el,target.align),me.constrainPosition=!1):me.constrainPosition=!0,me.resumeLayouts(!0)),me.callParent([xy])},hide:function(){delete this.activeTarget,this.callParent()}});Ext.define("Ext.tip.QuickTipManager",{requires:["Ext.tip.QuickTip"],singleton:!0,alternateClassName:"Ext.QuickTips",disabled:!1,init:function(autoRender,config){var me=this;if(!me.tip){if(!Ext.isReady)return Ext.onReady(function(){Ext.tip.QuickTipManager.init(autoRender,config)}),!1;var tipConfig=Ext.apply({sticky:!0,disabled:me.disabled,id:"ext-quicktips-tip"},config),className=tipConfig.className,xtype=tipConfig.xtype;className?delete tipConfig.className:xtype&&(className="widget."+xtype,delete tipConfig.xtype),!1!==autoRender&&(tipConfig.renderTo=document.body,"BODY"!=tipConfig.renderTo.tagName.toUpperCase()&&Ext.Error.raise({sourceClass:"Ext.tip.QuickTipManager",sourceMethod:"init",msg:"Cannot init QuickTipManager: no document body"})),me.tip=Ext.create(className||"Ext.tip.QuickTip",tipConfig),Ext.quickTipsActive=!0}},destroy:function(){Ext.destroy(this.tip),this.tip=void 0},ddDisable:function(){var me=this,tip=me.tip;tip&&!me.disabled&&tip.disable()},ddEnable:function(){var me=this,tip=me.tip;tip&&!me.disabled&&tip.enable()},enable:function(){var me=this,tip=me.tip;tip&&tip.enable(),me.disabled=!1},disable:function(){var me=this,tip=me.tip;tip&&tip.disable(),me.disabled=!0},isEnabled:function(){var tip=this.tip;return void 0!==tip&&!tip.disabled},getQuickTip:function(){return this.tip},register:function(){var tip=this.tip;tip.register.apply(tip,arguments)},unregister:function(){var tip=this.tip;tip.unregister.apply(tip,arguments)},tips:function(){var tip=this.tip;tip.register.apply(tip,arguments)}});Ext.define("Ext.app.Application",{extend:"Ext.app.Controller",requires:["Ext.tip.QuickTipManager"],scope:void 0,enableQuickTips:!0,appFolder:"app",appProperty:"app",namespaces:[],autoCreateViewport:!1,paths:null,onClassExtended:function(cls,data,hooks){var onBeforeClassCreated,paths,namespace,ns,appFolder,Controller=Ext.app.Controller,proto=cls.prototype,requires=[];if(namespace=data.name||cls.superclass.name,appFolder=data.appFolder||cls.superclass.appFolder,namespace&&(data.$namespace=namespace,Ext.app.addNamespaces(namespace)),data.namespaces&&Ext.app.addNamespaces(data.namespaces),data["paths processed"])delete data["paths processed"];else if(namespace&&appFolder&&Ext.Loader.setPath(namespace,appFolder),paths=data.paths)for(ns in paths)paths.hasOwnProperty(ns)&&Ext.Loader.setPath(ns,paths[ns]);data.autoCreateViewport&&(namespace||Ext.Error.raise("[Ext.app.Application] Can't resolve namespace for "+data.$className+", did you forget to specify 'name' property?"),Controller.processDependencies(proto,requires,namespace,"view",["Viewport"])),requires.length&&(onBeforeClassCreated=hooks.onBeforeCreated,hooks.onBeforeCreated=function(cls,data){var args=Ext.Array.clone(arguments);Ext.require(requires,function(){return onBeforeClassCreated.apply(this,args)})})},constructor:function(config){var me=this;Ext.isEmpty(me.name)&&Ext.Error.raise("[Ext.app.Application] Name property is required"),me.callParent(arguments),me.doInit(me),me.initNamespace(),me.initControllers(),me.onBeforeLaunch(),me.finishInitControllers()},initNamespace:function(){var ns,me=this,appProperty=me.appProperty;(ns=Ext.namespace(me.name))&&(ns.getApplication=function(){return me},appProperty&&(ns[appProperty]?ns[appProperty]!==me&&Ext.log.warn("An existing reference is being overwritten for "+name+"."+appProperty+". See the appProperty config."):ns[appProperty]=me))},initControllers:function(){var me=this,controllers=Ext.Array.from(me.controllers);me.controllers=new Ext.util.MixedCollection;for(var i=0,ln=controllers.length;i<ln;i++)me.getController(controllers[i])},finishInitControllers:function(){var controllers,i,l,me=this;for(controllers=me.controllers.getRange(),i=0,l=controllers.length;i<l;i++)controllers[i].finishInit(me)},launch:Ext.emptyFn,onBeforeLaunch:function(){var controllers,c,cLen,controller,me=this;for(me.enableQuickTips&&me.initQuickTips(),me.autoCreateViewport&&me.initViewport(),me.launch.call(me.scope||me),me.launched=!0,me.fireEvent("launch",me),controllers=me.controllers.items,cLen=controllers.length,c=0;c<cLen;c++)controller=controllers[c],controller.onLaunch(me)},getModuleClassName:function(name,kind){return Ext.app.Controller.getFullName(name,kind,this.name).absoluteName},initQuickTips:function(){Ext.tip.QuickTipManager.init()},initViewport:function(){var viewport=this.getView("Viewport");viewport&&viewport.create()},getController:function(name){var className,controller,me=this,controllers=me.controllers;return controller=controllers.get(name),controller||(className=me.getModuleClassName(name,"controller"),controller=Ext.create(className,{application:me,id:name}),controllers.add(controller),me._initialized&&controller.doInit(me)),controller},getApplication:function(){return this}});Ext.define("Ext.app.domain.Controller",{extend:"Ext.app.EventDomain",singleton:!0,requires:["Ext.app.Controller"],type:"controller",idProperty:"id",constructor:function(){var me=this;me.callParent(),me.monitor(Ext.app.Controller)}});Ext.define("Ext.direct.Provider",{alias:"direct.provider",mixins:{observable:"Ext.util.Observable"},isProvider:!0,constructor:function(config){var me=this;Ext.apply(me,config),Ext.applyIf(me,{id:Ext.id(null,"provider-")}),me.addEvents("connect","disconnect","data","exception"),me.mixins.observable.constructor.call(me,config)},isConnected:function(){return!1},connect:Ext.emptyFn,disconnect:Ext.emptyFn});Ext.define("Ext.app.domain.Direct",{extend:"Ext.app.EventDomain",singleton:!0,requires:["Ext.direct.Provider"],type:"direct",idProperty:"id",constructor:function(){var me=this;me.callParent(),me.monitor(Ext.direct.Provider)}});Ext.define("Ext.button.Split",{alias:"widget.splitbutton",extend:"Ext.button.Button",alternateClassName:"Ext.SplitButton",arrowCls:"split",split:!0,initComponent:function(){this.callParent(),this.addEvents("arrowclick")},setArrowHandler:function(handler,scope){this.arrowHandler=handler,this.scope=scope},onClick:function(e){var me=this;me.doPreventDefault(e),me.disabled||(me.overMenuTrigger?(e.preventDefault(),me.maybeShowMenu(),me.fireEvent("arrowclick",me,e),me.arrowHandler&&me.arrowHandler.call(me.scope||me,me,e)):(me.doToggle(),me.fireHandler(e)))}});Ext.define("Ext.chart.Callout",{constructor:function(config){config.callouts&&(config.callouts.styles=Ext.applyIf(config.callouts.styles||{},{color:"#000",font:"11px Helvetica, sans-serif"}),this.callouts=Ext.apply(this.callouts||{},config.callouts),this.calloutsArray=[])},renderCallouts:function(){if(this.callouts){var i,count,j,p,item,label,storeItem,display,me=this,items=me.items,animate=me.chart.animate,config=me.callouts,styles=config.styles,group=me.calloutsArray,store=me.chart.getChartStore(),len=store.getCount(),ratio=items.length/len,previouslyPlacedCallouts=[];for(i=0,count=0;i<len;i++)for(j=0;j<ratio;j++)if(item=items[count],label=group[count],storeItem=store.getAt(i),(display=!config.filter||config.filter(storeItem))||label){label||(group[count]=label=me.onCreateCallout(storeItem,item,i,display,j,count));for(p in label)label[p]&&label[p].setAttributes&&label[p].setAttributes(styles,!0);if(!display)for(p in label)label[p]&&(label[p].setAttributes?label[p].setAttributes({hidden:!0},!0):label[p].setVisible&&label[p].setVisible(!1));config&&config.renderer&&config.renderer(label,storeItem),me.onPlaceCallout(label,storeItem,item,i,display,animate,j,count,previouslyPlacedCallouts),previouslyPlacedCallouts.push(label),count++}else count++;this.hideCallouts(count)}},onCreateCallout:function(storeItem,item,i,display){var me=this,config=(me.calloutsGroup,me.callouts),styles=config?config.styles:void 0,width=styles?styles.width:0,height=styles?styles.height:0,chart=me.chart,surface=chart.surface,calloutObj={lines:!1};return calloutObj.lines=surface.add(Ext.apply({},{type:"path",path:"M0,0",stroke:me.getLegendColor()||"#555"},styles)),config.items&&(calloutObj.panel=new Ext.Panel({style:"position: absolute;",width:width,height:height,items:config.items,renderTo:chart.el})),calloutObj},hideCallouts:function(index){for(var co,p,calloutsArray=this.calloutsArray,len=calloutsArray.length;len-- >index;){co=calloutsArray[len];for(p in co)co[p]&&co[p].hide(!0)}}});Ext.define("Ext.draw.CompositeSprite",{extend:"Ext.util.MixedCollection",mixins:{animate:"Ext.util.Animate"},autoDestroy:!1,isCompositeSprite:!0,constructor:function(config){var me=this;config=config||{},Ext.apply(me,config),me.addEvents("mousedown","mouseup","mouseover","mouseout","click"),me.id=Ext.id(null,"ext-sprite-group-"),me.callParent()},onClick:function(e){this.fireEvent("click",e)},onMouseUp:function(e){this.fireEvent("mouseup",e)},onMouseDown:function(e){this.fireEvent("mousedown",e)},onMouseOver:function(e){this.fireEvent("mouseover",e)},onMouseOut:function(e){this.fireEvent("mouseout",e)},attachEvents:function(o){var me=this;o.on({scope:me,mousedown:me.onMouseDown,mouseup:me.onMouseUp,mouseover:me.onMouseOver,mouseout:me.onMouseOut,click:me.onClick})},add:function(key,o){var result=this.callParent(arguments);return this.attachEvents(result),result},insert:function(index,key,o){return this.callParent(arguments)},remove:function(o){var me=this;return o.un({scope:me,mousedown:me.onMouseDown,mouseup:me.onMouseUp,mouseover:me.onMouseOver,mouseout:me.onMouseOut,click:me.onClick}),me.callParent(arguments)},getBBox:function(){for(var sprite,bb,i=0,items=this.items,len=this.length,minX=1/0,maxHeight=-1/0,minY=1/0,maxWidth=-1/0;i<len;i++)sprite=items[i],sprite.el&&!sprite.bboxExcluded&&(bb=sprite.getBBox(),minX=Math.min(minX,bb.x),minY=Math.min(minY,bb.y),maxHeight=Math.max(maxHeight,bb.height+bb.y),maxWidth=Math.max(maxWidth,bb.width+bb.x));return{x:minX,y:minY,height:maxHeight-minY,width:maxWidth-minX}},setAttributes:function(attrs,redraw){for(var i=0,items=this.items,len=this.length;i<len;i++)items[i].setAttributes(attrs,redraw);return this},hide:function(redraw){for(var i=0,items=this.items,len=this.length;i<len;i++)items[i].hide(redraw);return this},show:function(redraw){for(var i=0,items=this.items,len=this.length;i<len;i++)items[i].show(redraw);return this},redraw:function(){var me=this,i=0,items=me.items,surface=me.getSurface(),len=me.length;if(surface)for(;i<len;i++)surface.renderItem(items[i]);return me},setStyle:function(obj){for(var item,el,i=0,items=this.items,len=this.length;i<len;i++)item=items[i],(el=item.el)&&el.setStyle(obj)},addCls:function(obj){var i=0,items=this.items,surface=this.getSurface(),len=this.length;if(surface)for(;i<len;i++)surface.addCls(items[i],obj)},removeCls:function(obj){var i=0,items=this.items,surface=this.getSurface(),len=this.length;if(surface)for(;i<len;i++)surface.removeCls(items[i],obj)},getSurface:function(){var first=this.first();return first?first.surface:null},destroy:function(){var item,me=this,surface=me.getSurface(),destroySprites=me.autoDestroy;if(surface)for(;me.getCount()>0;)item=me.first(),me.remove(item),surface.remove(item,destroySprites);me.clearListeners()}});Ext.define("Ext.draw.Surface",{mixins:{observable:"Ext.util.Observable"},requires:["Ext.draw.CompositeSprite"],uses:["Ext.draw.engine.Svg","Ext.draw.engine.Vml","Ext.draw.engine.SvgExporter","Ext.draw.engine.ImageExporter"],separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(config,enginePriority){enginePriority=enginePriority||this.prototype.enginePriority;for(var i=0,len=enginePriority.length;i<len;i++)if(Ext.supports[enginePriority[i]])return Ext.create("Ext.draw.engine."+enginePriority[i],config);return!1},save:function(surface,config){config=config||{};var exportTypes={"image/png":"Image","image/jpeg":"Image","image/svg+xml":"Svg"},prefix=exportTypes[config.type]||"Svg";return Ext.draw.engine[prefix+"Exporter"].generate(surface,config)}},availableAttrs:{blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,"dominant-baseline":"auto",fill:"none","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:"",height:0,hidden:!1,href:"http://sencha.com/",opacity:1,path:"M0,0",radius:0,rx:0,ry:0,scale:"1 1",src:"",stroke:"none","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank",text:"","text-anchor":"middle",title:"Ext Draw",width:0,x:0,y:0,zIndex:0},container:void 0,height:352,width:512,x:0,y:0,orderSpritesByZIndex:!0,constructor:function(config){var me=this;config=config||{},Ext.apply(me,config),me.domRef=Ext.getDoc().dom,me.customAttributes={},me.addEvents("mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","click","dblclick"),me.mixins.observable.constructor.call(me),me.getId(),me.initGradients(),me.initItems(),me.renderTo&&(me.render(me.renderTo),delete me.renderTo),me.initBackground(config.background)},initSurface:Ext.emptyFn,renderItem:Ext.emptyFn,renderItems:Ext.emptyFn,setViewBox:function(x,y,width,height){isFinite(x)&&isFinite(y)&&isFinite(width)&&isFinite(height)&&(this.viewBox={x:x,y:y,width:width,height:height},this.applyViewBox())},addCls:Ext.emptyFn,removeCls:Ext.emptyFn,setStyle:Ext.emptyFn,initGradients:function(){if(this.hasOwnProperty("gradients")){var g,gLen,gradients=this.gradients,fn=this.addGradient;if(gradients)for(g=0,gLen=gradients.length;g<gLen&&!1!==fn.call(this,gradients[g],g,gLen);g++);}},initItems:function(){var items=this.items;this.items=new Ext.draw.CompositeSprite,this.items.autoDestroy=!0,this.groups=new Ext.draw.CompositeSprite,items&&this.add(items)},initBackground:function(config){var gradientId,gradient,me=this,width=me.width,height=me.height;Ext.isString(config)&&(config={fill:config}),config&&(config.gradient?(gradient=config.gradient,gradientId=gradient.id,me.addGradient(gradient),me.background=me.add({type:"rect",isBackground:!0,x:0,y:0,width:width,height:height,fill:"url(#"+gradientId+")",zIndex:-1})):config.fill?me.background=me.add({type:"rect",isBackground:!0,x:0,y:0,width:width,height:height,fill:config.fill,zIndex:-1}):config.image&&(me.background=me.add({type:"image",isBackground:!0,x:0,y:0,width:width,height:height,src:config.image,zIndex:-1})),me.background.bboxExcluded=!0)},setSize:function(w,h){this.applyViewBox()},scrubAttrs:function(sprite){var i,attrs={},exclude={},sattr=sprite.attr;for(i in sattr)this.translateAttrs.hasOwnProperty(i)?(attrs[this.translateAttrs[i]]=sattr[i],exclude[this.translateAttrs[i]]=!0):this.availableAttrs.hasOwnProperty(i)&&!exclude[i]&&(attrs[i]=sattr[i]);return attrs},onClick:function(e){this.processEvent("click",e)},onDblClick:function(e){this.processEvent("dblclick",e)},onMouseUp:function(e){this.processEvent("mouseup",e)},onMouseDown:function(e){this.processEvent("mousedown",e)},onMouseOver:function(e){this.processEvent("mouseover",e)},onMouseOut:function(e){this.processEvent("mouseout",e)},onMouseMove:function(e){this.fireEvent("mousemove",e)},onMouseEnter:Ext.emptyFn,onMouseLeave:Ext.emptyFn,addGradient:Ext.emptyFn,add:function(){var sprite,items,results,i,ln,item,args=Array.prototype.slice.call(arguments),hasMultipleArgs=args.length>1;if(hasMultipleArgs||Ext.isArray(args[0])){for(items=hasMultipleArgs?args:args[0],results=[],i=0,ln=items.length;i<ln;i++)item=items[i],item=this.add(item),results.push(item);return results}return sprite=this.prepareItems(args[0],!0)[0],this.insertByZIndex(sprite),this.onAdd(sprite),sprite},insertByZIndex:function(sprite){var otherZIndex,me=this,sprites=me.items.items,len=sprites.length,ceil=Math.ceil,zIndex=sprite.attr.zIndex,idx=len,high=idx-1,low=0;if(me.orderSpritesByZIndex&&len&&zIndex<sprites[high].attr.zIndex){for(;low<=high;)if(idx=ceil((low+high)/2),(otherZIndex=sprites[idx].attr.zIndex)>zIndex)high=idx-1;else{if(!(otherZIndex<zIndex))break;low=idx+1}for(;idx<len&&sprites[idx].attr.zIndex<=zIndex;)idx++}return me.items.insert(idx,sprite),idx},onAdd:function(sprite){var groups,ln,i,group=sprite.group,draggable=sprite.draggable;if(group){for(groups=[].concat(group),ln=groups.length,i=0;i<ln;i++)group=groups[i],this.getGroup(group).add(sprite);delete sprite.group}draggable&&sprite.initDraggable()},remove:function(sprite,destroySprite){if(sprite){this.items.remove(sprite);var g,groups=[].concat(this.groups.items),gLen=groups.length;for(g=0;g<gLen;g++)groups[g].remove(sprite);sprite.onRemove(),!0===destroySprite&&sprite.destroy()}},removeAll:function(destroySprites){var i,items=this.items.items,ln=items.length;for(i=ln-1;i>-1;i--)this.remove(items[i],destroySprites)},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var viewBoxX,viewBoxY,viewBoxWidth,viewBoxHeight,relativeHeight,relativeWidth,size,me=this,viewBox=me.viewBox,width=me.width||1,height=me.height||1;viewBox&&(width||height)?(viewBoxX=viewBox.x,viewBoxY=viewBox.y,viewBoxWidth=viewBox.width,viewBoxHeight=viewBox.height,relativeHeight=height/viewBoxHeight,relativeWidth=width/viewBoxWidth,size=Math.min(relativeWidth,relativeHeight),viewBoxWidth*size<width&&(viewBoxX-=(width-viewBoxWidth*size)/2/size),viewBoxHeight*size<height&&(viewBoxY-=(height-viewBoxHeight*size)/2/size),me.viewBoxShift={dx:-viewBoxX,dy:-viewBoxY,scale:size},me.background&&me.background.setAttributes(Ext.apply({},{x:viewBoxX,y:viewBoxY,width:width/size,height:height/size},{hidden:!1}),!0)):me.background&&width&&height&&me.background.setAttributes(Ext.apply({x:0,y:0,width:width,height:height},{hidden:!1}),!0)},getBBox:function(sprite,isWithoutTransform){var realPath=this["getPath"+sprite.type](sprite);return isWithoutTransform?(sprite.bbox.plain=sprite.bbox.plain||Ext.draw.Draw.pathDimensions(realPath),sprite.bbox.plain):(sprite.dirtyTransform&&this.applyTransformations(sprite,!0),sprite.bbox.transform=sprite.bbox.transform||Ext.draw.Draw.pathDimensions(Ext.draw.Draw.mapPath(realPath,sprite.matrix)),sprite.bbox.transform)},transformToViewBox:function(x,y){if(this.viewBoxShift){var me=this,shift=me.viewBoxShift;return[x/shift.scale-shift.dx,y/shift.scale-shift.dy]}return[x,y]},applyTransformations:function(sprite,onlyMatrix){"text"==sprite.type&&(sprite.bbox.transform=0,this.transform(sprite,!1)),sprite.dirtyTransform=!1;var me=this,attr=sprite.attr;null==attr.translation.x&&null==attr.translation.y||me.translate(sprite),null==attr.scaling.x&&null==attr.scaling.y||me.scale(sprite),null!=attr.rotation.degrees&&me.rotate(sprite),sprite.bbox.transform=0,this.transform(sprite,onlyMatrix),sprite.transformations=[]},rotate:function(sprite){var bbox,deg=sprite.attr.rotation.degrees,centerX=sprite.attr.rotation.x,centerY=sprite.attr.rotation.y;Ext.isNumber(centerX)&&Ext.isNumber(centerY)||(bbox=this.getBBox(sprite,!0),centerX=Ext.isNumber(centerX)?centerX:bbox.x+bbox.width/2,centerY=Ext.isNumber(centerY)?centerY:bbox.y+bbox.height/2),sprite.transformations.push({type:"rotate",degrees:deg,x:centerX,y:centerY})},translate:function(sprite){var x=sprite.attr.translation.x||0,y=sprite.attr.translation.y||0;sprite.transformations.push({type:"translate",x:x,y:y})},scale:function(sprite){var bbox,x=sprite.attr.scaling.x||1,y=sprite.attr.scaling.y||1,centerX=sprite.attr.scaling.centerX,centerY=sprite.attr.scaling.centerY;Ext.isNumber(centerX)&&Ext.isNumber(centerY)||(bbox=this.getBBox(sprite,!0),centerX=Ext.isNumber(centerX)?centerX:bbox.x+bbox.width/2,centerY=Ext.isNumber(centerY)?centerY:bbox.y+bbox.height/2),sprite.transformations.push({type:"scale",x:x,y:y,centerX:centerX,centerY:centerY})},rectPath:function(x,y,w,h,r){return r?[["M",x+r,y],["l",w-2*r,0],["a",r,r,0,0,1,r,r],["l",0,h-2*r],["a",r,r,0,0,1,-r,r],["l",2*r-w,0],["a",r,r,0,0,1,-r,-r],["l",0,2*r-h],["a",r,r,0,0,1,r,-r],["z"]]:[["M",x,y],["l",w,0],["l",0,h],["l",-w,0],["z"]]},ellipsePath:function(x,y,rx,ry){return null==ry&&(ry=rx),[["M",x,y],["m",0,-ry],["a",rx,ry,0,1,1,0,2*ry],["a",rx,ry,0,1,1,0,-2*ry],["z"]]},getPathpath:function(el){return el.attr.path},getPathcircle:function(el){var a=el.attr;return this.ellipsePath(a.x,a.y,a.radius,a.radius)},getPathellipse:function(el){var a=el.attr;return this.ellipsePath(a.x,a.y,a.radiusX||a.width/2||0,a.radiusY||a.height/2||0)},getPathrect:function(el){var a=el.attr;return this.rectPath(a.x||0,a.y||0,a.width||0,a.height||0,a.r||0)},getPathimage:function(el){var a=el.attr;return this.rectPath(a.x||0,a.y||0,a.width,a.height)},getPathtext:function(el){var bbox=this.getBBoxText(el);return this.rectPath(bbox.x,bbox.y,bbox.width,bbox.height)},createGroup:function(id){var group=this.groups.get(id);return group||(group=new Ext.draw.CompositeSprite({surface:this}),group.id=id||Ext.id(null,"ext-surface-group-"),this.groups.add(group)),group},getGroup:function(id){var group;return"string"==typeof id?(group=this.groups.get(id))||(group=this.createGroup(id)):group=id,group},prepareItems:function(items,applyDefaults){items=[].concat(items);var item,i,ln;for(i=0,ln=items.length;i<ln;i++)item=items[i],item instanceof Ext.draw.Sprite?item.surface=this:(item.surface=this,items[i]=this.createItem(item));return items},setText:Ext.emptyFn,createItem:Ext.emptyFn,getId:function(){return this.id||(this.id=Ext.id(null,"ext-surface-"))},destroy:function(){var me=this;delete me.domRef,me.background&&me.background.destroy(),me.removeAll(!0),Ext.destroy(me.groups.items)}});Ext.define("Ext.layout.component.Draw",{alias:"layout.draw",extend:"Ext.layout.component.Auto",setHeightInDom:!0,setWidthInDom:!0,type:"draw",measureContentWidth:function(ownerContext){var target=ownerContext.target,paddingInfo=ownerContext.getPaddingInfo(),bbox=this.getBBox(ownerContext);return target.viewBox?ownerContext.heightModel.shrinkWrap?paddingInfo.width:bbox.width/bbox.height*(ownerContext.getProp("contentHeight")-paddingInfo.height)+paddingInfo.width:target.autoSize?bbox.width+paddingInfo.width:bbox.x+bbox.width+paddingInfo.width},measureContentHeight:function(ownerContext){var target=ownerContext.target,paddingInfo=ownerContext.getPaddingInfo(),bbox=this.getBBox(ownerContext);return ownerContext.target.viewBox?ownerContext.widthModel.shrinkWrap?paddingInfo.height:bbox.height/bbox.width*(ownerContext.getProp("contentWidth")-paddingInfo.width)+paddingInfo.height:target.autoSize?bbox.height+paddingInfo.height:bbox.y+bbox.height+paddingInfo.height},getBBox:function(ownerContext){var bbox=ownerContext.surfaceBBox;return bbox||(bbox=ownerContext.target.surface.items.getBBox(),bbox.width===-1/0&&bbox.height===-1/0&&(bbox.width=bbox.height=bbox.x=bbox.y=0),ownerContext.surfaceBBox=bbox),bbox},publishInnerWidth:function(ownerContext,width){ownerContext.setContentWidth(width-ownerContext.getFrameInfo().width,!0)},publishInnerHeight:function(ownerContext,height){ownerContext.setContentHeight(height-ownerContext.getFrameInfo().height,!0)},finishedLayout:function(ownerContext){var props=ownerContext.props,paddingInfo=ownerContext.getPaddingInfo();this.owner.setSurfaceSize(props.contentWidth-paddingInfo.width,props.contentHeight-paddingInfo.height),this.callParent(arguments)}});Ext.define("Ext.draw.Component",{alias:"widget.draw",extend:"Ext.Component",requires:["Ext.draw.Surface","Ext.layout.component.Draw"],enginePriority:["Svg","Vml"],baseCls:Ext.baseCSSPrefix+"surface",componentLayout:"draw",viewBox:!0,shrinkWrap:3,autoSize:!1,suspendSizing:0,initComponent:function(){this.callParent(arguments),this.addEvents("mousedown","mouseup","mousemove","mouseenter","mouseleave","click","dblclick")},onRender:function(){this.callParent(arguments),!1!==this.createSurface()&&this.configureSurfaceSize()},configureSurfaceSize:function(){var bbox,me=this,viewBox=me.viewBox,autoSize=me.autoSize;!viewBox&&!autoSize||me.suspendSizing||(bbox=me.surface.items.getBBox(),viewBox?me.surface.setViewBox(bbox.x,bbox.y,bbox.width,bbox.height):me.autoSizeSurface(bbox))},autoSizeSurface:function(bbox){bbox=bbox||this.surface.items.getBBox(),this.setSurfaceSize(bbox.width,bbox.height)},setSurfaceSize:function(width,height){if(this.surface.setSize(width,height),this.autoSize){var bbox=this.surface.items.getBBox();this.surface.setViewBox(bbox.x,bbox.y-+Ext.isOpera,width,height)}},createSurface:function(){function refire(eventName){return function(e){me.fireEvent(eventName,e)}}var surface,me=this,cfg=Ext.applyIf({renderTo:me.el,height:me.height,width:me.width,items:me.items},me.initialConfig);if(delete cfg.listeners,cfg.gradients||(cfg.gradients=me.gradients),me.initSurfaceCfg(cfg),!(surface=Ext.draw.Surface.create(cfg,me.enginePriority)))return!1;me.surface=surface,surface.owner=me,surface.on({scope:me,mouseup:refire("mouseup"),mousedown:refire("mousedown"),mousemove:refire("mousemove"),mouseenter:refire("mouseenter"),mouseleave:refire("mouseleave"),click:refire("click"),dblclick:refire("dblclick")})},initSurfaceCfg:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.surface),this.callParent(arguments)}});Ext.define("Ext.chart.Highlight",{requires:["Ext.fx.Anim"],highlight:!1,highlightCfg:{fill:"#fdd","stroke-width":5,stroke:"#f55"},constructor:function(config){config.highlight&&"boolean"!=typeof config.highlight&&(this.highlightCfg=Ext.merge({},this.highlightCfg,config.highlight))},highlightItem:function(item){if(item){var p,from,to,pi,me=this,sprite=item.sprite,opts=Ext.merge({},me.highlightCfg,me.highlight),surface=me.chart.surface,animate=me.chart.animate;if(me.highlight&&sprite&&!sprite._highlighted){if(sprite._anim&&(sprite._anim.paused=!0),sprite._highlighted=!0,!sprite._defaults){sprite._defaults=Ext.apply({},sprite.attr),from={},to={};for(p in opts)if(p in sprite._defaults||(sprite._defaults[p]=surface.availableAttrs[p]),from[p]=sprite._defaults[p],to[p]=opts[p],Ext.isObject(opts[p])){from[p]={},to[p]={},Ext.apply(sprite._defaults[p],sprite.attr[p]),Ext.apply(from[p],sprite._defaults[p]);for(pi in sprite._defaults[p])pi in opts[p]?to[p][pi]=opts[p][pi]:to[p][pi]=from[p][pi];for(pi in opts[p])pi in to[p]||(to[p][pi]=opts[p][pi])}sprite._from=from,sprite._to=to,sprite._endStyle=to}animate?sprite._anim=new Ext.fx.Anim({target:sprite,from:sprite._from,to:sprite._to,duration:150}):sprite.setAttributes(sprite._to,!0)}}},unHighlightItem:function(){if(this.highlight&&this.items)for(var obj,p,sprite,me=this,items=me.items,len=items.length,opts=Ext.merge({},me.highlightCfg,me.highlight),animate=me.chart.animate,i=0;i<len;i++)if(items[i]&&(sprite=items[i].sprite)&&sprite._highlighted){sprite._anim&&(sprite._anim.paused=!0),obj={};for(p in opts)Ext.isObject(sprite._defaults[p])?obj[p]=Ext.apply({},sprite._defaults[p]):obj[p]=sprite._defaults[p];animate?(sprite._endStyle=obj,sprite._anim=new Ext.fx.Anim({target:sprite,to:obj,duration:150})):sprite.setAttributes(obj,!0),delete sprite._highlighted}},cleanHighlights:function(){if(this.highlight){var l,group=this.group,markerGroup=this.markerGroup,i=0;for(l=group.getCount();i<l;i++)delete group.getAt(i)._defaults;if(markerGroup)for(l=markerGroup.getCount();i<l;i++)delete markerGroup.getAt(i)._defaults}}});Ext.define("Ext.chart.Label",{requires:["Ext.draw.Color"],colorStringRe:/url\s*\(\s*#([^\/)]+)\s*\)/,constructor:function(config){var me=this;me.label=Ext.applyIf(me.label||{},{display:"none",stackedDisplay:"none",color:"#000",field:"name",minMargin:50,font:"11px Helvetica, sans-serif",orientation:"horizontal",renderer:Ext.identityFn}),"none"!==me.label.display&&(me.labelsGroup=me.chart.surface.getGroup(me.seriesId+"-labels"))},renderLabels:function(){var gradient,i,count,groupIndex,index,j,k,colorStopTotal,colorStopIndex,colorStop,item,label,storeItem,sprite,spriteColor,spriteBrightness,labelColor,colorString,total,totalPositive,totalNegative,topText,bottomText,me=this,chart=me.chart,gradients=chart.gradients,items=me.items,animate=chart.animate,config=me.label,display=config.display,stackedDisplay=config.stackedDisplay,format=config.renderer,color=config.color,field=[].concat(config.field),group=me.labelsGroup,groupLength=(group||0)&&group.length,store=me.chart.getChartStore(),len=store.getCount(),itemLength=(items||0)&&items.length,ratio=itemLength/len,gradientsCount=(gradients||0)&&gradients.length,Color=Ext.draw.Color,hides=[];if("none"!=display&&group){if(0==itemLength)for(;groupLength--;)hides.push(groupLength);else{for(i=0,count=0,groupIndex=0;i<len;i++)for(index=0,j=0;j<ratio;j++){for(item=items[count],label=group.getAt(groupIndex),storeItem=store.getAt(i);this.__excludes&&this.__excludes[index];)index++;if(!item&&label&&(label.hide(!0),groupIndex++),item&&field[j]){if(!label&&!(label=me.onCreateLabel(storeItem,item,i,display)))break;if(label.setAttributes({fill:String(color)},!0),me.onPlaceLabel(label,storeItem,item,i,display,animate,index),groupIndex++,config.contrast&&item.sprite){if(sprite=item.sprite,colorString=animate&&sprite._endStyle?sprite._endStyle.fill:animate&&sprite._to?sprite._to.fill:sprite.attr.fill,colorString=colorString||sprite.attr.fill,spriteColor=Color.fromString(colorString),colorString&&!spriteColor){for(colorString=colorString.match(me.colorStringRe)[1],k=0;k<gradientsCount;k++)if(gradient=gradients[k],gradient.id==colorString){colorStop=0,colorStopTotal=0;for(colorStopIndex in gradient.stops)colorStop++,colorStopTotal+=Color.fromString(gradient.stops[colorStopIndex].color).getGrayscale();spriteBrightness=colorStopTotal/colorStop/255;break}}else spriteBrightness=spriteColor.getGrayscale()/255;label.isOutside&&(spriteBrightness=1),labelColor=Color.fromString(label.attr.fill||label.attr.color).getHSL(),labelColor[2]=spriteBrightness>.5?.2:.8,label.setAttributes({fill:String(Color.fromHSL.apply({},labelColor))},!0)}me.stacked&&stackedDisplay&&(item.totalPositiveValues||item.totalNegativeValues)&&(totalPositive=item.totalPositiveValues||0,totalNegative=item.totalNegativeValues||0,total=totalPositive+totalNegative,"total"==stackedDisplay?topText=format(total):"balances"==stackedDisplay&&(0==totalPositive&&0==totalNegative?topText=format(0):(topText=format(totalPositive),bottomText=format(totalNegative))),topText&&(label=group.getAt(groupIndex),label||(label=me.onCreateLabel(storeItem,item,i,"over")),labelColor=Color.fromString(label.attr.color||label.attr.fill).getHSL(),label.setAttributes({text:topText,style:config.font,fill:String(Color.fromHSL.apply({},labelColor))},!0),me.onPlaceLabel(label,storeItem,item,i,"over",animate,index),groupIndex++),bottomText&&(label=group.getAt(groupIndex),label||(label=me.onCreateLabel(storeItem,item,i,"under")),labelColor=Color.fromString(label.attr.color||label.attr.fill).getHSL(),label.setAttributes({text:bottomText,style:config.font,fill:String(Color.fromHSL.apply({},labelColor))},!0),me.onPlaceLabel(label,storeItem,item,i,"under",animate,index),groupIndex++))}count++,index++}for(groupLength=group.length;groupLength>groupIndex;)hides.push(groupIndex),groupIndex++}me.hideLabels(hides)}},hideLabels:function(hides){var labelsGroup=this.labelsGroup,hlen=!!hides&&hides.length;if(labelsGroup)if(!1===hlen)for(hlen=labelsGroup.getCount();hlen--;)labelsGroup.getAt(hlen).hide(!0);else for(;hlen--;)labelsGroup.getAt(hides[hlen]).hide(!0)}});Ext.define("Ext.chart.TipSurface",{extend:"Ext.draw.Component",spriteArray:!1,renderFirst:!0,constructor:function(config){this.callParent([config]),config.sprites&&(this.spriteArray=[].concat(config.sprites),delete config.sprites)},onRender:function(){var sp,sprites,me=this,i=0,l=0;if(this.callParent(arguments),sprites=me.spriteArray,me.renderFirst&&sprites)for(me.renderFirst=!1,l=sprites.length;i<l;i++)sp=me.surface.add(sprites[i]),sp.setAttributes({hidden:!1},!0)}});Ext.define("Ext.chart.Tip",{requires:["Ext.tip.ToolTip","Ext.chart.TipSurface"],constructor:function(config){var surface,sprites,tipSurface,me=this;config.tips&&(me.tipTimeout=null,me.tipConfig=Ext.apply({},config.tips,{renderer:Ext.emptyFn,constrainPosition:!0,autoHide:!0,shrinkWrapDock:!0}),me.tooltip=new Ext.tip.ToolTip(me.tipConfig),me.chart.surface.on("mousemove",me.tooltip.onMouseMove,me.tooltip),me.chart.surface.on("mouseleave",function(){me.hideTip()}),me.tipConfig.surface&&(surface=me.tipConfig.surface,sprites=surface.sprites,tipSurface=new Ext.chart.TipSurface({id:"tipSurfaceComponent",sprites:sprites}),surface.width&&surface.height&&tipSurface.setSize(surface.width,surface.height),me.tooltip.add(tipSurface),me.spriteTip=tipSurface))},showTip:function(item){var tooltip,spriteTip,tipConfig,trackMouse,sprite,surface,surfaceExt,pos,x,y,me=this;me.tooltip&&(clearTimeout(me.tipTimeout),tooltip=me.tooltip,spriteTip=me.spriteTip,tipConfig=me.tipConfig,trackMouse=tooltip.trackMouse,trackMouse||(tooltip.trackMouse=!0,sprite=item.sprite,surface=sprite.surface,(surfaceExt=Ext.get(surface.getId()))&&(pos=surfaceExt.getXY(),x=pos[0]+(sprite.attr.x||0)+(sprite.attr.translation&&sprite.attr.translation.x||0),y=pos[1]+(sprite.attr.y||0)+(sprite.attr.translation&&sprite.attr.translation.y||0),tooltip.targetXY=[x,y])),spriteTip?tipConfig.renderer.call(tooltip,item.storeItem,item,spriteTip.surface):tipConfig.renderer.call(tooltip,item.storeItem,item),tooltip.delayShow(),tooltip.trackMouse=trackMouse)},hideTip:function(item){var tooltip=this.tooltip;tooltip&&(clearTimeout(this.tipTimeout),this.tipTimeout=setTimeout(function(){tooltip.delayHide()},0))}});Ext.define("Ext.chart.series.Series",{mixins:{observable:"Ext.util.Observable",labels:"Ext.chart.Label",highlights:"Ext.chart.Highlight",tips:"Ext.chart.Tip",callouts:"Ext.chart.Callout"},type:null,title:null,showInLegend:!0,renderer:function(sprite,record,attributes,index,store){return attributes},shadowAttributes:null,animating:!1,nullGutters:{lower:0,upper:0,verticalAxis:void 0},nullPadding:{left:0,right:0,width:0,bottom:0,top:0,height:0},constructor:function(config){var me=this;config&&Ext.apply(me,config),me.shadowGroups=[],me.mixins.labels.constructor.call(me,config),me.mixins.highlights.constructor.call(me,config),me.mixins.tips.constructor.call(me,config),me.mixins.callouts.constructor.call(me,config),me.addEvents({scope:me,itemclick:!0,itemdblclick:!0,itemmouseover:!0,itemmouseout:!0,itemmousedown:!0,itemmouseup:!0,mouseleave:!0,afterdraw:!0,titlechange:!0}),me.mixins.observable.constructor.call(me,config),me.on({scope:me,itemmouseover:me.onItemMouseOver,itemmouseout:me.onItemMouseOut,mouseleave:me.onMouseLeave}),me.style&&Ext.apply(me.seriesStyle,me.style)},initialize:Ext.emptyFn,onRedraw:Ext.emptyFn,eachRecord:function(fn,scope){this.chart.getChartStore().each(fn,scope)},getRecordCount:function(){var chart=this.chart,store=chart.getChartStore();return store?store.getCount():0},isExcluded:function(index){var excludes=this.__excludes;return!(!excludes||!excludes[index])},setBBox:function(noGutter){var clipBox,bbox,me=this,chart=me.chart,chartBBox=chart.chartBBox,maxGutters=noGutter?{left:0,right:0,bottom:0,top:0}:chart.maxGutters;clipBox={x:chartBBox.x,y:chartBBox.y,width:chartBBox.width,height:chartBBox.height},me.clipBox=clipBox,bbox={x:clipBox.x+maxGutters.left-chart.zoom.x*chart.zoom.width,y:clipBox.y+maxGutters.bottom-chart.zoom.y*chart.zoom.height,width:(clipBox.width-(maxGutters.left+maxGutters.right))*chart.zoom.width,height:(clipBox.height-(maxGutters.bottom+maxGutters.top))*chart.zoom.height},me.bbox=bbox},onAnimate:function(sprite,attr){var me=this;return sprite.stopAnimation(),me.animating?sprite.animate(Ext.applyIf(attr,me.chart.animate)):(me.animating=!0,sprite.animate(Ext.apply(Ext.applyIf(attr,me.chart.animate),{callback:function(){me.animating=!1,me.fireEvent("afterrender",me)}})))},getGutters:function(){return this.nullGutters},getPadding:function(){return this.nullPadding},onItemMouseOver:function(item){var me=this;item.series===me&&(me.highlight&&me.highlightItem(item),me.tooltip&&me.showTip(item))},onItemMouseOut:function(item){var me=this;item.series===me&&(me.unHighlightItem(),me.tooltip&&me.hideTip(item))},onMouseLeave:function(){var me=this;me.unHighlightItem(),me.tooltip&&me.hideTip()},getItemForPoint:function(x,y){if(!this.items||!this.items.length||this.seriesIsHidden)return null;var i,ln,me=this,items=me.items,bbox=me.bbox;if(!Ext.draw.Draw.withinBox(x,y,bbox))return null;for(i=0,ln=items.length;i<ln;i++)if(items[i]&&this.isItemInPoint(x,y,items[i],i))return items[i];return null},isItemInPoint:function(x,y,item,i){return!1},hideAll:function(){var item,len,i,j,l,sprite,shadows,me=this,items=me.items;for(me.seriesIsHidden=!0,me._prevShowMarkers=me.showMarkers,me.showMarkers=!1,me.hideLabels(0),i=0,len=items.length;i<len;i++)if(item=items[i],sprite=item.sprite,sprite&&sprite.setAttributes({hidden:!0},!0),sprite&&sprite.shadows)for(shadows=sprite.shadows,j=0,l=shadows.length;j<l;++j)shadows[j].setAttributes({hidden:!0},!0)},showAll:function(){var me=this,prevAnimate=me.chart.animate;me.chart.animate=!1,me.seriesIsHidden=!1,me.showMarkers=me._prevShowMarkers,me.drawSeries(),me.chart.animate=prevAnimate},hide:function(){if(this.items){var i,j,lsh,ln,shadows,me=this,items=me.items;if(items&&items.length){for(i=0,ln=items.length;i<ln;++i)if(items[i].sprite&&(items[i].sprite.hide(!0),shadows=items[i].shadows||items[i].sprite.shadows))for(j=0,lsh=shadows.length;j<lsh;++j)shadows[j].hide(!0);me.hideLabels()}}},getLegendColor:function(index){var fill,stroke,me=this;if(me.seriesStyle){if(fill=me.seriesStyle.fill,stroke=me.seriesStyle.stroke,fill&&"none"!=fill)return fill;if(stroke)return stroke}return me.colorArrayStyle?me.colorArrayStyle[me.themeIdx%me.colorArrayStyle.length]:"#000"},visibleInLegend:function(index){var excludes=this.__excludes;return excludes?!excludes[index]:!this.seriesIsHidden},setTitle:function(index,title){var me=this,oldTitle=me.title;Ext.isString(index)&&(title=index,index=0),Ext.isArray(oldTitle)?oldTitle[index]=title:me.title=title,me.fireEvent("titlechange",title,index)}});Ext.define("Ext.container.Monitor",{target:null,selector:"",scope:null,addHandler:null,removeHandler:null,disabled:0,constructor:function(config){Ext.apply(this,config)},bind:function(target){var me=this;me.target=target,target.on("beforedestroy",me.disable,me),me.onContainerAdd(target)},unbind:function(){var me=this,target=me.target;target&&target.un("beforedestroy",me.disable,me),me.items=null},disable:function(){++this.disabled},enable:function(){this.disabled>0&&--this.disabled},handleAdd:function(ct,comp){this.disabled||(comp.is(this.selector)&&this.onItemAdd(comp.ownerCt,comp),comp.isQueryable&&this.onContainerAdd(comp))},onItemAdd:function(ct,comp){var me=this,items=me.items,handler=me.addHandler;me.disabled||(handler&&handler.call(me.scope||comp,comp),items&&items.add(comp))},onItemRemove:function(ct,comp){var me=this,items=me.items,handler=me.removeHandler;me.disabled||(handler&&handler.call(me.scope||comp,comp),items&&items.remove(comp))},onContainerAdd:function(ct,preventChildren){var items,len,i,comp,me=this,handleAdd=me.handleAdd,handleRemove=me.handleRemove;if(ct.isContainer&&(ct.on("add",handleAdd,me),ct.on("dockedadd",handleAdd,me),ct.on("remove",handleRemove,me),ct.on("dockedremove",handleRemove,me)),!0!==preventChildren)for(items=ct.query(me.selector),i=0,len=items.length;i<len;++i)comp=items[i],me.onItemAdd(comp.ownerCt,comp);for(items=ct.query(">container"),i=0,len=items.length;i<len;++i)me.onContainerAdd(items[i],!0)},handleRemove:function(ct,comp){var me=this;me.disabled||(comp.is(me.selector)&&me.onItemRemove(ct,comp),comp.isQueryable&&me.onContainerRemove(ct,comp))},onContainerRemove:function(ct,comp){var items,i,len,item,me=this;if(comp.isDestroyed||comp.destroying||!comp.isContainer)me.invalidateItems();else{for(me.removeCtListeners(comp),items=comp.query(me.selector),i=0,len=items.length;i<len;++i)item=items[i],me.onItemRemove(item.ownerCt,item);for(items=comp.query("container"),i=0,len=items.length;i<len;++i)me.removeCtListeners(items[i])}},removeCtListeners:function(comp){var me=this;comp.un("add",me.handleAdd,me),comp.un("dockedadd",me.handleAdd,me),comp.un("remove",me.handleRemove,me),comp.un("dockedremove",me.handleRemove,me)},getItems:function(){var me=this,items=me.items;return items||(items=me.items=new Ext.util.MixedCollection,items.addAll(me.target.query(me.selector))),items},invalidateItems:function(){this.items=null}});Ext.define("Ext.container.Viewport",{extend:"Ext.container.Container",alias:"widget.viewport",requires:["Ext.EventManager"],alternateClassName:"Ext.Viewport",isViewport:!0,ariaRole:"application",preserveElOnDestroy:!0,viewportCls:Ext.baseCSSPrefix+"viewport",initComponent:function(){var me=this,html=document.body.parentNode,el=me.el=Ext.getBody();Ext.getScrollbarSize(),me.width=me.height=void 0,me.callParent(arguments),Ext.fly(html).addCls(me.viewportCls),me.autoScroll&&(Ext.fly(html).setStyle(me.getOverflowStyle()),delete me.autoScroll),el.setHeight=el.setWidth=Ext.emptyFn,el.dom.scroll="no",me.allowDomMove=!1,me.renderTo=me.el},applyTargetCls:function(targetCls){this.el.addCls(targetCls)},onRender:function(){var me=this;me.callParent(arguments),me.width=Ext.Element.getViewportWidth(),me.height=Ext.Element.getViewportHeight()},afterFirstLayout:function(){var me=this;me.callParent(arguments),setTimeout(function(){Ext.EventManager.onWindowResize(me.fireResize,me)},1)},fireResize:function(width,height){width==this.width&&height==this.height||this.setSize(width,height)},initHierarchyState:function(hierarchyState){this.callParent([this.hierarchyState=Ext.rootHierarchyState])},beforeDestroy:function(){var me=this;me.removeUIFromElement(),me.el.removeCls(me.baseCls),Ext.fly(document.body.parentNode).removeCls(me.viewportCls),me.callParent()}});Ext.define("Ext.data.IdGenerator",{isGenerator:!0,constructor:function(config){var me=this;Ext.apply(me,config),me.id&&(Ext.data.IdGenerator.all[me.id]=me)},getRecId:function(rec){return rec.modelName+"-"+rec.internalId},statics:{all:{},get:function(config){var generator,id,type;if("string"==typeof config)id=type=config,config=null;else{if(config.isGenerator)return config;id=config.id||config.type,type=config.type}return generator=this.all[id],generator||(generator=Ext.create("idgen."+type,config)),generator}}});Ext.define("Ext.data.SortTypes",{singleton:!0,none:Ext.identityFn,stripTagsRE:/<\/?[^>]+>/gi,asText:function(s){return String(s).replace(this.stripTagsRE,"")},asUCText:function(s){return String(s).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(s){return String(s).toUpperCase()},asDate:function(s){return s?Ext.isDate(s)?s.getTime():Date.parse(String(s)):0},asFloat:function(s){var val=parseFloat(String(s).replace(/,/g,""));return isNaN(val)?0:val},asInt:function(s){var val=parseInt(String(s).replace(/,/g,""),10);return isNaN(val)?0:val}});Ext.define("Ext.data.Types",{singleton:!0,requires:["Ext.data.SortTypes"]},function(){var st=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:st.none,type:"auto"},STRING:{convert:function(v){var defaultValue=this.useNull?null:"";return void 0===v||null===v?defaultValue:String(v)},sortType:st.asUCString,type:"string"},INT:{convert:function(v){return"number"==typeof v?parseInt(v):void 0!==v&&null!==v&&""!==v?parseInt(String(v).replace(Ext.data.Types.stripRe,""),10):this.useNull?null:0},sortType:st.none,type:"int"},FLOAT:{convert:function(v){return"number"==typeof v?v:void 0!==v&&null!==v&&""!==v?parseFloat(String(v).replace(Ext.data.Types.stripRe,""),10):this.useNull?null:0},sortType:st.none,type:"float"},BOOL:{convert:function(v){return"boolean"==typeof v?v:!this.useNull||void 0!==v&&null!==v&&""!==v?"true"===v||1==v:null},sortType:st.none,type:"bool"},DATE:{convert:function(v){var parsed,df=this.dateReadFormat||this.dateFormat;return v?v instanceof Date?v:df?Ext.Date.parse(v,df):(parsed=Date.parse(v),parsed?new Date(parsed):null):null},sortType:st.asDate,type:"date"}}),Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})});Ext.define("Ext.data.Field",{requires:["Ext.data.Types","Ext.data.SortTypes"],alias:"data.field",isField:!0,constructor:function(config){var st,me=this,types=Ext.data.Types;Ext.isString(config)&&(config={name:config}),Ext.apply(me,config),st=me.sortType,me.type?Ext.isString(me.type)&&(me.type=types[me.type.toUpperCase()]||types.AUTO):me.type=types.AUTO,Ext.isString(st)?me.sortType=Ext.data.SortTypes[st]:Ext.isEmpty(st)&&(me.sortType=me.type.sortType),config.hasOwnProperty("convert")?me.convert||!me.type.convert||config.hasOwnProperty("defaultValue")||(me.defaultValue=me.type.convert(me.defaultValue)):me.convert=me.type.convert,config.convert&&(me.hasCustomConvert=!0)},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:!1,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:!0,persist:!0});Ext.define("Ext.data.Errors",{extend:"Ext.util.MixedCollection",isValid:function(){return 0===this.length},getByField:function(fieldName){var error,i,errors=[];for(i=0;i<this.length;i++)error=this.items[i],error.field==fieldName&&errors.push(error);return errors}});Ext.define("Ext.data.validations",{singleton:!0,presenceMessage:"must be present",lengthMessage:"is the wrong length",formatMessage:"is the wrong format",inclusionMessage:"is not included in the list of acceptable values",exclusionMessage:"is not an acceptable value",emailMessage:"is not a valid email address",emailRe:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,presence:function(config,value){return 1===arguments.length&&(value=config),!!value||0===value||!1===value},length:function(config,value){if(void 0===value||null===value)return!1;var length=value.length,min=config.min,max=config.max;return!(min&&length<min||max&&length>max)},email:function(config,email){return Ext.data.validations.emailRe.test(email)},format:function(config,value){return!(!config.matcher||!config.matcher.test(value))},inclusion:function(config,value){return config.list&&-1!=Ext.Array.indexOf(config.list,value)},exclusion:function(config,value){return config.list&&-1==Ext.Array.indexOf(config.list,value)}});Ext.define("Ext.data.Model",{alternateClassName:"Ext.data.Record",mixins:{observable:"Ext.util.Observable"},requires:["Ext.ModelManager","Ext.data.IdGenerator","Ext.data.Field","Ext.data.Errors","Ext.data.Operation","Ext.data.validations","Ext.util.MixedCollection"],compareConvertFields:function(f1,f2){var f1SpecialConvert=f1.convert&&f1.type&&f1.convert!==f1.type.convert,f2SpecialConvert=f2.convert&&f2.type&&f2.convert!==f2.type.convert;return f1SpecialConvert&&!f2SpecialConvert?1:!f1SpecialConvert&&f2SpecialConvert?-1:0},itemNameFn:function(item){return item.name},onClassExtended:function(cls,data,hooks){var onBeforeClassCreated=hooks.onBeforeCreated;hooks.onBeforeCreated=function(cls,data){var field,associationConfig,i,ln,me=this,name=Ext.getClassName(cls),prototype=cls.prototype,superCls=cls.prototype.superclass,validations=data.validations||[],fields=data.fields||[],associationsConfigs=data.associations||[],addAssociations=function(items,type){var len,item,i=0;if(items)for(items=Ext.Array.from(items),len=items.length;i<len;++i)item=items[i],Ext.isObject(item)||(item={model:item}),item.type=type,associationsConfigs.push(item)},idgen=data.idgen,fieldsMixedCollection=new Ext.util.MixedCollection(!1,prototype.itemNameFn),associationsMixedCollection=new Ext.util.MixedCollection(!1,prototype.itemNameFn),superValidations=superCls.validations,superFields=superCls.fields,superAssociations=superCls.associations,dependencies=[],idProperty="idProperty"in data?data.idProperty:prototype.idProperty,idField=idProperty?idProperty.isField?idProperty:new Ext.data.Field(idProperty):null,idFieldDefined=!1,onFieldAddReplace=function(arg0,arg1,arg2){var newField,pos;fieldsMixedCollection.events.add.firing?(pos=arg0,newField=arg1):(newField=arg2,pos=arg1.originalIndex),newField.originalIndex=pos,idField&&(newField.mapping&&newField.mapping===idField.mapping||newField.name===idField.name)&&(prototype.idField=newField,idFieldDefined=!0,newField.defaultValue=void 0)},clsProxy=data.proxy,fieldConvertSortFn=function(){fieldsMixedCollection.sortBy(prototype.compareConvertFields)};for(cls.modelName=name,prototype.modelName=name,superValidations&&(validations=superValidations.concat(validations)),data.validations=validations,superFields&&(fields=superFields.items.concat(fields)),fieldsMixedCollection.on({add:onFieldAddReplace,replace:onFieldAddReplace}),i=0,ln=fields.length;i<ln;++i)field=fields[i],fieldsMixedCollection.add(field.isField?field:new Ext.data.Field(field));for(idField&&!idFieldDefined&&(prototype.idField=idField,idField.defaultValue=void 0,fieldsMixedCollection.add(idField)),fieldConvertSortFn(),fieldsMixedCollection.on({add:fieldConvertSortFn,replace:fieldConvertSortFn}),data.fields=fieldsMixedCollection,idgen&&(data.idgen=Ext.data.IdGenerator.get(idgen)),addAssociations(data.belongsTo,"belongsTo"),delete data.belongsTo,addAssociations(data.hasMany,"hasMany"),delete data.hasMany,addAssociations(data.hasOne,"hasOne"),delete data.hasOne,superAssociations&&(associationsConfigs=superAssociations.items.concat(associationsConfigs)),i=0,ln=associationsConfigs.length;i<ln;++i)dependencies.push("association."+associationsConfigs[i].type.toLowerCase());clsProxy?clsProxy.isProxy||dependencies.push("proxy."+(clsProxy.type||clsProxy)):cls.prototype.proxy||(cls.prototype.proxy=cls.prototype.defaultProxyType,dependencies.push("proxy."+cls.prototype.defaultProxyType)),Ext.require(dependencies,function(){for(Ext.ModelManager.registerType(name,cls),i=0,ln=associationsConfigs.length;i<ln;++i)associationConfig=associationsConfigs[i],associationConfig.isAssociation?associationConfig=Ext.applyIf({ownerModel:name,associatedModel:associationConfig.model},associationConfig.initialConfig):Ext.apply(associationConfig,{ownerModel:name,associatedModel:associationConfig.model}),void 0===Ext.ModelManager.getModel(associationConfig.model)?Ext.ModelManager.registerDeferredAssociation(associationConfig):associationsMixedCollection.add(Ext.data.association.Association.create(associationConfig));data.associations=associationsMixedCollection,onBeforeClassCreated.call(me,cls,data,hooks),clsProxy&&clsProxy.isProxy&&cls.setProxy(clsProxy),Ext.ModelManager.onModelDefined(cls)})}},inheritableStatics:{setProxy:function(proxy){return proxy.isProxy||("string"==typeof proxy&&(proxy={type:proxy}),proxy=Ext.createByAlias("proxy."+proxy.type,proxy)),proxy.setModel(this),this.proxy=this.prototype.proxy=proxy,proxy},getProxy:function(){var proxy=this.proxy;return proxy||(proxy=this.prototype.proxy,proxy.isProxy&&(proxy=proxy.clone()),this.setProxy(proxy))},setFields:function(fields,idProperty,clientIdProperty){var newField,idField,len,i,me=this,idFieldDefined=!1,proto=me.prototype,prototypeFields=proto.fields,superFields=proto.superclass.fields;for(idProperty&&(proto.idProperty=idProperty,idField=idProperty.isField?idProperty:new Ext.data.Field(idProperty)),clientIdProperty&&(proto.clientIdProperty=clientIdProperty),prototypeFields?prototypeFields.clear():prototypeFields=me.prototype.fields=new Ext.util.MixedCollection(!1,function(field){return field.name}),superFields&&(fields=superFields.items.concat(fields)),i=0,len=fields.length;i<len;i++)newField=new Ext.data.Field(fields[i]),idField&&(newField.mapping&&newField.mapping===idField.mapping||newField.name===idField.name)&&(idFieldDefined=!0,newField.defaultValue=void 0),prototypeFields.add(newField);return idField&&!idFieldDefined&&(idField.defaultValue=void 0,prototypeFields.add(idField)),me.fields=prototypeFields,prototypeFields},getFields:function(){return this.prototype.fields.items},load:function(id,config){config=Ext.apply({},config),config=Ext.applyIf(config,{action:"read",id:id});var callback,operation=new Ext.data.Operation(config),scope=config.scope||this;callback=function(operation){var record=null,success=operation.wasSuccessful();success?(record=operation.getRecords()[0],record.hasId()||record.setId(id),Ext.callback(config.success,scope,[record,operation])):Ext.callback(config.failure,scope,[record,operation]),Ext.callback(config.callback,scope,[record,operation,success])},this.getProxy().read(operation,callback,this)}},statics:{PREFIX:"ext-record",AUTO_ID:1,EDIT:"edit",REJECT:"reject",COMMIT:"commit",id:function(rec){var id=[this.PREFIX,"-",this.AUTO_ID++].join("");return rec.phantom=!0,rec.internalId=id,id}},idgen:{isGenerator:!0,type:"default",generate:function(){return null},getRecId:function(rec){return rec.modelName+"-"+rec.internalId}},editing:!1,dirty:!1,persistenceProperty:"data",evented:!1,isModel:!0,phantom:!1,idProperty:"id",clientIdProperty:null,defaultProxyType:"ajax",emptyData:[],constructor:function(data,id,raw,convertedData){var hasId,fields,length,field,name,value,newId,persistenceProperty,i,me=this,passedId=id||0===id,idProperty=me.idProperty,idField=me.idField;if(me.raw=raw||data,me.modified={},"data"!==me.persistenceProperty&&Ext.log.warn(this.$className,"The persistenceProperty will be deprecated, all data will be stored in the underlying data property."),persistenceProperty=me[me.persistenceProperty]=convertedData||{},me.data=me[me.persistenceProperty],me.mixins.observable.constructor.call(me),!convertedData)if(data?!passedId&&idProperty&&(id=data[idProperty],hasId=id||0===id):data=me.emptyData,fields=me.fields.items,length=fields.length,i=0,Ext.isArray(data))for(;i<length;i++)field=fields[i],name=field.name,value=data[field.originalIndex],void 0===value&&(value=field.defaultValue),field.convert&&(value=field.convert(value,me)),void 0!==value&&(persistenceProperty[name]=value);else for(;i<length;i++)field=fields[i],name=field.name,value=data[name],void 0===value&&(value=field.defaultValue),field.convert&&(value=field.convert(value,me)),void 0!==value&&(persistenceProperty[name]=value);me.stores=[],passedId?(hasId=!0,persistenceProperty[idProperty]=idField&&idField.convert?idField.convert(id):id):hasId||null!=(newId=me.idgen.generate())&&(me.preventInternalUpdate=!0,me.setId(newId),delete me.preventInternalUpdate),me.internalId=hasId?id:Ext.data.Model.id(me),"function"==typeof me.init&&me.init(),me.id=me.idgen.getRecId(me)},get:function(field){return this[this.persistenceProperty][field]},_singleProp:{},set:function(fieldName,newValue){var currentValue,field,idChanged,key,modifiedFieldNames,name,oldId,newId,value,values,me=this,data=me[me.persistenceProperty],fields=me.fields,modified=me.modified,single="string"==typeof fieldName;single?(values=me._singleProp,values[fieldName]=newValue):values=fieldName;for(name in values)if(values.hasOwnProperty(name)){if(value=values[name],fields&&(field=fields.get(name))&&field.convert&&(value=field.convert(value,me)),currentValue=data[name],me.isEqual(currentValue,value))continue;if(data[name]=value,(modifiedFieldNames||(modifiedFieldNames=[])).push(name),field&&field.persist)if(modified.hasOwnProperty(name)){if(me.isEqual(modified[name],value)){delete modified[name],me.dirty=!1;for(key in modified)if(modified.hasOwnProperty(key)){me.dirty=!0;break}}}else me.dirty=!0,modified[name]=currentValue;name==me.idProperty&&(idChanged=!0,oldId=currentValue,newId=value)}return single&&delete values[fieldName],idChanged&&me.changeId(oldId,newId),!me.editing&&modifiedFieldNames&&me.afterEdit(modifiedFieldNames),modifiedFieldNames||null},copyFrom:function(sourceRecord){var field,myData,sourceData,name,value,me=this,fields=me.fields.items,fieldCount=fields.length,modifiedFieldNames=[],i=0,idProperty=me.idProperty;if(sourceRecord){for(myData=me[me.persistenceProperty],sourceData=sourceRecord[sourceRecord.persistenceProperty];i<fieldCount;i++)field=fields[i],(name=field.name)!=idProperty&&(void 0===(value=sourceData[name])||me.isEqual(myData[name],value)||(myData[name]=value,modifiedFieldNames.push(name)));me.phantom&&!sourceRecord.phantom&&(me.beginEdit(),me.setId(sourceRecord.getId()),me.endEdit(!0),me.commit(!0))}return modifiedFieldNames},isEqual:function(a,b){return a instanceof Date&&b instanceof Date?a.getTime()===b.getTime():a===b},beginEdit:function(){var key,data,o,me=this;if(!me.editing){me.editing=!0,me.dirtySave=me.dirty,o=me[me.persistenceProperty],data=me.dataSave={};for(key in o)o.hasOwnProperty(key)&&(data[key]=o[key]);o=me.modified,data=me.modifiedSave={};for(key in o)o.hasOwnProperty(key)&&(data[key]=o[key])}},cancelEdit:function(){var me=this;me.editing&&(me.editing=!1,me.modified=me.modifiedSave,me[me.persistenceProperty]=me.dataSave,me.dirty=me.dirtySave,me.modifiedSave=me.dataSave=me.dirtySave=null)},endEdit:function(silent,modifiedFieldNames){var dataSave,me=this;silent=!0===silent,me.editing&&(me.editing=!1,dataSave=me.dataSave,me.modifiedSave=me.dataSave=me.dirtySave=null,silent||(modifiedFieldNames||(modifiedFieldNames=me.getModifiedFieldNames(dataSave)),(me.dirty||modifiedFieldNames.length>0)&&me.afterEdit(modifiedFieldNames)))},getModifiedFieldNames:function(saved){var key,me=this,data=me[me.persistenceProperty],modified=[];saved=saved||me.dataSave;for(key in data)data.hasOwnProperty(key)&&(me.isEqual(data[key],saved[key])||modified.push(key));return modified},getChanges:function(){var field,modified=this.modified,changes={};for(field in modified)modified.hasOwnProperty(field)&&(changes[field]=this.get(field));return changes},isModified:function(fieldName){return this.modified.hasOwnProperty(fieldName)},setDirty:function(){var field,name,f,me=this,fields=me.fields.items,fLen=fields.length;for(me.dirty=!0,f=0;f<fLen;f++)field=fields[f],field.persist&&(name=field.name,me.modified[name]=me.get(name))},markDirty:function(){return Ext.log.warn("Ext.data.Model: markDirty has been deprecated. Use setDirty instead."),this.setDirty.apply(this,arguments)},reject:function(silent){var field,me=this,modified=me.modified;for(field in modified)modified.hasOwnProperty(field)&&"function"!=typeof modified[field]&&(me[me.persistenceProperty][field]=modified[field]);me.dirty=!1,me.editing=!1,me.modified={},!0!==silent&&me.afterReject()},commit:function(silent,modifiedFieldNames){var me=this;me.phantom=me.dirty=me.editing=!1,me.modified={},!0!==silent&&me.afterCommit(modifiedFieldNames)},copy:function(newId){var me=this;return new me.self(me.raw,newId,null,Ext.apply({},me[me.persistenceProperty]))},setProxy:function(proxy){return proxy.isProxy||("string"==typeof proxy&&(proxy={type:proxy}),proxy=Ext.createByAlias("proxy."+proxy.type,proxy)),proxy.setModel(this.self),this.proxy=proxy,proxy},getProxy:function(){return this.hasOwnProperty("proxy")?this.proxy:this.self.getProxy()},validate:function(){var length,validation,field,type,i,errors=new Ext.data.Errors,validations=this.validations,validators=Ext.data.validations;if(validations)for(length=validations.length,i=0;i<length;i++)validation=validations[i],field=validation.field||validation.name,type=validation.type,validators[type](validation,this.get(field))||errors.add({field:field,message:validation.message||validators[type+"Message"]});return errors},isValid:function(){return this.validate().isValid()},save:function(options){options=Ext.apply({},options);var storeCount,store,operation,callback,me=this,action=me.phantom?"create":"update",scope=options.scope||me,stores=me.stores,i=0;return Ext.apply(options,{records:[me],action:action}),operation=new Ext.data.Operation(options),callback=function(operation){var success=operation.wasSuccessful();if(success){for(storeCount=stores.length;i<storeCount;i++)store=stores[i],store.fireEvent("write",store,operation),store.fireEvent("datachanged",store);Ext.callback(options.success,scope,[me,operation])}else Ext.callback(options.failure,scope,[me,operation]);Ext.callback(options.callback,scope,[me,operation,success])},me.getProxy()[action](operation,callback,me),me},destroy:function(options){options=Ext.apply({records:[this],action:"destroy"},options);var stores,storeCount,store,args,operation,callback,me=this,isNotPhantom=!0!==me.phantom,scope=options.scope||me,i=0;return operation=new Ext.data.Operation(options),callback=function(operation){if(args=[me,operation],stores=Ext.Array.clone(me.stores),operation.wasSuccessful()){for(storeCount=stores.length;i<storeCount;i++)store=stores[i],store.remove?store.remove(me,!0):store.fireEvent("bulkremove",store,[me],[store.indexOf(me)],!1),isNotPhantom&&store.fireEvent("write",store,operation);me.clearListeners(),Ext.callback(options.success,scope,args)}else Ext.callback(options.failure,scope,args);Ext.callback(options.callback,scope,args)},isNotPhantom?me.getProxy().destroy(operation,callback,me):(operation.complete=operation.success=!0,operation.resultSet=me.getProxy().reader.nullResultSet,callback(operation)),me},getId:function(){return this.get(this.idField.name)},getObservableId:function(){return this.id},setId:function(id){this.set(this.idProperty,id)},changeId:function(oldId,newId){var hasOldId,hasId,oldInternalId,me=this;me.preventInternalUpdate||(hasOldId=me.hasId(oldId),hasId=me.hasId(newId),oldInternalId=me.internalId,me.phantom=!hasId,(hasId!==hasOldId||hasId&&hasOldId)&&(me.internalId=hasId?newId:Ext.data.Model.id(me)),me.fireEvent("idchanged",me,oldId,newId,oldInternalId),me.callStore("onIdChanged",oldId,newId,oldInternalId))},hasId:function(id){return 0===arguments.length&&(id=this.getId()),!(!id&&0!==id)},join:function(store){var me=this;me.stores.length?Ext.Array.include(this.stores,store):me.stores[0]=store,this.store=this.stores[0]},unjoin:function(store){Ext.Array.remove(this.stores,store),this.store=this.stores[0]||null},afterEdit:function(modifiedFieldNames){this.callStore("afterEdit",modifiedFieldNames)},afterReject:function(){this.callStore("afterReject")},afterCommit:function(modifiedFieldNames){this.callStore("afterCommit",modifiedFieldNames)},callStore:function(fn){var store,args=Ext.Array.clone(arguments),stores=this.stores,i=0,len=stores.length;for(args[0]=this;i<len;++i)(store=stores[i])&&Ext.isFunction(store[fn])&&store[fn].apply(store,args)},getData:function(includeAssociated){var name,f,me=this,fields=me.fields.items,fLen=fields.length,data={};for(f=0;f<fLen;f++)name=fields[f].name,data[name]=me.get(name);return!0===includeAssociated&&Ext.apply(data,me.getAssociatedData()),data},getAssociatedData:function(){return this.prepareAssociatedData({},1)},prepareAssociatedData:function(seenKeys,depth){var associatedStore,associatedRecords,associatedRecord,o,index,result,seenDepth,associationId,associatedRecordCount,association,i,j,type,name,me=this,associations=me.associations.items,associationCount=associations.length,associationData={},toRead=[],toReadKey=[],toReadIndex=[];for(i=0;i<associationCount;i++)if(association=associations[i],associationId=association.associationId,!(seenDepth=seenKeys[associationId])||seenDepth===depth)if(seenKeys[associationId]=depth,type=association.type,name=association.name,"hasMany"==type){if(associatedStore=me[association.storeName],associationData[name]=[],associatedStore&&associatedStore.getCount()>0)for(associatedRecords=associatedStore.data.items,associatedRecordCount=associatedRecords.length,j=0;j<associatedRecordCount;j++)associatedRecord=associatedRecords[j],associationData[name][j]=associatedRecord.getData(),toRead.push(associatedRecord),toReadKey.push(name),toReadIndex.push(j)}else"belongsTo"!=type&&"hasOne"!=type||void 0!==(associatedRecord=me[association.instanceName])&&(associationData[name]=associatedRecord.getData(),toRead.push(associatedRecord),toReadKey.push(name),toReadIndex.push(-1));for(i=0,associatedRecordCount=toRead.length;i<associatedRecordCount;++i)associatedRecord=toRead[i],o=associationData[toReadKey[i]],index=toReadIndex[i],result=associatedRecord.prepareAssociatedData(seenKeys,depth+1),-1===index?Ext.apply(o,result):Ext.apply(o[index],result);return associationData}});Ext.define("Ext.data.proxy.Server",{extend:"Ext.data.proxy.Proxy",alias:"proxy.server",alternateClassName:"Ext.data.ServerProxy",uses:["Ext.data.Request"],pageParam:"page",startParam:"start",limitParam:"limit",groupParam:"group",groupDirectionParam:"groupDir",sortParam:"sort",filterParam:"filter",directionParam:"dir",idParam:"id",simpleSortMode:!1,simpleGroupMode:!1,noCache:!0,cacheString:"_dc",timeout:3e4,constructor:function(config){var me=this;config=config||{},me.callParent([config]),me.extraParams=config.extraParams||{},me.api=Ext.apply({},config.api||me.api),me.nocache=me.noCache},create:function(){return this.doRequest.apply(this,arguments)},read:function(){return this.doRequest.apply(this,arguments)},update:function(){return this.doRequest.apply(this,arguments)},destroy:function(){return this.doRequest.apply(this,arguments)},setExtraParam:function(name,value){this.extraParams[name]=value},buildRequest:function(operation){var request,me=this,params=operation.params=Ext.apply({},operation.params,me.extraParams);return Ext.applyIf(params,me.getParams(operation)),void 0!==operation.id&&void 0===params[me.idParam]&&(params[me.idParam]=operation.id),request=new Ext.data.Request({params:params,action:operation.action,records:operation.records,operation:operation,url:operation.url,proxy:me}),request.url=me.buildUrl(request),operation.request=request,request},processResponse:function(success,operation,request,response,callback,scope){var reader,result,me=this;!0===success?(reader=me.getReader(),reader.applyDefaults="read"===operation.action,result=reader.read(me.extractResponseData(response)),!1!==result.success?(Ext.apply(operation,{response:response,resultSet:result}),operation.commitRecords(result.records),operation.setCompleted(),operation.setSuccessful()):(operation.setException(result.message),me.fireEvent("exception",this,response,operation))):(me.setException(operation,response),me.fireEvent("exception",this,response,operation)),"function"==typeof callback&&callback.call(scope||me,operation),me.afterRequest(request,success)},setException:function(operation,response){operation.setException({status:response.status,statusText:response.statusText})},extractResponseData:Ext.identityFn,applyEncoding:function(value){return Ext.encode(value)},encodeSorters:function(sorters){for(var min=[],length=sorters.length,i=0;i<length;i++)min[i]={property:sorters[i].property,direction:sorters[i].direction};return this.applyEncoding(min)},encodeFilters:function(filters){for(var min=[],length=filters.length,i=0;i<length;i++)min[i]={property:filters[i].property,value:filters[i].value};return this.applyEncoding(min)},getParams:function(operation){var hasGroups,index,me=this,params={},isDef=Ext.isDefined,groupers=operation.groupers,sorters=operation.sorters,filters=operation.filters,page=operation.page,start=operation.start,limit=operation.limit,simpleSortMode=me.simpleSortMode,simpleGroupMode=me.simpleGroupMode,pageParam=me.pageParam,startParam=me.startParam,limitParam=me.limitParam,groupParam=me.groupParam,groupDirectionParam=me.groupDirectionParam,sortParam=me.sortParam,filterParam=me.filterParam,directionParam=me.directionParam;return pageParam&&isDef(page)&&(params[pageParam]=page),startParam&&isDef(start)&&(params[startParam]=start),limitParam&&isDef(limit)&&(params[limitParam]=limit),hasGroups=groupParam&&groupers&&groupers.length>0,hasGroups&&(simpleGroupMode?(params[groupParam]=groupers[0].property,params[groupDirectionParam]=groupers[0].direction||"ASC"):params[groupParam]=me.encodeSorters(groupers)),sortParam&&sorters&&sorters.length>0&&(simpleSortMode?(index=0,sorters.length>1&&hasGroups&&(index=1),params[sortParam]=sorters[index].property,params[directionParam]=sorters[index].direction):params[sortParam]=me.encodeSorters(sorters)),filterParam&&filters&&filters.length>0&&(params[filterParam]=me.encodeFilters(filters)),params},buildUrl:function(request){var me=this,url=me.getUrl(request);return url||Ext.Error.raise("You are using a ServerProxy but have not supplied it with a url."),me.noCache&&(url=Ext.urlAppend(url,Ext.String.format("{0}={1}",me.cacheString,Ext.Date.now()))),url},getUrl:function(request){return request.url||this.api[request.action]||this.url},doRequest:function(operation,callback,scope){Ext.Error.raise("The doRequest function has not been implemented on your Ext.data.proxy.Server subclass. See src/data/ServerProxy.js for details")},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}});Ext.define("Ext.data.proxy.Ajax",{requires:["Ext.Ajax"],extend:"Ext.data.proxy.Server",alias:"proxy.ajax",alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},defaultActionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:!1,paramsAsJson:!1,doRequest:function(operation,callback,scope){var me=this,writer=me.getWriter(),request=me.buildRequest(operation),method=me.getMethod(request);return operation.allowWrite()&&(request=writer.write(request)),Ext.apply(request,{binary:me.binary,headers:me.headers,timeout:me.timeout,scope:me,callback:me.createRequestCallback(request,operation,callback,scope),method:method,disableCaching:!1}),"GET"!==method.toUpperCase()&&me.paramsAsJson&&(request=Ext.apply({jsonData:request.params},request),delete request.params),Ext.Ajax.request(request),request},getMethod:function(request){var method,actions=this.actionMethods,action=request.action;return actions&&(method=actions[action]),method||this.defaultActionMethods[action]},createRequestCallback:function(request,operation,callback,scope){var me=this;return function(options,success,response){me.processResponse(success,operation,request,response,callback,scope)}}});Ext.define("Ext.data.proxy.Client",{extend:"Ext.data.proxy.Proxy",alternateClassName:"Ext.data.ClientProxy",isSynchronous:!0,clear:function(){Ext.Error.raise("The Ext.data.proxy.Client subclass that you are using has not defined a 'clear' function. See src/data/ClientProxy.js for details.")}});Ext.define("Ext.data.proxy.Memory",{extend:"Ext.data.proxy.Client",alias:"proxy.memory",alternateClassName:"Ext.data.MemoryProxy",constructor:function(config){this.callParent([config]),this.setReader(this.reader)},updateOperation:function(operation,callback,scope){var i=0,recs=operation.getRecords(),len=recs.length;for(i;i<len;i++)recs[i].commit();operation.setCompleted(),operation.setSuccessful(),Ext.callback(callback,scope||this,[operation])},create:function(){this.updateOperation.apply(this,arguments)},update:function(){this.updateOperation.apply(this,arguments)},destroy:function(){this.updateOperation.apply(this,arguments)},read:function(operation,callback,scope){var me=this,resultSet=operation.resultSet=me.getReader().read(me.data),records=resultSet.records,sorters=operation.sorters,groupers=operation.groupers,filters=operation.filters;operation.setCompleted(),resultSet.success&&(filters&&filters.length&&(records=resultSet.records=Ext.Array.filter(records,Ext.util.Filter.createFilterFn(filters)),resultSet.total=records.length),groupers&&groupers.length&&(sorters=sorters?sorters.concat(groupers):sorters),sorters&&sorters.length&&(resultSet.records=Ext.Array.sort(records,Ext.util.Sortable.createComparator(sorters))),me.enablePaging&&void 0!==operation.start&&void 0!==operation.limit&&(operation.start>=resultSet.total?(resultSet.success=!1,resultSet.count=0,resultSet.records=[]):(resultSet.records=Ext.Array.slice(resultSet.records,operation.start,operation.start+operation.limit),resultSet.count=resultSet.records.length))),resultSet.success?operation.setSuccessful():me.fireEvent("exception",me,null,operation),Ext.callback(callback,scope||me,[operation])},clear:Ext.emptyFn});Ext.define("Ext.util.LruCache",{extend:"Ext.util.HashMap",constructor:function(config){Ext.apply(this,config),this.callParent([config])},add:function(key,newValue){var entry,me=this,existingKey=me.findKey(newValue);return existingKey?(me.unlinkEntry(entry=me.map[existingKey]),entry.prev=me.last,entry.next=null):entry={prev:me.last,next:null,key:key,value:newValue},me.last?me.last.next=entry:me.first=entry,me.last=entry,me.callParent([key,entry]),me.prune(),newValue},insertBefore:function(key,newValue,sibling){var existingKey,entry,me=this;return(sibling=this.map[this.findKey(sibling)])?(existingKey=me.findKey(newValue),existingKey?me.unlinkEntry(entry=me.map[existingKey]):entry={prev:sibling.prev,next:sibling,key:key,value:newValue},sibling.prev?entry.prev.next=entry:me.first=entry,entry.next=sibling,sibling.prev=entry,me.prune(),newValue):me.add(key,newValue)},get:function(key){var entry=this.map[key];if(entry)return entry.next&&this.moveToEnd(entry),entry.value},removeAtKey:function(key){return this.unlinkEntry(this.map[key]),this.callParent(arguments)},clear:function(initial){return this.first=this.last=null,this.callParent(arguments)},unlinkEntry:function(entry){entry&&(entry.next?entry.next.prev=entry.prev:this.last=entry.prev,entry.prev?entry.prev.next=entry.next:this.first=entry.next,entry.prev=entry.next=null)},moveToEnd:function(entry){this.unlinkEntry(entry),(entry.prev=this.last)?this.last.next=entry:this.first=entry,this.last=entry},getArray:function(isKey){for(var arr=[],entry=this.first;entry;)arr.push(isKey?entry.key:entry.value),entry=entry.next;return arr},each:function(fn,scope,reverse){var me=this,entry=reverse?me.last:me.first,length=me.length;for(scope=scope||me;entry&&!1!==fn.call(scope,entry.key,entry.value,length);)entry=reverse?entry.prev:entry.next;return me},findKey:function(value){var key,map=this.map;for(key in map)if(map.hasOwnProperty(key)&&map[key].value===value)return key},clone:function(){var key,newCache=new this.self(this.initialConfig),map=this.map;newCache.suspendEvents();for(key in map)map.hasOwnProperty(key)&&newCache.add(key,map[key].value);return newCache.resumeEvents(),newCache},prune:function(){var me=this,purgeCount=me.maxSize?me.length-me.maxSize:0;if(purgeCount>0)for(;me.first&&purgeCount;purgeCount--)me.removeAtKey(me.first.key)}});Ext.define("Ext.data.PageMap",{extend:"Ext.util.LruCache",clear:function(initial){var me=this;me.pageMapGeneration=(me.pageMapGeneration||0)+1,me.callParent(arguments)},forEach:function(fn,scope){var i,j,pageNumber,page,pageSize,me=this,pageNumbers=Ext.Object.getKeys(me.map),pageCount=pageNumbers.length;for(i=0;i<pageCount;i++)pageNumbers[i]=Number(pageNumbers[i]);for(Ext.Array.sort(pageNumbers),scope=scope||me,i=0;i<pageCount;i++)for(pageNumber=pageNumbers[i],page=me.getPage(pageNumber),pageSize=page.length,j=0;j<pageSize;j++)if(!1===fn.call(scope,page[j],(pageNumber-1)*me.pageSize+j))return},findBy:function(fn,scope){var me=this,result=null;return scope=scope||me,me.forEach(function(rec,index){if(fn.call(scope,rec,index))return result=rec,!1}),result},findIndexBy:function(fn,scope){var me=this,result=-1;return scope=scope||me,me.forEach(function(rec,index){if(fn.call(scope,rec))return result=index,!1}),result},getPageFromRecordIndex:function(){return Ext.data.Store.prototype.getPageFromRecordIndex.apply(this,arguments)},addAll:function(records){this.getCount()&&Ext.Error.raise("Cannot addAll to a non-empty PageMap"),this.addPage(1,records)},addPage:function(pageNumber,records){var startIdx,page,me=this,lastPage=pageNumber+Math.floor((records.length-1)/me.pageSize);for(startIdx=0;pageNumber<=lastPage;pageNumber++,startIdx+=me.pageSize)page=Ext.Array.slice(records,startIdx,startIdx+me.pageSize),me.add(pageNumber,page),me.fireEvent("pageAdded",pageNumber,page)},getCount:function(){var result=this.callParent();return result&&(result=(result-1)*this.pageSize+this.last.value.length),result},indexOf:function(record){return record?record.index:-1},insert:function(){Ext.Error.raise("insert operation not suppported into buffered Store")},remove:function(){Ext.Error.raise("remove operation not suppported from buffered Store")},removeAt:function(){Ext.Error.raise("removeAt operation not suppported from buffered Store")},getPage:function(pageNumber){return this.get(pageNumber)},hasRange:function(start,end){for(var pageNumber=this.getPageFromRecordIndex(start),endPageNumber=this.getPageFromRecordIndex(end);pageNumber<=endPageNumber;pageNumber++)if(!this.hasPage(pageNumber))return!1;return!0},hasPage:function(pageNumber){return!!this.get(pageNumber)},getAt:function(index){return this.getRange(index,index)[0]},getRange:function(start,end){this.hasRange(start,end)||Ext.Error.raise("PageMap asked for range which it does not have");for(var sliceBegin,sliceEnd,doSlice,len,me=this,startPageNumber=me.getPageFromRecordIndex(start),endPageNumber=me.getPageFromRecordIndex(end),dataStart=(startPageNumber-1)*me.pageSize,dataEnd=endPageNumber*me.pageSize-1,pageNumber=startPageNumber,result=[],i=0;pageNumber<=endPageNumber;pageNumber++)pageNumber==startPageNumber?(sliceBegin=start-dataStart,doSlice=!0):(sliceBegin=0,doSlice=!1),pageNumber==endPageNumber&&(sliceEnd=me.pageSize-(dataEnd-end),doSlice=!0),doSlice?Ext.Array.push(result,Ext.Array.slice(me.getPage(pageNumber),sliceBegin,sliceEnd)):Ext.Array.push(result,me.getPage(pageNumber));for(len=result.length;i<len;i++)result[i].index=start++;return result}});Ext.define("Ext.data.Group",{extend:"Ext.util.Observable",key:void 0,dirty:!0,constructor:function(){this.callParent(arguments),this.records=[]},contains:function(record){return-1!==Ext.Array.indexOf(this.records,record)},add:function(records){Ext.Array.push(this.records,records),this.dirty=!0},remove:function(records){Ext.isArray(records)||(records=[records]);var i,len=records.length;for(i=0;i<len;++i)Ext.Array.remove(this.records,records[i]);this.dirty=!0},isDirty:function(){return this.dirty},hasAggregate:function(){return!!this.aggregate},setDirty:function(){this.dirty=!0},commit:function(){this.dirty=!1},isCollapsed:function(){return this.collapsed},getAggregateRecord:function(forceNew){var Model,me=this;return!0!==forceNew&&!me.dirty&&me.aggregate||(Model=me.store.model,me.aggregate=new Model,me.aggregate.isSummary=!0),me.aggregate}});Ext.define("Ext.data.Store",{extend:"Ext.data.AbstractStore",alias:"store.store",requires:["Ext.data.StoreManager","Ext.data.Model","Ext.data.proxy.Ajax","Ext.data.proxy.Memory","Ext.data.reader.Json","Ext.data.writer.Json","Ext.data.PageMap","Ext.data.Group"],uses:["Ext.ModelManager","Ext.util.Grouper"],remoteSort:!1,remoteFilter:!1,remoteGroup:!1,groupField:void 0,groupDir:"ASC",trailingBufferZone:25,leadingBufferZone:200,pageSize:void 0,currentPage:1,clearOnPageLoad:!0,loading:!1,sortOnFilter:!0,buffered:!1,purgePageCount:5,clearRemovedOnLoad:!0,defaultPageSize:25,defaultViewSize:100,addRecordsOptions:{addRecords:!0},statics:{recordIdFn:function(record){return record.internalId},recordIndexFn:function(record){return record.index},grouperIdFn:function(grouper){return grouper.id||grouper.property},groupIdFn:function(group){return group.key}},constructor:function(config){config=Ext.apply({},config);var proxy,data,me=this,groupers=config.groupers||me.groupers,groupField=config.groupField||me.groupField;data=config.data||me.data,data&&(me.inlineData=data,delete config.data),!groupers&&groupField&&(groupers=[{property:groupField,direction:config.groupDir||me.groupDir}],(config.getGroupString||me.getGroupString!==Ext.data.Store.prototype.getGroupString)&&(groupers[0].getGroupString=function(record){return me.getGroupString(record)})),delete config.groupers,me.groupers=new Ext.util.MixedCollection(!1,Ext.data.Store.grouperIdFn),me.groupers.addAll(me.decodeGroupers(groupers)),me.groups=new Ext.util.MixedCollection(!1,Ext.data.Store.groupIdFn),me.callParent([config]),me.buffered?(me.data=new Ext.data.PageMap({store:me,keyFn:Ext.data.Store.recordIdFn,pageSize:me.pageSize,maxSize:me.purgePageCount,listeners:{clear:me.onPageMapClear,scope:me}}),me.pageRequests={},me.remoteSort=me.remoteGroup=me.remoteFilter=!0,me.sortOnLoad=!1,me.filterOnLoad=!1):me.data=new Ext.util.MixedCollection({getKey:Ext.data.Store.recordIdFn,maintainIndices:!0}),me.remoteGroup&&(me.remoteSort=!0),me.sorters.insert(0,me.groupers.getRange()),proxy=me.proxy,data=me.inlineData,me.buffered||me.pageSize||(me.pageSize=me.defaultPageSize),data?(proxy instanceof Ext.data.proxy.Memory?(proxy.data=data,me.read()):me.add.apply(me,[data]),me.sorters.items.length&&!me.remoteSort&&me.group(null,null,!0),delete me.inlineData):me.autoLoad&&Ext.defer(me.load,1,me,["object"==typeof me.autoLoad?me.autoLoad:void 0])},onBeforeSort:function(){var groupers=this.groupers;groupers.getCount()>0&&this.sort(groupers.items,"prepend",!1)},decodeGroupers:function(groupers){Ext.isArray(groupers)||(groupers=void 0===groupers?[]:[groupers]);var config,i,length=groupers.length,Grouper=Ext.util.Grouper,result=[];for(i=0;i<length;i++)config=groupers[i],config instanceof Grouper?result.push(config):(Ext.isString(config)&&(config={property:config}),config=Ext.apply({root:"data",direction:"ASC"},config),config.fn&&(config.sorterFn=config.fn),"function"==typeof config&&(config={sorterFn:config}),result.push(new Grouper(config)));return result},group:function(groupers,direction,suppressEvent){var grouper,newGroupers,me=this;groupers&&(me.sorters.removeAll(me.groupers.items),Ext.isArray(groupers)?newGroupers=groupers:Ext.isObject(groupers)?newGroupers=[groupers]:Ext.isString(groupers)&&(grouper=me.groupers.get(groupers),grouper?void 0===direction?grouper.toggle():grouper.setDirection(direction):(grouper={property:groupers,direction:direction||"ASC"},newGroupers=[grouper])),newGroupers&&newGroupers.length&&(me.groupers.clear(),me.groupers.addAll(me.decodeGroupers(newGroupers))),me.sorters.insert(0,me.groupers.items)),me.remoteGroup?me.buffered?(me.data.clear(),me.loadPage(1,{groupChange:!0})):me.load({scope:me,callback:suppressEvent?null:me.fireGroupChange}):(me.doSort(me.generateComparator()),me.constructGroups(),suppressEvent||me.fireGroupChange())},getGroupField:function(){var group,first=this.groupers.first();return first&&(group=first.property),group},constructGroups:function(){var groupValue,i,group,rec,me=this,data=this.data.items,len=data.length,groups=me.groups;if(groups.clear(),me.isGrouped())for(i=0;i<len;++i)rec=data[i],groupValue=me.getGroupString(rec),group=groups.get(groupValue),group||(group=new Ext.data.Group({key:groupValue,store:me}),groups.add(group)),group.add(rec)},clearGrouping:function(){var g,me=this,groupers=me.groupers.items,gLen=groupers.length;for(g=0;g<gLen;g++)me.sorters.remove(groupers[g]);me.groupers.clear(),me.remoteGroup?me.buffered?(me.data.clear(),me.loadPage(1,{groupChange:!0})):me.load({scope:me,callback:me.fireGroupChange}):(me.groups.clear(),me.sorters.length?me.sort():(me.fireEvent("datachanged",me),me.fireEvent("refresh",me)),me.fireGroupChange())},isGrouped:function(){return this.groupers.getCount()>0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(requestGroupString){var record,groupStr,group,i,records=this.data.items,length=records.length,groups=[],pointers={};for(i=0;i<length;i++)record=records[i],groupStr=this.getGroupString(record),group=pointers[groupStr],void 0===group&&(group={name:groupStr,children:[]},groups.push(group),pointers[groupStr]=group),group.children.push(record);return requestGroupString?pointers[requestGroupString]:groups},getGroupsForGrouper:function(records,grouper){var oldValue,newValue,record,group,i,length=records.length,groups=[];for(i=0;i<length;i++)record=records[i],newValue=grouper.getGroupString(record),newValue!==oldValue&&(group={name:newValue,grouper:grouper,records:[]},groups.push(group)),group.records.push(record),oldValue=newValue;return groups},getGroupsForGrouperIndex:function(records,grouperIndex){var i,me=this,groupers=me.groupers,grouper=groupers.getAt(grouperIndex),groups=me.getGroupsForGrouper(records,grouper),length=groups.length;if(grouperIndex+1<groupers.length)for(i=0;i<length;i++)groups[i].children=me.getGroupsForGrouperIndex(groups[i].records,grouperIndex+1);for(i=0;i<length;i++)groups[i].depth=grouperIndex;return groups},getGroupData:function(sort){var me=this;return!1!==sort&&me.sort(),me.getGroupsForGrouperIndex(me.data.items,0)},getGroupString:function(instance){var group=this.groupers.first();return group?group.getGroupString(instance):""},insert:function(index,records){var i,len,record,out,me=this,sync=!1,defaults=me.modelDefaults;if(out=Ext.isIterable(records)?[]:records=[records],len=records.length){for(i=0;i<len;i++)record=records[i],record.isModel||(record=me.createModel(record)),out[i]=record,defaults&&record.set(defaults),record.join(me),sync=sync||!0===record.phantom;me.data.insert(index,out),me.snapshot&&me.snapshot.addAll(out),me.requireSort&&(me.suspendEvents(),me.sort(),me.resumeEvents()),me.isGrouped()&&me.updateGroupsOnAdd(out),me.fireEvent("add",me,out,index),me.fireEvent("datachanged",me),me.autoSync&&sync&&!me.autoSyncSuspended&&me.sync()}return out},updateGroupsOnAdd:function(records){var i,groupName,group,rec,me=this,groups=me.groups,len=records.length;for(i=0;i<len;++i)rec=records[i],groupName=me.getGroupString(rec),group=groups.getByKey(groupName),group||(group=groups.add(new Ext.data.Group({key:groupName,store:me}))),group.add(rec)},updateGroupsOnRemove:function(records){var i,groupName,group,rec,me=this,groups=me.groups,len=records.length;for(i=0;i<len;++i)rec=records[i],groupName=me.getGroupString(rec),(group=groups.getByKey(groupName))&&(group.remove(rec),0===group.records.length&&groups.remove(group))},updateGroupsOnUpdate:function(record,modifiedFieldNames){var len,i,items,group,me=this,groupField=me.getGroupField(),groupName=me.getGroupString(record),groups=me.groups;if(modifiedFieldNames&&Ext.Array.contains(modifiedFieldNames,groupField)){for(me.buffered&&Ext.Error.raise({msg:"Cannot move records between groups in a buffered store record"}),items=groups.items,i=0,len=items.length;i<len;++i)if(group=items[i],group.contains(record)){group.remove(record);break}group=groups.getByKey(groupName),group||(group=groups.add(new Ext.data.Group({key:groupName,store:me}))),group.add(record),me.data.remove(record),me.data.insert(me.data.findInsertionIndex(record,me.generateComparator()),record)}else groups.getByKey(groupName).setDirty()},add:function(arg){var records,length,isSorted,me=this;return me.buffered&&Ext.Error.raise({msg:"add method may not be called on a buffered store"}),records=Ext.isArray(arg)?arg:arguments,length=records.length,(isSorted=!me.remoteSort&&me.sorters&&me.sorters.items.length)&&1===length?[me.addSorted(me.createModel(records[0]))]:(isSorted&&(me.requireSort=!0),records=me.insert(me.data.length,records),delete me.requireSort,records)},addSorted:function(record){var me=this,index=me.data.findInsertionIndex(record,me.generateComparator());return me.insert(index,record),record},createModel:function(record){return record.isModel||(record=Ext.ModelManager.create(record,this.model)),record},onUpdate:function(record,type,modifiedFieldNames){this.isGrouped()&&this.updateGroupsOnUpdate(record,modifiedFieldNames)},each:function(fn,scope){var record,d,data=this.data.items,dLen=data.length;for(d=0;d<dLen&&(record=data[d],!1!==fn.call(scope||record,record,d,dLen));d++);},remove:function(records,isMove,silent){isMove=!0===isMove;var length,item,isNotPhantom,index,record,removeRange,removeCount,me=this,sync=!1,snapshot=me.snapshot,data=me.data,i=0,info=[],allRecords=[],indexes=[],fireRemoveEvent=!silent&&me.hasListeners.remove;if(records.isModel?(records=[records],length=1):Ext.isIterable(records)?length=records.length:"object"==typeof records&&(removeRange=!0,i=records.start,length=records.end+1,removeCount=length-i),!removeRange){for(i=0;i<length;++i)record=records[i],"number"==typeof record?(index=record,record=data.getAt(index)):index=me.indexOf(record),record&&index>-1&&info.push({record:record,index:index}),snapshot&&snapshot.remove(record);info=Ext.Array.sort(info,function(o1,o2){var index1=o1.index,index2=o2.index;return index1===o2.index2?0:index1<index2?-1:1}),i=0,length=info.length}if(length){for(;i<length;i++)removeRange?(record=data.getAt(i),index=i):(item=info[i],record=item.record,index=item.index),allRecords.push(record),indexes.push(index),isNotPhantom=!0!==record.phantom,!isMove&&isNotPhantom&&(record.removedFrom=index,me.removed.push(record)),record.unjoin(me),index-=i,sync=sync||isNotPhantom,removeRange||(data.removeAt(index),fireRemoveEvent&&me.fireEvent("remove",me,record,index,!!isMove));removeRange&&data.removeRange(records.start,removeCount),silent||(me.fireEvent("bulkremove",me,allRecords,indexes,!!isMove),me.fireEvent("datachanged",me)),!isMove&&me.autoSync&&sync&&!me.autoSyncSuspended&&me.sync()}},removeAt:function(index,count){var me=this,storeCount=me.getCount();index<=storeCount&&(1===arguments.length?me.remove([index]):count&&me.remove({start:index,end:Math.min(index+count,storeCount)-1}))},removeAll:function(silent){var me=this,snapshot=me.snapshot,data=me.data;snapshot&&snapshot.removeAll(data.getRange()),me.buffered?data&&(silent&&me.suspendEvent("clear"),data.clear(),silent&&me.resumeEvent("clear")):(me.remove({start:0,end:me.getCount()-1},!1,silent),!0!==silent&&me.fireEvent("clear",me))},load:function(options){var me=this;return options="function"==typeof options?{callback:options}:Ext.apply({},options),me.remoteGroup&&!options.groupers&&me.groupers.items.length&&(options.groupers=me.groupers.items),options.page=options.page||me.currentPage,options.start=void 0!==options.start?options.start:(options.page-1)*me.pageSize,options.limit=options.limit||me.pageSize,options.addRecords=options.addRecords||!1,me.buffered?(options.limit=me.viewSize||me.defaultViewSize,options.loadCallback=options.callback,delete options.callback,me.loadToPrefetch(options)):me.callParent([options])},reload:function(options){var startIdx,endIdx,startPage,endPage,i,waitForReload,bufferZone,records,me=this;if(options||(options={}),!me.buffered)return me.callParent(arguments);if(delete me.totalCount,me.data.clear(!0),waitForReload=function(){me.rangeCached(startIdx,endIdx)&&(me.loading=!1,me.data.un("pageAdded",waitForReload),records=me.data.getRange(startIdx,endIdx),me.fireEvent("load",me,records,!0))},bufferZone=Math.ceil((me.leadingBufferZone+me.trailingBufferZone)/2),me.lastRequestStart?(startIdx=me.lastRequestStart,endIdx=me.lastRequestEnd):(startIdx=options.start||0,endIdx=startIdx+(options.count||me.pageSize)-1),startPage=me.getPageFromRecordIndex(Math.max(startIdx-bufferZone,0)),endPage=me.getPageFromRecordIndex(endIdx+bufferZone),!1!==me.fireEvent("beforeload",me,options))for(me.loading=!0,me.data.on("pageAdded",waitForReload),i=startPage;i<=endPage;i++)me.prefetchPage(i,options)},onProxyLoad:function(operation){var me=this,resultSet=operation.getResultSet(),records=operation.getRecords(),successful=operation.wasSuccessful();me.isDestroyed||(resultSet&&(me.totalCount=resultSet.total),me.loading=!1,successful&&me.loadRecords(records,operation),me.hasListeners.load&&me.fireEvent("load",me,records,successful),me.hasListeners.read&&me.fireEvent("read",me,records,successful),Ext.callback(operation.callback,operation.scope||me,[records,operation,successful]))},getNewRecords:function(){return(this.snapshot||this.data).filterBy(this.filterNew).items},getUpdatedRecords:function(){return(this.snapshot||this.data).filterBy(this.filterUpdated).items},filter:function(filters,value){Ext.isString(filters)&&(filters={property:filters,value:value});var i,me=this,decoded=me.decodeFilters(filters),doLocalSort=me.sorters.length&&me.sortOnFilter&&!me.remoteSort,length=decoded.length;for(i=0;i<length;i++)me.filters.replace(decoded[i]);filters=me.filters.items,filters.length&&(me.remoteFilter?(delete me.totalCount,me.buffered?(me.data.clear(),me.loadPage(1)):(me.currentPage=1,me.load())):(me.snapshot=me.snapshot||me.data.clone(),me.data=me.snapshot.filter(filters),me.constructGroups(),doLocalSort?me.sort():(me.fireEvent("datachanged",me),me.fireEvent("refresh",me))),me.fireEvent("filterchange",me,filters))},clearFilter:function(suppressEvent){var me=this;if(me.filters.clear(),me.remoteFilter){if(suppressEvent)return;delete me.totalCount,me.buffered?(me.data.clear(),me.loadPage(1)):(me.currentPage=1,me.load())}else me.isFiltered()&&(me.data=me.snapshot,delete me.snapshot,me.constructGroups(),!0!==suppressEvent&&(me.fireEvent("datachanged",me),me.fireEvent("refresh",me)));me.fireEvent("filterchange",me,me.filters.items)},removeFilter:function(toRemove,applyFilters){var me=this;!me.remoteFilter&&me.isFiltered()&&(toRemove instanceof Ext.util.Filter?me.filters.remove(toRemove):me.filters.removeAtKey(toRemove),!1!==applyFilters?me.filters.length?me.filter():me.clearFilter():me.fireEvent("filterchange",me,me.filters.items))},addFilter:function(filters,applyFilters){var decoded,i,length,me=this;for(decoded=me.decodeFilters(filters),length=decoded.length,i=0;i<length;i++)me.filters.replace(decoded[i]);!1!==applyFilters&&me.filters.length?me.filter():me.fireEvent("filterchange",me,me.filters.items)},isFiltered:function(){var snapshot=this.snapshot;return!(!snapshot||snapshot===this.data)},filterBy:function(fn,scope){var me=this;me.snapshot=me.snapshot||me.data.clone(),me.data=me.queryBy(fn,scope||me),me.fireEvent("datachanged",me),me.fireEvent("refresh",me)},queryBy:function(fn,scope){var me=this;return(me.snapshot||me.data).filterBy(fn,scope||me)},query:function(property,value,anyMatch,caseSensitive,exactMatch){var me=this,queryFn=me.createFilterFn(property,value,anyMatch,caseSensitive,exactMatch),results=me.queryBy(queryFn);return results||(results=new Ext.util.MixedCollection),results},loadData:function(data,append){var i,length=data.length,newData=[];for(i=0;i<length;i++)newData.push(this.createModel(data[i]));this.loadRecords(newData,append?this.addRecordsOptions:void 0)},loadRawData:function(data,append){var me=this,result=me.proxy.reader.read(data),records=result.records;result.success&&(me.totalCount=result.total,me.loadRecords(records,append?me.addRecordsOptions:void 0))},loadRecords:function(records,options){var start,addRecords,me=this,i=0,length=records.length,snapshot=me.snapshot;if(options&&(start=options.start,addRecords=options.addRecords),addRecords?snapshot&&snapshot.addAll(records):(delete me.snapshot,me.clearData(!0)),me.data.addAll(records),void 0!==start)for(;i<length;i++)records[i].index=start+i,records[i].join(me);else for(;i<length;i++)records[i].join(me);me.suspendEvents(),me.filterOnLoad&&!me.remoteFilter&&me.filter(),me.sortOnLoad&&!me.remoteSort&&me.sort(void 0,void 0,void 0,!0),me.resumeEvents(),me.isGrouped()&&me.constructGroups(),me.fireEvent("datachanged",me),me.fireEvent("refresh",me)},loadPage:function(page,options){var me=this;if(me.currentPage=page,options=Ext.apply({page:page,start:(page-1)*me.pageSize,limit:me.pageSize,addRecords:!me.clearOnPageLoad},options),me.buffered)return options.limit=me.viewSize||me.defaultViewSize,options.loadCallback=options.callback,delete options.callback,me.loadToPrefetch(options);me.read(options)},nextPage:function(options){this.loadPage(this.currentPage+1,options)},previousPage:function(options){this.loadPage(this.currentPage-1,options)},clearData:function(isLoad){var records,i,me=this;if(!me.buffered&&me.data)for(records=me.data.items,i=records.length;i--;)records[i].unjoin(me);me.data&&me.data.clear(),(!0!==isLoad||me.clearRemovedOnLoad)&&(me.removed.length=0)},loadToPrefetch:function(options){var i,records,dataSetSize,operation,me=this,prefetchOptions=options,startIdx=options.start,endIdx=options.start+options.limit-1,loadEndIdx=Math.min(endIdx,options.start+(me.viewSize||options.limit)-1),startPage=me.getPageFromRecordIndex(Math.max(startIdx-me.trailingBufferZone,0)),endPage=me.getPageFromRecordIndex(endIdx+me.leadingBufferZone),waitForRequestedRange=function(){me.rangeCached(startIdx,loadEndIdx)&&(me.loading=!1,records=me.data.getRange(startIdx,loadEndIdx),me.data.un("pageAdded",waitForRequestedRange),me.hasListeners.guaranteedrange&&me.guaranteeRange(startIdx,loadEndIdx,options.callback,options.scope),options.loadCallback&&options.loadCallback.call(options.scope||me,records,operation,!0),options.callback&&options.callback.call(options.scope||me,records,startIdx,endIdx,options),me.fireEvent("datachanged",me),me.fireEvent("refresh",me),me.fireEvent("load",me,records,!0),options.groupChange&&me.fireGroupChange())};!isNaN(me.pageSize)&&me.pageSize||Ext.Error.raise("Buffered store configured without a pageSize",me),!1!==me.fireEvent("beforeload",me,options)&&(delete me.totalCount,me.loading=!0,options.callback&&(prefetchOptions=Ext.apply({},options),delete prefetchOptions.callback),me.on("prefetch",function(store,records,successful,op){if(successful)if(operation=op,dataSetSize=me.getTotalCount())for(me.data.on("pageAdded",waitForRequestedRange),loadEndIdx=Math.min(loadEndIdx,dataSetSize-1),endPage=me.getPageFromRecordIndex(Math.min(loadEndIdx+me.leadingBufferZone,dataSetSize-1)),i=startPage+1;i<=endPage;++i)me.prefetchPage(i,prefetchOptions);else me.fireEvent("datachanged",me),me.fireEvent("refresh",me),me.fireEvent("load",me,records,!0);else me.fireEvent("load",me,records,!1)},null,{single:!0}),me.prefetchPage(startPage,prefetchOptions))},prefetch:function(options){var proxy,operation,me=this,pageSize=me.pageSize;return pageSize?(me.lastPageSize&&pageSize!=me.lastPageSize&&Ext.Error.raise("pageSize cannot be dynamically altered"),me.data.pageSize||(me.data.pageSize=pageSize)):me.pageSize=me.data.pageSize=pageSize=options.limit,me.lastPageSize=pageSize,options.page||(options.page=me.getPageFromRecordIndex(options.start),options.start=(options.page-1)*pageSize,options.limit=Math.ceil(options.limit/pageSize)*pageSize),me.pageRequests[options.page]||(options=Ext.apply({action:"read",filters:me.filters.items,sorters:me.sorters.items,groupers:me.groupers.items,pageMapGeneration:me.data.pageMapGeneration},options),operation=new Ext.data.Operation(options),!1!==me.fireEvent("beforeprefetch",me,operation)&&(proxy=me.proxy,me.pageRequests[options.page]=proxy.read(operation,me.onProxyPrefetch,me),proxy.isSynchronous&&delete me.pageRequests[options.page])),me},onPageMapClear:function(){var req,page,me=this,loadingFlag=me.wasLoading,reqs=me.pageRequests;me.data.events.pageadded&&me.data.events.pageadded.clearListeners(),me.loading=!0,me.totalCount=0;for(page in reqs)reqs.hasOwnProperty(page)&&(req=reqs[page],delete reqs[page],delete req.callback);me.fireEvent("clear",me),me.loading=loadingFlag},prefetchPage:function(page,options){var me=this,pageSize=me.pageSize||me.defaultPageSize,start=(page-1)*me.pageSize,total=me.totalCount;void 0!==total&&me.getCount()===total||me.prefetch(Ext.applyIf({page:page,start:start,limit:pageSize},options))},onProxyPrefetch:function(operation){var me=this,resultSet=operation.getResultSet(),records=operation.getRecords(),successful=operation.wasSuccessful(),page=operation.page;operation.pageMapGeneration===me.data.pageMapGeneration&&(resultSet&&(me.totalCount=resultSet.total,me.fireEvent("totalcountchange",me.totalCount)),void 0!==page&&delete me.pageRequests[page],me.loading=!1,me.fireEvent("prefetch",me,records,successful,operation),successful&&me.cachePage(records,operation.page),Ext.callback(operation.callback,operation.scope||me,[records,operation,successful]))},cachePage:function(records,page){var i,me=this,len=records.length;for(Ext.isDefined(me.totalCount)||(me.totalCount=records.length,me.fireEvent("totalcountchange",me.totalCount)),i=0;i<len;i++)records[i].join(me);me.data.addPage(page,records)},rangeCached:function(start,end){return this.data&&this.data.hasRange(start,end)},pageCached:function(page){return this.data&&this.data.hasPage(page)},pagePending:function(page){return!!this.pageRequests[page]},rangeSatisfied:function(start,end){return this.rangeCached(start,end)},getPageFromRecordIndex:function(index){return Math.floor(index/this.pageSize)+1},onGuaranteedRange:function(options){var range,me=this,totalCount=me.getTotalCount(),start=options.prefetchStart,end=options.prefetchEnd>totalCount-1?totalCount-1:options.prefetchEnd;end=Math.max(0,end),start>end&&Ext.log({level:"warn",msg:"Start ("+start+") was greater than end ("+end+") for the range of records requested ("+start+"-"+options.prefetchEnd+")"+(this.storeId?' from store "'+this.storeId+'"':"")}),range=me.data.getRange(start,end),!1!==options.fireEvent&&me.fireEvent("guaranteedrange",range,start,end,options),options.callback&&options.callback.call(options.scope||me,range,start,end,options)},guaranteeRange:function(start,end,callback,scope,options){options=Ext.apply({callback:callback,scope:scope},options),this.getRange(start,end,options)},prefetchRange:function(start,end){var startPage,endPage,page,me=this;if(!me.rangeCached(start,end))for(startPage=me.getPageFromRecordIndex(start),endPage=me.getPageFromRecordIndex(end),me.data.maxSize=me.purgePageCount?endPage-startPage+1+me.purgePageCount:0,page=startPage;page<=endPage;page++)me.pageCached(page)||me.prefetchPage(page)},primeCache:function(start,end,direction){var me=this;-1===direction?(start=Math.max(start-me.leadingBufferZone,0),end=Math.min(end+me.trailingBufferZone,me.totalCount-1)):1===direction?(start=Math.max(Math.min(start-me.trailingBufferZone,me.totalCount-me.pageSize),0),end=Math.min(end+me.leadingBufferZone,me.totalCount-1)):(start=Math.min(Math.max(Math.floor(start-(me.leadingBufferZone+me.trailingBufferZone)/2),0),me.totalCount-me.pageSize),end=Math.min(Math.max(Math.ceil(end+(me.leadingBufferZone+me.trailingBufferZone)/2),0),me.totalCount-1)),me.prefetchRange(start,end)},sort:function(sorters){var me=this;return sorters&&me.buffered&&me.remoteSort&&me.data.clear(),me.callParent(arguments)},doSort:function(sorterFn){var range,ln,i,me=this;if(me.remoteSort)me.buffered?(me.data.clear(),me.loadPage(1)):me.load();else{if(me.buffered&&Ext.Error.raise({msg:"Local sorting may not be used on a buffered store"}),me.data.sortBy(sorterFn),!me.buffered)for(range=me.getRange(),ln=range.length,i=0;i<ln;i++)range[i].index=i;me.fireEvent("datachanged",me),me.fireEvent("refresh",me)}},find:function(property,value,start,anyMatch,caseSensitive,exactMatch){var fn=this.createFilterFn(property,value,anyMatch,caseSensitive,exactMatch);return fn?this.data.findIndexBy(fn,null,start):-1},findRecord:function(){var me=this,index=me.find.apply(me,arguments);return-1!==index?me.getAt(index):null},createFilterFn:function(property,value,anyMatch,caseSensitive,exactMatch){return!Ext.isEmpty(value)&&(value=Ext.util.AbstractMixedCollection.prototype.createValueMatcher(value,anyMatch,caseSensitive,exactMatch),function(r){return value.test(r.data[property])})},findExact:function(property,value,start){return this.data.findIndexBy(function(rec){return rec.isEqual(rec.get(property),value)},this,start)},findBy:function(fn,scope,start){return this.data.findIndexBy(fn,scope,start)},collect:function(dataIndex,allowNull,bypassFilter){var me=this;return(!0===bypassFilter&&me.snapshot?me.snapshot:me.data).collect(dataIndex,"data",allowNull)},getCount:function(){return this.data.getCount()},getTotalCount:function(){return this.totalCount||0},getAt:function(index){return this.data.getAt(index)},getRange:function(start,end,options){options&&options.cb&&(options.callback=options.cb,Ext.Error.raise({msg:"guaranteeRange options.cb is deprecated, use options.callback"}));var requiredStart,requiredEnd,pageAddHandler,result,me=this,maxIndex=me.totalCount-1,lastRequestStart=me.lastRequestStart;return options=Ext.apply({prefetchStart:start,prefetchEnd:end},options),me.buffered?(end=end>=me.totalCount?maxIndex:end,requiredStart=0===start?0:start-1,requiredEnd=end===maxIndex?end:end+1,me.lastRequestStart=start,me.lastRequestEnd=end,me.rangeCached(requiredStart,requiredEnd)?(me.onGuaranteedRange(options),result=me.data.getRange(start,end)):(me.fireEvent("cachemiss",me,start,end),pageAddHandler=function(page,records){me.rangeCached(requiredStart,requiredEnd)&&(me.fireEvent("cachefilled",me,start,end),me.data.un("pageAdded",pageAddHandler),me.onGuaranteedRange(options))},me.data.on("pageAdded",pageAddHandler),me.prefetchRange(start,end)),me.primeCache(start,end,start<lastRequestStart?-1:1)):(result=me.data.getRange(start,end),options.callback&&options.callback.call(options.scope||me,result,start,end,options)),result},getById:function(id){var result=(this.snapshot||this.data).findBy(function(record){return record.getId()===id});return this.buffered&&!result&&Ext.Error.raise("getById called for ID that is not present in local cache"),result},getByInternalId:function(internalId){var result;return this.buffered?(result=(this.snapshot||this.data).findBy(function(record){return record.internalId===internalId}))||Ext.Error.raise("getByInternalId called for internalId that is not present in local cache"):result=this.data.get(internalId),result},indexOf:function(record){return this.data.indexOf(record)},indexOfTotal:function(record){var index=record.index;return index||0===index?index:this.indexOf(record)},indexOfId:function(id){return this.indexOf(this.getById(id))},first:function(grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(function(records){return records.length?records[0]:void 0},me,!0):me.data.first()},last:function(grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(function(records){var len=records.length;return len?records[len-1]:void 0},me,!0):me.data.last()},sum:function(field,grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(me.getSum,me,!0,[field]):me.getSum(me.data.items,field)},getSum:function(records,field){for(var total=0,i=0,len=records.length;i<len;++i)total+=records[i].get(field);return total},count:function(grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(function(records){return records.length},me,!0):me.getCount()},min:function(field,grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(me.getMin,me,!0,[field]):me.getMin(me.data.items,field)},getMin:function(records,field){var value,min,i=1,len=records.length;for(len>0&&(min=records[0].get(field));i<len;++i)(value=records[i].get(field))<min&&(min=value);return min},max:function(field,grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(me.getMax,me,!0,[field]):me.getMax(me.data.items,field)},getMax:function(records,field){var value,max,i=1,len=records.length;for(len>0&&(max=records[0].get(field));i<len;++i)(value=records[i].get(field))>max&&(max=value);return max},average:function(field,grouped){var me=this;return grouped&&me.isGrouped()?me.aggregate(me.getAverage,me,!0,[field]):me.getAverage(me.data.items,field)},getAverage:function(records,field){var i=0,len=records.length,sum=0;if(records.length>0){for(;i<len;++i)sum+=records[i].get(field);return sum/len}return 0},aggregate:function(fn,scope,grouped,args){if(args=args||[],grouped&&this.isGrouped()){var group,i,groups=this.getGroups(),len=groups.length,out={};for(i=0;i<len;++i)group=groups[i],out[group.name]=this.getAggregate(fn,scope||this,group.children,args);return out}return this.getAggregate(fn,scope,this.data.items,args)},getAggregate:function(fn,scope,records,args){return args=args||[],fn.apply(scope||this,[records].concat(args))},onIdChanged:function(rec,oldId,newId,oldInternalId){var snapshot=this.snapshot;snapshot&&snapshot.updateKey(oldInternalId,newId),this.data.updateKey(oldInternalId,newId),this.callParent(arguments)},commitChanges:function(){for(var me=this,recs=me.getModifiedRecords(),len=recs.length,i=0;i<len;i++)recs[i].commit();me.removed.length=0},filterNewOnly:function(item){return!0===item.phantom},getRejectRecords:function(){return Ext.Array.push(this.data.filterBy(this.filterNewOnly).items,this.getUpdatedRecords())},rejectChanges:function(){for(var rec,me=this,recs=me.getRejectRecords(),len=recs.length,i=0;i<len;i++)rec=recs[i],rec.reject(),rec.phantom&&me.remove(rec);for(recs=me.removed,len=recs.length,i=len-1;i>=0;i--)rec=recs[i],me.insert(rec.removedFrom||0,rec),rec.reject();me.removed.length=0}},function(){Ext.regStore("ext-empty-store",{fields:[],proxy:"memory"})});Ext.define("Ext.data.reader.Array",{extend:"Ext.data.reader.Json",alternateClassName:"Ext.data.ArrayReader",alias:"reader.array",totalProperty:void 0,successProperty:void 0,createFieldAccessExpression:function(field,fieldVarName,dataName){var result,index=null==field.mapping?field.originalIndex:field.mapping;return"function"==typeof index?result=fieldVarName+".mapping("+dataName+", this)":(isNaN(index)&&(index='"'+index+'"'),result=dataName+"["+index+"]"),result}});Ext.define("Ext.data.ArrayStore",{extend:"Ext.data.Store",alias:"store.array",requires:["Ext.data.proxy.Memory","Ext.data.reader.Array"],constructor:function(config){config=Ext.apply({proxy:{type:"memory",reader:"array"}},config),this.callParent([config])},loadData:function(data,append){if(!0===this.expandData){for(var r=[],i=0,ln=data.length;i<ln;i++)r[r.length]=[data[i]];data=r}this.callParent([data,append])}},function(){Ext.data.SimpleStore=Ext.data.ArrayStore});Ext.define("Ext.data.Batch",{mixins:{observable:"Ext.util.Observable"},autoStart:!1,pauseOnException:!1,current:-1,total:0,isRunning:!1,isComplete:!1,hasException:!1,constructor:function(config){var me=this;me.mixins.observable.constructor.call(me,config),me.operations=[],me.exceptions=[]},add:function(operation){return this.total++,operation.setBatch(this),this.operations.push(operation),this},start:function(index){var me=this;return me.isRunning?me:(me.exceptions.length=0,me.hasException=!1,me.isRunning=!0,me.runOperation(Ext.isDefined(index)?index:me.current+1))},retry:function(){return this.start(this.current)},runNextOperation:function(){return this.runOperation(this.current+1)},pause:function(){return this.isRunning=!1,this},runOperation:function(index){var onProxyReturn,me=this,operations=me.operations,operation=operations[index];return void 0===operation?(me.isRunning=!1,me.isComplete=!0,me.fireEvent("complete",me,operations[operations.length-1])):(me.current=index,onProxyReturn=function(operation){var hasException=operation.hasException();hasException&&(me.hasException=!0,me.exceptions.push(operation),me.fireEvent("exception",me,operation)),hasException&&me.pauseOnException?me.pause():(operation.setCompleted(),me.fireEvent("operationcomplete",me,operation),me.runNextOperation())},operation.setStarted(),me.proxy[operation.action](operation,onProxyReturn,me)),me}});Ext.define("Ext.direct.Manager",{singleton:!0,requires:["Ext.util.MixedCollection","Ext.app.domain.Direct"],mixins:{observable:"Ext.util.Observable"},exceptions:{TRANSPORT:"xhr",PARSE:"parse",DATA:"data",LOGIN:"login",SERVER:"exception"},constructor:function(){var me=this;me.addEvents("event","exception"),me.transactions=new Ext.util.MixedCollection,me.providers=new Ext.util.MixedCollection,me.mixins.observable.constructor.call(me)},addProvider:function(provider){var i,len,me=this,args=arguments,relayers=me.relayers||(me.relayers={});{if(!(args.length>1))return provider.isProvider||(provider=Ext.create("direct."+provider.type+"provider",provider)),me.providers.add(provider),provider.on("data",me.onProviderData,me),provider.relayedEvents&&(relayers[provider.id]=me.relayEvents(provider,provider.relayedEvents)),provider.isConnected()||provider.connect(),provider;for(i=0,len=args.length;i<len;++i)me.addProvider(args[i])}},getProvider:function(id){return id.isProvider?id:this.providers.get(id)},removeProvider:function(provider){var id,me=this,providers=me.providers,relayers=me.relayers;return provider=provider.isProvider?provider:providers.get(provider),provider?(provider.un("data",me.onProviderData,me),id=provider.id,relayers[id]&&(relayers[id].destroy(),delete relayers[id]),providers.remove(provider),provider):null},addTransaction:function(transaction){return this.transactions.add(transaction),transaction},removeTransaction:function(transaction){var me=this;return transaction=me.getTransaction(transaction),me.transactions.remove(transaction),transaction},getTransaction:function(transaction){return"object"==typeof transaction?transaction:this.transactions.get(transaction)},onProviderData:function(provider,event){var i,len,me=this;if(Ext.isArray(event))for(i=0,len=event.length;i<len;++i)me.onProviderData(provider,event[i]);else event.name&&"event"!=event.name&&"exception"!=event.name?me.fireEvent(event.name,event):!1===event.status&&me.fireEvent("exception",event),me.fireEvent("event",event,provider)},parseMethod:function(fn){if(Ext.isString(fn)){for(var parts=fn.split("."),i=0,len=parts.length,current=Ext.global;current&&i<len;)current=current[parts[i]],++i;fn=Ext.isFunction(current)?current:null}return fn||null}},function(){Ext.Direct=Ext.direct.Manager});Ext.define("Ext.data.NodeInterface",{requires:["Ext.data.Field","Ext.data.writer.Json"],statics:{decorate:function(modelClass){var idName,idField,idType;"string"==typeof modelClass?modelClass=Ext.ModelManager.getModel(modelClass):modelClass.isModel&&(modelClass=Ext.ModelManager.getModel(modelClass.modelName)),modelClass.prototype.isNode||(idName=modelClass.prototype.idProperty,idField=modelClass.prototype.fields.get(idName),idType=modelClass.prototype.fields.get(idName).type.type,modelClass.override(this.getPrototypeBody()),this.applyFields(modelClass,[{name:"parentId",type:idType,defaultValue:null,useNull:idField.useNull},{name:"index",type:"int",defaultValue:-1,persist:!1,convert:null},{name:"depth",type:"int",defaultValue:0,persist:!1,convert:null},{name:"expanded",type:"bool",defaultValue:!1,persist:!1,convert:null},{name:"expandable",type:"bool",defaultValue:!0,persist:!1,convert:null},{name:"checked",type:"auto",defaultValue:null,persist:!1,convert:null},{name:"leaf",type:"bool",defaultValue:!1},{name:"cls",type:"string",defaultValue:"",persist:!1,convert:null},{name:"iconCls",type:"string",defaultValue:"",persist:!1,convert:null},{name:"icon",type:"string",defaultValue:"",persist:!1,convert:null},{name:"root",type:"boolean",defaultValue:!1,persist:!1,convert:null},{name:"isLast",type:"boolean",defaultValue:!1,persist:!1,convert:null},{name:"isFirst",type:"boolean",defaultValue:!1,persist:!1,convert:null},{name:"allowDrop",type:"boolean",defaultValue:!0,persist:!1,convert:null},{name:"allowDrag",type:"boolean",defaultValue:!0,persist:!1,convert:null},{name:"loaded",type:"boolean",defaultValue:!1,persist:!1,convert:null},{name:"loading",type:"boolean",defaultValue:!1,persist:!1,convert:null},{name:"href",type:"string",defaultValue:"",persist:!1,convert:null},{name:"hrefTarget",type:"string",defaultValue:"",persist:!1,convert:null},{name:"qtip",type:"string",defaultValue:"",persist:!1,convert:null},{name:"qtitle",type:"string",defaultValue:"",persist:!1,convert:null},{name:"qshowDelay",type:"int",defaultValue:0,persist:!1,convert:null},{name:"children",type:"auto",defaultValue:null,persist:!1,convert:null}]))},applyFields:function(modelClass,addFields){var addField,i,modelPrototype=modelClass.prototype,fields=modelPrototype.fields,keys=fields.keys,ln=addFields.length;for(i=0;i<ln;i++)addField=addFields[i],Ext.Array.contains(keys,addField.name)||fields.add(new Ext.data.Field(addField))},getPrototypeBody:function(){var bubbledEvents={idchanged:!0,append:!0,remove:!0,bulkremove:!0,move:!0,insert:!0,beforeappend:!0,beforeremove:!0,beforemove:!0,beforeinsert:!0,expand:!0,collapse:!0,beforeexpand:!0,beforecollapse:!0,sort:!0,rootchange:!0};return{isNode:!0,constructor:function(){var me=this;return me.callParent(arguments),me.firstChild=me.lastChild=me.parentNode=me.previousSibling=me.nextSibling=null,me.childNodes=[],me},createNode:function(node){return node.isModel||(node=Ext.ModelManager.create(node,this.modelName)),node.childNodes||(node.firstChild=node.lastChild=node.parentNode=node.previousSibling=node.nextSibling=null,node.childNodes=[]),node},isLeaf:function(){return!0===this.get("leaf")},setFirstChild:function(node){this.firstChild=node},setLastChild:function(node){this.lastChild=node},updateInfo:function(commit,info){var i,propName,newValue,field,currentValue,key,settingIndexInNewParent,persistentField,me=this,oldDepth=me.data.depth,childInfo={},children=me.childNodes,childCount=children.length,phantom=me.phantom,dataObject=me[me.persistenceProperty],fields=me.fields,modified=me.modified,newParentId=info.parentId;info||Ext.Error.raise("NodeInterface expects update info to be passed");for(propName in info)if(field=fields.get(propName),newValue=info[propName],persistentField=field&&field.persist,currentValue=dataObject[propName],((settingIndexInNewParent=persistentField&&"index"===propName&&-1!==currentValue&&newParentId&&newParentId!==modified.parentId)||!me.isEqual(currentValue,newValue))&&(dataObject[propName]=newValue,persistentField))if(!settingIndexInNewParent&&modified.hasOwnProperty(propName)){if(me.isEqual(modified[propName],newValue)){delete modified[propName],me.dirty=!1;for(key in modified)if(modified.hasOwnProperty(key)){me.dirty=!0;break}}}else me.dirty=!0,modified[propName]=currentValue;if(commit&&(me.commit(),me.phantom=phantom),me.data.depth!==oldDepth)for(childInfo={depth:me.data.depth+1},i=0;i<childCount;i++)children[i].updateInfo(commit,childInfo)},isLast:function(){return this.get("isLast")},isFirst:function(){return this.get("isFirst")},hasChildNodes:function(){return!this.isLeaf()&&this.childNodes.length>0},isExpandable:function(){var me=this;return!!me.get("expandable")&&!(me.isLeaf()||me.isLoaded()&&!me.phantom&&!me.hasChildNodes())},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(node,suppressEvents,commit){var i,ln,index,oldParent,previousSibling,me=this,childInfo={isLast:!0,parentId:me.getId(),depth:(me.data.depth||0)+1};if(!Ext.isArray(node)){if(node=me.createNode(node),!0!==suppressEvents&&!1===me.fireEventArgs("beforeappend",[me,node]))return!1;if(index=me.childNodes.length,oldParent=node.parentNode){if(!0!==suppressEvents&&!1===node.fireEventArgs("beforemove",[node,oldParent,me,index]))return!1;oldParent.removeChild(node,!1,!1,!0)}return Ext.suspendLayouts(),index=me.childNodes.length,0===index&&me.setFirstChild(node),me.childNodes[index]=node,node.parentNode=me,node.nextSibling=null,me.setLastChild(node),previousSibling=me.childNodes[index-1],previousSibling?(node.previousSibling=previousSibling,previousSibling.nextSibling=node,previousSibling.updateInfo(commit,{isLast:!1}),previousSibling.triggerUIUpdate()):node.previousSibling=null,childInfo.isFirst=0===index,childInfo.index=index,node.updateInfo(commit,childInfo),me.isLoaded()?1===me.childNodes.length&&me.triggerUIUpdate():me.set("loaded",!0),index&&me.childNodes[index-1].isExpanded()&&me.childNodes[index-1].cascadeBy(me.triggerUIUpdate),!node.isLeaf()&&node.phantom&&node.set("loaded",!0),Ext.resumeLayouts(!0),!0!==suppressEvents&&(me.fireEventArgs("append",[me,node,index]),oldParent&&node.fireEventArgs("move",[node,oldParent,me,index])),node}for(me.callStore("suspendAutoSync"),i=0,ln=node.length-1;i<ln;i++)me.appendChild(node[i],suppressEvents,commit);me.callStore("resumeAutoSync"),me.appendChild(node[ln],suppressEvents,commit)},getOwnerTree:function(){for(var store,node=this;node.parentNode;)node=node.parentNode;if((store=node.store)&&(store.treeStore&&(store=store.treeStore),store.tree))return store.ownerTree},removeChild:function(node,destroy,suppressEvents,isMove){var i,childCount,previousSibling,me=this,index=me.indexOf(node);if(-1===index||!0!==suppressEvents&&!1===me.fireEventArgs("beforeremove",[me,node,!!isMove]))return!1;if(Ext.suspendLayouts(),Ext.Array.erase(me.childNodes,index,1),me.firstChild===node&&me.setFirstChild(node.nextSibling),me.lastChild===node&&me.setLastChild(node.previousSibling),previousSibling=node.previousSibling,previousSibling&&(node.previousSibling.nextSibling=node.nextSibling),node.nextSibling)for(node.nextSibling.previousSibling=node.previousSibling,0===index&&node.nextSibling.updateInfo(!1,{isFirst:!0}),i=index,childCount=me.childNodes.length;i<childCount;i++)me.childNodes[i].updateInfo(!1,{index:i});else previousSibling&&(previousSibling.updateInfo(!1,{isLast:!0}),previousSibling.isExpanded()?previousSibling.cascadeBy(me.triggerUIUpdate):previousSibling.triggerUIUpdate());return me.childNodes.length||me.triggerUIUpdate(),Ext.resumeLayouts(!0),!0!==suppressEvents&&(node.removeContext={parentNode:node.parentNode,previousSibling:node.previousSibling,nextSibling:node.nextSibling},node.previousSibling=node.nextSibling=node.parentNode=null,me.fireEventArgs("remove",[me,node,!!isMove]),node.removeContext=null),destroy?node.destroy(!0):node.clear(),node},copy:function(newId,deep){var i,me=this,result=me.callParent(arguments),len=me.childNodes?me.childNodes.length:0;if(deep)for(i=0;i<len;i++)result.appendChild(me.childNodes[i].copy(void 0,!0));return result},clear:function(destroy){var me=this;me.parentNode=me.previousSibling=me.nextSibling=null,destroy&&(me.firstChild=me.lastChild=null)},destroy:function(silent){var n,me=this,options=me.destroyOptions,nodes=me.childNodes,nLen=nodes.length;if(!0===silent){for(me.clear(!0),n=0;n<nLen;n++)nodes[n].destroy(!0);me.childNodes=null,delete me.destroyOptions,me.callParent([options])}else me.destroyOptions=silent,me.remove(!0)},insertBefore:function(node,refNode,suppressEvents){var childCount,previousSibling,i,me=this,index=me.indexOf(refNode),oldParent=node.parentNode,refIndex=index;if(!refNode)return me.appendChild(node);if(node===refNode)return!1;if(node=me.createNode(node),!0!==suppressEvents&&!1===me.fireEventArgs("beforeinsert",[me,node,refNode]))return!1;if(oldParent===me&&me.indexOf(node)<index&&refIndex--,oldParent){if(!0!==suppressEvents&&!1===node.fireEventArgs("beforemove",[node,oldParent,me,index,refNode]))return!1;oldParent.removeChild(node,!1,!1,!0)}for(0===refIndex&&me.setFirstChild(node),Ext.Array.splice(me.childNodes,refIndex,0,node),node.parentNode=me,node.nextSibling=refNode,refNode.previousSibling=node,previousSibling=me.childNodes[refIndex-1],previousSibling?(node.previousSibling=previousSibling,previousSibling.nextSibling=node):node.previousSibling=null,node.updateInfo(!1,{parentId:me.getId(),index:refIndex,isFirst:0===refIndex,isLast:!1,depth:(me.data.depth||0)+1}),i=refIndex+1,childCount=me.childNodes.length;i<childCount;i++)me.childNodes[i].updateInfo(!1,{index:i});return me.isLoaded()?1===me.childNodes.length&&me.triggerUIUpdate():me.set("loaded",!0),!node.isLeaf()&&node.phantom&&node.set("loaded",!0),!0!==suppressEvents&&(me.fireEventArgs("insert",[me,node,refNode]),oldParent&&node.fireEventArgs("move",[node,oldParent,me,refIndex,refNode])),node},insertChild:function(index,node){var sibling=this.childNodes[index];return sibling?this.insertBefore(node,sibling):this.appendChild(node)},remove:function(destroy,suppressEvents){var me=this,parentNode=me.parentNode;return parentNode?parentNode.removeChild(me,destroy,suppressEvents):destroy&&me.destroy(!0),me},removeAll:function(destroy,suppressEvents,fromParent){var node,me=this,childNodes=me.childNodes,i=0,len=childNodes.length;if(len){for(me.fireEventArgs("bulkremove",[me,childNodes,!1]);i<len;++i)node=childNodes[i],node.removeContext={parentNode:node.parentNode,previousSibling:node.previousSibling,nextSibling:node.nextSibling},node.previousSibling=node.nextSibling=node.parentNode=null,me.fireEventArgs("remove",[me,node,!1]),node.removeContext=null,destroy?node.destroy(!0):node.removeAll(!1,suppressEvents,!0);return me.firstChild=me.lastChild=null,fromParent?me.childNodes=null:(me.childNodes.length=0,me.triggerUIUpdate()),me}},getChildAt:function(index){return this.childNodes[index]},replaceChild:function(newChild,oldChild,suppressEvents){var s=oldChild?oldChild.nextSibling:null;return this.removeChild(oldChild,!1,suppressEvents),this.insertBefore(newChild,s,suppressEvents),oldChild},indexOf:function(child){return Ext.Array.indexOf(this.childNodes,child)},indexOfId:function(id){for(var childNodes=this.childNodes,len=childNodes.length,i=0;i<len;++i)if(childNodes[i].getId()===id)return i;return-1},getPath:function(field,separator){field=field||this.idProperty,separator=separator||"/";for(var path=[this.get(field)],parent=this.parentNode;parent;)path.unshift(parent.get(field)),parent=parent.parentNode;return separator+path.join(separator)},getDepth:function(){return this.get("depth")},bubble:function(fn,scope,args){for(var p=this;p&&!1!==fn.apply(scope||p,args||[p]);)p=p.parentNode},cascade:function(){return Ext.isDefined(Ext.global.console)&&Ext.global.console.warn("Ext.data.Node: cascade has been deprecated. Please use cascadeBy instead."),this.cascadeBy.apply(this,arguments)},cascadeBy:function(fn,scope,args){if(!1!==fn.apply(scope||this,args||[this])){var i,childNodes=this.childNodes,length=childNodes.length;for(i=0;i<length;i++)childNodes[i].cascadeBy(fn,scope,args)}},eachChild:function(fn,scope,args){var i,childNodes=this.childNodes,length=c