"use strict";var COMPILED=!0,goog=goog||{};goog.global=this,goog.isDef=function(e){return void 0!==e},goog.exportPath_=function(e,o,t){e=e.split("."),t=t||goog.global,e[0]in t||!t.execScript||t.execScript("var "+e[0]);for(var n;e.length&&(n=e.shift());)!e.length&&goog.isDef(o)?t[n]=o:t=t[n]?t[n]:t[n]={}},goog.define=function(e,o){var t=o;COMPILED||(goog.global.CLOSURE_UNCOMPILED_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES,e)?t=goog.global.CLOSURE_UNCOMPILED_DEFINES[e]:goog.global.CLOSURE_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,e)&&(t=goog.global.CLOSURE_DEFINES[e])),goog.exportPath_(e,t)},goog.DEBUG=!1,goog.LOCALE="en",goog.TRUSTED_SITE=!0,goog.STRICT_MODE_COMPATIBLE=!1,goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG,goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1,goog.provide=function(e){if(goog.isInModuleLoader_())throw Error("goog.provide can not be used within a goog.module.");if(!COMPILED&&goog.isProvided_(e))throw Error('Namespace "'+e+'" already declared.');goog.constructNamespace_(e)},goog.constructNamespace_=function(e,o){if(!COMPILED){delete goog.implicitNamespaces_[e];for(var t=e;(t=t.substring(0,t.lastIndexOf(".")))&&!goog.getObjectByName(t);)goog.implicitNamespaces_[t]=!0}goog.exportPath_(e,o)},goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/,goog.module=function(e){if(!goog.isString(e)||!e||-1==e.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInModuleLoader_())throw Error("Module "+e+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");if(goog.moduleLoaderState_.moduleName=e,!COMPILED){if(goog.isProvided_(e))throw Error('Namespace "'+e+'" already declared.');delete goog.implicitNamespaces_[e]}},goog.module.get=function(e){return goog.module.getInternal_(e)},goog.module.getInternal_=function(e){return COMPILED?void 0:goog.isProvided_(e)?e in goog.loadedModules_?goog.loadedModules_[e]:goog.getObjectByName(e):null},goog.moduleLoaderState_=null,goog.isInModuleLoader_=function(){return null!=goog.moduleLoaderState_},goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0},goog.setTestOnly=function(e){if(goog.DISALLOW_TEST_ONLY_CODE)throw e=e||"",Error("Importing test-only code into non-debug environment"+(e?": "+e:"."))},goog.forwardDeclare=function(e){},COMPILED||(goog.isProvided_=function(e){return e in goog.loadedModules_||!goog.implicitNamespaces_[e]&&goog.isDefAndNotNull(goog.getObjectByName(e))},goog.implicitNamespaces_={"goog.module":!0}),goog.getObjectByName=function(e,o){for(var t,n=e.split("."),r=o||goog.global;t=n.shift();){if(!goog.isDefAndNotNull(r[t]))return null;r=r[t]}return r},goog.globalize=function(e,o){var t,n=o||goog.global;for(t in e)n[t]=e[t]},goog.addDependency=function(e,o,t,n){if(goog.DEPENDENCIES_ENABLED){var r;e=e.replace(/\\/g,"/");var i=goog.dependencies_;n&&"boolean"!=typeof n||(n=n?{module:"goog"}:{});for(var s=0;r=o[s];s++)i.nameToPath[r]=e,i.loadFlags[e]=n;for(n=0;o=t[n];n++)e in i.requires||(i.requires[e]={}),i.requires[e][o]=!0}},goog.ENABLE_DEBUG_LOADER=!0,goog.logToConsole_=function(e){goog.global.console&&goog.global.console.error(e)},goog.require=function(e){if(!COMPILED){if(goog.ENABLE_DEBUG_LOADER&&goog.IS_OLD_IE_&&goog.maybeProcessDeferredDep_(e),goog.isProvided_(e)){if(goog.isInModuleLoader_())return goog.module.getInternal_(e)}else if(goog.ENABLE_DEBUG_LOADER){var o=goog.getPathFromDeps_(e);if(!o)throw e="goog.require could not find: "+e,goog.logToConsole_(e),Error(e);goog.writeScripts_(o)}return null}},goog.basePath="",goog.nullFunction=function(){},goog.abstractMethod=function(){throw Error("unimplemented abstract method")},goog.addSingletonGetter=function(e){e.getInstance=function(){return e.instance_?e.instance_:(goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=e),e.instance_=new e)}},goog.instantiatedSingletons_=[],goog.LOAD_MODULE_USING_EVAL=!0,goog.SEAL_MODULE_EXPORTS=goog.DEBUG,goog.loadedModules_={},goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER,goog.TRANSPILE="detect",goog.TRANSPILER="transpile.js",goog.DEPENDENCIES_ENABLED&&(goog.dependencies_={loadFlags:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var e=goog.global.document;return null!=e&&"write"in e},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var e=goog.global.document.getElementsByTagName("SCRIPT"),o=e.length-1;o>=0;--o){var t=e[o].src,n=t.lastIndexOf("?"),n=-1==n?t.length:n;if("base.js"==t.substr(n-7,7)){goog.basePath=t.substr(0,n-7);break}}},goog.importScript_=function(e,o){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(e,o)&&(goog.dependencies_.written[e]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.importProcessedScript_=function(e,o,t){goog.importScript_("",'goog.retrieveAndExec_("'+e+'", '+o+", "+t+");")},goog.queuedModules_=[],goog.wrapModule_=function(e,o){return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?"goog.loadModule("+goog.global.JSON.stringify(o+"\n//# sourceURL="+e+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+o+"\n;return exports});\n//# sourceURL="+e+"\n"},goog.loadQueuedModules_=function(){var e=goog.queuedModules_.length;if(e>0){var o=goog.queuedModules_;goog.queuedModules_=[];for(var t=0;e>t;t++)goog.maybeProcessDeferredPath_(o[t])}},goog.maybeProcessDeferredDep_=function(e){goog.isDeferredModule_(e)&&goog.allDepsAreAvailable_(e)&&(e=goog.getPathFromDeps_(e),goog.maybeProcessDeferredPath_(goog.basePath+e))},goog.isDeferredModule_=function(e){var o=(e=goog.getPathFromDeps_(e))&&goog.dependencies_.loadFlags[e]||{},t=o.lang||"es3";return e&&("goog"==o.module||goog.needsTranspile_(t))?goog.basePath+e in goog.dependencies_.deferred:!1},goog.allDepsAreAvailable_=function(e){if((e=goog.getPathFromDeps_(e))&&e in goog.dependencies_.requires)for(var o in goog.dependencies_.requires[e])if(!goog.isProvided_(o)&&!goog.isDeferredModule_(o))return!1;return!0},goog.maybeProcessDeferredPath_=function(e){if(e in goog.dependencies_.deferred){var o=goog.dependencies_.deferred[e];delete goog.dependencies_.deferred[e],goog.globalEval(o)}},goog.loadModuleFromUrl=function(e){goog.retrieveAndExec_(e,!0,!1)},goog.writeScriptSrcNode_=function(e){goog.global.document.write('')},goog.appendScriptSrcNode_=function(e){var o=goog.global.document,t=o.createElement("script");t.type="text/javascript",t.src=e,t.defer=!1,t.async=!1,o.head.appendChild(t)},goog.writeScriptTag_=function(e,o){if(goog.inHtmlDocument_()){var t=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&"complete"==t.readyState){if(/\bdeps.js$/.test(e))return!1;throw Error('Cannot write "'+e+'" after document load')}if(void 0===o)if(goog.IS_OLD_IE_){var n=" onreadystatechange='goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")' ";t.write('")}else goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING?goog.appendScriptSrcNode_(e):goog.writeScriptSrcNode_(e);else t.write('");return!0}return!1},goog.needsTranspile_=function(e){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(goog.requiresTranspilation_||(goog.requiresTranspilation_=goog.createRequiresTranspilation_()),e in goog.requiresTranspilation_)return goog.requiresTranspilation_[e];throw Error("Unknown language mode: "+e)},goog.requiresTranspilation_=null,goog.lastNonModuleScriptIndex_=0,goog.onScriptLoad_=function(e,o){return"complete"==e.readyState&&goog.lastNonModuleScriptIndex_==o&&goog.loadQueuedModules_(),!0},goog.writeScripts_=function(e){function o(e){if(!(e in r.written||e in r.visited)){if(r.visited[e]=!0,e in r.requires)for(var i in r.requires[e])if(!goog.isProvided_(i)){if(!(i in r.nameToPath))throw Error("Undefined nameToPath for "+i);o(r.nameToPath[i])}e in n||(n[e]=!0,t.push(e))}}var t=[],n={},r=goog.dependencies_;for(o(e),e=0;e>>0),goog.uidCounter_=0,goog.getHashCode=goog.getUid,goog.removeHashCode=goog.removeUid,goog.cloneObject=function(e){var o=goog.typeOf(e);if("object"==o||"array"==o){if(e.clone)return e.clone();var t,o="array"==o?[]:{};for(t in e)o[t]=goog.cloneObject(e[t]);return o}return e},goog.bindNative_=function(e,o,t){return e.call.apply(e.bind,arguments)},goog.bindJs_=function(e,o,t){if(!e)throw Error();if(2{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')}),a("es6-impl",function(){return!0}),a("es7",function(){return b("2 ** 2 == 4")}),a("es8",function(){return b("async () => 1, true")}),c},goog.debug={},goog.debug.Error=function(e){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var o=Error().stack;o&&(this.stack=o)}e&&(this.message=String(e)),this.reportErrorToServer=!0},goog.inherits(goog.debug.Error,Error),goog.debug.Error.prototype.name="CustomError",goog.dom={},goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},goog.string={},goog.string.DETECT_DOUBLE_ESCAPING=!1,goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1,goog.string.Unicode={NBSP:" "},goog.string.startsWith=function(e,o){return 0==e.lastIndexOf(o,0)},goog.string.endsWith=function(e,o){var t=e.length-o.length;return t>=0&&e.indexOf(o,t)==t},goog.string.caseInsensitiveStartsWith=function(e,o){return 0==goog.string.caseInsensitiveCompare(o,e.substr(0,o.length))},goog.string.caseInsensitiveEndsWith=function(e,o){return 0==goog.string.caseInsensitiveCompare(o,e.substr(e.length-o.length,o.length))},goog.string.caseInsensitiveEquals=function(e,o){return e.toLowerCase()==o.toLowerCase()},goog.string.subs=function(e,o){for(var t=e.split("%s"),n="",r=Array.prototype.slice.call(arguments,1);r.length&&1=" "&&"~">=e||e>="€"&&"�">=e},goog.string.stripNewlines=function(e){return e.replace(/(\r\n|\r|\n)+/g," ")},goog.string.canonicalizeNewlines=function(e){return e.replace(/(\r\n|\r|\n)/g,"\n")},goog.string.normalizeWhitespace=function(e){return e.replace(/\xa0|\s/g," ")},goog.string.normalizeSpaces=function(e){return e.replace(/\xa0|[ \t]+/g," ")},goog.string.collapseBreakingSpaces=function(e){return e.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")},goog.string.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(e){return e.trim()}:function(e){return e.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},goog.string.trimLeft=function(e){return e.replace(/^[\s\xa0]+/,"")},goog.string.trimRight=function(e){return e.replace(/[\s\xa0]+$/,"")},goog.string.caseInsensitiveCompare=function(e,o){var t=String(e).toLowerCase(),n=String(o).toLowerCase();return n>t?-1:t==n?0:1},goog.string.numberAwareCompare_=function(e,o,t){if(e==o)return 0;if(!e)return-1;if(!o)return 1;for(var n=e.toLowerCase().match(t),r=o.toLowerCase().match(t),i=Math.min(n.length,r.length),s=0;i>s;s++){t=n[s];var l=r[s];if(t!=l)return e=parseInt(t,10),!isNaN(e)&&(o=parseInt(l,10),!isNaN(o)&&e-o)?e-o:l>t?-1:1}return n.length!=r.length?n.length-r.length:o>e?-1:1},goog.string.intAwareCompare=function(e,o){return goog.string.numberAwareCompare_(e,o,/\d+|\D+/g)},goog.string.floatAwareCompare=function(e,o){return goog.string.numberAwareCompare_(e,o,/\d+|\.\d+|\D+/g)},goog.string.numerateCompare=goog.string.floatAwareCompare,goog.string.urlEncode=function(e){return encodeURIComponent(String(e))},goog.string.urlDecode=function(e){return decodeURIComponent(e.replace(/\+/g," "))},goog.string.newLineToBr=function(e,o){return e.replace(/(\r\n|\r|\n)/g,o?"
":"
")},goog.string.htmlEscape=function(e,o){if(o)e=e.replace(goog.string.AMP_RE_,"&").replace(goog.string.LT_RE_,"<").replace(goog.string.GT_RE_,">").replace(goog.string.QUOT_RE_,""").replace(goog.string.SINGLE_QUOTE_RE_,"'").replace(goog.string.NULL_RE_,"�"),goog.string.DETECT_DOUBLE_ESCAPING&&(e=e.replace(goog.string.E_RE_,"e"));else{if(!goog.string.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.AMP_RE_,"&")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.LT_RE_,"<")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.GT_RE_,">")),-1!=e.indexOf('"')&&(e=e.replace(goog.string.QUOT_RE_,""")),-1!=e.indexOf("'")&&(e=e.replace(goog.string.SINGLE_QUOTE_RE_,"'")),-1!=e.indexOf("\x00")&&(e=e.replace(goog.string.NULL_RE_,"�")),goog.string.DETECT_DOUBLE_ESCAPING&&-1!=e.indexOf("e")&&(e=e.replace(goog.string.E_RE_,"e"))}return e},goog.string.AMP_RE_=/&/g,goog.string.LT_RE_=//g,goog.string.QUOT_RE_=/"/g,goog.string.SINGLE_QUOTE_RE_=/'/g,goog.string.NULL_RE_=/\x00/g,goog.string.E_RE_=/e/g,goog.string.ALL_RE_=goog.string.DETECT_DOUBLE_ESCAPING?/[\x00&<>"'e]/:/[\x00&<>"']/,goog.string.unescapeEntities=function(e){return goog.string.contains(e,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(e):goog.string.unescapePureXmlEntities_(e):e},goog.string.unescapeEntitiesWithDocument=function(e,o){return goog.string.contains(e,"&")?goog.string.unescapeEntitiesUsingDom_(e,o):e},goog.string.unescapeEntitiesUsingDom_=function(e,o){var t,n={"&":"&","<":"<",">":">",""":'"'};return t=o?o.createElement("div"):goog.global.document.createElement("div"),e.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,o){var r=n[e];if(r)return r;if("#"==o.charAt(0)){var i=Number("0"+o.substr(1));isNaN(i)||(r=String.fromCharCode(i))}return r||(t.innerHTML=e+" ",r=t.firstChild.nodeValue.slice(0,-1)),n[e]=r})},goog.string.unescapePureXmlEntities_=function(e){return e.replace(/&([^;]+);/g,function(e,o){switch(o){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return'"';default:if("#"==o.charAt(0)){var t=Number("0"+o.substr(1));if(!isNaN(t))return String.fromCharCode(t)}return e}})},goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g,goog.string.whitespaceEscape=function(e,o){return goog.string.newLineToBr(e.replace(/ /g,"  "),o)},goog.string.preserveSpaces=function(e){return e.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)},goog.string.stripQuotes=function(e,o){for(var t=o.length,n=0;t>n;n++){var r=1==t?o:o.charAt(n);if(e.charAt(0)==r&&e.charAt(e.length-1)==r)return e.substring(1,e.length-1)}return e},goog.string.truncate=function(e,o,t){return t&&(e=goog.string.unescapeEntities(e)),e.length>o&&(e=e.substring(0,o-3)+"..."),t&&(e=goog.string.htmlEscape(e)),e},goog.string.truncateMiddle=function(e,o,t,n){if(t&&(e=goog.string.unescapeEntities(e)),n&&e.length>o){n>o&&(n=o);var r=e.length-n;e=e.substring(0,o-n)+"..."+e.substring(r)}else e.length>o&&(n=Math.floor(o/2),r=e.length-n,e=e.substring(0,n+o%2)+"..."+e.substring(r));return t&&(e=goog.string.htmlEscape(e)),e},goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"," ":"\\x0B",'"':'\\"',"\\":"\\\\","<":"<"},goog.string.jsEscapeCache_={"'":"\\'"},goog.string.quote=function(e){e=String(e);for(var o=['"'],t=0;t31&&127>r?n:goog.string.escapeChar(n))}return o.push('"'),o.join("")},goog.string.escapeString=function(e){for(var o=[],t=0;t31&&127>t?o=e:(256>t?(o="\\x",(16>t||t>256)&&(o+="0")):(o="\\u",4096>t&&(o+="0")),o+=t.toString(16).toUpperCase()),goog.string.jsEscapeCache_[e]=o},goog.string.contains=function(e,o){return-1!=e.indexOf(o)},goog.string.caseInsensitiveContains=function(e,o){return goog.string.contains(e.toLowerCase(),o.toLowerCase())},goog.string.countOf=function(e,o){return e&&o?e.split(o).length-1:0},goog.string.removeAt=function(e,o,t){var n=e;return o>=0&&o0&&(n=e.substr(0,o)+e.substr(o+t,e.length-o-t)),n},goog.string.remove=function(e,o){return e.replace(o,"")},goog.string.removeAll=function(e,o){var t=new RegExp(goog.string.regExpEscape(o),"g");return e.replace(t,"")},goog.string.replaceAll=function(e,o,t){return o=new RegExp(goog.string.regExpEscape(o),"g"),e.replace(o,t.replace(/\$/g,"$$$$"))},goog.string.regExpEscape=function(e){return String(e).replace(/([-()\[\]{}+?*.$\^|,:#s;s++){var l=n[s]||"",g=r[s]||"";do{if(l=/(\d*)(\D*)(.*)/.exec(l)||["","","",""],g=/(\d*)(\D*)(.*)/.exec(g)||["","","",""],0==l[0].length&&0==g[0].length)break;var t=0==l[1].length?0:parseInt(l[1],10),a=0==g[1].length?0:parseInt(g[1],10),t=goog.string.compareElements_(t,a)||goog.string.compareElements_(0==l[2].length,0==g[2].length)||goog.string.compareElements_(l[2],g[2]),l=l[3],g=g[3]}while(0==t)}return t},goog.string.compareElements_=function(e,o){return o>e?-1:e>o?1:0},goog.string.hashCode=function(e){for(var o=0,t=0;t>>0;return o},goog.string.uniqueStringCounter_=2147483648*Math.random()|0,goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++},goog.string.toNumber=function(e){var o=Number(e);return 0==o&&goog.string.isEmptyOrWhitespace(e)?NaN:o},goog.string.isLowerCamelCase=function(e){return/^[a-z]+([A-Z][a-z]*)*$/.test(e)},goog.string.isUpperCamelCase=function(e){return/^([A-Z][a-z]*)+$/.test(e)},goog.string.toCamelCase=function(e){return String(e).replace(/\-([a-z])/g,function(e,o){return o.toUpperCase()})},goog.string.toSelectorCase=function(e){return String(e).replace(/([A-Z])/g,"-$1").toLowerCase()},goog.string.toTitleCase=function(e,o){var t=goog.isString(o)?goog.string.regExpEscape(o):"\\s";return e.replace(new RegExp("(^"+(t?"|["+t+"]+":"")+")([a-z])","g"),function(e,o,t){return o+t.toUpperCase()})},goog.string.capitalize=function(e){return String(e.charAt(0)).toUpperCase()+String(e.substr(1)).toLowerCase()},goog.string.parseInt=function(e){return isFinite(e)&&(e=String(e)),goog.isString(e)?/^\s*-?0x/i.test(e)?parseInt(e,16):parseInt(e,10):NaN},goog.string.splitLimit=function(e,o,t){e=e.split(o);for(var n=[];t>0&&e.length;)n.push(e.shift()),t--;return e.length&&n.push(e.join(o)),n},goog.string.lastComponent=function(e,o){if(!o)return e;"string"==typeof o&&(o=[o]);for(var t=-1,n=0;nt&&(t=r)}return-1==t?e:e.slice(t+1)},goog.string.editDistance=function(e,o){var t=[],n=[];if(e==o)return 0;if(!e.length||!o.length)return Math.max(e.length,o.length);for(var r=0;rt?Math.max(0,e.length+t):t,goog.isString(e))return goog.isString(o)&&1==o.length?e.indexOf(o,t):-1;for(;tt&&(t=Math.max(0,e.length+t)),goog.isString(e))return goog.isString(o)&&1==o.length?e.lastIndexOf(o,t):-1;for(;t>=0;t--)if(t in e&&e[t]===o)return t;return-1},goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(e,o,t){goog.asserts.assert(null!=e.length),Array.prototype.forEach.call(e,o,t)}:function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,i=0;n>i;i++)i in r&&o.call(t,r[i],i,e)},goog.array.forEachRight=function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,n=n-1;n>=0;--n)n in r&&o.call(t,r[n],n,e)},goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(e,o,t){return goog.asserts.assert(null!=e.length),Array.prototype.filter.call(e,o,t)}:function(e,o,t){for(var n=e.length,r=[],i=0,s=goog.isString(e)?e.split(""):e,l=0;n>l;l++)if(l in s){var g=s[l];o.call(t,g,l,e)&&(r[i++]=g)}return r},goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(e,o,t){return goog.asserts.assert(null!=e.length),Array.prototype.map.call(e,o,t)}:function(e,o,t){for(var n=e.length,r=Array(n),i=goog.isString(e)?e.split(""):e,s=0;n>s;s++)s in i&&(r[s]=o.call(t,i[s],s,e));return r},goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(e,o,t,n){return goog.asserts.assert(null!=e.length),n&&(o=goog.bind(o,n)),Array.prototype.reduce.call(e,o,t)}:function(e,o,t,n){var r=t;return goog.array.forEach(e,function(t,i){r=o.call(n,r,t,i,e)}),r},goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(e,o,t,n){return goog.asserts.assert(null!=e.length),goog.asserts.assert(null!=o),n&&(o=goog.bind(o,n)),Array.prototype.reduceRight.call(e,o,t)}:function(e,o,t,n){var r=t;return goog.array.forEachRight(e,function(t,i){r=o.call(n,r,t,i,e)}),r},goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(e,o,t){return goog.asserts.assert(null!=e.length),Array.prototype.some.call(e,o,t)}:function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,i=0;n>i;i++)if(i in r&&o.call(t,r[i],i,e))return!0;return!1},goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(e,o,t){return goog.asserts.assert(null!=e.length),Array.prototype.every.call(e,o,t)}:function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,i=0;n>i;i++)if(i in r&&!o.call(t,r[i],i,e))return!1;return!0},goog.array.count=function(e,o,t){var n=0;return goog.array.forEach(e,function(e,r,i){o.call(t,e,r,i)&&++n},t),n},goog.array.find=function(e,o,t){return o=goog.array.findIndex(e,o,t),0>o?null:goog.isString(e)?e.charAt(o):e[o]},goog.array.findIndex=function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,i=0;n>i;i++)if(i in r&&o.call(t,r[i],i,e))return i;return-1},goog.array.findRight=function(e,o,t){return o=goog.array.findIndexRight(e,o,t),0>o?null:goog.isString(e)?e.charAt(o):e[o]},goog.array.findIndexRight=function(e,o,t){for(var n=e.length,r=goog.isString(e)?e.split(""):e,n=n-1;n>=0;n--)if(n in r&&o.call(t,r[n],n,e))return n;return-1},goog.array.contains=function(e,o){return 0<=goog.array.indexOf(e,o)},goog.array.isEmpty=function(e){return 0==e.length},goog.array.clear=function(e){if(!goog.isArray(e))for(var o=e.length-1;o>=0;o--)delete e[o];e.length=0},goog.array.insert=function(e,o){goog.array.contains(e,o)||e.push(o)},goog.array.insertAt=function(e,o,t){goog.array.splice(e,t,0,o)},goog.array.insertArrayAt=function(e,o,t){goog.partial(goog.array.splice,e,t,0).apply(null,o)},goog.array.insertBefore=function(e,o,t){var n;2==arguments.length||0>(n=goog.array.indexOf(e,t))?e.push(o):goog.array.insertAt(e,o,n)},goog.array.remove=function(e,o){var t,n=goog.array.indexOf(e,o);return(t=n>=0)&&goog.array.removeAt(e,n),t},goog.array.removeLast=function(e,o){var t=goog.array.lastIndexOf(e,o);return t>=0?(goog.array.removeAt(e,t),!0):!1},goog.array.removeAt=function(e,o){return goog.asserts.assert(null!=e.length),1==Array.prototype.splice.call(e,o,1).length},goog.array.removeIf=function(e,o,t){return o=goog.array.findIndex(e,o,t),o>=0?(goog.array.removeAt(e,o),!0):!1},goog.array.removeAllIf=function(e,o,t){var n=0;return goog.array.forEachRight(e,function(r,i){o.call(t,r,i,e)&&goog.array.removeAt(e,i)&&n++}),n},goog.array.concat=function(e){return Array.prototype.concat.apply(Array.prototype,arguments)},goog.array.join=function(e){return Array.prototype.concat.apply(Array.prototype,arguments)},goog.array.toArray=function(e){var o=e.length;if(o>0){for(var t=Array(o),n=0;o>n;n++)t[n]=e[n];return t}return[]},goog.array.clone=goog.array.toArray,goog.array.extend=function(e,o){for(var t=1;ts;s++)e[r+s]=n[s]}else e.push(n)}},goog.array.splice=function(e,o,t,n){return goog.asserts.assert(null!=e.length),Array.prototype.splice.apply(e,goog.array.slice(arguments,1))},goog.array.slice=function(e,o,t){return goog.asserts.assert(null!=e.length),2>=arguments.length?Array.prototype.slice.call(e,o):Array.prototype.slice.call(e,o,t)},goog.array.removeDuplicates=function(e,o,t){o=o||e;var n=function(e){return goog.isObject(e)?"o"+goog.getUid(e):(typeof e).charAt(0)+e};t=t||n;for(var n={},r=0,i=0;is;){var g,a=s+l>>1;g=t?o.call(r,e[a],a,e):o(n,e[a]),g>0?s=a+1:(l=a,i=!g)}return i?s:~s},goog.array.sort=function(e,o){e.sort(o||goog.array.defaultCompare)},goog.array.stableSort=function(e,o){for(var t=Array(e.length),n=0;n0||0==r&&t)return!1}return!0},goog.array.equals=function(e,o,t){if(!goog.isArrayLike(e)||!goog.isArrayLike(o)||e.length!=o.length)return!1;var n=e.length;t=t||goog.array.defaultCompareEquality;for(var r=0;n>r;r++)if(!t(e[r],o[r]))return!1;return!0},goog.array.compare3=function(e,o,t){t=t||goog.array.defaultCompare;for(var n=Math.min(e.length,o.length),r=0;n>r;r++){var i=t(e[r],o[r]);if(0!=i)return i}return goog.array.defaultCompare(e.length,o.length)},goog.array.defaultCompare=function(e,o){return e>o?1:o>e?-1:0},goog.array.inverseDefaultCompare=function(e,o){return-goog.array.defaultCompare(e,o)},goog.array.defaultCompareEquality=function(e,o){return e===o},goog.array.binaryInsert=function(e,o,t){return t=goog.array.binarySearch(e,o,t),0>t?(goog.array.insertAt(e,o,-(t+1)),!0):!1},goog.array.binaryRemove=function(e,o,t){return o=goog.array.binarySearch(e,o,t),o>=0?goog.array.removeAt(e,o):!1},goog.array.bucket=function(e,o,t){for(var n={},r=0;rt*(i-r))return[];if(t>0)for(e=r;i>e;e+=t)n.push(e);else for(e=r;e>i;e+=t)n.push(e);return n},goog.array.repeat=function(e,o){for(var t=[],n=0;o>n;n++)t[n]=e;return t},goog.array.flatten=function(e){for(var o=[],t=0;t0?Array.prototype.unshift.apply(e,e.splice(-o,o)):0>o&&Array.prototype.push.apply(e,e.splice(0,-o))),e},goog.array.moveItem=function(e,o,t){goog.asserts.assert(o>=0&&o=0&&tn;n++){for(var r=[],i=0;i0;n--){var r=Math.floor(t()*(n+1)),i=e[n];e[n]=e[r],e[r]=i}},goog.array.copyByIndex=function(e,o){var t=[];return goog.array.forEach(o,function(o){t.push(e[o])}),t},goog.array.concatMap=function(e,o,t){return goog.array.concat.apply([],goog.array.map(e,o,t))},goog.labs={},goog.labs.userAgent={},goog.labs.userAgent.util={},goog.labs.userAgent.util.getNativeUserAgentString_=function(){var e=goog.labs.userAgent.util.getNavigator_();return e&&(e=e.userAgent)?e:""},goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator},goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_(),goog.labs.userAgent.util.setUserAgent=function(e){goog.labs.userAgent.util.userAgent_=e||goog.labs.userAgent.util.getNativeUserAgentString_()},goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_},goog.labs.userAgent.util.matchUserAgent=function(e){var o=goog.labs.userAgent.util.getUserAgent();return goog.string.contains(o,e)},goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(e){var o=goog.labs.userAgent.util.getUserAgent();return goog.string.caseInsensitiveContains(o,e)},goog.labs.userAgent.util.extractVersionTuples=function(e){for(var o,t=RegExp("(\\w[\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),n=[];o=t.exec(e);)n.push([o[1],o[2],o[3]||void 0]);return n},goog.object={},goog.object.is=function(e,o){return e===o?0!==e||1/e===1/o:e!==e&&o!==o},goog.object.forEach=function(e,o,t){for(var n in e)o.call(t,e[n],n,e)},goog.object.filter=function(e,o,t){var n,r={};for(n in e)o.call(t,e[n],n,e)&&(r[n]=e[n]);return r},goog.object.map=function(e,o,t){var n,r={};for(n in e)r[n]=o.call(t,e[n],n,e);return r},goog.object.some=function(e,o,t){for(var n in e)if(o.call(t,e[n],n,e))return!0;return!1},goog.object.every=function(e,o,t){for(var n in e)if(!o.call(t,e[n],n,e))return!1;return!0},goog.object.getCount=function(e){var o,t=0;for(o in e)t++;return t},goog.object.getAnyKey=function(e){for(var o in e)return o},goog.object.getAnyValue=function(e){for(var o in e)return e[o]},goog.object.contains=function(e,o){return goog.object.containsValue(e,o)},goog.object.getValues=function(e){var o,t=[],n=0;for(o in e)t[n++]=e[o];return t},goog.object.getKeys=function(e){var o,t=[],n=0;for(o in e)t[n++]=o;return t},goog.object.getValueByKeys=function(e,o){for(var t=goog.isArrayLike(o),n=t?o:arguments,t=t?0:1;tn;n+=2)t[arguments[n]]=arguments[n+1];return t},goog.object.createSet=function(e){var o=arguments.length;if(1==o&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var t={},n=0;o>n;n++)t[arguments[n]]=!0;return t},goog.object.createImmutableView=function(e){var o=e;return Object.isFrozen&&!Object.isFrozen(e)&&(o=Object.create(e),Object.freeze(o)),o},goog.object.isImmutableView=function(e){return!!Object.isFrozen&&Object.isFrozen(e)},goog.labs.userAgent.browser={},goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")},goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.browser.matchEdge_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")},goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdge_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))},goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")},goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")},goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdge_()},goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())},goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_,goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_,goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdge_,goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_,goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_,goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_,goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_,goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_,goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_,goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")},goog.labs.userAgent.browser.getVersion=function(){function e(e){return e=goog.array.find(e,n),t[e]||""}var o=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(o);var o=goog.labs.userAgent.util.extractVersionTuples(o),t={};goog.array.forEach(o,function(e){t[e[0]]=e[1]});var n=goog.partial(goog.object.containsKey,t);return goog.labs.userAgent.browser.isOpera()?e(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?e(["Edge"]):goog.labs.userAgent.browser.isChrome()?e(["Chrome","CriOS"]):(o=o[2])&&o[1]||""},goog.labs.userAgent.browser.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.browser.getVersion(),e)},goog.labs.userAgent.browser.getIEVersion_=function(e){var o=/rv: *([\d\.]*)/.exec(e);if(o&&o[1])return o[1];var o="",t=/MSIE +([\d\.]+)/.exec(e);if(t&&t[1])if(e=/Trident\/(\d.\d)/.exec(e),"7.0"==t[1])if(e&&e[1])switch(e[1]){case"4.0":o="8.0";break;case"5.0":o="9.0";break;case"6.0":o="10.0";break;case"7.0":o="11.0"}else o="7.0";else o=t[1];return o},goog.labs.userAgent.engine={},goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")},goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent();if(e){var e=goog.labs.userAgent.util.extractVersionTuples(e),o=goog.labs.userAgent.engine.getEngineTuple_(e);if(o)return"Gecko"==o[0]?goog.labs.userAgent.engine.getVersionForKey_(e,"Firefox"):o[1];var t,e=e[0];if(e&&(t=e[2])&&(t=/Trident\/([^\s;]+)/.exec(t)))return t[1]}return""},goog.labs.userAgent.engine.getEngineTuple_=function(e){if(!goog.labs.userAgent.engine.isEdge())return e[1];for(var o=0;oparseFloat(e))?String(o):e},goog.userAgent.getVersionRegexResult_=function(){var e=goog.userAgent.getUserAgentString();return goog.userAgent.GECKO?/rv\:([^\);]+)(\)|;)/.exec(e):goog.userAgent.EDGE?/Edge\/([\d\.]+)/.exec(e):goog.userAgent.IE?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(e):goog.userAgent.WEBKIT?/WebKit\/(\S+)/.exec(e):goog.userAgent.OPERA?/(?:Version)[ \/]?(\S+)/.exec(e):void 0},goog.userAgent.getDocumentMode_=function(){var e=goog.global.document;return e?e.documentMode:void 0},goog.userAgent.VERSION=goog.userAgent.determineVersion_(),goog.userAgent.compare=function(e,o){return goog.string.compareVersions(e,o)},goog.userAgent.isVersionOrHigherCache_={},goog.userAgent.isVersionOrHigher=function(e){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,e,function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,e)})},goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher,goog.userAgent.isDocumentModeOrHigher=function(e){return Number(goog.userAgent.DOCUMENT_MODE)>=e},goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher,goog.userAgent.DOCUMENT_MODE=function(){var e=goog.global.document,o=goog.userAgent.getDocumentMode_();return e&&goog.userAgent.IE?o||("CSS1Compat"==e.compatMode?parseInt(goog.userAgent.VERSION,10):5):void 0}(),goog.events={},goog.events.BrowserFeature={HAS_W3C_BUTTON:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT||goog.userAgent.isVersionOrHigher("528"),HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO&&goog.userAgent.isVersionOrHigher("1.9b")||goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("8")||goog.userAgent.OPERA&&goog.userAgent.isVersionOrHigher("9.5")||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("528"), HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO&&!goog.userAgent.isVersionOrHigher("8")||goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),TOUCH_ENABLED:"ontouchstart"in goog.global||!!(goog.global.document&&document.documentElement&&"ontouchstart"in document.documentElement)||!(!goog.global.navigator||!goog.global.navigator.msMaxTouchPoints)},goog.disposable={},goog.disposable.IDisposable=function(){},goog.disposable.IDisposable.prototype.dispose=goog.abstractMethod,goog.disposable.IDisposable.prototype.isDisposed=goog.abstractMethod,goog.Disposable=function(){goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF&&(goog.Disposable.INCLUDE_STACK_ON_CREATION&&(this.creationStack=Error().stack),goog.Disposable.instances_[goog.getUid(this)]=this),this.disposed_=this.disposed_,this.onDisposeCallbacks_=this.onDisposeCallbacks_},goog.Disposable.MonitoringMode={OFF:0,PERMANENT:1,INTERACTIVE:2},goog.Disposable.MONITORING_MODE=0,goog.Disposable.INCLUDE_STACK_ON_CREATION=!0,goog.Disposable.instances_={},goog.Disposable.getUndisposedObjects=function(){var e,o=[];for(e in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(e)&&o.push(goog.Disposable.instances_[Number(e)]);return o},goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}},goog.Disposable.prototype.disposed_=!1,goog.Disposable.prototype.isDisposed=function(){return this.disposed_},goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed,goog.Disposable.prototype.dispose=function(){if(!this.disposed_&&(this.disposed_=!0,this.disposeInternal(),goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF)){var e=goog.getUid(this);if(goog.Disposable.MONITORING_MODE==goog.Disposable.MonitoringMode.PERMANENT&&!goog.Disposable.instances_.hasOwnProperty(e))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[e]}},goog.Disposable.prototype.registerDisposable=function(e){this.addOnDisposeCallback(goog.partial(goog.dispose,e))},goog.Disposable.prototype.addOnDisposeCallback=function(e,o){this.disposed_?goog.isDef(o)?e.call(o):e():(this.onDisposeCallbacks_||(this.onDisposeCallbacks_=[]),this.onDisposeCallbacks_.push(goog.isDef(o)?goog.bind(e,o):e))},goog.Disposable.prototype.disposeInternal=function(){if(this.onDisposeCallbacks_)for(;this.onDisposeCallbacks_.length;)this.onDisposeCallbacks_.shift()()},goog.Disposable.isDisposed=function(e){return e&&"function"==typeof e.isDisposed?e.isDisposed():!1},goog.dispose=function(e){e&&"function"==typeof e.dispose&&e.dispose()},goog.disposeAll=function(e){for(var o=0,t=arguments.length;t>o;++o){var n=arguments[o];goog.isArrayLike(n)?goog.disposeAll.apply(null,n):goog.dispose(n)}},goog.events.EventId=function(e){this.id=e},goog.events.EventId.prototype.toString=function(){return this.id},goog.events.Event=function(e,o){this.type=e instanceof goog.events.EventId?String(e):e,this.currentTarget=this.target=o,this.defaultPrevented=this.propagationStopped_=!1,this.returnValue_=!0},goog.events.Event.prototype.stopPropagation=function(){this.propagationStopped_=!0},goog.events.Event.prototype.preventDefault=function(){this.defaultPrevented=!0,this.returnValue_=!1},goog.events.Event.stopPropagation=function(e){e.stopPropagation()},goog.events.Event.preventDefault=function(e){e.preventDefault()},goog.events.getVendorPrefixedName_=function(e){return goog.userAgent.WEBKIT?"webkit"+e:goog.userAgent.OPERA?"o"+e.toLowerCase():e.toLowerCase()},goog.events.EventType={CLICK:"click",RIGHTCLICK:"rightclick",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",MOUSEENTER:"mouseenter",MOUSELEAVE:"mouseleave",SELECTIONCHANGE:"selectionchange",SELECTSTART:"selectstart",WHEEL:"wheel",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:goog.userAgent.IE?"focusin":"DOMFocusIn",FOCUSOUT:goog.userAgent.IE?"focusout":"DOMFocusOut",CHANGE:"change",RESET:"reset",SELECT:"select",SUBMIT:"submit",INPUT:"input",PROPERTYCHANGE:"propertychange",DRAGSTART:"dragstart",DRAG:"drag",DRAGENTER:"dragenter",DRAGOVER:"dragover",DRAGLEAVE:"dragleave",DROP:"drop",DRAGEND:"dragend",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel",BEFOREUNLOAD:"beforeunload",CONSOLEMESSAGE:"consolemessage",CONTEXTMENU:"contextmenu",DEVICEORIENTATION:"deviceorientation",DOMCONTENTLOADED:"DOMContentLoaded",ERROR:"error",HELP:"help",LOAD:"load",LOSECAPTURE:"losecapture",ORIENTATIONCHANGE:"orientationchange",READYSTATECHANGE:"readystatechange",RESIZE:"resize",SCROLL:"scroll",UNLOAD:"unload",CANPLAY:"canplay",CANPLAYTHROUGH:"canplaythrough",DURATIONCHANGE:"durationchange",EMPTIED:"emptied",ENDED:"ended",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",PAUSE:"pause",PLAY:"play",PLAYING:"playing",RATECHANGE:"ratechange",SEEKED:"seeked",SEEKING:"seeking",STALLED:"stalled",SUSPEND:"suspend",TIMEUPDATE:"timeupdate",VOLUMECHANGE:"volumechange",WAITING:"waiting",HASHCHANGE:"hashchange",PAGEHIDE:"pagehide",PAGESHOW:"pageshow",POPSTATE:"popstate",COPY:"copy",PASTE:"paste",CUT:"cut",BEFORECOPY:"beforecopy",BEFORECUT:"beforecut",BEFOREPASTE:"beforepaste",ONLINE:"online",OFFLINE:"offline",MESSAGE:"message",CONNECT:"connect",ANIMATIONSTART:goog.events.getVendorPrefixedName_("AnimationStart"),ANIMATIONEND:goog.events.getVendorPrefixedName_("AnimationEnd"),ANIMATIONITERATION:goog.events.getVendorPrefixedName_("AnimationIteration"),TRANSITIONEND:goog.events.getVendorPrefixedName_("TransitionEnd"),POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTERCANCEL:"pointercancel",POINTERMOVE:"pointermove",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",GOTPOINTERCAPTURE:"gotpointercapture",LOSTPOINTERCAPTURE:"lostpointercapture",MSGESTURECHANGE:"MSGestureChange",MSGESTUREEND:"MSGestureEnd",MSGESTUREHOLD:"MSGestureHold",MSGESTURESTART:"MSGestureStart",MSGESTURETAP:"MSGestureTap",MSGOTPOINTERCAPTURE:"MSGotPointerCapture",MSINERTIASTART:"MSInertiaStart",MSLOSTPOINTERCAPTURE:"MSLostPointerCapture",MSPOINTERCANCEL:"MSPointerCancel",MSPOINTERDOWN:"MSPointerDown",MSPOINTERENTER:"MSPointerEnter",MSPOINTERHOVER:"MSPointerHover",MSPOINTERLEAVE:"MSPointerLeave",MSPOINTERMOVE:"MSPointerMove",MSPOINTEROUT:"MSPointerOut",MSPOINTEROVER:"MSPointerOver",MSPOINTERUP:"MSPointerUp",TEXT:"text",TEXTINPUT:"textInput",COMPOSITIONSTART:"compositionstart",COMPOSITIONUPDATE:"compositionupdate",COMPOSITIONEND:"compositionend",EXIT:"exit",LOADABORT:"loadabort",LOADCOMMIT:"loadcommit",LOADREDIRECT:"loadredirect",LOADSTART:"loadstart",LOADSTOP:"loadstop",RESPONSIVE:"responsive",SIZECHANGED:"sizechanged",UNRESPONSIVE:"unresponsive",VISIBILITYCHANGE:"visibilitychange",STORAGE:"storage",DOMSUBTREEMODIFIED:"DOMSubtreeModified",DOMNODEINSERTED:"DOMNodeInserted",DOMNODEREMOVED:"DOMNodeRemoved",DOMNODEREMOVEDFROMDOCUMENT:"DOMNodeRemovedFromDocument",DOMNODEINSERTEDINTODOCUMENT:"DOMNodeInsertedIntoDocument",DOMATTRMODIFIED:"DOMAttrModified",DOMCHARACTERDATAMODIFIED:"DOMCharacterDataModified",BEFOREPRINT:"beforeprint",AFTERPRINT:"afterprint"},goog.events.BrowserEvent=function(e,o){goog.events.Event.call(this,e?e.type:""),this.relatedTarget=this.currentTarget=this.target=null,this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0,this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.platformModifierKey=!1,this.event_=null,e&&this.init(e,o)},goog.inherits(goog.events.BrowserEvent,goog.events.Event),goog.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2},goog.events.BrowserEvent.IEButtonMap=[1,4,2],goog.events.BrowserEvent.prototype.init=function(e,o){var t=this.type=e.type,n=e.changedTouches?e.changedTouches[0]:null;this.target=e.target||e.srcElement,this.currentTarget=o;var r=e.relatedTarget;r?goog.userAgent.GECKO&&(goog.reflect.canAccessProperty(r,"nodeName")||(r=null)):t==goog.events.EventType.MOUSEOVER?r=e.fromElement:t==goog.events.EventType.MOUSEOUT&&(r=e.toElement),this.relatedTarget=r,goog.isNull(n)?(this.offsetX=goog.userAgent.WEBKIT||void 0!==e.offsetX?e.offsetX:e.layerX,this.offsetY=goog.userAgent.WEBKIT||void 0!==e.offsetY?e.offsetY:e.layerY,this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0):(this.clientX=void 0!==n.clientX?n.clientX:n.pageX,this.clientY=void 0!==n.clientY?n.clientY:n.pageY,this.screenX=n.screenX||0,this.screenY=n.screenY||0),this.button=e.button,this.keyCode=e.keyCode||0,this.charCode=e.charCode||("keypress"==t?e.keyCode:0),this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.platformModifierKey=goog.userAgent.MAC?e.metaKey:e.ctrlKey,this.state=e.state,this.event_=e,e.defaultPrevented&&this.preventDefault()},goog.events.BrowserEvent.prototype.isButton=function(e){return goog.events.BrowserFeature.HAS_W3C_BUTTON?this.event_.button==e:"click"==this.type?e==goog.events.BrowserEvent.MouseButton.LEFT:!!(this.event_.button&goog.events.BrowserEvent.IEButtonMap[e])},goog.events.BrowserEvent.prototype.isMouseActionButton=function(){return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT)&&!(goog.userAgent.WEBKIT&&goog.userAgent.MAC&&this.ctrlKey)},goog.events.BrowserEvent.prototype.stopPropagation=function(){goog.events.BrowserEvent.superClass_.stopPropagation.call(this),this.event_.stopPropagation?this.event_.stopPropagation():this.event_.cancelBubble=!0},goog.events.BrowserEvent.prototype.preventDefault=function(){goog.events.BrowserEvent.superClass_.preventDefault.call(this);var e=this.event_;if(e.preventDefault)e.preventDefault();else if(e.returnValue=!1,goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)try{(e.ctrlKey||112<=e.keyCode&&123>=e.keyCode)&&(e.keyCode=-1)}catch(o){}},goog.events.BrowserEvent.prototype.getBrowserEvent=function(){return this.event_},goog.events.Listenable=function(){},goog.events.Listenable.IMPLEMENTED_BY_PROP="closure_listenable_"+(1e6*Math.random()|0),goog.events.Listenable.addImplementation=function(e){e.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP]=!0},goog.events.Listenable.isImplementedBy=function(e){return!(!e||!e[goog.events.Listenable.IMPLEMENTED_BY_PROP])},goog.events.ListenableKey=function(){},goog.events.ListenableKey.counter_=0,goog.events.ListenableKey.reserveKey=function(){return++goog.events.ListenableKey.counter_},goog.events.Listener=function(e,o,t,n,r,i){goog.events.Listener.ENABLE_MONITORING&&(this.creationStack=Error().stack),this.listener=e,this.proxy=o,this.src=t,this.type=n,this.capture=!!r,this.handler=i,this.key=goog.events.ListenableKey.reserveKey(),this.removed=this.callOnce=!1},goog.events.Listener.ENABLE_MONITORING=!1,goog.events.Listener.prototype.markAsRemoved=function(){this.removed=!0,this.handler=this.src=this.proxy=this.listener=null},goog.events.ListenerMap=function(e){this.src=e,this.listeners={},this.typeCount_=0},goog.events.ListenerMap.prototype.getTypeCount=function(){return this.typeCount_},goog.events.ListenerMap.prototype.getListenerCount=function(){var e,o=0;for(e in this.listeners)o+=this.listeners[e].length;return o},goog.events.ListenerMap.prototype.add=function(e,o,t,n,r){var i=e.toString();e=this.listeners[i],e||(e=this.listeners[i]=[],this.typeCount_++);var s=goog.events.ListenerMap.findListenerIndex_(e,o,n,r);return s>-1?(o=e[s],t||(o.callOnce=!1)):(o=new goog.events.Listener(o,null,this.src,i,!!n,r),o.callOnce=t,e.push(o)),o},goog.events.ListenerMap.prototype.remove=function(e,o,t,n){if(e=e.toString(),!(e in this.listeners))return!1;var r=this.listeners[e];return o=goog.events.ListenerMap.findListenerIndex_(r,o,t,n),o>-1?(r[o].markAsRemoved(),goog.array.removeAt(r,o),0==r.length&&(delete this.listeners[e],this.typeCount_--),!0):!1},goog.events.ListenerMap.prototype.removeByKey=function(e){var o=e.type;if(!(o in this.listeners))return!1;var t=goog.array.remove(this.listeners[o],e);return t&&(e.markAsRemoved(),0==this.listeners[o].length&&(delete this.listeners[o],this.typeCount_--)),t},goog.events.ListenerMap.prototype.removeAll=function(e){e=e&&e.toString();var o,t=0;for(o in this.listeners)if(!e||o==e){for(var n=this.listeners[o],r=0;r-1?e[r]:null},goog.events.ListenerMap.prototype.hasListener=function(e,o){var t=goog.isDef(e),n=t?e.toString():"",r=goog.isDef(o);return goog.object.some(this.listeners,function(e,i){for(var s=0;s=0;s--){n.currentTarget=t[s];var l=goog.events.fireListeners_(t[s],i,!0,n),r=r&&l}for(s=0;!n.propagationStopped_&&se.keyCode||void 0!=e.returnValue},goog.events.uniqueIdCounter_=0,goog.events.getUniqueId=function(e){return e+"_"+goog.events.uniqueIdCounter_++},goog.events.getListenerMap_=function(e){return e=e[goog.events.LISTENER_MAP_PROP_],e instanceof goog.events.ListenerMap?e:null},goog.events.LISTENER_WRAPPER_PROP_="__closure_events_fn_"+(1e9*Math.random()>>>0),goog.events.wrapListener=function(e){return goog.asserts.assert(e,"Listener can not be null."),goog.isFunction(e)?e:(goog.asserts.assert(e.handleEvent,"An object listener must have handleEvent method."),e[goog.events.LISTENER_WRAPPER_PROP_]||(e[goog.events.LISTENER_WRAPPER_PROP_]=function(o){return e.handleEvent(o)}),e[goog.events.LISTENER_WRAPPER_PROP_])},goog.debug.entryPointRegistry.register(function(e){goog.events.handleBrowserEvent_=e(goog.events.handleBrowserEvent_)}),goog.math={},goog.math.randomInt=function(e){return Math.floor(Math.random()*e)},goog.math.uniformRandom=function(e,o){return e+Math.random()*(o-e)},goog.math.clamp=function(e,o,t){return Math.min(Math.max(e,o),t)},goog.math.modulo=function(e,o){var t=e%o;return 0>t*o?t+o:t},goog.math.lerp=function(e,o,t){return e+t*(o-e)},goog.math.nearlyEquals=function(e,o,t){return Math.abs(e-o)<=(t||1e-6)},goog.math.standardAngle=function(e){return goog.math.modulo(e,360)},goog.math.standardAngleInRadians=function(e){return goog.math.modulo(e,2*Math.PI)},goog.math.toRadians=function(e){return e*Math.PI/180},goog.math.toDegrees=function(e){return 180*e/Math.PI},goog.math.angleDx=function(e,o){return o*Math.cos(goog.math.toRadians(e))},goog.math.angleDy=function(e,o){return o*Math.sin(goog.math.toRadians(e))},goog.math.angle=function(e,o,t,n){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(n-o,t-e)))},goog.math.angleDifference=function(e,o){var t=goog.math.standardAngle(o)-goog.math.standardAngle(e);return t>180?t-=360:-180>=t&&(t=360+t),t},goog.math.sign=function(e){return e>0?1:0>e?-1:e},goog.math.longestCommonSubsequence=function(e,o,t,n){t=t||function(e,o){return e==o},n=n||function(o,t){return e[o]};for(var r=e.length,i=o.length,s=[],l=0;r+1>l;l++)s[l]=[],s[l][0]=0;for(var g=0;i+1>g;g++)s[0][g]=0;for(l=1;r>=l;l++)for(g=1;i>=g;g++)t(e[l-1],o[g-1])?s[l][g]=s[l-1][g-1]+1:s[l][g]=Math.max(s[l-1][g],s[l][g-1]);for(var a=[],l=r,g=i;l>0&&g>0;)t(e[l-1],o[g-1])?(a.unshift(n(l-1,g-1)),l--,g--):s[l-1][g]>s[l][g-1]?l--:g--;return a},goog.math.sum=function(e){return goog.array.reduce(arguments,function(e,o){return e+o},0)},goog.math.average=function(e){return goog.math.sum.apply(null,arguments)/arguments.length},goog.math.sampleVariance=function(e){var o=arguments.length;if(2>o)return 0;var t=goog.math.average.apply(null,arguments);return goog.math.sum.apply(null,goog.array.map(arguments,function(e){return Math.pow(e-t,2)}))/(o-1)},goog.math.standardDeviation=function(e){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))},goog.math.isInt=function(e){return isFinite(e)&&0==e%1},goog.math.isFiniteNumber=function(e){return isFinite(e)&&!isNaN(e)},goog.math.isNegativeZero=function(e){return 0==e&&0>1/e},goog.math.log10Floor=function(e){if(e>0){var o=Math.round(Math.log(e)*Math.LOG10E);return o-(parseFloat("1e"+o)>e?1:0)}return 0==e?-(1/0):NaN},goog.math.safeFloor=function(e,o){return goog.asserts.assert(!goog.isDef(o)||o>0),Math.floor(e+(o||2e-15))},goog.math.safeCeil=function(e,o){return goog.asserts.assert(!goog.isDef(o)||o>0),Math.ceil(e-(o||2e-15))},goog.dom.BrowserFeature={CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO&&!goog.userAgent.IE||goog.userAgent.IE&&goog.userAgent.isDocumentModeOrHigher(9)||goog.userAgent.GECKO&&goog.userAgent.isVersionOrHigher("1.9.1"),CAN_USE_INNER_TEXT:goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE||goog.userAgent.OPERA||goog.userAgent.WEBKIT,INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE,LEGACY_IE_RANGES:goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(9)},goog.dom.TagName=function(e){this.tagName_=e},goog.dom.TagName.prototype.toString=function(){return this.tagName_},goog.dom.TagName.A=new goog.dom.TagName("A"),goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR"),goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM"),goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS"),goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET"),goog.dom.TagName.AREA=new goog.dom.TagName("AREA"),goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE"),goog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE"),goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO"),goog.dom.TagName.B=new goog.dom.TagName("B"),goog.dom.TagName.BASE=new goog.dom.TagName("BASE"),goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT"),goog.dom.TagName.BDI=new goog.dom.TagName("BDI"),goog.dom.TagName.BDO=new goog.dom.TagName("BDO"),goog.dom.TagName.BIG=new goog.dom.TagName("BIG"),goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE"),goog.dom.TagName.BODY=new goog.dom.TagName("BODY"),goog.dom.TagName.BR=new goog.dom.TagName("BR"),goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON"),goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS"),goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION"),goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER"),goog.dom.TagName.CITE=new goog.dom.TagName("CITE"),goog.dom.TagName.CODE=new goog.dom.TagName("CODE"),goog.dom.TagName.COL=new goog.dom.TagName("COL"),goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP"),goog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND"),goog.dom.TagName.DATA=new goog.dom.TagName("DATA"),goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST"),goog.dom.TagName.DD=new goog.dom.TagName("DD"),goog.dom.TagName.DEL=new goog.dom.TagName("DEL"),goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS"),goog.dom.TagName.DFN=new goog.dom.TagName("DFN"),goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG"),goog.dom.TagName.DIR=new goog.dom.TagName("DIR"),goog.dom.TagName.DIV=new goog.dom.TagName("DIV"),goog.dom.TagName.DL=new goog.dom.TagName("DL"),goog.dom.TagName.DT=new goog.dom.TagName("DT"),goog.dom.TagName.EM=new goog.dom.TagName("EM"),goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED"),goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET"),goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION"),goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE"),goog.dom.TagName.FONT=new goog.dom.TagName("FONT"),goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER"),goog.dom.TagName.FORM=new goog.dom.TagName("FORM"),goog.dom.TagName.FRAME=new goog.dom.TagName("FRAME"),goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET"),goog.dom.TagName.H1=new goog.dom.TagName("H1"),goog.dom.TagName.H2=new goog.dom.TagName("H2"),goog.dom.TagName.H3=new goog.dom.TagName("H3"),goog.dom.TagName.H4=new goog.dom.TagName("H4"),goog.dom.TagName.H5=new goog.dom.TagName("H5"),goog.dom.TagName.H6=new goog.dom.TagName("H6"),goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD"),goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER"),goog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP"),goog.dom.TagName.HR=new goog.dom.TagName("HR"),goog.dom.TagName.HTML=new goog.dom.TagName("HTML"),goog.dom.TagName.I=new goog.dom.TagName("I"),goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME"),goog.dom.TagName.IMG=new goog.dom.TagName("IMG"),goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT"),goog.dom.TagName.INS=new goog.dom.TagName("INS"),goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX"),goog.dom.TagName.KBD=new goog.dom.TagName("KBD"),goog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN"),goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL"),goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND"),goog.dom.TagName.LI=new goog.dom.TagName("LI"),goog.dom.TagName.LINK=new goog.dom.TagName("LINK"),goog.dom.TagName.MAP=new goog.dom.TagName("MAP"),goog.dom.TagName.MARK=new goog.dom.TagName("MARK"),goog.dom.TagName.MATH=new goog.dom.TagName("MATH"),goog.dom.TagName.MENU=new goog.dom.TagName("MENU"),goog.dom.TagName.META=new goog.dom.TagName("META"),goog.dom.TagName.METER=new goog.dom.TagName("METER"),goog.dom.TagName.NAV=new goog.dom.TagName("NAV"),goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES"),goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT"),goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT"),goog.dom.TagName.OL=new goog.dom.TagName("OL"),goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP"),goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION"),goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT"),goog.dom.TagName.P=new goog.dom.TagName("P"),goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM"),goog.dom.TagName.PRE=new goog.dom.TagName("PRE"),goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS"),goog.dom.TagName.Q=new goog.dom.TagName("Q"),goog.dom.TagName.RP=new goog.dom.TagName("RP"),goog.dom.TagName.RT=new goog.dom.TagName("RT"),goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY"),goog.dom.TagName.S=new goog.dom.TagName("S"),goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP"),goog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT"),goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION"),goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT"),goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL"),goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE"),goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN"),goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE"),goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG"),goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE"),goog.dom.TagName.SUB=new goog.dom.TagName("SUB"),goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY"),goog.dom.TagName.SUP=new goog.dom.TagName("SUP"),goog.dom.TagName.SVG=new goog.dom.TagName("SVG"),goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE"),goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY"),goog.dom.TagName.TD=new goog.dom.TagName("TD"),goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE"),goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA"),goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT"),goog.dom.TagName.TH=new goog.dom.TagName("TH"),goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD"),goog.dom.TagName.TIME=new goog.dom.TagName("TIME"),goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE"),goog.dom.TagName.TR=new goog.dom.TagName("TR"),goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK"),goog.dom.TagName.TT=new goog.dom.TagName("TT"),goog.dom.TagName.U=new goog.dom.TagName("U"),goog.dom.TagName.UL=new goog.dom.TagName("UL"),goog.dom.TagName.VAR=new goog.dom.TagName("VAR"),goog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO"),goog.dom.TagName.WBR=new goog.dom.TagName("WBR"),goog.dom.tags={},goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},goog.dom.tags.isVoidTag=function(e){return!0===goog.dom.tags.VOID_TAGS_[e]},goog.string.TypedString=function(){},goog.string.Const=function(){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_="",this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_},goog.string.Const.prototype.implementsGoogStringTypedString=!0,goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_},goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"},goog.string.Const.unwrap=function(e){return e instanceof goog.string.Const&&e.constructor===goog.string.Const&&e.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_?e.stringConstValueWithSecurityContract__googStringSecurityPrivate_:(goog.asserts.fail("expected object of type Const, got '"+e+"'"),"type_error:Const")},goog.string.Const.from=function(e){return goog.string.Const.create__googStringSecurityPrivate_(e)},goog.string.Const.TYPE_MARKER_={},goog.string.Const.create__googStringSecurityPrivate_=function(e){var o=new goog.string.Const;return o.stringConstValueWithSecurityContract__googStringSecurityPrivate_=e,o},goog.string.Const.EMPTY=goog.string.Const.from(""),goog.html={},goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="",this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyle.fromConstant=function(e){ return e=goog.string.Const.unwrap(e),0===e.length?goog.html.SafeStyle.EMPTY:(goog.html.SafeStyle.checkStyle_(e),goog.asserts.assert(goog.string.endsWith(e,";"),"Last character of style string is not ';': "+e),goog.asserts.assert(goog.string.contains(e,":"),"Style string must contain at least one ':', to specify a \"name: value\" pair: "+e),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyle.checkStyle_=function(e){goog.asserts.assert(!/[<>]/.test(e),"Forbidden characters in style string: "+e)},goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_},goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"}),goog.html.SafeStyle.unwrap=function(e){return e instanceof goog.html.SafeStyle&&e.constructor===goog.html.SafeStyle&&e.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleWrappedValue_:(goog.asserts.fail("expected object of type SafeStyle, got '"+e+"' of type "+goog.typeOf(e)),"type_error:SafeStyle")},goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_=e,this},goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(""),goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez",goog.html.SafeStyle.create=function(e){var o,t="";for(o in e){if(!/^[-_a-zA-Z0-9]+$/.test(o))throw Error("Name allows only [-_a-zA-Z0-9], got: "+o);var n=e[o];null!=n&&(n instanceof goog.string.Const?(n=goog.string.Const.unwrap(n),goog.asserts.assert(!/[{;}]/.test(n),"Value does not allow [{;}].")):goog.html.SafeStyle.VALUE_RE_.test(n)?goog.html.SafeStyle.hasBalancedQuotes_(n)||(goog.asserts.fail("String value requires balanced quotes, got: "+n),n=goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only [-,.\"'%_!# a-zA-Z0-9], rgb() and rgba(), got: "+n),n=goog.html.SafeStyle.INNOCUOUS_STRING),t+=o+":"+n+";")}return t?(goog.html.SafeStyle.checkStyle_(t),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t)):goog.html.SafeStyle.EMPTY},goog.html.SafeStyle.hasBalancedQuotes_=function(e){for(var o=!0,t=!0,n=0;n0?goog.i18n.bidi.Dir.LTR:0>e?goog.i18n.bidi.Dir.RTL:o?null:goog.i18n.bidi.Dir.NEUTRAL:null==e?null:e?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.ltrChars_="A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿‎Ⰰ-﬜︀-﹯﻽-￿",goog.i18n.bidi.rtlChars_="֑-ۯۺ-߿‏יִ-﷿ﹰ-ﻼ",goog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g,goog.i18n.bidi.stripHtmlIfNeeded_=function(e,o){return o?e.replace(goog.i18n.bidi.htmlSkipReg_,""):e},goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.hasAnyRtl=function(e,o){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl,goog.i18n.bidi.hasAnyLtr=function(e,o){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.isRtlChar=function(e){return goog.i18n.bidi.rtlRe_.test(e)},goog.i18n.bidi.isLtrChar=function(e){return goog.i18n.bidi.ltrRe_.test(e)},goog.i18n.bidi.isNeutralChar=function(e){return!goog.i18n.bidi.isLtrChar(e)&&!goog.i18n.bidi.isRtlChar(e)},goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.startsWithRtl=function(e,o){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl,goog.i18n.bidi.startsWithLtr=function(e,o){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr,goog.i18n.bidi.isRequiredLtrRe_=/^http:\/\/.*/,goog.i18n.bidi.isNeutralText=function(e,o){return e=goog.i18n.bidi.stripHtmlIfNeeded_(e,o),goog.i18n.bidi.isRequiredLtrRe_.test(e)||!goog.i18n.bidi.hasAnyLtr(e)&&!goog.i18n.bidi.hasAnyRtl(e)},goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$"),goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$"),goog.i18n.bidi.endsWithLtr=function(e,o){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr,goog.i18n.bidi.endsWithRtl=function(e,o){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,o))},goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl,goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i,goog.i18n.bidi.isRtlLanguage=function(e){return goog.i18n.bidi.rtlLocalesRe_.test(e)},goog.i18n.bidi.bracketGuardTextRe_=/(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g,goog.i18n.bidi.guardBracketInText=function(e,o){var t=(void 0===o?goog.i18n.bidi.hasAnyRtl(e):o)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM;return e.replace(goog.i18n.bidi.bracketGuardTextRe_,t+"$&"+t)},goog.i18n.bidi.enforceRtlInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\w+/,"$& dir=rtl"):"\n"+e+""},goog.i18n.bidi.enforceRtlInText=function(e){return goog.i18n.bidi.Format.RLE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.enforceLtrInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\w+/,"$& dir=ltr"):"\n"+e+""},goog.i18n.bidi.enforceLtrInText=function(e){return goog.i18n.bidi.Format.LRE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.dimensionsRe_=/:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g,goog.i18n.bidi.leftRe_=/left/gi,goog.i18n.bidi.rightRe_=/right/gi,goog.i18n.bidi.tempRe_=/%%%%/g,goog.i18n.bidi.mirrorCSS=function(e){return e.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)},goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\u0591-\u05f2])"/g,goog.i18n.bidi.singleQuoteSubstituteRe_=/([\u0591-\u05f2])'/g,goog.i18n.bidi.normalizeHebrewQuote=function(e){return e.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1״").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1׳")},goog.i18n.bidi.wordSeparatorRe_=/\s+/,goog.i18n.bidi.hasNumeralsRe_=/[\d\u06f0-\u06f9]/,goog.i18n.bidi.rtlDetectionThreshold_=.4,goog.i18n.bidi.estimateDirection=function(e,o){for(var t=0,n=0,r=!1,i=goog.i18n.bidi.stripHtmlIfNeeded_(e,o).split(goog.i18n.bidi.wordSeparatorRe_),s=0;sgoog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.detectRtlDirectionality=function(e,o){return goog.i18n.bidi.estimateDirection(e,o)==goog.i18n.bidi.Dir.RTL},goog.i18n.bidi.setElementDirAndAlign=function(e,o){e&&(o=goog.i18n.bidi.toDir(o))&&(e.style.textAlign=o==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,e.dir=o==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")},goog.i18n.bidi.setElementDirByTextDirectionality=function(e,o){switch(goog.i18n.bidi.estimateDirection(o)){case goog.i18n.bidi.Dir.LTR:e.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:e.dir="rtl";break;default:e.removeAttribute("dir")}},goog.i18n.bidi.DirectionalString=function(){},goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="",this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez",goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0,goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_},goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"}),goog.html.SafeUrl.unwrap=function(e){return e instanceof goog.html.SafeUrl&&e.constructor===goog.html.SafeUrl&&e.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeHtmlWrappedValue_:(goog.asserts.fail("expected object of type SafeUrl, got '"+e+"' of type "+goog.typeOf(e)),"type_error:SafeUrl")},goog.html.SafeUrl.fromConstant=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm))$/i,goog.html.SafeUrl.fromBlob=function(e){return e=goog.html.SAFE_MIME_TYPE_PATTERN_.test(e.type)?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.DATA_URL_PATTERN_=/^data:([^;,]*);base64,[a-z0-9+\/]+=*$/i,goog.html.SafeUrl.fromDataUrl=function(e){var o=e.match(goog.html.DATA_URL_PATTERN_),o=o&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(o[1]);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(o?e:goog.html.SafeUrl.INNOCUOUS_STRING)},goog.html.SafeUrl.fromTelUrl=function(e){return goog.string.caseInsensitiveStartsWith(e,"tel:")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^&:\/?#]*(?:[\/?#]|$))/i,goog.html.SafeUrl.sanitize=function(e){return e instanceof goog.html.SafeUrl?e:(e=e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SAFE_URL_PATTERN_.test(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(e){var o=new goog.html.SafeUrl;return o.privateDoNotAccessOrElseSafeHtmlWrappedValue_=e,o},goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank"),goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="",this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0,goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_},goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"}),goog.html.TrustedResourceUrl.unwrap=function(e){return e instanceof goog.html.TrustedResourceUrl&&e.constructor===goog.html.TrustedResourceUrl&&e.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_:(goog.asserts.fail("expected object of type TrustedResourceUrl, got '"+e+"' of type "+goog.typeOf(e)),"type_error:TrustedResourceUrl")},goog.html.TrustedResourceUrl.format=function(e,o){var t=goog.string.Const.unwrap(e);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(t))throw Error("Invalid TrustedResourceUrl format: "+t);var n=t.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(e,n){if(!Object.prototype.hasOwnProperty.call(o,n))throw Error('Found marker, "'+n+'", in format string, "'+t+'", but no valid label mapping found in args: '+JSON.stringify(o));var r=o[n];return r instanceof goog.string.Const?goog.string.Const.unwrap(r):encodeURIComponent(String(r))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(n)},goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\w+)}/g,goog.html.TrustedResourceUrl.SCHEME_AND_ORIGIN_="(?:(?:https:)?//[0-9a-z.:[\\]-]+)?",goog.html.TrustedResourceUrl.BASE_ABSOLUTE_PATH_="(?:/[0-9a-z_~-]+(?:[/#?]|$))",goog.html.TrustedResourceUrl.BASE_URL_=new RegExp("^"+goog.html.TrustedResourceUrl.SCHEME_AND_ORIGIN_+goog.html.TrustedResourceUrl.BASE_ABSOLUTE_PATH_,"i"),goog.html.TrustedResourceUrl.fromConstant=function(e){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.TrustedResourceUrl.fromConstants=function(e){for(var o="",t=0;t.");if(e.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name <"+e+"> is not allowed for SafeHtml.")},goog.html.SafeHtml.createIframe=function(e,o,t,n){e&&goog.html.TrustedResourceUrl.unwrap(e);var r={};return r.src=e||null,r.srcdoc=o&&goog.html.SafeHtml.unwrap(o),e=goog.html.SafeHtml.combineAttributes(r,{sandbox:""},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,n)},goog.html.SafeHtml.createSandboxIframe=function(e,o,t,n){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var r={};return r.src=e?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)):null,r.srcdoc=o||null,r.sandbox="",e=goog.html.SafeHtml.combineAttributes(r,{},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,n)},goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype},goog.html.SafeHtml.createScriptSrc=function(e,o){goog.html.TrustedResourceUrl.unwrap(e);var t=goog.html.SafeHtml.combineAttributes({src:e},{},o);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",t)},goog.html.SafeHtml.createStyle=function(e,o){var t=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},o),n="";e=goog.array.concat(e);for(var r=0;r does not allow content."),n+=">"):(r=goog.html.SafeHtml.concat(t),n+=">"+goog.html.SafeHtml.unwrap(r)+"",r=r.getDirection()),(e=o&&o.dir)&&(r=/^(ltr|rtl|auto)$/i.test(e)?goog.i18n.bidi.Dir.NEUTRAL:null),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(n,r)},goog.html.SafeHtml.stringifyAttributes=function(e,o){var t="";if(o)for(var n in o){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(n))throw Error('Invalid attribute name "'+n+'".');var r=o[n];goog.isDefAndNotNull(r)&&(t+=" "+goog.html.SafeHtml.getAttrNameAndValue_(e,n,r))}return t},goog.html.SafeHtml.combineAttributes=function(e,o,t){var n,r={};for(n in e)goog.asserts.assert(n.toLowerCase()==n,"Must be lower case"),r[n]=e[n];for(n in o)goog.asserts.assert(n.toLowerCase()==n,"Must be lower case"),r[n]=o[n];for(n in t){var i=n.toLowerCase();if(i in e)throw Error('Cannot override "'+i+'" attribute, got "'+n+'" with value "'+t[n]+'"');i in o&&delete r[i],r[n]=t[n]}return r},goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("
",goog.i18n.bidi.Dir.NEUTRAL),goog.dom.safe={},goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"},goog.dom.safe.insertAdjacentHtml=function(e,o,t){e.insertAdjacentHTML(o,goog.html.SafeHtml.unwrap(t))},goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.dom.safe.setInnerHtml=function(e,o){if(goog.asserts.ENABLE_ASSERTS){var t=e.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[t])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+e.tagName+".")}e.innerHTML=goog.html.SafeHtml.unwrap(o)},goog.dom.safe.setOuterHtml=function(e,o){e.outerHTML=goog.html.SafeHtml.unwrap(o)},goog.dom.safe.setStyle=function(e,o){e.style.cssText=goog.html.SafeStyle.unwrap(o)},goog.dom.safe.documentWrite=function(e,o){e.write(goog.html.SafeHtml.unwrap(o))},goog.dom.safe.setAnchorHref=function(e,o){goog.dom.safe.assertIsHTMLAnchorElement_(e);var t;t=o instanceof goog.html.SafeUrl?o:goog.html.SafeUrl.sanitize(o),e.href=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setImageSrc=function(e,o){goog.dom.safe.assertIsHTMLImageElement_(e);var t;t=o instanceof goog.html.SafeUrl?o:goog.html.SafeUrl.sanitize(o),e.src=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setEmbedSrc=function(e,o){goog.dom.safe.assertIsHTMLEmbedElement_(e),e.src=goog.html.TrustedResourceUrl.unwrap(o)},goog.dom.safe.setFrameSrc=function(e,o){goog.dom.safe.assertIsHTMLFrameElement_(e),e.src=goog.html.TrustedResourceUrl.unwrap(o)},goog.dom.safe.setIframeSrc=function(e,o){goog.dom.safe.assertIsHTMLIFrameElement_(e),e.src=goog.html.TrustedResourceUrl.unwrap(o)},goog.dom.safe.setLinkHrefAndRel=function(e,o,t){goog.dom.safe.assertIsHTMLLinkElement_(e),e.rel=t,goog.string.caseInsensitiveContains(t,"stylesheet")?(goog.asserts.assert(o instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),e.href=goog.html.TrustedResourceUrl.unwrap(o)):e.href=o instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(o):o instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(o):goog.html.SafeUrl.sanitize(o).getTypedStringValue()},goog.dom.safe.setObjectData=function(e,o){goog.dom.safe.assertIsHTMLObjectElement_(e),e.data=goog.html.TrustedResourceUrl.unwrap(o)},goog.dom.safe.setScriptSrc=function(e,o){goog.dom.safe.assertIsHTMLScriptElement_(e),e.src=goog.html.TrustedResourceUrl.unwrap(o)},goog.dom.safe.setLocationHref=function(e,o){goog.dom.safe.assertIsLocation_(e);var t;t=o instanceof goog.html.SafeUrl?o:goog.html.SafeUrl.sanitize(o),e.href=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.openInWindow=function(e,o,t,n,r){return e=e instanceof goog.html.SafeUrl?e:goog.html.SafeUrl.sanitize(e),(o||window).open(goog.html.SafeUrl.unwrap(e),t?goog.string.Const.unwrap(t):"",n,r)},goog.dom.safe.assertIsLocation_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof Location||!(e instanceof Element)),"Argument is not a Location (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLAnchorElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLAnchorElement&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLAnchorElement||!(e instanceof Location||e instanceof Element)),"Argument is not a HTMLAnchorElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLLinkElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLLinkElement&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLLinkElement||!(e instanceof Location||e instanceof Element)),"Argument is not a HTMLLinkElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLImageElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLImageElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLImageElement||!(e instanceof Element)),"Argument is not a HTMLImageElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLEmbedElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLEmbedElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLEmbedElement||!(e instanceof Element)),"Argument is not a HTMLEmbedElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLFrameElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLFrameElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLFrameElement||!(e instanceof Element)),"Argument is not a HTMLFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLIFrameElement_=function(e){ return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLIFrameElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLIFrameElement||!(e instanceof Element)),"Argument is not a HTMLIFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLObjectElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLObjectElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLObjectElement||!(e instanceof Element)),"Argument is not a HTMLObjectElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.assertIsHTMLScriptElement_=function(e){return goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLScriptElement&&"undefined"!=typeof Element&&goog.asserts.assert(e&&(e instanceof HTMLScriptElement||!(e instanceof Element)),"Argument is not a HTMLScriptElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(e)),e},goog.dom.safe.debugStringForType_=function(e){return goog.isObject(e)?e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e):void 0===e?"undefined":null===e?"null":typeof e},goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="",this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0,goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeScript.fromConstant=function(e){return e=goog.string.Const.unwrap(e),0===e.length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_},goog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"}),goog.html.SafeScript.unwrap=function(e){return e instanceof goog.html.SafeScript&&e.constructor===goog.html.SafeScript&&e.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeScriptWrappedValue_:(goog.asserts.fail("expected object of type SafeScript, got '"+e+"' of type "+goog.typeOf(e)),"type_error:SafeScript")},goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_=e,this},goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(""),goog.html.uncheckedconversions={},goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(e,o,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,t||null)},goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(e,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmpty(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(o)},goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(e,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(o)},goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(e,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(o)},goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(e,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(o)},goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(e,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(o)},goog.math.Coordinate=function(e,o){this.x=goog.isDef(e)?e:0,this.y=goog.isDef(o)?o:0},goog.math.Coordinate.prototype.clone=function(){return new goog.math.Coordinate(this.x,this.y)},goog.DEBUG&&(goog.math.Coordinate.prototype.toString=function(){return"("+this.x+", "+this.y+")"}),goog.math.Coordinate.prototype.equals=function(e){return e instanceof goog.math.Coordinate&&goog.math.Coordinate.equals(this,e)},goog.math.Coordinate.equals=function(e,o){return e==o?!0:e&&o?e.x==o.x&&e.y==o.y:!1},goog.math.Coordinate.distance=function(e,o){var t=e.x-o.x,n=e.y-o.y;return Math.sqrt(t*t+n*n)},goog.math.Coordinate.magnitude=function(e){return Math.sqrt(e.x*e.x+e.y*e.y)},goog.math.Coordinate.azimuth=function(e){return goog.math.angle(0,0,e.x,e.y)},goog.math.Coordinate.squaredDistance=function(e,o){var t=e.x-o.x,n=e.y-o.y;return t*t+n*n},goog.math.Coordinate.difference=function(e,o){return new goog.math.Coordinate(e.x-o.x,e.y-o.y)},goog.math.Coordinate.sum=function(e,o){return new goog.math.Coordinate(e.x+o.x,e.y+o.y)},goog.math.Coordinate.prototype.ceil=function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},goog.math.Coordinate.prototype.floor=function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},goog.math.Coordinate.prototype.round=function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},goog.math.Coordinate.prototype.translate=function(e,o){return e instanceof goog.math.Coordinate?(this.x+=e.x,this.y+=e.y):(this.x+=Number(e),goog.isNumber(o)&&(this.y+=o)),this},goog.math.Coordinate.prototype.scale=function(e,o){var t=goog.isNumber(o)?o:e;return this.x*=e,this.y*=t,this},goog.math.Coordinate.prototype.rotateRadians=function(e,o){var t=o||new goog.math.Coordinate(0,0),n=this.x,r=this.y,i=Math.cos(e),s=Math.sin(e);this.x=(n-t.x)*i-(r-t.y)*s+t.x,this.y=(n-t.x)*s+(r-t.y)*i+t.y},goog.math.Coordinate.prototype.rotateDegrees=function(e,o){this.rotateRadians(goog.math.toRadians(e),o)},goog.math.Size=function(e,o){this.width=e,this.height=o},goog.math.Size.equals=function(e,o){return e==o?!0:e&&o?e.width==o.width&&e.height==o.height:!1},goog.math.Size.prototype.clone=function(){return new goog.math.Size(this.width,this.height)},goog.DEBUG&&(goog.math.Size.prototype.toString=function(){return"("+this.width+" x "+this.height+")"}),goog.math.Size.prototype.getLongest=function(){return Math.max(this.width,this.height)},goog.math.Size.prototype.getShortest=function(){return Math.min(this.width,this.height)},goog.math.Size.prototype.area=function(){return this.width*this.height},goog.math.Size.prototype.perimeter=function(){return 2*(this.width+this.height)},goog.math.Size.prototype.aspectRatio=function(){return this.width/this.height},goog.math.Size.prototype.isEmpty=function(){return!this.area()},goog.math.Size.prototype.ceil=function(){return this.width=Math.ceil(this.width),this.height=Math.ceil(this.height),this},goog.math.Size.prototype.fitsInside=function(e){return this.width<=e.width&&this.height<=e.height},goog.math.Size.prototype.floor=function(){return this.width=Math.floor(this.width),this.height=Math.floor(this.height),this},goog.math.Size.prototype.round=function(){return this.width=Math.round(this.width),this.height=Math.round(this.height),this},goog.math.Size.prototype.scale=function(e,o){var t=goog.isNumber(o)?o:e;return this.width*=e,this.height*=t,this},goog.math.Size.prototype.scaleToCover=function(e){return e=this.aspectRatio()<=e.aspectRatio()?e.width/this.width:e.height/this.height,this.scale(e)},goog.math.Size.prototype.scaleToFit=function(e){return e=this.aspectRatio()>e.aspectRatio()?e.width/this.width:e.height/this.height,this.scale(e)},goog.dom.ASSUME_QUIRKS_MODE=!1,goog.dom.ASSUME_STANDARDS_MODE=!1,goog.dom.COMPAT_MODE_KNOWN_=goog.dom.ASSUME_QUIRKS_MODE||goog.dom.ASSUME_STANDARDS_MODE,goog.dom.getDomHelper=function(e){return e?new goog.dom.DomHelper(goog.dom.getOwnerDocument(e)):goog.dom.defaultDomHelper_||(goog.dom.defaultDomHelper_=new goog.dom.DomHelper)},goog.dom.getDocument=function(){return document},goog.dom.getElement=function(e){return goog.dom.getElementHelper_(document,e)},goog.dom.getElementHelper_=function(e,o){return goog.isString(o)?e.getElementById(o):o},goog.dom.getRequiredElement=function(e){return goog.dom.getRequiredElementHelper_(document,e)},goog.dom.getRequiredElementHelper_=function(e,o){goog.asserts.assertString(o);var t=goog.dom.getElementHelper_(e,o);return t=goog.asserts.assertElement(t,"No element found with id: "+o)},goog.dom.$=goog.dom.getElement,goog.dom.getElementsByTagName=function(e,o){return(o||document).getElementsByTagName(String(e))},goog.dom.getElementsByTagNameAndClass=function(e,o,t){return goog.dom.getElementsByTagNameAndClass_(document,e,o,t)},goog.dom.getElementsByClass=function(e,o){var t=o||document;return goog.dom.canUseQuerySelector_(t)?t.querySelectorAll("."+e):goog.dom.getElementsByTagNameAndClass_(document,"*",e,o)},goog.dom.getElementByClass=function(e,o){var t=o||document;return(t.getElementsByClassName?t.getElementsByClassName(e)[0]:goog.dom.canUseQuerySelector_(t)?t.querySelector("."+e):goog.dom.getElementsByTagNameAndClass_(document,"*",e,o)[0])||null},goog.dom.getRequiredElementByClass=function(e,o){var t=goog.dom.getElementByClass(e,o);return goog.asserts.assert(t,"No element found with className: "+e)},goog.dom.canUseQuerySelector_=function(e){return!(!e.querySelectorAll||!e.querySelector)},goog.dom.getElementsByTagNameAndClass_=function(e,o,t,n){if(e=n||e,o=o&&"*"!=o?String(o).toUpperCase():"",goog.dom.canUseQuerySelector_(e)&&(o||t))return e.querySelectorAll(o+(t?"."+t:""));if(t&&e.getElementsByClassName){if(e=e.getElementsByClassName(t),o){n={};for(var r,i=0,s=0;r=e[s];s++)o==r.nodeName&&(n[i++]=r);return n.length=i,n}return e}if(e=e.getElementsByTagName(o||"*"),t){for(n={},s=i=0;r=e[s];s++)o=r.className,"function"==typeof o.split&&goog.array.contains(o.split(/\s+/),t)&&(n[i++]=r);return n.length=i,n}return e},goog.dom.$$=goog.dom.getElementsByTagNameAndClass,goog.dom.setProperties=function(e,o){goog.object.forEach(o,function(o,t){"style"==t?e.style.cssText=o:"class"==t?e.className=o:"for"==t?e.htmlFor=o:goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(t)?e.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[t],o):goog.string.startsWith(t,"aria-")||goog.string.startsWith(t,"data-")?e.setAttribute(t,o):e[t]=o})},goog.dom.DIRECT_ATTRIBUTE_MAP_={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"},goog.dom.getViewportSize=function(e){return goog.dom.getViewportSize_(e||window)},goog.dom.getViewportSize_=function(e){return e=e.document,e=goog.dom.isCss1CompatMode_(e)?e.documentElement:e.body,new goog.math.Size(e.clientWidth,e.clientHeight)},goog.dom.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(window)},goog.dom.getDocumentHeightForWindow=function(e){return goog.dom.getDocumentHeight_(e)},goog.dom.getDocumentHeight_=function(e){var o=e.document,t=0;if(o){var t=o.body,n=o.documentElement;if(!n||!t)return 0;if(e=goog.dom.getViewportSize_(e).height,goog.dom.isCss1CompatMode_(o)&&n.scrollHeight)t=n.scrollHeight!=e?n.scrollHeight:n.offsetHeight;else{var o=n.scrollHeight,r=n.offsetHeight;n.clientHeight!=r&&(o=t.scrollHeight,r=t.offsetHeight),t=o>e?o>r?o:r:r>o?o:r}}return t},goog.dom.getPageScroll=function(e){return goog.dom.getDomHelper((e||goog.global||window).document).getDocumentScroll()},goog.dom.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(document)},goog.dom.getDocumentScroll_=function(e){var o=goog.dom.getDocumentScrollElement_(e);return e=goog.dom.getWindow_(e),goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("10")&&e.pageYOffset!=o.scrollTop?new goog.math.Coordinate(o.scrollLeft,o.scrollTop):new goog.math.Coordinate(e.pageXOffset||o.scrollLeft,e.pageYOffset||o.scrollTop)},goog.dom.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(document)},goog.dom.getDocumentScrollElement_=function(e){return e.scrollingElement?e.scrollingElement:!goog.userAgent.WEBKIT&&goog.dom.isCss1CompatMode_(e)?e.documentElement:e.body||e.documentElement},goog.dom.getWindow=function(e){return e?goog.dom.getWindow_(e):window},goog.dom.getWindow_=function(e){return e.parentWindow||e.defaultView},goog.dom.createDom=function(e,o,t){return goog.dom.createDom_(document,arguments)},goog.dom.createDom_=function(e,o){var t=String(o[0]),n=o[1];if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES&&n&&(n.name||n.type)){if(t=["<",t],n.name&&t.push(' name="',goog.string.htmlEscape(n.name),'"'),n.type){t.push(' type="',goog.string.htmlEscape(n.type),'"');var r={};goog.object.extend(r,n),delete r.type,n=r}t.push(">"),t=t.join("")}return t=e.createElement(t),n&&(goog.isString(n)?t.className=n:goog.isArray(n)?t.className=n.join(" "):goog.dom.setProperties(t,n)),2s;s++){for(var l=goog.dom.createElement_(e,"TR"),g=0;t>g;g++){var a=goog.dom.createElement_(e,"TD");n&&goog.dom.setTextContent(a,goog.string.Unicode.NBSP),l.appendChild(a)}i.appendChild(l)}return r},goog.dom.constHtmlToNode=function(e){var o=goog.array.map(arguments,goog.string.Const.unwrap),o=goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML string, that gets turned into a Node later, so it will be automatically balanced."),o.join(""));return goog.dom.safeHtmlToNode(o)},goog.dom.safeHtmlToNode=function(e){return goog.dom.safeHtmlToNode_(document,e)},goog.dom.safeHtmlToNode_=function(e,o){var t=goog.dom.createElement_(e,"DIV");return goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT?(goog.dom.safe.setInnerHtml(t,goog.html.SafeHtml.concat(goog.html.SafeHtml.BR,o)),t.removeChild(t.firstChild)):goog.dom.safe.setInnerHtml(t,o),goog.dom.childrenToNode_(e,t)},goog.dom.childrenToNode_=function(e,o){if(1==o.childNodes.length)return o.removeChild(o.firstChild);for(var t=e.createDocumentFragment();o.firstChild;)t.appendChild(o.firstChild);return t},goog.dom.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(document)},goog.dom.isCss1CompatMode_=function(e){return goog.dom.COMPAT_MODE_KNOWN_?goog.dom.ASSUME_STANDARDS_MODE:"CSS1Compat"==e.compatMode},goog.dom.canHaveChildren=function(e){if(e.nodeType!=goog.dom.NodeType.ELEMENT)return!1;switch(e.tagName){case"APPLET":case"AREA":case"BASE":case"BR":case"COL":case"COMMAND":case"EMBED":case"FRAME":case"HR":case"IMG":case"INPUT":case"IFRAME":case"ISINDEX":case"KEYGEN":case"LINK":case"NOFRAMES":case"NOSCRIPT":case"META":case"OBJECT":case"PARAM":case"SCRIPT":case"SOURCE":case"STYLE":case"TRACK":case"WBR":return!1}return!0},goog.dom.appendChild=function(e,o){e.appendChild(o)},goog.dom.append=function(e,o){goog.dom.append_(goog.dom.getOwnerDocument(e),e,arguments,1)},goog.dom.removeChildren=function(e){for(var o;o=e.firstChild;)e.removeChild(o)},goog.dom.insertSiblingBefore=function(e,o){o.parentNode&&o.parentNode.insertBefore(e,o)},goog.dom.insertSiblingAfter=function(e,o){o.parentNode&&o.parentNode.insertBefore(e,o.nextSibling)},goog.dom.insertChildAt=function(e,o,t){e.insertBefore(o,e.childNodes[t]||null)},goog.dom.removeNode=function(e){return e&&e.parentNode?e.parentNode.removeChild(e):null},goog.dom.replaceNode=function(e,o){var t=o.parentNode;t&&t.replaceChild(e,o)},goog.dom.flattenElement=function(e){var o,t=e.parentNode;if(t&&t.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT){if(e.removeNode)return e.removeNode(!1);for(;o=e.firstChild;)t.insertBefore(o,e);return goog.dom.removeNode(e)}},goog.dom.getChildren=function(e){return goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE&&void 0!=e.children?e.children:goog.array.filter(e.childNodes,function(e){return e.nodeType==goog.dom.NodeType.ELEMENT})},goog.dom.getFirstElementChild=function(e){return goog.isDef(e.firstElementChild)?e.firstElementChild:goog.dom.getNextElementNode_(e.firstChild,!0)},goog.dom.getLastElementChild=function(e){return goog.isDef(e.lastElementChild)?e.lastElementChild:goog.dom.getNextElementNode_(e.lastChild,!1)},goog.dom.getNextElementSibling=function(e){return goog.isDef(e.nextElementSibling)?e.nextElementSibling:goog.dom.getNextElementNode_(e.nextSibling,!0)},goog.dom.getPreviousElementSibling=function(e){return goog.isDef(e.previousElementSibling)?e.previousElementSibling:goog.dom.getNextElementNode_(e.previousSibling,!1)},goog.dom.getNextElementNode_=function(e,o){for(;e&&e.nodeType!=goog.dom.NodeType.ELEMENT;)e=o?e.nextSibling:e.previousSibling;return e},goog.dom.getNextNode=function(e){if(!e)return null;if(e.firstChild)return e.firstChild;for(;e&&!e.nextSibling;)e=e.parentNode;return e?e.nextSibling:null},goog.dom.getPreviousNode=function(e){if(!e)return null;if(!e.previousSibling)return e.parentNode;for(e=e.previousSibling;e&&e.lastChild;)e=e.lastChild;return e},goog.dom.isNodeLike=function(e){return goog.isObject(e)&&0o;o++){for(var i=[],s=arguments[o];s;)i.unshift(s),s=s.parentNode;n.push(i),r=Math.min(r,i.length)}for(i=null,o=0;r>o;o++){for(var s=n[0][o],l=1;t>l;l++)if(s!=n[l][o])return i;i=s}return i},goog.dom.getOwnerDocument=function(e){return goog.asserts.assert(e,"Node cannot be null or undefined."),e.nodeType==goog.dom.NodeType.DOCUMENT?e:e.ownerDocument||e.document},goog.dom.getFrameContentDocument=function(e){return e.contentDocument||e.contentWindow.document},goog.dom.getFrameContentWindow=function(e){try{return e.contentWindow||(e.contentDocument?goog.dom.getWindow(e.contentDocument):null)}catch(o){}return null},goog.dom.setTextContent=function(e,o){if(goog.asserts.assert(null!=e,"goog.dom.setTextContent expects a non-null value for node"),"textContent"in e)e.textContent=o;else if(e.nodeType==goog.dom.NodeType.TEXT)e.data=o;else if(e.firstChild&&e.firstChild.nodeType==goog.dom.NodeType.TEXT){for(;e.lastChild!=e.firstChild;)e.removeChild(e.lastChild);e.firstChild.data=o}else{goog.dom.removeChildren(e);var t=goog.dom.getOwnerDocument(e);e.appendChild(t.createTextNode(String(o)))}},goog.dom.getOuterHtml=function(e){if(goog.asserts.assert(null!==e,"goog.dom.getOuterHtml expects a non-null value for element"),"outerHTML"in e)return e.outerHTML;var o=goog.dom.getOwnerDocument(e),o=goog.dom.createElement_(o,"DIV");return o.appendChild(e.cloneNode(!0)),o.innerHTML},goog.dom.findNode=function(e,o){var t=[];return goog.dom.findNodes_(e,o,t,!0)?t[0]:void 0},goog.dom.findNodes=function(e,o){var t=[];return goog.dom.findNodes_(e,o,t,!1),t},goog.dom.findNodes_=function(e,o,t,n){if(null!=e)for(e=e.firstChild;e;){if(o(e)&&(t.push(e),n)||goog.dom.findNodes_(e,o,t,n))return!0;e=e.nextSibling}return!1},goog.dom.TAGS_TO_IGNORE_={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},goog.dom.PREDEFINED_TAG_VALUES_={IMG:" ",BR:"\n"},goog.dom.isFocusableTabIndex=function(e){return goog.dom.hasSpecifiedTabIndex_(e)&&goog.dom.isTabIndexFocusable_(e)},goog.dom.setFocusableTabIndex=function(e,o){o?e.tabIndex=0:(e.tabIndex=-1,e.removeAttribute("tabIndex"))},goog.dom.isFocusable=function(e){var o;return(o=goog.dom.nativelySupportsFocus_(e)?!e.disabled&&(!goog.dom.hasSpecifiedTabIndex_(e)||goog.dom.isTabIndexFocusable_(e)):goog.dom.isFocusableTabIndex(e))&&goog.userAgent.IE?goog.dom.hasNonZeroBoundingRect_(e):o},goog.dom.hasSpecifiedTabIndex_=function(e){return goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9")?(e=e.getAttributeNode("tabindex"),goog.isDefAndNotNull(e)&&e.specified):e.hasAttribute("tabindex")},goog.dom.isTabIndexFocusable_=function(e){return e=e.tabIndex,goog.isNumber(e)&&e>=0&&32768>e},goog.dom.nativelySupportsFocus_=function(e){return"A"==e.tagName||"INPUT"==e.tagName||"TEXTAREA"==e.tagName||"SELECT"==e.tagName||"BUTTON"==e.tagName},goog.dom.hasNonZeroBoundingRect_=function(e){return e=!goog.isFunction(e.getBoundingClientRect)||goog.userAgent.IE&&null==e.parentElement?{height:e.offsetHeight,width:e.offsetWidth}:e.getBoundingClientRect(),goog.isDefAndNotNull(e)&&0n;)if(r=e.pop(),!(r.nodeName in goog.dom.TAGS_TO_IGNORE_))if(r.nodeType==goog.dom.NodeType.TEXT)var i=r.nodeValue.replace(/(\r\n|\r|\n)/g,"").replace(/ +/g," "),n=n+i.length;else if(r.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)n+=goog.dom.PREDEFINED_TAG_VALUES_[r.nodeName].length;else for(i=r.childNodes.length-1;i>=0;i--)e.push(r.childNodes[i]);return goog.isObject(t)&&(t.remainder=r?r.nodeValue.length+o-n-1:0,t.node=r),r},goog.dom.isNodeList=function(e){if(e&&"number"==typeof e.length){if(goog.isObject(e))return"function"==typeof e.item||"string"==typeof e.item;if(goog.isFunction(e))return"function"==typeof e.item}return!1},goog.dom.getAncestorByTagNameAndClass=function(e,o,t,n){if(!o&&!t)return null;var r=o?String(o).toUpperCase():null;return goog.dom.getAncestor(e,function(e){return(!r||e.nodeName==r)&&(!t||goog.isString(e.className)&&goog.array.contains(e.className.split(/\s+/),t))},!0,n)},goog.dom.getAncestorByClass=function(e,o,t){return goog.dom.getAncestorByTagNameAndClass(e,null,o,t)},goog.dom.getAncestor=function(e,o,t,n){for(t||(e=e.parentNode),t=0;e&&(null==n||n>=t);){if(goog.asserts.assert("parentNode"!=e.name),o(e))return e;e=e.parentNode,t++}return null},goog.dom.getActiveElement=function(e){try{return e&&e.activeElement}catch(o){}return null},goog.dom.getPixelRatio=function(){var e=goog.dom.getWindow();return goog.isDef(e.devicePixelRatio)?e.devicePixelRatio:e.matchMedia?goog.dom.matchesPixelRatio_(3)||goog.dom.matchesPixelRatio_(2)||goog.dom.matchesPixelRatio_(1.5)||goog.dom.matchesPixelRatio_(1)||.75:1},goog.dom.matchesPixelRatio_=function(e){return goog.dom.getWindow().matchMedia("(min-resolution: "+e+"dppx),(min--moz-device-pixel-ratio: "+e+"),(min-resolution: "+96*e+"dpi)").matches?e:0},goog.dom.getCanvasContext2D=function(e){return e.getContext("2d")},goog.dom.DomHelper=function(e){this.document_=e||goog.global.document||document},goog.dom.DomHelper.prototype.getDomHelper=goog.dom.getDomHelper,goog.dom.DomHelper.prototype.setDocument=function(e){this.document_=e},goog.dom.DomHelper.prototype.getDocument=function(){return this.document_},goog.dom.DomHelper.prototype.getElement=function(e){return goog.dom.getElementHelper_(this.document_,e)},goog.dom.DomHelper.prototype.getRequiredElement=function(e){return goog.dom.getRequiredElementHelper_(this.document_,e)},goog.dom.DomHelper.prototype.$=goog.dom.DomHelper.prototype.getElement,goog.dom.DomHelper.prototype.getElementsByTagName=function(e,o){return(o||this.document_).getElementsByTagName(String(e))},goog.dom.DomHelper.prototype.getElementsByTagNameAndClass=function(e,o,t){return goog.dom.getElementsByTagNameAndClass_(this.document_,e,o,t)},goog.dom.DomHelper.prototype.getElementsByClass=function(e,o){return goog.dom.getElementsByClass(e,o||this.document_)},goog.dom.DomHelper.prototype.getElementByClass=function(e,o){return goog.dom.getElementByClass(e,o||this.document_)},goog.dom.DomHelper.prototype.getRequiredElementByClass=function(e,o){return goog.dom.getRequiredElementByClass(e,o||this.document_)},goog.dom.DomHelper.prototype.$$=goog.dom.DomHelper.prototype.getElementsByTagNameAndClass,goog.dom.DomHelper.prototype.setProperties=goog.dom.setProperties,goog.dom.DomHelper.prototype.getViewportSize=function(e){return goog.dom.getViewportSize(e||this.getWindow())},goog.dom.DomHelper.prototype.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(this.getWindow())},goog.dom.DomHelper.prototype.createDom=function(e,o,t){return goog.dom.createDom_(this.document_,arguments)},goog.dom.DomHelper.prototype.$dom=goog.dom.DomHelper.prototype.createDom,goog.dom.DomHelper.prototype.createElement=function(e){return goog.dom.createElement_(this.document_,e)},goog.dom.DomHelper.prototype.createTextNode=function(e){return this.document_.createTextNode(String(e))},goog.dom.DomHelper.prototype.createTable=function(e,o,t){return goog.dom.createTable_(this.document_,e,o,!!t)},goog.dom.DomHelper.prototype.safeHtmlToNode=function(e){return goog.dom.safeHtmlToNode_(this.document_,e)},goog.dom.DomHelper.prototype.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(this.document_)},goog.dom.DomHelper.prototype.getWindow=function(){return goog.dom.getWindow_(this.document_)},goog.dom.DomHelper.prototype.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(this.document_)},goog.dom.DomHelper.prototype.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(this.document_)},goog.dom.DomHelper.prototype.getActiveElement=function(e){return goog.dom.getActiveElement(e||this.document_)},goog.dom.DomHelper.prototype.appendChild=goog.dom.appendChild,goog.dom.DomHelper.prototype.append=goog.dom.append,goog.dom.DomHelper.prototype.canHaveChildren=goog.dom.canHaveChildren,goog.dom.DomHelper.prototype.removeChildren=goog.dom.removeChildren,goog.dom.DomHelper.prototype.insertSiblingBefore=goog.dom.insertSiblingBefore,goog.dom.DomHelper.prototype.insertSiblingAfter=goog.dom.insertSiblingAfter,goog.dom.DomHelper.prototype.insertChildAt=goog.dom.insertChildAt,goog.dom.DomHelper.prototype.removeNode=goog.dom.removeNode,goog.dom.DomHelper.prototype.replaceNode=goog.dom.replaceNode,goog.dom.DomHelper.prototype.flattenElement=goog.dom.flattenElement,goog.dom.DomHelper.prototype.getChildren=goog.dom.getChildren,goog.dom.DomHelper.prototype.getFirstElementChild=goog.dom.getFirstElementChild,goog.dom.DomHelper.prototype.getLastElementChild=goog.dom.getLastElementChild,goog.dom.DomHelper.prototype.getNextElementSibling=goog.dom.getNextElementSibling,goog.dom.DomHelper.prototype.getPreviousElementSibling=goog.dom.getPreviousElementSibling,goog.dom.DomHelper.prototype.getNextNode=goog.dom.getNextNode,goog.dom.DomHelper.prototype.getPreviousNode=goog.dom.getPreviousNode,goog.dom.DomHelper.prototype.isNodeLike=goog.dom.isNodeLike,goog.dom.DomHelper.prototype.isElement=goog.dom.isElement,goog.dom.DomHelper.prototype.isWindow=goog.dom.isWindow,goog.dom.DomHelper.prototype.getParentElement=goog.dom.getParentElement,goog.dom.DomHelper.prototype.contains=goog.dom.contains,goog.dom.DomHelper.prototype.compareNodeOrder=goog.dom.compareNodeOrder,goog.dom.DomHelper.prototype.findCommonAncestor=goog.dom.findCommonAncestor,goog.dom.DomHelper.prototype.getOwnerDocument=goog.dom.getOwnerDocument,goog.dom.DomHelper.prototype.getFrameContentDocument=goog.dom.getFrameContentDocument,goog.dom.DomHelper.prototype.getFrameContentWindow=goog.dom.getFrameContentWindow,goog.dom.DomHelper.prototype.setTextContent=goog.dom.setTextContent,goog.dom.DomHelper.prototype.getOuterHtml=goog.dom.getOuterHtml,goog.dom.DomHelper.prototype.findNode=goog.dom.findNode,goog.dom.DomHelper.prototype.findNodes=goog.dom.findNodes, goog.dom.DomHelper.prototype.isFocusableTabIndex=goog.dom.isFocusableTabIndex,goog.dom.DomHelper.prototype.setFocusableTabIndex=goog.dom.setFocusableTabIndex,goog.dom.DomHelper.prototype.isFocusable=goog.dom.isFocusable,goog.dom.DomHelper.prototype.getTextContent=goog.dom.getTextContent,goog.dom.DomHelper.prototype.getNodeTextLength=goog.dom.getNodeTextLength,goog.dom.DomHelper.prototype.getNodeTextOffset=goog.dom.getNodeTextOffset,goog.dom.DomHelper.prototype.getNodeAtOffset=goog.dom.getNodeAtOffset,goog.dom.DomHelper.prototype.isNodeList=goog.dom.isNodeList,goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass=goog.dom.getAncestorByTagNameAndClass,goog.dom.DomHelper.prototype.getAncestorByClass=goog.dom.getAncestorByClass,goog.dom.DomHelper.prototype.getAncestor=goog.dom.getAncestor,goog.dom.DomHelper.prototype.getCanvasContext2D=goog.dom.getCanvasContext2D,goog.dom.vendor={},goog.dom.vendor.getVendorJsPrefix=function(){return goog.userAgent.WEBKIT?"Webkit":goog.userAgent.GECKO?"Moz":goog.userAgent.IE?"ms":goog.userAgent.OPERA?"O":null},goog.dom.vendor.getVendorPrefix=function(){return goog.userAgent.WEBKIT?"-webkit":goog.userAgent.GECKO?"-moz":goog.userAgent.IE?"-ms":goog.userAgent.OPERA?"-o":null},goog.dom.vendor.getPrefixedPropertyName=function(e,o){if(o&&e in o)return e;var t=goog.dom.vendor.getVendorJsPrefix();return t?(t=t.toLowerCase(),t+=goog.string.toTitleCase(e),!goog.isDef(o)||t in o?t:null):null},goog.dom.vendor.getPrefixedEventType=function(e){return((goog.dom.vendor.getVendorJsPrefix()||"")+e).toLowerCase()},goog.html.legacyconversions={},goog.html.legacyconversions.safeHtmlFromString=function(e){return goog.html.legacyconversions.reportCallback_(),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e,null)},goog.html.legacyconversions.safeStyleFromString=function(e){return goog.html.legacyconversions.reportCallback_(),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(e)},goog.html.legacyconversions.safeStyleSheetFromString=function(e){return goog.html.legacyconversions.reportCallback_(),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e)},goog.html.legacyconversions.safeUrlFromString=function(e){return goog.html.legacyconversions.reportCallback_(),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.legacyconversions.trustedResourceUrlFromString=function(e){return goog.html.legacyconversions.reportCallback_(),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.legacyconversions.reportCallback_=goog.nullFunction,goog.html.legacyconversions.setReportCallback=function(e){goog.html.legacyconversions.reportCallback_=e},goog.math.Box=function(e,o,t,n){this.top=e,this.right=o,this.bottom=t,this.left=n},goog.math.Box.boundingBox=function(e){for(var o=new goog.math.Box(arguments[0].y,arguments[0].x,arguments[0].y,arguments[0].x),t=1;t=e.left&&o.right<=e.right&&o.top>=e.top&&o.bottom<=e.bottom:o.x>=e.left&&o.x<=e.right&&o.y>=e.top&&o.y<=e.bottom:!1},goog.math.Box.relativePositionX=function(e,o){return o.xe.right?o.x-e.right:0},goog.math.Box.relativePositionY=function(e,o){return o.ye.bottom?o.y-e.bottom:0},goog.math.Box.distance=function(e,o){var t=goog.math.Box.relativePositionX(e,o),n=goog.math.Box.relativePositionY(e,o);return Math.sqrt(t*t+n*n)},goog.math.Box.intersects=function(e,o){return e.left<=o.right&&o.left<=e.right&&e.top<=o.bottom&&o.top<=e.bottom},goog.math.Box.intersectsWithPadding=function(e,o,t){return e.left<=o.right+t&&o.left<=e.right+t&&e.top<=o.bottom+t&&o.top<=e.bottom+t},goog.math.Box.prototype.ceil=function(){return this.top=Math.ceil(this.top),this.right=Math.ceil(this.right),this.bottom=Math.ceil(this.bottom),this.left=Math.ceil(this.left),this},goog.math.Box.prototype.floor=function(){return this.top=Math.floor(this.top),this.right=Math.floor(this.right),this.bottom=Math.floor(this.bottom),this.left=Math.floor(this.left),this},goog.math.Box.prototype.round=function(){return this.top=Math.round(this.top),this.right=Math.round(this.right),this.bottom=Math.round(this.bottom),this.left=Math.round(this.left),this},goog.math.Box.prototype.translate=function(e,o){return e instanceof goog.math.Coordinate?(this.left+=e.x,this.right+=e.x,this.top+=e.y,this.bottom+=e.y):(goog.asserts.assertNumber(e),this.left+=e,this.right+=e,goog.isNumber(o)&&(this.top+=o,this.bottom+=o)),this},goog.math.Box.prototype.scale=function(e,o){var t=goog.isNumber(o)?o:e;return this.left*=e,this.right*=e,this.top*=t,this.bottom*=t,this},goog.math.IRect=function(){},goog.math.Rect=function(e,o,t,n){this.left=e,this.top=o,this.width=t,this.height=n},goog.math.Rect.prototype.clone=function(){return new goog.math.Rect(this.left,this.top,this.width,this.height)},goog.math.Rect.prototype.toBox=function(){return new goog.math.Box(this.top,this.left+this.width,this.top+this.height,this.left)},goog.math.Rect.createFromPositionAndSize=function(e,o){return new goog.math.Rect(e.x,e.y,o.width,o.height)},goog.math.Rect.createFromBox=function(e){return new goog.math.Rect(e.left,e.top,e.right-e.left,e.bottom-e.top)},goog.DEBUG&&(goog.math.Rect.prototype.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"}),goog.math.Rect.equals=function(e,o){return e==o?!0:e&&o?e.left==o.left&&e.width==o.width&&e.top==o.top&&e.height==o.height:!1},goog.math.Rect.prototype.intersection=function(e){var o=Math.max(this.left,e.left),t=Math.min(this.left+this.width,e.left+e.width);if(t>=o){var n=Math.max(this.top,e.top);if(e=Math.min(this.top+this.height,e.top+e.height),e>=n)return this.left=o,this.top=n,this.width=t-o,this.height=e-n,!0}return!1},goog.math.Rect.intersection=function(e,o){var t=Math.max(e.left,o.left),n=Math.min(e.left+e.width,o.left+o.width);if(n>=t){var r=Math.max(e.top,o.top),i=Math.min(e.top+e.height,o.top+o.height);if(i>=r)return new goog.math.Rect(t,r,n-t,i-r)}return null},goog.math.Rect.intersects=function(e,o){return e.left<=o.left+o.width&&o.left<=e.left+e.width&&e.top<=o.top+o.height&&o.top<=e.top+e.height},goog.math.Rect.prototype.intersects=function(e){return goog.math.Rect.intersects(this,e)},goog.math.Rect.difference=function(e,o){var t=goog.math.Rect.intersection(e,o);if(!t||!t.height||!t.width)return[e.clone()];var t=[],n=e.top,r=e.height,i=e.left+e.width,s=e.top+e.height,l=o.left+o.width,g=o.top+o.height;return o.top>e.top&&(t.push(new goog.math.Rect(e.left,e.top,e.width,o.top-e.top)),n=o.top,r-=o.top-e.top),s>g&&(t.push(new goog.math.Rect(e.left,g,e.width,s-g)),r=g-n),o.left>e.left&&t.push(new goog.math.Rect(e.left,n,o.left-e.left,r)),i>l&&t.push(new goog.math.Rect(l,n,i-l,r)),t},goog.math.Rect.prototype.difference=function(e){return goog.math.Rect.difference(this,e)},goog.math.Rect.prototype.boundingRect=function(e){var o=Math.max(this.left+this.width,e.left+e.width),t=Math.max(this.top+this.height,e.top+e.height);this.left=Math.min(this.left,e.left),this.top=Math.min(this.top,e.top),this.width=o-this.left,this.height=t-this.top},goog.math.Rect.boundingRect=function(e,o){if(!e||!o)return null;var t=new goog.math.Rect(e.left,e.top,e.width,e.height);return t.boundingRect(o),t},goog.math.Rect.prototype.contains=function(e){return e instanceof goog.math.Coordinate?e.x>=this.left&&e.x<=this.left+this.width&&e.y>=this.top&&e.y<=this.top+this.height:this.left<=e.left&&this.left+this.width>=e.left+e.width&&this.top<=e.top&&this.top+this.height>=e.top+e.height},goog.math.Rect.prototype.squaredDistance=function(e){var o=e.xe.clientWidth||e.scrollHeight>e.clientHeight||"fixed"==t||"absolute"==t||"relative"==t))return e;return null},goog.style.getVisibleRectForElement=function(e){for(var o=new goog.math.Box(0,1/0,1/0,0),t=goog.dom.getDomHelper(e),n=t.getDocument().body,r=t.getDocument().documentElement,i=t.getDocumentScrollElement();e=goog.style.getOffsetParent(e);)if(!(goog.userAgent.IE&&0==e.clientWidth||goog.userAgent.WEBKIT&&0==e.clientHeight&&e==n)&&e!=n&&e!=r&&"visible"!=goog.style.getStyle_(e,"overflow")){var s=goog.style.getPageOffset(e),l=goog.style.getClientLeftTop(e);s.x+=l.x,s.y+=l.y,o.top=Math.max(o.top,s.y),o.right=Math.min(o.right,s.x+e.clientWidth),o.bottom=Math.min(o.bottom,s.y+e.clientHeight),o.left=Math.max(o.left,s.x)}return n=i.scrollLeft,i=i.scrollTop,o.left=Math.max(o.left,n),o.top=Math.max(o.top,i),t=t.getViewportSize(),o.right=Math.min(o.right,n+t.width),o.bottom=Math.min(o.bottom,i+t.height),0<=o.top&&0<=o.left&&o.bottom>o.top&&o.right>o.left?o:null},goog.style.getContainerOffsetToScrollInto=function(e,o,t){var n=o||goog.dom.getDocumentScrollElement(),r=goog.style.getPageOffset(e),i=goog.style.getPageOffset(n),s=goog.style.getBorderBox(n);return n==goog.dom.getDocumentScrollElement()?(o=r.x-n.scrollLeft,r=r.y-n.scrollTop,goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(10)&&(o+=s.left,r+=s.top)):(o=r.x-i.x-s.left,r=r.y-i.y-s.top),s=goog.style.getSizeWithDisplay_(e),e=n.clientWidth-s.width,s=n.clientHeight-s.height,i=n.scrollLeft,n=n.scrollTop,t?(i+=o-e/2,n+=r-s/2):(i+=Math.min(o,Math.max(o-e,0)),n+=Math.min(r,Math.max(r-s,0))),new goog.math.Coordinate(i,n)},goog.style.scrollIntoContainerView=function(e,o,t){o=o||goog.dom.getDocumentScrollElement(),e=goog.style.getContainerOffsetToScrollInto(e,o,t),o.scrollLeft=e.x,o.scrollTop=e.y},goog.style.getClientLeftTop=function(e){return new goog.math.Coordinate(e.clientLeft,e.clientTop)},goog.style.getPageOffset=function(e){var o=goog.dom.getOwnerDocument(e);goog.asserts.assertObject(e,"Parameter is required");var t=new goog.math.Coordinate(0,0),n=goog.style.getClientViewportElement(o);return e==n?t:(e=goog.style.getBoundingClientRect_(e),o=goog.dom.getDomHelper(o).getDocumentScroll(),t.x=e.left+o.x,t.y=e.top+o.y,t)},goog.style.getPageOffsetLeft=function(e){return goog.style.getPageOffset(e).x},goog.style.getPageOffsetTop=function(e){return goog.style.getPageOffset(e).y},goog.style.getFramedPageOffset=function(e,o){var t=new goog.math.Coordinate(0,0),n=goog.dom.getWindow(goog.dom.getOwnerDocument(e));if(!goog.reflect.canAccessProperty(n,"parent"))return t;var r=e;do{var i=n==o?goog.style.getPageOffset(r):goog.style.getClientPositionForElement_(goog.asserts.assert(r));t.x+=i.x,t.y+=i.y}while(n&&n!=o&&n!=n.parent&&(r=n.frameElement)&&(n=n.parent));return t},goog.style.translateRectForAnotherFrame=function(e,o,t){if(o.getDocument()!=t.getDocument()){var n=o.getDocument().body;t=goog.style.getFramedPageOffset(n,t.getWindow()),t=goog.math.Coordinate.difference(t,goog.style.getPageOffset(n)),!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9)||o.isCss1CompatMode()||(t=goog.math.Coordinate.difference(t,o.getDocumentScroll())),e.left+=t.x,e.top+=t.y}},goog.style.getRelativePosition=function(e,o){var t=goog.style.getClientPosition(e),n=goog.style.getClientPosition(o);return new goog.math.Coordinate(t.x-n.x,t.y-n.y)},goog.style.getClientPositionForElement_=function(e){return e=goog.style.getBoundingClientRect_(e),new goog.math.Coordinate(e.left,e.top)},goog.style.getClientPosition=function(e){return goog.asserts.assert(e),e.nodeType==goog.dom.NodeType.ELEMENT?goog.style.getClientPositionForElement_(e):(e=e.changedTouches?e.changedTouches[0]:e,new goog.math.Coordinate(e.clientX,e.clientY))},goog.style.setPageOffset=function(e,o,t){var n=goog.style.getPageOffset(e);o instanceof goog.math.Coordinate&&(t=o.y,o=o.x),o=goog.asserts.assertNumber(o)-n.x,goog.style.setPosition(e,e.offsetLeft+o,e.offsetTop+(Number(t)-n.y))},goog.style.setSize=function(e,o,t){if(o instanceof goog.math.Size)t=o.height,o=o.width;else if(void 0==t)throw Error("missing height argument");goog.style.setWidth(e,o),goog.style.setHeight(e,t)},goog.style.getPixelStyleValue_=function(e,o){return"number"==typeof e&&(e=(o?Math.round(e):e)+"px"),e},goog.style.setHeight=function(e,o){e.style.height=goog.style.getPixelStyleValue_(o,!0)},goog.style.setWidth=function(e,o){e.style.width=goog.style.getPixelStyleValue_(o,!0)},goog.style.getSize=function(e){return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_,e)},goog.style.evaluateWithTemporaryDisplay_=function(e,o){if("none"!=goog.style.getStyle_(o,"display"))return e(o);var t=o.style,n=t.display,r=t.visibility,i=t.position;t.visibility="hidden",t.position="absolute",t.display="inline";var s=e(o);return t.display=n,t.position=i,t.visibility=r,s},goog.style.getSizeWithDisplay_=function(e){var o=e.offsetWidth,t=e.offsetHeight,n=goog.userAgent.WEBKIT&&!o&&!t;return goog.isDef(o)&&!n||!e.getBoundingClientRect?new goog.math.Size(o,t):(e=goog.style.getBoundingClientRect_(e),new goog.math.Size(e.right-e.left,e.bottom-e.top))},goog.style.getTransformedSize=function(e){return e.getBoundingClientRect?(e=goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_,e),new goog.math.Size(e.right-e.left,e.bottom-e.top)):null},goog.style.getBounds=function(e){var o=goog.style.getPageOffset(e);return e=goog.style.getSize(e),new goog.math.Rect(o.x,o.y,e.width,e.height)},goog.style.toCamelCase=function(e){return goog.string.toCamelCase(String(e))},goog.style.toSelectorCase=function(e){return goog.string.toSelectorCase(e)},goog.style.getOpacity=function(e){goog.asserts.assert(e);var o=e.style;return e="","opacity"in o?e=o.opacity:"MozOpacity"in o?e=o.MozOpacity:"filter"in o&&(o=o.filter.match(/alpha\(opacity=([\d.]+)\)/))&&(e=String(o[1]/100)),""==e?e:Number(e)},goog.style.setOpacity=function(e,o){goog.asserts.assert(e);var t=e.style;"opacity"in t?t.opacity=o:"MozOpacity"in t?t.MozOpacity=o:"filter"in t&&(t.filter=""===o?"":"alpha(opacity="+100*Number(o)+")")},goog.style.setTransparentBackgroundImage=function(e,o){var t=e.style;goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?t.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+o+'", sizingMethod="crop")':(t.backgroundImage="url("+o+")",t.backgroundPosition="top left",t.backgroundRepeat="no-repeat")},goog.style.clearTransparentBackgroundImage=function(e){e=e.style,"filter"in e?e.filter="":e.backgroundImage="none"},goog.style.showElement=function(e,o){goog.style.setElementShown(e,o)},goog.style.setElementShown=function(e,o){e.style.display=o?"":"none"},goog.style.isElementShown=function(e){return"none"!=e.style.display},goog.style.installStyles=function(e,o){return goog.style.installSafeStyleSheet(goog.html.legacyconversions.safeStyleSheetFromString(e),o)},goog.style.installSafeStyleSheet=function(e,o){var t,n=goog.dom.getDomHelper(o),r=n.getDocument();return goog.userAgent.IE&&r.createStyleSheet?(t=r.createStyleSheet(),goog.style.setSafeStyleSheet(t,e)):(r=n.getElementsByTagNameAndClass("HEAD")[0],r||(t=n.getElementsByTagNameAndClass("BODY")[0],r=n.createDom("HEAD"),t.parentNode.insertBefore(r,t)),t=n.createDom("STYLE"),goog.style.setSafeStyleSheet(t,e),n.appendChild(r,t)),t},goog.style.uninstallStyles=function(e){goog.dom.removeNode(e.ownerNode||e.owningElement||e)},goog.style.setStyles=function(e,o){goog.style.setSafeStyleSheet(e,goog.html.legacyconversions.safeStyleSheetFromString(o))},goog.style.setSafeStyleSheet=function(e,o){var t=goog.html.SafeStyleSheet.unwrap(o);goog.userAgent.IE&&goog.isDef(e.cssText)?e.cssText=t:e.innerHTML=t},goog.style.setPreWrap=function(e){e=e.style,goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?(e.whiteSpace="pre",e.wordWrap="break-word"):e.whiteSpace=goog.userAgent.GECKO?"-moz-pre-wrap":"pre-wrap"},goog.style.setInlineBlock=function(e){e=e.style,e.position="relative",goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?(e.zoom="1",e.display="inline"):e.display="inline-block"},goog.style.isRightToLeft=function(e){return"rtl"==goog.style.getStyle_(e,"direction")},goog.style.unselectableStyle_=goog.userAgent.GECKO?"MozUserSelect":goog.userAgent.WEBKIT||goog.userAgent.EDGE?"WebkitUserSelect":null,goog.style.isUnselectable=function(e){return goog.style.unselectableStyle_?"none"==e.style[goog.style.unselectableStyle_].toLowerCase():goog.userAgent.IE||goog.userAgent.OPERA?"on"==e.getAttribute("unselectable"):!1},goog.style.setUnselectable=function(e,o,t){t=t?null:e.getElementsByTagName("*");var n=goog.style.unselectableStyle_;if(n){if(o=o?"none":"",e.style&&(e.style[n]=o),t){e=0;for(var r;r=t[e];e++)r.style&&(r.style[n]=o)}}else if((goog.userAgent.IE||goog.userAgent.OPERA)&&(o=o?"on":"",e.setAttribute("unselectable",o),t))for(e=0;r=t[e];e++)r.setAttribute("unselectable",o)},goog.style.getBorderBoxSize=function(e){return new goog.math.Size(e.offsetWidth,e.offsetHeight)},goog.style.setBorderBoxSize=function(e,o){var t=goog.dom.getOwnerDocument(e),n=goog.dom.getDomHelper(t).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||n&&goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(e,o,"border-box");else if(t=e.style,n){var n=goog.style.getPaddingBox(e),r=goog.style.getBorderBox(e);t.pixelWidth=o.width-r.left-n.left-n.right-r.right,t.pixelHeight=o.height-r.top-n.top-n.bottom-r.bottom}else t.pixelWidth=o.width,t.pixelHeight=o.height},goog.style.getContentBoxSize=function(e){var o=goog.dom.getOwnerDocument(e),t=goog.userAgent.IE&&e.currentStyle;return t&&goog.dom.getDomHelper(o).isCss1CompatMode()&&"auto"!=t.width&&"auto"!=t.height&&!t.boxSizing?(o=goog.style.getIePixelValue_(e,t.width,"width","pixelWidth"),e=goog.style.getIePixelValue_(e,t.height,"height","pixelHeight"),new goog.math.Size(o,e)):(t=goog.style.getBorderBoxSize(e),o=goog.style.getPaddingBox(e),e=goog.style.getBorderBox(e),new goog.math.Size(t.width-e.left-o.left-o.right-e.right,t.height-e.top-o.top-o.bottom-e.bottom))},goog.style.setContentBoxSize=function(e,o){var t=goog.dom.getOwnerDocument(e),n=goog.dom.getDomHelper(t).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||n&&goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(e,o,"content-box");else if(t=e.style,n)t.pixelWidth=o.width,t.pixelHeight=o.height;else{var n=goog.style.getPaddingBox(e),r=goog.style.getBorderBox(e);t.pixelWidth=o.width+r.left+n.left+n.right+r.right,t.pixelHeight=o.height+r.top+n.top+n.bottom+r.bottom}},goog.style.setBoxSizingSize_=function(e,o,t){e=e.style,goog.userAgent.GECKO?e.MozBoxSizing=t:goog.userAgent.WEBKIT?e.WebkitBoxSizing=t:e.boxSizing=t,e.width=Math.max(o.width,0)+"px",e.height=Math.max(o.height,0)+"px"},goog.style.getIePixelValue_=function(e,o,t,n){if(/^\d+px?$/.test(o))return parseInt(o,10);var r=e.style[t],i=e.runtimeStyle[t];return e.runtimeStyle[t]=e.currentStyle[t],e.style[t]=o,o=e.style[n],e.style[t]=r,e.runtimeStyle[t]=i,o},goog.style.getIePixelDistance_=function(e,o){var t=goog.style.getCascadedStyle(e,o);return t?goog.style.getIePixelValue_(e,t,"left","pixelLeft"):0},goog.style.getBox_=function(e,o){if(goog.userAgent.IE){var t=goog.style.getIePixelDistance_(e,o+"Left"),n=goog.style.getIePixelDistance_(e,o+"Right"),r=goog.style.getIePixelDistance_(e,o+"Top"),i=goog.style.getIePixelDistance_(e,o+"Bottom");return new goog.math.Box(r,n,i,t)}return t=goog.style.getComputedStyle(e,o+"Left"),n=goog.style.getComputedStyle(e,o+"Right"),r=goog.style.getComputedStyle(e,o+"Top"),i=goog.style.getComputedStyle(e,o+"Bottom"),new goog.math.Box(parseFloat(r),parseFloat(n),parseFloat(i),parseFloat(t))},goog.style.getPaddingBox=function(e){return goog.style.getBox_(e,"padding")},goog.style.getMarginBox=function(e){return goog.style.getBox_(e,"margin")},goog.style.ieBorderWidthKeywords_={thin:2,medium:4,thick:6},goog.style.getIePixelBorder_=function(e,o){if("none"==goog.style.getCascadedStyle(e,o+"Style"))return 0;var t=goog.style.getCascadedStyle(e,o+"Width");return t in goog.style.ieBorderWidthKeywords_?goog.style.ieBorderWidthKeywords_[t]:goog.style.getIePixelValue_(e,t,"left","pixelLeft")},goog.style.getBorderBox=function(e){if(goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(9)){var o=goog.style.getIePixelBorder_(e,"borderLeft"),t=goog.style.getIePixelBorder_(e,"borderRight"),n=goog.style.getIePixelBorder_(e,"borderTop");return e=goog.style.getIePixelBorder_(e,"borderBottom"),new goog.math.Box(n,t,e,o)}return o=goog.style.getComputedStyle(e,"borderLeftWidth"),t=goog.style.getComputedStyle(e,"borderRightWidth"),n=goog.style.getComputedStyle(e,"borderTopWidth"),e=goog.style.getComputedStyle(e,"borderBottomWidth"),new goog.math.Box(parseFloat(n),parseFloat(t),parseFloat(e),parseFloat(o))},goog.style.getFontFamily=function(e){var o=goog.dom.getOwnerDocument(e),t="";if(o.body.createTextRange&&goog.dom.contains(o,e)){o=o.body.createTextRange(),o.moveToElementText(e);try{t=o.queryCommandValue("FontName")}catch(n){t=""}}return t||(t=goog.style.getStyle_(e,"fontFamily")),e=t.split(","),1=0;o--)e=t[o].call(this,e);return e}},goog.functions.sequence=function(e){var o=arguments,t=o.length;return function(){for(var e,n=0;t>n;n++)e=o[n].apply(this,arguments);return e}},goog.functions.and=function(e){var o=arguments,t=o.length;return function(){for(var e=0;t>e;e++)if(!o[e].apply(this,arguments))return!1;return!0}},goog.functions.or=function(e){var o=arguments,t=o.length;return function(){for(var e=0;t>e;e++)if(o[e].apply(this,arguments))return!0;return!1}},goog.functions.not=function(e){return function(){return!e.apply(this,arguments)}},goog.functions.create=function(e,o){var t=function(){};return t.prototype=e.prototype,t=new t,e.apply(t,Array.prototype.slice.call(arguments,1)),t},goog.functions.CACHE_RETURN_VALUE=!0,goog.functions.cacheReturnValue=function(e){var o,t=!1;return function(){return goog.functions.CACHE_RETURN_VALUE?(t||(o=e(),t=!0),o):e()}},goog.functions.once=function(e){var o=e;return function(){if(o){var e=o;o=null,e()}}},goog.functions.debounce=function(e,o,t){t&&(e=goog.bind(e,t));var n=null;return function(t){goog.global.clearTimeout(n);var r=arguments;n=goog.global.setTimeout(function(){e.apply(null,r)},o)}},goog.functions.throttle=function(e,o,t){t&&(e=goog.bind(e,t));var n=null,r=!1,i=[],s=function(){n=null,r&&(r=!1,l())},l=function(){n=goog.global.setTimeout(s,o),e.apply(null,i)};return function(e){i=arguments,n?r=!0:l()}},goog.async.throwException=function(e){goog.global.setTimeout(function(){throw e},0)},goog.async.nextTick=function(e,o,t){var n=e;o&&(n=goog.bind(e,o)),n=goog.async.nextTick.wrapCallback_(n),goog.isFunction(goog.global.setImmediate)&&(t||goog.async.nextTick.useSetImmediate_())?goog.global.setImmediate(n):(goog.async.nextTick.setImmediate_||(goog.async.nextTick.setImmediate_=goog.async.nextTick.getSetImmediateEmulator_()),goog.async.nextTick.setImmediate_(n))},goog.async.nextTick.useSetImmediate_=function(){return goog.global.Window&&goog.global.Window.prototype&&!goog.labs.userAgent.browser.isEdge()&&goog.global.Window.prototype.setImmediate==goog.global.setImmediate?!1:!0},goog.async.nextTick.getSetImmediateEmulator_=function(){var e=goog.global.MessageChannel;if("undefined"==typeof e&&"undefined"!=typeof window&&window.postMessage&&window.addEventListener&&!goog.labs.userAgent.engine.isPresto()&&(e=function(){var e=document.createElement("IFRAME");e.style.display="none",e.src="",document.documentElement.appendChild(e);var o=e.contentWindow,e=o.document;e.open(),e.write(""),e.close();var t="callImmediate"+Math.random(),n="file:"==o.location.protocol?"*":o.location.protocol+"//"+o.location.host,e=goog.bind(function(e){"*"!=n&&e.origin!=n||e.data!=t||this.port1.onmessage()},this);o.addEventListener("message",e,!1),this.port1={},this.port2={postMessage:function(){o.postMessage(t,n)}}}),"undefined"!=typeof e&&!goog.labs.userAgent.browser.isIE()){var o=new e,t={},n=t;return o.port1.onmessage=function(){if(goog.isDef(t.next)){t=t.next;var e=t.cb;t.cb=null,e()}},function(e){n.next={cb:e},n=n.next,o.port2.postMessage(0)}}return"undefined"!=typeof document&&"onreadystatechange"in document.createElement("SCRIPT")?function(e){var o=document.createElement("SCRIPT");o.onreadystatechange=function(){o.onreadystatechange=null,o.parentNode.removeChild(o),o=null,e(),e=null},document.documentElement.appendChild(o)}:function(e){goog.global.setTimeout(e,0)}},goog.async.nextTick.wrapCallback_=goog.functions.identity,goog.debug.entryPointRegistry.register(function(e){goog.async.nextTick.wrapCallback_=e}),goog.async.run=function(e,o){goog.async.run.schedule_||goog.async.run.initializeRunner_(),goog.async.run.workQueueScheduled_||(goog.async.run.schedule_(),goog.async.run.workQueueScheduled_=!0),goog.async.run.workQueue_.add(e,o)},goog.async.run.initializeRunner_=function(){var e=goog.global.Promise;if(-1!=String(e).indexOf("[native code]")){var o=e.resolve(void 0);goog.async.run.schedule_=function(){o.then(goog.async.run.processWorkQueue)}}else goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue)}},goog.async.run.forceNextTick=function(e){goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue),e&&e(goog.async.run.processWorkQueue)}},goog.async.run.workQueueScheduled_=!1,goog.async.run.workQueue_=new goog.async.WorkQueue,goog.DEBUG&&(goog.async.run.resetQueue=function(){goog.async.run.workQueueScheduled_=!1,goog.async.run.workQueue_=new goog.async.WorkQueue}),goog.async.run.processWorkQueue=function(){for(var e;e=goog.async.run.workQueue_.remove();){try{e.fn.call(e.scope)}catch(o){goog.async.throwException(o)}goog.async.run.workQueue_.returnUnused(e)}goog.async.run.workQueueScheduled_=!1},goog.promise={},goog.promise.Resolver=function(){},goog.Promise=function(e,o){if(this.state_=goog.Promise.State_.PENDING,this.result_=void 0,this.callbackEntriesTail_=this.callbackEntries_=this.parent_=null,this.executing_=!1,01)));i=i.next)n||(r=i);n&&(this.state_==goog.Promise.State_.PENDING&&1==t?this.cancelInternal_(o):(r?this.removeEntryAfter_(r):this.popEntry_(),this.executeCallback_(n,goog.Promise.State_.REJECTED,o)))}},goog.Promise.prototype.addCallbackEntry_=function(e){this.hasEntry_()||this.state_!=goog.Promise.State_.FULFILLED&&this.state_!=goog.Promise.State_.REJECTED||this.scheduleCallbacks_(),this.queueEntry_(e)},goog.Promise.prototype.addChildPromise_=function(e,o,t){var n=goog.Promise.getCallbackEntry_(null,null,null);return n.child=new goog.Promise(function(r,i){n.onFulfilled=e?function(o){try{var n=e.call(t,o);r(n)}catch(s){i(s)}}:r,n.onRejected=o?function(e){try{var n=o.call(t,e);!goog.isDef(n)&&e instanceof goog.Promise.CancellationError?i(e):r(n)}catch(s){i(s)}}:i}),n.child.parent_=this,this.addCallbackEntry_(n),n.child},goog.Promise.prototype.unblockAndFulfill_=function(e){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED),this.state_=goog.Promise.State_.PENDING,this.resolve_(goog.Promise.State_.FULFILLED,e)},goog.Promise.prototype.unblockAndReject_=function(e){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED),this.state_=goog.Promise.State_.PENDING,this.resolve_(goog.Promise.State_.REJECTED,e)},goog.Promise.prototype.resolve_=function(e,o){this.state_==goog.Promise.State_.PENDING&&(this===o&&(e=goog.Promise.State_.REJECTED,o=new TypeError("Promise cannot resolve to itself")),this.state_=goog.Promise.State_.BLOCKED,goog.Promise.maybeThen_(o,this.unblockAndFulfill_,this.unblockAndReject_,this)||(this.result_=o,this.state_=e,this.parent_=null,this.scheduleCallbacks_(),e!=goog.Promise.State_.REJECTED||o instanceof goog.Promise.CancellationError||goog.Promise.addUnhandledRejection_(this,o)))},goog.Promise.maybeThen_=function(e,o,t,n){if(e instanceof goog.Promise)return e.thenVoid(o,t,n),!0;if(goog.Thenable.isImplementedBy(e))return e.then(o,t,n),!0;if(goog.isObject(e))try{var r=e.then;if(goog.isFunction(r))return goog.Promise.tryThen_(e,r,o,t,n),!0}catch(i){return t.call(n,i),!0}return!1},goog.Promise.tryThen_=function(e,o,t,n,r){var i=!1,s=function(e){i||(i=!0,t.call(r,e))},l=function(e){i||(i=!0,n.call(r,e))};try{o.call(e,s,l)}catch(g){l(g)}},goog.Promise.prototype.scheduleCallbacks_=function(){this.executing_||(this.executing_=!0,goog.async.run(this.executeCallbacks_,this))},goog.Promise.prototype.hasEntry_=function(){return!!this.callbackEntries_},goog.Promise.prototype.queueEntry_=function(e){goog.asserts.assert(null!=e.onFulfilled),this.callbackEntriesTail_?this.callbackEntriesTail_.next=e:this.callbackEntries_=e,this.callbackEntriesTail_=e},goog.Promise.prototype.popEntry_=function(){var e=null;return this.callbackEntries_&&(e=this.callbackEntries_,this.callbackEntries_=e.next,e.next=null),this.callbackEntries_||(this.callbackEntriesTail_=null),null!=e&&goog.asserts.assert(null!=e.onFulfilled),e},goog.Promise.prototype.removeEntryAfter_=function(e){goog.asserts.assert(this.callbackEntries_),goog.asserts.assert(null!=e),e.next==this.callbackEntriesTail_&&(this.callbackEntriesTail_=e),e.next=e.next.next},goog.Promise.prototype.executeCallbacks_=function(){for(var e;e=this.popEntry_();)goog.Promise.LONG_STACK_TRACES&&this.currentStep_++,this.executeCallback_(e,this.state_,this.result_);this.executing_=!1},goog.Promise.prototype.executeCallback_=function(e,o,t){if(o==goog.Promise.State_.REJECTED&&e.onRejected&&!e.always&&this.removeUnhandledRejection_(),e.child)e.child.parent_=null,goog.Promise.invokeCallback_(e,o,t);else try{e.always?e.onFulfilled.call(e.context):goog.Promise.invokeCallback_(e,o,t)}catch(n){goog.Promise.handleRejection_.call(null,n)}goog.Promise.returnEntry_(e)},goog.Promise.invokeCallback_=function(e,o,t){o==goog.Promise.State_.FULFILLED?e.onFulfilled.call(e.context,t):e.onRejected&&e.onRejected.call(e.context,t)},goog.Promise.prototype.addStackTrace_=function(e){if(goog.Promise.LONG_STACK_TRACES&&goog.isString(e.stack)){var o=e.stack.split("\n",4)[3];e=e.message,e+=Array(11-e.length).join(" "),this.stack_.push(e+o)}},goog.Promise.prototype.appendLongStack_=function(e){if(goog.Promise.LONG_STACK_TRACES&&e&&goog.isString(e.stack)&&this.stack_.length){for(var o=["Promise trace:"],t=this;t;t=t.parent_){for(var n=this.currentStep_;n>=0;n--)o.push(t.stack_[n]);o.push("Value: ["+(t.state_==goog.Promise.State_.REJECTED?"REJECTED":"FULFILLED")+"] <"+String(t.result_)+">")}e.stack+="\n\n"+o.join("\n")}},goog.Promise.prototype.removeUnhandledRejection_=function(){if(0=0;s--)i=o.currentTarget=t[s],r=i.fireListeners(n,!0,o)&&r;if(o.propagationStopped_||(i=o.currentTarget=e,r=i.fireListeners(n,!0,o)&&r,o.propagationStopped_||(r=i.fireListeners(n,!1,o)&&r)),t)for(s=0;!o.propagationStopped_&&s0&&egoog.Timer.MAX_TIMEOUT_?goog.Timer.INVALID_TIMEOUT_ID_:goog.Timer.defaultTimerObject.setTimeout(e,o||0)},goog.Timer.clear=function(e){goog.Timer.defaultTimerObject.clearTimeout(e)},goog.Timer.promise=function(e,o){var t=null;return new goog.Promise(function(n,r){t=goog.Timer.callOnce(function(){n(o)},e),t==goog.Timer.INVALID_TIMEOUT_ID_&&r(Error("Failed to schedule timer."))}).thenCatch(function(e){throw goog.Timer.clear(t),e})},goog.events.EventHandler=function(e){goog.Disposable.call(this),this.handler_=e,this.keys_={}},goog.inherits(goog.events.EventHandler,goog.Disposable),goog.events.EventHandler.typeArray_=[],goog.events.EventHandler.prototype.listen=function(e,o,t,n){return this.listen_(e,o,t,n)},goog.events.EventHandler.prototype.listenWithScope=function(e,o,t,n,r){return this.listen_(e,o,t,n,r)},goog.events.EventHandler.prototype.listen_=function(e,o,t,n,r){goog.isArray(o)||(o&&(goog.events.EventHandler.typeArray_[0]=o.toString()),o=goog.events.EventHandler.typeArray_);for(var i=0;io||o>this.getChildCount())throw Error(goog.ui.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);this.childIndex_&&this.children_||(this.childIndex_={},this.children_=[]),e.getParent()==this?(goog.object.set(this.childIndex_,e.getId(),e),goog.array.remove(this.children_,e)):goog.object.add(this.childIndex_,e.getId(),e),e.setParent(this),goog.array.insertAt(this.children_,e,o),e.inDocument_&&this.inDocument_&&e.getParent()==this?(t=this.getContentElement(),o=t.childNodes[o]||null,o!=e.getElement()&&t.insertBefore(e.getElement(),o)):t?(this.element_||this.createDom(),o=this.getChildAt(o+1),e.render_(this.getContentElement(),o?o.element_:null)):this.inDocument_&&!e.inDocument_&&e.element_&&e.element_.parentNode&&e.element_.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&e.enterDocument()},goog.ui.Component.prototype.getContentElement=function(){return this.element_},goog.ui.Component.prototype.isRightToLeft=function(){return null==this.rightToLeft_&&(this.rightToLeft_=goog.style.isRightToLeft(this.inDocument_?this.element_:this.dom_.getDocument().body)),this.rightToLeft_},goog.ui.Component.prototype.setRightToLeft=function(e){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.rightToLeft_=e},goog.ui.Component.prototype.hasChildren=function(){return!!this.children_&&0!=this.children_.length},goog.ui.Component.prototype.getChildCount=function(){return this.children_?this.children_.length:0},goog.ui.Component.prototype.getChildIds=function(){var e=[];return this.forEachChild(function(o){e.push(o.getId())}),e},goog.ui.Component.prototype.getChild=function(e){return this.childIndex_&&e?goog.object.get(this.childIndex_,e)||null:null},goog.ui.Component.prototype.getChildAt=function(e){return this.children_?this.children_[e]||null:null},goog.ui.Component.prototype.forEachChild=function(e,o){this.children_&&goog.array.forEach(this.children_,e,o)},goog.ui.Component.prototype.indexOfChild=function(e){return this.children_&&e?goog.array.indexOf(this.children_,e):-1},goog.ui.Component.prototype.removeChild=function(e,o){if(e){var t=goog.isString(e)?e:e.getId();e=this.getChild(t),t&&e&&(goog.object.remove(this.childIndex_,t),goog.array.remove(this.children_,e),o&&(e.exitDocument(),e.element_&&goog.dom.removeNode(e.element_)),e.setParent(null))}if(!e)throw Error(goog.ui.Component.Error.NOT_OUR_CHILD);return e},goog.ui.Component.prototype.removeChildAt=function(e,o){return this.removeChild(this.getChildAt(e),o)},goog.ui.Component.prototype.removeChildren=function(e){for(var o=[];this.hasChildren();)o.push(this.removeChildAt(0,e));return o},goog.a11y={},goog.a11y.aria={},goog.a11y.aria.Role={ALERT:"alert",ALERTDIALOG:"alertdialog",APPLICATION:"application",ARTICLE:"article",BANNER:"banner",BUTTON:"button",CHECKBOX:"checkbox",COLUMNHEADER:"columnheader",COMBOBOX:"combobox",COMPLEMENTARY:"complementary",CONTENTINFO:"contentinfo",DEFINITION:"definition",DIALOG:"dialog",DIRECTORY:"directory",DOCUMENT:"document",FORM:"form",GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",HEADING:"heading",IMG:"img",LINK:"link",LIST:"list",LISTBOX:"listbox",LISTITEM:"listitem",LOG:"log",MAIN:"main",MARQUEE:"marquee",MATH:"math",MENU:"menu",MENUBAR:"menubar",MENU_ITEM:"menuitem",MENU_ITEM_CHECKBOX:"menuitemcheckbox",MENU_ITEM_RADIO:"menuitemradio",NAVIGATION:"navigation",NOTE:"note",OPTION:"option",PRESENTATION:"presentation",PROGRESSBAR:"progressbar",RADIO:"radio",RADIOGROUP:"radiogroup",REGION:"region",ROW:"row",ROWGROUP:"rowgroup",ROWHEADER:"rowheader",SCROLLBAR:"scrollbar",SEARCH:"search",SEPARATOR:"separator",SLIDER:"slider",SPINBUTTON:"spinbutton",STATUS:"status",TAB:"tab",TAB_LIST:"tablist",TAB_PANEL:"tabpanel",TEXTBOX:"textbox",TEXTINFO:"textinfo",TIMER:"timer",TOOLBAR:"toolbar",TOOLTIP:"tooltip",TREE:"tree",TREEGRID:"treegrid",TREEITEM:"treeitem"},goog.a11y.aria.State={ACTIVEDESCENDANT:"activedescendant",ATOMIC:"atomic",AUTOCOMPLETE:"autocomplete",BUSY:"busy",CHECKED:"checked",CONTROLS:"controls",DESCRIBEDBY:"describedby",DISABLED:"disabled",DROPEFFECT:"dropeffect",EXPANDED:"expanded",FLOWTO:"flowto",GRABBED:"grabbed",HASPOPUP:"haspopup",HIDDEN:"hidden",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",LIVE:"live",MULTILINE:"multiline",MULTISELECTABLE:"multiselectable",ORIENTATION:"orientation",OWNS:"owns",POSINSET:"posinset",PRESSED:"pressed",READONLY:"readonly",RELEVANT:"relevant",REQUIRED:"required",SELECTED:"selected",SETSIZE:"setsize",SORT:"sort",VALUEMAX:"valuemax",VALUEMIN:"valuemin",VALUENOW:"valuenow",VALUETEXT:"valuetext"},goog.a11y.aria.AutoCompleteValues={INLINE:"inline",LIST:"list",BOTH:"both",NONE:"none"},goog.a11y.aria.DropEffectValues={COPY:"copy",MOVE:"move",LINK:"link",EXECUTE:"execute",POPUP:"popup",NONE:"none"},goog.a11y.aria.LivePriority={OFF:"off",POLITE:"polite",ASSERTIVE:"assertive"},goog.a11y.aria.OrientationValues={VERTICAL:"vertical",HORIZONTAL:"horizontal"},goog.a11y.aria.RelevantValues={ADDITIONS:"additions",REMOVALS:"removals",TEXT:"text",ALL:"all"},goog.a11y.aria.SortValues={ASCENDING:"ascending",DESCENDING:"descending",NONE:"none",OTHER:"other"},goog.a11y.aria.CheckedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"},goog.a11y.aria.ExpandedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"},goog.a11y.aria.GrabbedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"},goog.a11y.aria.InvalidValues={FALSE:"false",TRUE:"true",GRAMMAR:"grammar",SPELLING:"spelling"},goog.a11y.aria.PressedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"},goog.a11y.aria.SelectedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"},goog.a11y.aria.datatables={},goog.a11y.aria.datatables.getDefaultValuesMap=function(){return goog.a11y.aria.DefaultStateValueMap_||(goog.a11y.aria.DefaultStateValueMap_=goog.object.create(goog.a11y.aria.State.ATOMIC,!1,goog.a11y.aria.State.AUTOCOMPLETE,"none",goog.a11y.aria.State.DROPEFFECT,"none",goog.a11y.aria.State.HASPOPUP,!1,goog.a11y.aria.State.LIVE,"off",goog.a11y.aria.State.MULTILINE,!1,goog.a11y.aria.State.MULTISELECTABLE,!1,goog.a11y.aria.State.ORIENTATION,"vertical",goog.a11y.aria.State.READONLY,!1,goog.a11y.aria.State.RELEVANT,"additions text",goog.a11y.aria.State.REQUIRED,!1,goog.a11y.aria.State.SORT,"none",goog.a11y.aria.State.BUSY,!1,goog.a11y.aria.State.DISABLED,!1,goog.a11y.aria.State.HIDDEN,!1,goog.a11y.aria.State.INVALID,"false")),goog.a11y.aria.DefaultStateValueMap_},goog.a11y.aria.ARIA_PREFIX_="aria-",goog.a11y.aria.ROLE_ATTRIBUTE_="role",goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_=goog.object.createSet("A AREA BUTTON HEAD INPUT LINK MENU META OPTGROUP OPTION PROGRESS STYLE SELECT SOURCE TEXTAREA TITLE TRACK".split(" ")),goog.a11y.aria.CONTAINER_ROLES_=[goog.a11y.aria.Role.COMBOBOX,goog.a11y.aria.Role.GRID,goog.a11y.aria.Role.GROUP,goog.a11y.aria.Role.LISTBOX,goog.a11y.aria.Role.MENU,goog.a11y.aria.Role.MENUBAR,goog.a11y.aria.Role.RADIOGROUP,goog.a11y.aria.Role.ROW,goog.a11y.aria.Role.ROWGROUP,goog.a11y.aria.Role.TAB_LIST,goog.a11y.aria.Role.TEXTBOX,goog.a11y.aria.Role.TOOLBAR,goog.a11y.aria.Role.TREE,goog.a11y.aria.Role.TREEGRID],goog.a11y.aria.setRole=function(e,o){o?(goog.asserts.ENABLE_ASSERTS&&goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.Role,o),"No such ARIA role "+o),e.setAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_,o)):goog.a11y.aria.removeRole(e)},goog.a11y.aria.getRole=function(e){return e.getAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)||null},goog.a11y.aria.removeRole=function(e){e.removeAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)},goog.a11y.aria.setState=function(e,o,t){goog.isArray(t)&&(t=t.join(" "));var n=goog.a11y.aria.getAriaAttributeName_(o);""===t||void 0==t?(t=goog.a11y.aria.datatables.getDefaultValuesMap(),o in t?e.setAttribute(n,t[o]):e.removeAttribute(n)):e.setAttribute(n,t)},goog.a11y.aria.toggleState=function(e,o){var t=goog.a11y.aria.getState(e,o);goog.string.isEmptyOrWhitespace(goog.string.makeSafe(t))||"true"==t||"false"==t?goog.a11y.aria.setState(e,o,"true"==t?"false":"true"):goog.a11y.aria.removeState(e,o)},goog.a11y.aria.removeState=function(e,o){e.removeAttribute(goog.a11y.aria.getAriaAttributeName_(o))},goog.a11y.aria.getState=function(e,o){var t=e.getAttribute(goog.a11y.aria.getAriaAttributeName_(o));return null==t||void 0==t?"":String(t)},goog.a11y.aria.getActiveDescendant=function(e){var o=goog.a11y.aria.getState(e,goog.a11y.aria.State.ACTIVEDESCENDANT);return goog.dom.getOwnerDocument(e).getElementById(o)},goog.a11y.aria.setActiveDescendant=function(e,o){var t="";o&&(t=o.id,goog.asserts.assert(t,"The active element should have an id.")),goog.a11y.aria.setState(e,goog.a11y.aria.State.ACTIVEDESCENDANT,t)},goog.a11y.aria.getLabel=function(e){return goog.a11y.aria.getState(e,goog.a11y.aria.State.LABEL)},goog.a11y.aria.setLabel=function(e,o){goog.a11y.aria.setState(e,goog.a11y.aria.State.LABEL,o)},goog.a11y.aria.assertRoleIsSetInternalUtil=function(e,o){if(!goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_[e.tagName]){var t=goog.a11y.aria.getRole(e);goog.asserts.assert(null!=t,"The element ARIA role cannot be null."),goog.asserts.assert(goog.array.contains(o,t),'Non existing or incorrect role set for element.The role set is "'+t+'". The role should be any of "'+o+'". Check the ARIA specification for more details http://www.w3.org/TR/wai-aria/roles.')}},goog.a11y.aria.getStateBoolean=function(e,o){var t=e.getAttribute(goog.a11y.aria.getAriaAttributeName_(o));return goog.asserts.assert(goog.isBoolean(t)||null==t||"true"==t||"false"==t),null==t?t:goog.isBoolean(t)?t:"true"==t},goog.a11y.aria.getStateNumber=function(e,o){var t=e.getAttribute(goog.a11y.aria.getAriaAttributeName_(o));return goog.asserts.assert(!(null!=t&&isNaN(Number(t))||goog.isBoolean(t))),null==t?null:Number(t)},goog.a11y.aria.getStateString=function(e,o){var t=e.getAttribute(goog.a11y.aria.getAriaAttributeName_(o));return goog.asserts.assert((null==t||goog.isString(t))&&(""==t||isNaN(Number(t)))&&"true"!=t&&"false"!=t),null==t||""==t?null:t},goog.a11y.aria.getStringArrayStateInternalUtil=function(e,o){var t=e.getAttribute(goog.a11y.aria.getAriaAttributeName_(o));return goog.a11y.aria.splitStringOnWhitespace_(t)},goog.a11y.aria.hasState=function(e,o){return e.hasAttribute(goog.a11y.aria.getAriaAttributeName_(o))},goog.a11y.aria.isContainerRole=function(e){return e=goog.a11y.aria.getRole(e),goog.array.contains(goog.a11y.aria.CONTAINER_ROLES_,e)},goog.a11y.aria.splitStringOnWhitespace_=function(e){return e?e.split(/\s+/):[]},goog.a11y.aria.getAriaAttributeName_=function(e){return goog.asserts.ENABLE_ASSERTS&&(goog.asserts.assert(e,"ARIA attribute cannot be empty."),goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.State,e),"No such ARIA attribute "+e)),goog.a11y.aria.ARIA_PREFIX_+e},goog.events.KeyCodes={WIN_KEY_FF_LINUX:0,MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER: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,PLUS_SIGN:43,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,FF_SEMICOLON:59,FF_EQUALS:61,FF_DASH:173,QUESTION_MARK:63,AT_SIGN:64,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,META:91,WIN_KEY_RIGHT:92,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,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,MAC_WK_CMD_LEFT:91,MAC_WK_CMD_RIGHT:93,WIN_IME:229,VK_NONAME:252,PHANTOM:255},goog.events.KeyCodes.isTextModifyingKeyEvent=function(e){if(e.altKey&&!e.ctrlKey||e.metaKey||e.keyCode>=goog.events.KeyCodes.F1&&e.keyCode<=goog.events.KeyCodes.F12)return!1;switch(e.keyCode){case goog.events.KeyCodes.ALT:case goog.events.KeyCodes.CAPS_LOCK:case goog.events.KeyCodes.CONTEXT_MENU:case goog.events.KeyCodes.CTRL:case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.END:case goog.events.KeyCodes.ESC:case goog.events.KeyCodes.HOME:case goog.events.KeyCodes.INSERT:case goog.events.KeyCodes.LEFT:case goog.events.KeyCodes.MAC_FF_META:case goog.events.KeyCodes.META:case goog.events.KeyCodes.NUMLOCK:case goog.events.KeyCodes.NUM_CENTER:case goog.events.KeyCodes.PAGE_DOWN:case goog.events.KeyCodes.PAGE_UP:case goog.events.KeyCodes.PAUSE:case goog.events.KeyCodes.PHANTOM:case goog.events.KeyCodes.PRINT_SCREEN:case goog.events.KeyCodes.RIGHT:case goog.events.KeyCodes.SCROLL_LOCK:case goog.events.KeyCodes.SHIFT:case goog.events.KeyCodes.UP:case goog.events.KeyCodes.VK_NONAME:case goog.events.KeyCodes.WIN_KEY:case goog.events.KeyCodes.WIN_KEY_RIGHT:return!1;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return!goog.userAgent.GECKO;default:return e.keyCodegoog.events.KeyCodes.LAST_MEDIA_KEY}},goog.events.KeyCodes.firesKeyPressEvent=function(e,o,t,n,r,i){if(!(goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("525")))return!0;if(goog.userAgent.MAC&&r)return goog.events.KeyCodes.isCharacterKey(e);if(r&&!n)return!1;if(goog.isNumber(o)&&(o=goog.events.KeyCodes.normalizeKeyCode(o)),r=o==goog.events.KeyCodes.CTRL||o==goog.events.KeyCodes.ALT||goog.userAgent.MAC&&o==goog.events.KeyCodes.META,i=o==goog.events.KeyCodes.SHIFT&&(n||i),(!t||goog.userAgent.MAC)&&r||goog.userAgent.MAC&&i)return!1;if((goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&n&&t)switch(e){case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:case goog.events.KeyCodes.TILDE:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:return!1}if(goog.userAgent.IE&&n&&o==e)return!1;switch(e){case goog.events.KeyCodes.ENTER:return!0;case goog.events.KeyCodes.ESC:return!(goog.userAgent.WEBKIT||goog.userAgent.EDGE)}return goog.events.KeyCodes.isCharacterKey(e)},goog.events.KeyCodes.isCharacterKey=function(e){if(e>=goog.events.KeyCodes.ZERO&&e<=goog.events.KeyCodes.NINE||e>=goog.events.KeyCodes.NUM_ZERO&&e<=goog.events.KeyCodes.NUM_MULTIPLY||e>=goog.events.KeyCodes.A&&e<=goog.events.KeyCodes.Z||(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&0==e)return!0;switch(e){case goog.events.KeyCodes.SPACE:case goog.events.KeyCodes.PLUS_SIGN:case goog.events.KeyCodes.QUESTION_MARK:case goog.events.KeyCodes.AT_SIGN:case goog.events.KeyCodes.NUM_PLUS:case goog.events.KeyCodes.NUM_MINUS:case goog.events.KeyCodes.NUM_PERIOD:case goog.events.KeyCodes.NUM_DIVISION:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.FF_SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.FF_EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:return!0;default:return!1}},goog.events.KeyCodes.normalizeKeyCode=function(e){return goog.userAgent.GECKO?goog.events.KeyCodes.normalizeGeckoKeyCode(e):goog.userAgent.MAC&&goog.userAgent.WEBKIT?goog.events.KeyCodes.normalizeMacWebKitKeyCode(e):e},goog.events.KeyCodes.normalizeGeckoKeyCode=function(e){switch(e){case goog.events.KeyCodes.FF_EQUALS:return goog.events.KeyCodes.EQUALS;case goog.events.KeyCodes.FF_SEMICOLON:return goog.events.KeyCodes.SEMICOLON;case goog.events.KeyCodes.FF_DASH:return goog.events.KeyCodes.DASH;case goog.events.KeyCodes.MAC_FF_META:return goog.events.KeyCodes.META;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return goog.events.KeyCodes.WIN_KEY;default:return e}},goog.events.KeyCodes.normalizeMacWebKitKeyCode=function(e){switch(e){case goog.events.KeyCodes.MAC_WK_CMD_RIGHT:return goog.events.KeyCodes.META;default:return e}},goog.events.KeyHandler=function(e,o){goog.events.EventTarget.call(this),e&&this.attach(e,o)},goog.inherits(goog.events.KeyHandler,goog.events.EventTarget),goog.events.KeyHandler.prototype.element_=null,goog.events.KeyHandler.prototype.keyPressKey_=null,goog.events.KeyHandler.prototype.keyDownKey_=null,goog.events.KeyHandler.prototype.keyUpKey_=null,goog.events.KeyHandler.prototype.lastKey_=-1,goog.events.KeyHandler.prototype.keyCode_=-1,goog.events.KeyHandler.prototype.altKey_=!1,goog.events.KeyHandler.EventType={KEY:"key"},goog.events.KeyHandler.safariKey_={3:goog.events.KeyCodes.ENTER,12:goog.events.KeyCodes.NUMLOCK,63232:goog.events.KeyCodes.UP,63233:goog.events.KeyCodes.DOWN,63234:goog.events.KeyCodes.LEFT,63235:goog.events.KeyCodes.RIGHT,63236:goog.events.KeyCodes.F1,63237:goog.events.KeyCodes.F2,63238:goog.events.KeyCodes.F3,63239:goog.events.KeyCodes.F4,63240:goog.events.KeyCodes.F5,63241:goog.events.KeyCodes.F6,63242:goog.events.KeyCodes.F7,63243:goog.events.KeyCodes.F8,63244:goog.events.KeyCodes.F9,63245:goog.events.KeyCodes.F10,63246:goog.events.KeyCodes.F11,63247:goog.events.KeyCodes.F12,63248:goog.events.KeyCodes.PRINT_SCREEN,63272:goog.events.KeyCodes.DELETE,63273:goog.events.KeyCodes.HOME,63275:goog.events.KeyCodes.END,63276:goog.events.KeyCodes.PAGE_UP,63277:goog.events.KeyCodes.PAGE_DOWN,63289:goog.events.KeyCodes.NUMLOCK,63302:goog.events.KeyCodes.INSERT},goog.events.KeyHandler.keyIdentifier_={Up:goog.events.KeyCodes.UP,Down:goog.events.KeyCodes.DOWN,Left:goog.events.KeyCodes.LEFT,Right:goog.events.KeyCodes.RIGHT,Enter:goog.events.KeyCodes.ENTER,F1:goog.events.KeyCodes.F1,F2:goog.events.KeyCodes.F2,F3:goog.events.KeyCodes.F3,F4:goog.events.KeyCodes.F4,F5:goog.events.KeyCodes.F5,F6:goog.events.KeyCodes.F6,F7:goog.events.KeyCodes.F7,F8:goog.events.KeyCodes.F8,F9:goog.events.KeyCodes.F9,F10:goog.events.KeyCodes.F10,F11:goog.events.KeyCodes.F11,F12:goog.events.KeyCodes.F12,"U+007F":goog.events.KeyCodes.DELETE,Home:goog.events.KeyCodes.HOME,End:goog.events.KeyCodes.END,PageUp:goog.events.KeyCodes.PAGE_UP,PageDown:goog.events.KeyCodes.PAGE_DOWN,Insert:goog.events.KeyCodes.INSERT},goog.events.KeyHandler.USES_KEYDOWN_=goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("525"),goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_=goog.userAgent.MAC&&goog.userAgent.GECKO,goog.events.KeyHandler.prototype.handleKeyDown_=function(e){(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&(this.lastKey_==goog.events.KeyCodes.CTRL&&!e.ctrlKey||this.lastKey_==goog.events.KeyCodes.ALT&&!e.altKey||goog.userAgent.MAC&&this.lastKey_==goog.events.KeyCodes.META&&!e.metaKey)&&this.resetState(),-1==this.lastKey_&&(e.ctrlKey&&e.keyCode!=goog.events.KeyCodes.CTRL?this.lastKey_=goog.events.KeyCodes.CTRL:e.altKey&&e.keyCode!=goog.events.KeyCodes.ALT?this.lastKey_=goog.events.KeyCodes.ALT:e.metaKey&&e.keyCode!=goog.events.KeyCodes.META&&(this.lastKey_=goog.events.KeyCodes.META)),goog.events.KeyHandler.USES_KEYDOWN_&&!goog.events.KeyCodes.firesKeyPressEvent(e.keyCode,this.lastKey_,e.shiftKey,e.ctrlKey,e.altKey,e.metaKey)?this.handleEvent(e):(this.keyCode_=goog.events.KeyCodes.normalizeKeyCode(e.keyCode),goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&&(this.altKey_=e.altKey))},goog.events.KeyHandler.prototype.resetState=function(){this.keyCode_=this.lastKey_=-1},goog.events.KeyHandler.prototype.handleKeyup_=function(e){this.resetState(),this.altKey_=e.altKey},goog.events.KeyHandler.prototype.handleEvent=function(e){var o,t,n=e.getBrowserEvent(),r=n.altKey;goog.userAgent.IE&&e.type==goog.events.EventType.KEYPRESS?(o=this.keyCode_,t=o!=goog.events.KeyCodes.ENTER&&o!=goog.events.KeyCodes.ESC?n.keyCode:0):(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&e.type==goog.events.EventType.KEYPRESS?(o=this.keyCode_,t=0<=n.charCode&&63232>n.charCode&&goog.events.KeyCodes.isCharacterKey(o)?n.charCode:0):goog.userAgent.OPERA&&!goog.userAgent.WEBKIT?(o=this.keyCode_,t=goog.events.KeyCodes.isCharacterKey(o)?n.keyCode:0):(o=n.keyCode||this.keyCode_,t=n.charCode||0,goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&&(r=this.altKey_),goog.userAgent.MAC&&t==goog.events.KeyCodes.QUESTION_MARK&&o==goog.events.KeyCodes.WIN_KEY&&(o=goog.events.KeyCodes.SLASH));var i=o=goog.events.KeyCodes.normalizeKeyCode(o);o?o>=63232&&o in goog.events.KeyHandler.safariKey_?i=goog.events.KeyHandler.safariKey_[o]:25==o&&e.shiftKey&&(i=9):n.keyIdentifier&&n.keyIdentifier in goog.events.KeyHandler.keyIdentifier_&&(i=goog.events.KeyHandler.keyIdentifier_[n.keyIdentifier]),e=i==this.lastKey_,this.lastKey_=i,n=new goog.events.KeyEvent(i,t,e,n),n.altKey=r,this.dispatchEvent(n)},goog.events.KeyHandler.prototype.getElement=function(){return this.element_},goog.events.KeyHandler.prototype.attach=function(e,o){this.keyUpKey_&&this.detach(),this.element_=e,this.keyPressKey_=goog.events.listen(this.element_,goog.events.EventType.KEYPRESS,this,o),this.keyDownKey_=goog.events.listen(this.element_,goog.events.EventType.KEYDOWN,this.handleKeyDown_,o,this),this.keyUpKey_=goog.events.listen(this.element_,goog.events.EventType.KEYUP,this.handleKeyup_,o,this)},goog.events.KeyHandler.prototype.detach=function(){this.keyPressKey_&&(goog.events.unlistenByKey(this.keyPressKey_),goog.events.unlistenByKey(this.keyDownKey_),goog.events.unlistenByKey(this.keyUpKey_),this.keyUpKey_=this.keyDownKey_=this.keyPressKey_=null),this.element_=null,this.keyCode_=this.lastKey_=-1},goog.events.KeyHandler.prototype.disposeInternal=function(){goog.events.KeyHandler.superClass_.disposeInternal.call(this),this.detach()},goog.events.KeyEvent=function(e,o,t,n){goog.events.BrowserEvent.call(this,n),this.type=goog.events.KeyHandler.EventType.KEY,this.keyCode=e,this.charCode=o,this.repeat=t},goog.inherits(goog.events.KeyEvent,goog.events.BrowserEvent),goog.dom.classlist={},goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST=!1,goog.dom.classlist.get=function(e){return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||e.classList?e.classList:(e=e.className,goog.isString(e)&&e.match(/\S+/g)||[])},goog.dom.classlist.set=function(e,o){e.className=o},goog.dom.classlist.contains=function(e,o){return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||e.classList?e.classList.contains(o):goog.array.contains(goog.dom.classlist.get(e),o)},goog.dom.classlist.add=function(e,o){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||e.classList?e.classList.add(o):goog.dom.classlist.contains(e,o)||(e.className+=0t;t++)if(e=goog.ui.registry.getDecoratorByClassName(o[t]))return e;return null},goog.ui.registry.reset=function(){goog.ui.registry.defaultRenderers_={},goog.ui.registry.decoratorFunctions_={}},goog.ui.registry.defaultRenderers_={},goog.ui.registry.decoratorFunctions_={},goog.ui.ContainerRenderer=function(e){this.ariaRole_=e},goog.addSingletonGetter(goog.ui.ContainerRenderer),goog.ui.ContainerRenderer.getCustomRenderer=function(e,o){var t=new e;return t.getCssClass=function(){return o},t},goog.ui.ContainerRenderer.CSS_CLASS="goog-container",goog.ui.ContainerRenderer.prototype.getAriaRole=function(){return this.ariaRole_},goog.ui.ContainerRenderer.prototype.enableTabIndex=function(e,o){e&&(e.tabIndex=o?0:-1)},goog.ui.ContainerRenderer.prototype.createDom=function(e){return e.getDomHelper().createDom("DIV",this.getClassNames(e).join(" "))},goog.ui.ContainerRenderer.prototype.getContentElement=function(e){return e},goog.ui.ContainerRenderer.prototype.canDecorate=function(e){return"DIV"==e.tagName},goog.ui.ContainerRenderer.prototype.decorate=function(e,o){o.id&&e.setId(o.id);var t=this.getCssClass(),n=!1,r=goog.dom.classlist.get(o);return r&&goog.array.forEach(r,function(o){o==t?n=!0:o&&this.setStateFromClassName(e,o,t)},this),n||goog.dom.classlist.add(o,t),this.decorateChildren(e,this.getContentElement(o)),o},goog.ui.ContainerRenderer.prototype.setStateFromClassName=function(e,o,t){o==t+"-disabled"?e.setEnabled(!1):o==t+"-horizontal"?e.setOrientation(goog.ui.Container.Orientation.HORIZONTAL):o==t+"-vertical"&&e.setOrientation(goog.ui.Container.Orientation.VERTICAL)},goog.ui.ContainerRenderer.prototype.decorateChildren=function(e,o,t){if(o){t=t||o.firstChild;for(var n;t&&t.parentNode==o;){if(n=t.nextSibling,t.nodeType==goog.dom.NodeType.ELEMENT){var r=this.getDecoratorForChild(t);r&&(r.setElementInternal(t),e.isEnabled()||r.setEnabled(!1),e.addChild(r),r.decorate(t))}else t.nodeValue&&""!=goog.string.trim(t.nodeValue)||o.removeChild(t);t=n}}},goog.ui.ContainerRenderer.prototype.getDecoratorForChild=function(e){return goog.ui.registry.getDecorator(e)},goog.ui.ContainerRenderer.prototype.initializeDom=function(e){e=e.getElement(),goog.asserts.assert(e,"The container DOM element cannot be null."),goog.style.setUnselectable(e,!0,goog.userAgent.GECKO),goog.userAgent.IE&&(e.hideFocus=!0);var o=this.getAriaRole();o&&goog.a11y.aria.setRole(e,o)},goog.ui.ContainerRenderer.prototype.getKeyEventTarget=function(e){return e.getElement()},goog.ui.ContainerRenderer.prototype.getCssClass=function(){return goog.ui.ContainerRenderer.CSS_CLASS},goog.ui.ContainerRenderer.prototype.getClassNames=function(e){var o=this.getCssClass(),t=e.getOrientation()==goog.ui.Container.Orientation.HORIZONTAL,t=[o,t?o+"-horizontal":o+"-vertical"];return e.isEnabled()||t.push(o+"-disabled"),t},goog.ui.ContainerRenderer.prototype.getDefaultOrientation=function(){return goog.ui.Container.Orientation.VERTICAL},goog.ui.ControlRenderer=function(){},goog.addSingletonGetter(goog.ui.ControlRenderer),goog.tagUnsealableClass(goog.ui.ControlRenderer),goog.ui.ControlRenderer.getCustomRenderer=function(e,o){var t=new e;return t.getCssClass=function(){return o},t},goog.ui.ControlRenderer.CSS_CLASS="goog-control",goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS=[],goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_=goog.object.create(goog.a11y.aria.Role.BUTTON,goog.a11y.aria.State.PRESSED,goog.a11y.aria.Role.CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.MENU_ITEM_CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM_RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.TAB,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.TREEITEM,goog.a11y.aria.State.SELECTED),goog.ui.ControlRenderer.prototype.getAriaRole=function(){},goog.ui.ControlRenderer.prototype.createDom=function(e){return e.getDomHelper().createDom("DIV",this.getClassNames(e).join(" "),e.getContent())},goog.ui.ControlRenderer.prototype.getContentElement=function(e){return e},goog.ui.ControlRenderer.prototype.enableClassName=function(e,o,t){if(e=e.getElement?e.getElement():e){var n=[o];goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("7")&&(n=this.getAppliedCombinedClassNames_(goog.dom.classlist.get(e),o),n.push(o)),goog.dom.classlist.enableAll(e,n,t)}},goog.ui.ControlRenderer.prototype.enableExtraClassName=function(e,o,t){this.enableClassName(e,o,t)},goog.ui.ControlRenderer.prototype.canDecorate=function(e){return!0},goog.ui.ControlRenderer.prototype.decorate=function(e,o){o.id&&e.setId(o.id);var t=this.getContentElement(o);t&&t.firstChild?e.setContentInternal(t.firstChild.nextSibling?goog.array.clone(t.childNodes):t.firstChild):e.setContentInternal(null);var n=0,r=this.getCssClass(),i=this.getStructuralCssClass(),s=!1,l=!1,g=!1,a=goog.array.toArray(goog.dom.classlist.get(o));goog.array.forEach(a,function(e){s||e!=r?l||e!=i?n|=this.getStateFromClass(e):l=!0:(s=!0,i==r&&(l=!0)),this.getStateFromClass(e)==goog.ui.Component.State.DISABLED&&(goog.asserts.assertElement(t),goog.dom.isFocusableTabIndex(t)&&goog.dom.setFocusableTabIndex(t,!1))},this),e.setStateInternal(n),s||(a.push(r),i==r&&(l=!0)),l||a.push(i);var c=e.getExtraClassNames();if(c&&a.push.apply(a,c),goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("7")){var u=this.getAppliedCombinedClassNames_(a);0-1&&o!=this.highlightedIndex_){var t=this.getHighlighted();t&&t.setHighlighted(!1),this.highlightedIndex_=o,t=this.getHighlighted(),this.isMouseButtonPressed()&&t.setActive(!0),this.openFollowsHighlight_&&this.openItem_&&t!=this.openItem_&&(t.isSupportedState(goog.ui.Component.State.OPENED)?t.setOpen(!0):this.openItem_.setOpen(!1))}o=this.getElement(),goog.asserts.assert(o,"The DOM element for the container cannot be null."),null!=e.target.getElement()&&goog.a11y.aria.setState(o,goog.a11y.aria.State.ACTIVEDESCENDANT,e.target.getElement().id)},goog.ui.Container.prototype.handleUnHighlightItem=function(e){e.target==this.getHighlighted()&&(this.highlightedIndex_=-1),e=this.getElement(),goog.asserts.assert(e,"The DOM element for the container cannot be null."),goog.a11y.aria.removeState(e,goog.a11y.aria.State.ACTIVEDESCENDANT)},goog.ui.Container.prototype.handleOpenItem=function(e){(e=e.target)&&e!=this.openItem_&&e.getParent()==this&&(this.openItem_&&this.openItem_.setOpen(!1),this.openItem_=e)},goog.ui.Container.prototype.handleCloseItem=function(e){e.target==this.openItem_&&(this.openItem_=null);var o=this.getElement(),t=e.target.getElement();o&&e.target.isHighlighted()&&t&&goog.a11y.aria.setActiveDescendant(o,t)},goog.ui.Container.prototype.handleMouseDown=function(e){this.enabled_&&this.setMouseButtonPressed(!0);var o=this.getKeyEventTarget();o&&goog.dom.isFocusableTabIndex(o)?o.focus():e.preventDefault()},goog.ui.Container.prototype.handleDocumentMouseUp=function(e){this.setMouseButtonPressed(!1)},goog.ui.Container.prototype.handleChildMouseEvents=function(e){var o=this.getOwnerControl(e.target);if(o)switch(e.type){case goog.events.EventType.MOUSEDOWN:o.handleMouseDown(e);break;case goog.events.EventType.MOUSEUP:o.handleMouseUp(e);break;case goog.events.EventType.MOUSEOVER:o.handleMouseOver(e);break;case goog.events.EventType.MOUSEOUT:o.handleMouseOut(e);break;case goog.events.EventType.CONTEXTMENU:o.handleContextMenu(e)}},goog.ui.Container.prototype.getOwnerControl=function(e){if(this.childElementIdMap_)for(var o=this.getElement();e&&e!==o;){var t=e.id;if(t in this.childElementIdMap_)return this.childElementIdMap_[t];e=e.parentNode}return null},goog.ui.Container.prototype.handleFocus=function(e){},goog.ui.Container.prototype.handleBlur=function(e){this.setHighlightedIndex(-1),this.setMouseButtonPressed(!1),this.openItem_&&this.openItem_.setOpen(!1)},goog.ui.Container.prototype.handleKeyEvent=function(e){return this.isEnabled()&&this.isVisible()&&(0!=this.getChildCount()||this.keyEventTarget_)&&this.handleKeyEventInternal(e)?(e.preventDefault(),e.stopPropagation(),!0):!1},goog.ui.Container.prototype.handleKeyEventInternal=function(e){var o=this.getHighlighted();if(o&&"function"==typeof o.handleKeyEvent&&o.handleKeyEvent(e)||this.openItem_&&this.openItem_!=o&&"function"==typeof this.openItem_.handleKeyEvent&&this.openItem_.handleKeyEvent(e))return!0;if(e.shiftKey||e.ctrlKey||e.metaKey||e.altKey)return!1;switch(e.keyCode){case goog.events.KeyCodes.ESC:if(!this.isFocusable())return!1;this.getKeyEventTarget().blur();break;case goog.events.KeyCodes.HOME:this.highlightFirst();break;case goog.events.KeyCodes.END:this.highlightLast();break;case goog.events.KeyCodes.UP:if(this.orientation_!=goog.ui.Container.Orientation.VERTICAL)return!1;this.highlightPrevious();break;case goog.events.KeyCodes.LEFT:if(this.orientation_!=goog.ui.Container.Orientation.HORIZONTAL)return!1;this.isRightToLeft()?this.highlightNext():this.highlightPrevious();break;case goog.events.KeyCodes.DOWN:if(this.orientation_!=goog.ui.Container.Orientation.VERTICAL)return!1;this.highlightNext();break;case goog.events.KeyCodes.RIGHT:if(this.orientation_!=goog.ui.Container.Orientation.HORIZONTAL)return!1;this.isRightToLeft()?this.highlightPrevious():this.highlightNext();break;default:return!1}return!0},goog.ui.Container.prototype.registerChildId_=function(e){var o=e.getElement(),o=o.id||(o.id=e.getId());this.childElementIdMap_||(this.childElementIdMap_={}),this.childElementIdMap_[o]=e},goog.ui.Container.prototype.addChild=function(e,o){goog.asserts.assertInstanceof(e,goog.ui.Control,"The child of a container must be a control"),goog.ui.Container.superClass_.addChild.call(this,e,o)},goog.ui.Container.prototype.addChildAt=function(e,o,t){goog.asserts.assertInstanceof(e,goog.ui.Control),e.setDispatchTransitionEvents(goog.ui.Component.State.HOVER,!0),e.setDispatchTransitionEvents(goog.ui.Component.State.OPENED,!0),!this.isFocusable()&&this.isFocusableChildrenAllowed()||e.setSupportedState(goog.ui.Component.State.FOCUSED,!1),e.setHandleMouseEvents(!1);var n=e.getParent()==this?this.indexOfChild(e):-1;goog.ui.Container.superClass_.addChildAt.call(this,e,o,t),e.isInDocument()&&this.isInDocument()&&this.registerChildId_(e),this.updateHighlightedIndex_(n,o)},goog.ui.Container.prototype.updateHighlightedIndex_=function(e,o){-1==e&&(e=this.getChildCount()),e==this.highlightedIndex_?this.highlightedIndex_=Math.min(this.getChildCount()-1,o):e>this.highlightedIndex_&&o<=this.highlightedIndex_?this.highlightedIndex_++:ethis.highlightedIndex_&&this.highlightedIndex_--},goog.ui.Container.prototype.removeChild=function(e,o){if(e=goog.isString(e)?this.getChild(e):e,goog.asserts.assertInstanceof(e,goog.ui.Control),e){var t=this.indexOfChild(e);-1!=t&&(t==this.highlightedIndex_?(e.setHighlighted(!1),this.highlightedIndex_=-1):te?o-1:e},0)},goog.ui.Container.prototype.highlightNext=function(){this.highlightHelper(function(e,o){return(e+1)%o},this.highlightedIndex_)},goog.ui.Container.prototype.highlightPrevious=function(){this.highlightHelper(function(e,o){return e--,0>e?o-1:e},this.highlightedIndex_)},goog.ui.Container.prototype.highlightHelper=function(e,o){for(var t=0>o?this.indexOfChild(this.openItem_):o,n=this.getChildCount(),t=e.call(this,t,n),r=0;n>=r;){var i=this.getChildAt(t);if(i&&this.canHighlightItem(i))return this.setHighlightedIndexFromKeyEvent(t),!0;r++,t=e.call(this,t,n)}return!1},goog.ui.Container.prototype.canHighlightItem=function(e){return e.isVisible()&&e.isEnabled()&&e.isSupportedState(goog.ui.Component.State.HOVER)},goog.ui.Container.prototype.setHighlightedIndexFromKeyEvent=function(e){this.setHighlightedIndex(e)},goog.ui.Container.prototype.getOpenItem=function(){return this.openItem_},goog.ui.Container.prototype.isMouseButtonPressed=function(){return this.mouseButtonPressed_},goog.ui.Container.prototype.setMouseButtonPressed=function(e){this.mouseButtonPressed_=e},goog.ui.MenuHeaderRenderer=function(){goog.ui.ControlRenderer.call(this)},goog.inherits(goog.ui.MenuHeaderRenderer,goog.ui.ControlRenderer),goog.addSingletonGetter(goog.ui.MenuHeaderRenderer),goog.ui.MenuHeaderRenderer.CSS_CLASS="goog-menuheader",goog.ui.MenuHeaderRenderer.prototype.getCssClass=function(){return goog.ui.MenuHeaderRenderer.CSS_CLASS},goog.ui.MenuHeader=function(e,o,t){goog.ui.Control.call(this,e,t||goog.ui.MenuHeaderRenderer.getInstance(),o),this.setSupportedState(goog.ui.Component.State.DISABLED,!1),this.setSupportedState(goog.ui.Component.State.HOVER,!1),this.setSupportedState(goog.ui.Component.State.ACTIVE,!1),this.setSupportedState(goog.ui.Component.State.FOCUSED,!1),this.setStateInternal(goog.ui.Component.State.DISABLED)},goog.inherits(goog.ui.MenuHeader,goog.ui.Control),goog.ui.registry.setDecoratorByClassName(goog.ui.MenuHeaderRenderer.CSS_CLASS,function(){return new goog.ui.MenuHeader(null)}),goog.ui.MenuItemRenderer=function(){goog.ui.ControlRenderer.call(this),this.classNameCache_=[]},goog.inherits(goog.ui.MenuItemRenderer,goog.ui.ControlRenderer),goog.addSingletonGetter(goog.ui.MenuItemRenderer),goog.ui.MenuItemRenderer.CSS_CLASS="goog-menuitem",goog.ui.MenuItemRenderer.CompositeCssClassIndex_={HOVER:0,CHECKBOX:1,CONTENT:2},goog.ui.MenuItemRenderer.prototype.getCompositeCssClass_=function(e){var o=this.classNameCache_[e];if(!o){switch(e){case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER:o=this.getStructuralCssClass()+"-highlight";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX:o=this.getStructuralCssClass()+"-checkbox";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT:o=this.getStructuralCssClass()+"-content"}this.classNameCache_[e]=o}return o},goog.ui.MenuItemRenderer.prototype.getAriaRole=function(){return goog.a11y.aria.Role.MENU_ITEM},goog.ui.MenuItemRenderer.prototype.createDom=function(e){var o=e.getDomHelper().createDom("DIV",this.getClassNames(e).join(" "),this.createContent(e.getContent(),e.getDomHelper()));return this.setEnableCheckBoxStructure(e,o,e.isSupportedState(goog.ui.Component.State.SELECTED)||e.isSupportedState(goog.ui.Component.State.CHECKED)),o},goog.ui.MenuItemRenderer.prototype.getContentElement=function(e){return e&&e.firstChild},goog.ui.MenuItemRenderer.prototype.decorate=function(e,o){return goog.asserts.assert(o),this.hasContentStructure(o)||o.appendChild(this.createContent(o.childNodes,e.getDomHelper())),goog.dom.classlist.contains(o,"goog-option")&&(e.setCheckable(!0),this.setCheckable(e,o,!0)),goog.ui.MenuItemRenderer.superClass_.decorate.call(this,e,o)},goog.ui.MenuItemRenderer.prototype.setContent=function(e,o){var t=this.getContentElement(e),n=this.hasCheckBoxStructure(e)?t.firstChild:null;goog.ui.MenuItemRenderer.superClass_.setContent.call(this,e,o),n&&!this.hasCheckBoxStructure(e)&&t.insertBefore(n,t.firstChild||null)},goog.ui.MenuItemRenderer.prototype.hasContentStructure=function(e){e=goog.dom.getFirstElementChild(e);var o=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return!!e&&goog.dom.classlist.contains(e,o)},goog.ui.MenuItemRenderer.prototype.createContent=function(e,o){var t=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return o.createDom("DIV",t,e)},goog.ui.MenuItemRenderer.prototype.setSelectable=function(e,o,t){e&&o&&this.setEnableCheckBoxStructure(e,o,t)},goog.ui.MenuItemRenderer.prototype.setCheckable=function(e,o,t){e&&o&&this.setEnableCheckBoxStructure(e,o,t)},goog.ui.MenuItemRenderer.prototype.hasCheckBoxStructure=function(e){if(e=this.getContentElement(e)){e=e.firstChild;var o=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX);return!!e&&goog.dom.isElement(e)&&goog.dom.classlist.contains(e,o)}return!1},goog.ui.MenuItemRenderer.prototype.setEnableCheckBoxStructure=function(e,o,t){this.setAriaRole(o,e.getPreferredAriaRole()),this.setAriaStates(e,o),t!=this.hasCheckBoxStructure(o)&&(goog.dom.classlist.enable(o,"goog-option",t),o=this.getContentElement(o),t?(t=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX),o.insertBefore(e.getDomHelper().createDom("DIV",t),o.firstChild||null)):o.removeChild(o.firstChild))},goog.ui.MenuItemRenderer.prototype.getClassForState=function(e){switch(e){case goog.ui.Component.State.HOVER:return this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);case goog.ui.Component.State.CHECKED:case goog.ui.Component.State.SELECTED:return"goog-option-selected";default:return goog.ui.MenuItemRenderer.superClass_.getClassForState.call(this,e)}},goog.ui.MenuItemRenderer.prototype.getStateFromClass=function(e){var o=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);switch(e){case"goog-option-selected":return goog.ui.Component.State.CHECKED;case o:return goog.ui.Component.State.HOVER;default:return goog.ui.MenuItemRenderer.superClass_.getStateFromClass.call(this,e)}},goog.ui.MenuItemRenderer.prototype.getCssClass=function(){return goog.ui.MenuItemRenderer.CSS_CLASS},goog.ui.MenuItem=function(e,o,t,n){goog.ui.Control.call(this,e,n||goog.ui.MenuItemRenderer.getInstance(),t),this.setValue(o)},goog.inherits(goog.ui.MenuItem,goog.ui.Control),goog.tagUnsealableClass(goog.ui.MenuItem),goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_="goog-menuitem-mnemonic-separator",goog.ui.MenuItem.ACCELERATOR_CLASS="goog-menuitem-accel",goog.ui.MenuItem.prototype.getValue=function(){var e=this.getModel();return null!=e?e:this.getCaption()},goog.ui.MenuItem.prototype.setValue=function(e){this.setModel(e)},goog.ui.MenuItem.prototype.setSupportedState=function(e,o){switch(goog.ui.MenuItem.superClass_.setSupportedState.call(this,e,o),e){case goog.ui.Component.State.SELECTED:this.setSelectableInternal_(o);break;case goog.ui.Component.State.CHECKED:this.setCheckableInternal_(o)}},goog.ui.MenuItem.prototype.setSelectable=function(e){this.setSupportedState(goog.ui.Component.State.SELECTED,e)},goog.ui.MenuItem.prototype.setSelectableInternal_=function(e){this.isChecked()&&!e&&this.setChecked(!1);var o=this.getElement();o&&this.getRenderer().setSelectable(this,o,e)},goog.ui.MenuItem.prototype.setCheckable=function(e){this.setSupportedState(goog.ui.Component.State.CHECKED,e)},goog.ui.MenuItem.prototype.setCheckableInternal_=function(e){var o=this.getElement();o&&this.getRenderer().setCheckable(this,o,e)},goog.ui.MenuItem.prototype.getCaption=function(){var e=this.getContent();if(goog.isArray(e)){var o=goog.ui.MenuItem.ACCELERATOR_CLASS,t=goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_,e=goog.array.map(e,function(e){return goog.dom.isElement(e)&&(goog.dom.classlist.contains(e,o)||goog.dom.classlist.contains(e,t))?"":goog.dom.getRawTextContent(e)}).join("");return goog.string.collapseBreakingSpaces(e)}return goog.ui.MenuItem.superClass_.getCaption.call(this)},goog.ui.MenuItem.prototype.getAccelerator=function(){var e=this.getDomHelper(),o=this.getContent();return goog.isArray(o)&&(o=goog.array.find(o,function(e){return goog.dom.classlist.contains(e,goog.ui.MenuItem.ACCELERATOR_CLASS)}))?e.getTextContent(o):null},goog.ui.MenuItem.prototype.handleMouseUp=function(e){var o=this.getParent();if(o){var t=o.openingCoords;if(o.openingCoords=null,t&&goog.isNumber(e.clientX)&&(o=new goog.math.Coordinate(e.clientX,e.clientY),goog.math.Coordinate.equals(t,o)))return}goog.ui.MenuItem.superClass_.handleMouseUp.call(this,e)},goog.ui.MenuItem.prototype.handleKeyEventInternal=function(e){return e.keyCode==this.getMnemonic()&&this.performActionInternal(e)?!0:goog.ui.MenuItem.superClass_.handleKeyEventInternal.call(this,e)},goog.ui.MenuItem.prototype.setMnemonic=function(e){this.mnemonicKey_=e},goog.ui.MenuItem.prototype.getMnemonic=function(){return this.mnemonicKey_},goog.ui.registry.setDecoratorByClassName(goog.ui.MenuItemRenderer.CSS_CLASS,function(){return new goog.ui.MenuItem(null)}),goog.ui.MenuItem.prototype.getPreferredAriaRole=function(){return this.isSupportedState(goog.ui.Component.State.CHECKED)?goog.a11y.aria.Role.MENU_ITEM_CHECKBOX:this.isSupportedState(goog.ui.Component.State.SELECTED)?goog.a11y.aria.Role.MENU_ITEM_RADIO:goog.ui.MenuItem.superClass_.getPreferredAriaRole.call(this)},goog.ui.MenuItem.prototype.getParent=function(){return goog.ui.Control.prototype.getParent.call(this)},goog.ui.MenuItem.prototype.getParentEventTarget=function(){return goog.ui.Control.prototype.getParentEventTarget.call(this)},goog.ui.MenuSeparatorRenderer=function(){goog.ui.ControlRenderer.call(this)},goog.inherits(goog.ui.MenuSeparatorRenderer,goog.ui.ControlRenderer),goog.addSingletonGetter(goog.ui.MenuSeparatorRenderer),goog.ui.MenuSeparatorRenderer.CSS_CLASS="goog-menuseparator",goog.ui.MenuSeparatorRenderer.prototype.createDom=function(e){return e.getDomHelper().createDom("DIV",this.getCssClass())},goog.ui.MenuSeparatorRenderer.prototype.decorate=function(e,o){if(o.id&&e.setId(o.id),"HR"==o.tagName){var t=o;o=this.createDom(e),goog.dom.insertSiblingBefore(o,t),goog.dom.removeNode(t)}else goog.dom.classlist.add(o,this.getCssClass());return o},goog.ui.MenuSeparatorRenderer.prototype.setContent=function(e,o){},goog.ui.MenuSeparatorRenderer.prototype.getCssClass=function(){return goog.ui.MenuSeparatorRenderer.CSS_CLASS},goog.ui.Separator=function(e,o){goog.ui.Control.call(this,null,e||goog.ui.MenuSeparatorRenderer.getInstance(),o),this.setSupportedState(goog.ui.Component.State.DISABLED,!1),this.setSupportedState(goog.ui.Component.State.HOVER,!1),this.setSupportedState(goog.ui.Component.State.ACTIVE,!1),this.setSupportedState(goog.ui.Component.State.FOCUSED,!1),this.setStateInternal(goog.ui.Component.State.DISABLED)},goog.inherits(goog.ui.Separator,goog.ui.Control),goog.ui.Separator.prototype.enterDocument=function(){goog.ui.Separator.superClass_.enterDocument.call(this);var e=this.getElement();goog.asserts.assert(e,"The DOM element for the separator cannot be null."),goog.a11y.aria.setRole(e,"separator")},goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator}),goog.ui.MenuRenderer=function(e){goog.ui.ContainerRenderer.call(this,e||goog.a11y.aria.Role.MENU)},goog.inherits(goog.ui.MenuRenderer,goog.ui.ContainerRenderer),goog.addSingletonGetter(goog.ui.MenuRenderer),goog.ui.MenuRenderer.CSS_CLASS="goog-menu",goog.ui.MenuRenderer.prototype.canDecorate=function(e){return"UL"==e.tagName||goog.ui.MenuRenderer.superClass_.canDecorate.call(this,e)},goog.ui.MenuRenderer.prototype.getDecoratorForChild=function(e){return"HR"==e.tagName?new goog.ui.Separator:goog.ui.MenuRenderer.superClass_.getDecoratorForChild.call(this,e)},goog.ui.MenuRenderer.prototype.containsElement=function(e,o){return goog.dom.contains(e.getElement(),o)},goog.ui.MenuRenderer.prototype.getCssClass=function(){return goog.ui.MenuRenderer.CSS_CLASS},goog.ui.MenuRenderer.prototype.initializeDom=function(e){goog.ui.MenuRenderer.superClass_.initializeDom.call(this,e),e=e.getElement(),goog.asserts.assert(e,"The menu DOM element cannot be null."),goog.a11y.aria.setState(e,goog.a11y.aria.State.HASPOPUP,"true")},goog.ui.MenuSeparator=function(e){goog.ui.Separator.call(this,goog.ui.MenuSeparatorRenderer.getInstance(),e)},goog.inherits(goog.ui.MenuSeparator,goog.ui.Separator),goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator}),goog.ui.Menu=function(e,o){goog.ui.Container.call(this,goog.ui.Container.Orientation.VERTICAL,o||goog.ui.MenuRenderer.getInstance(),e),this.setFocusable(!1)},goog.inherits(goog.ui.Menu,goog.ui.Container),goog.tagUnsealableClass(goog.ui.Menu),goog.ui.Menu.EventType={BEFORE_SHOW:goog.ui.Component.EventType.BEFORE_SHOW,SHOW:goog.ui.Component.EventType.SHOW,BEFORE_HIDE:goog.ui.Component.EventType.HIDE,HIDE:goog.ui.Component.EventType.HIDE},goog.ui.Menu.CSS_CLASS=goog.ui.MenuRenderer.CSS_CLASS,goog.ui.Menu.prototype.allowAutoFocus_=!0,goog.ui.Menu.prototype.allowHighlightDisabled_=!1,goog.ui.Menu.prototype.getCssClass=function(){return this.getRenderer().getCssClass()},goog.ui.Menu.prototype.containsElement=function(e){if(this.getRenderer().containsElement(this,e))return!0;for(var o=0,t=this.getChildCount();t>o;o++){var n=this.getChildAt(o);if("function"==typeof n.containsElement&&n.containsElement(e))return!0}return!1},goog.ui.Menu.prototype.addItem=function(e){this.addChild(e,!0)},goog.ui.Menu.prototype.addItemAt=function(e,o){this.addChildAt(e,o,!0)},goog.ui.Menu.prototype.removeItem=function(e){(e=this.removeChild(e,!0))&&e.dispose()},goog.ui.Menu.prototype.removeItemAt=function(e){(e=this.removeChildAt(e,!0))&&e.dispose()},goog.ui.Menu.prototype.getItemAt=function(e){return this.getChildAt(e)},goog.ui.Menu.prototype.getItemCount=function(){return this.getChildCount()},goog.ui.Menu.prototype.getItems=function(){var e=[];return this.forEachChild(function(o){e.push(o)}),e},goog.ui.Menu.prototype.setPosition=function(e,o){var t=this.isVisible();t||goog.style.setElementShown(this.getElement(),!0),goog.style.setPageOffset(this.getElement(),e,o),t||goog.style.setElementShown(this.getElement(),!1)},goog.ui.Menu.prototype.getPosition=function(){return this.isVisible()?goog.style.getPageOffset(this.getElement()):null},goog.ui.Menu.prototype.setAllowAutoFocus=function(e){(this.allowAutoFocus_=e)&&this.setFocusable(!0)},goog.ui.Menu.prototype.getAllowAutoFocus=function(){return this.allowAutoFocus_},goog.ui.Menu.prototype.setAllowHighlightDisabled=function(e){this.allowHighlightDisabled_=e},goog.ui.Menu.prototype.getAllowHighlightDisabled=function(){return this.allowHighlightDisabled_},goog.ui.Menu.prototype.setVisible=function(e,o,t){return(o=goog.ui.Menu.superClass_.setVisible.call(this,e,o))&&e&&this.isInDocument()&&this.allowAutoFocus_&&this.getKeyEventTarget().focus(),e&&t&&goog.isNumber(t.clientX)?this.openingCoords=new goog.math.Coordinate(t.clientX,t.clientY):this.openingCoords=null,o},goog.ui.Menu.prototype.handleEnterItem=function(e){return this.allowAutoFocus_&&this.getKeyEventTarget().focus(),goog.ui.Menu.superClass_.handleEnterItem.call(this,e)},goog.ui.Menu.prototype.highlightNextPrefix=function(e){var o=new RegExp("^"+goog.string.regExpEscape(e),"i");return this.highlightHelper(function(e,t){var n=0>e?0:e,r=!1;do{++e,e==t&&(e=0,r=!0);var i=this.getChildAt(e).getCaption();if(i&&i.match(o))return e}while(!r||e!=n);return this.getHighlightedIndex()},this.getHighlightedIndex())},goog.ui.Menu.prototype.canHighlightItem=function(e){return(this.allowHighlightDisabled_||e.isEnabled())&&e.isVisible()&&e.isSupportedState(goog.ui.Component.State.HOVER)},goog.ui.Menu.prototype.decorateInternal=function(e){this.decorateContent(e),goog.ui.Menu.superClass_.decorateInternal.call(this,e)},goog.ui.Menu.prototype.handleKeyEventInternal=function(e){var o=goog.ui.Menu.superClass_.handleKeyEventInternal.call(this,e);return o||this.forEachChild(function(t){!o&&t.getMnemonic&&t.getMnemonic()==e.keyCode&&(this.isEnabled()&&this.setHighlighted(t),o=t.handleKeyEvent(e))},this),o},goog.ui.Menu.prototype.setHighlightedIndex=function(e){goog.ui.Menu.superClass_.setHighlightedIndex.call(this,e),(e=this.getChildAt(e))&&goog.style.scrollIntoContainerView(e.getElement(),this.getElement())},goog.ui.Menu.prototype.decorateContent=function(e){var o=this.getRenderer();e=this.getDomHelper().getElementsByTagNameAndClass("DIV",o.getCssClass()+"-content",e);for(var t=e.length,n=0;t>n;n++)o.decorateChildren(this,e[n])},goog.color={},goog.color.names={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",green:"#008000",greenyellow:"#adff2f",grey:"#808080",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"},goog.color.parse=function(e){var o={};e=String(e);var t=goog.color.prependHashIfNecessaryHelper(e);if(goog.color.isValidHexColor_(t))return o.hex=goog.color.normalizeHex(t),o.type="hex",o;if(t=goog.color.isValidRgbColor_(e),t.length)return o.hex=goog.color.rgbArrayToHex(t),o.type="rgb",o;if(goog.color.names&&(t=goog.color.names[e.toLowerCase()]))return o.hex=t,o.type="named",o;throw Error(e+" is not a valid color string")},goog.color.isValidColor=function(e){var o=goog.color.prependHashIfNecessaryHelper(e);return!!(goog.color.isValidHexColor_(o)||goog.color.isValidRgbColor_(e).length||goog.color.names&&goog.color.names[e.toLowerCase()])},goog.color.parseRgb=function(e){var o=goog.color.isValidRgbColor_(e);if(!o.length)throw Error(e+" is not a valid RGB color");return o},goog.color.hexToRgbStyle=function(e){return goog.color.rgbStyle_(goog.color.hexToRgb(e))},goog.color.hexTripletRe_=/#(.)(.)(.)/,goog.color.normalizeHex=function(e){if(!goog.color.isValidHexColor_(e))throw Error("'"+e+"' is not a valid hex color");return 4==e.length&&(e=e.replace(goog.color.hexTripletRe_,"#$1$1$2$2$3$3")),e.toLowerCase()},goog.color.hexToRgb=function(e){e=goog.color.normalizeHex(e);var o=parseInt(e.substr(1,2),16),t=parseInt(e.substr(3,2),16);return e=parseInt(e.substr(5,2),16),[o,t,e]},goog.color.rgbToHex=function(e,o,t){if(e=Number(e),o=Number(o),t=Number(t),e!=(255&e)||o!=(255&o)||t!=(255&t))throw Error('"('+e+","+o+","+t+'") is not a valid RGB color');return e=goog.color.prependZeroIfNecessaryHelper(e.toString(16)),o=goog.color.prependZeroIfNecessaryHelper(o.toString(16)),t=goog.color.prependZeroIfNecessaryHelper(t.toString(16)),"#"+e+o+t},goog.color.rgbArrayToHex=function(e){return goog.color.rgbToHex(e[0],e[1],e[2])},goog.color.rgbToHsl=function(e,o,t){e/=255,o/=255,t/=255;var n=Math.max(e,o,t),r=Math.min(e,o,t),i=0,s=0,l=.5*(n+r);return n!=r&&(n==e?i=60*(o-t)/(n-r):n==o?i=60*(t-e)/(n-r)+120:n==t&&(i=60*(e-o)/(n-r)+240),s=l>0&&.5>=l?(n-r)/(2*l):(n-r)/(2-2*l)),[Math.round(i+360)%360,s,l]},goog.color.rgbArrayToHsl=function(e){return goog.color.rgbToHsl(e[0],e[1],e[2])},goog.color.hueToRgb_=function(e,o,t){return 0>t?t+=1:t>1&&--t,1>6*t?e+6*(o-e)*t:1>2*t?o:2>3*t?e+(o-e)*(2/3-t)*6:e},goog.color.hslToRgb=function(e,o,t){if(e/=360,0==o)t=o=e=255*t;else{var n,r;r=.5>t?t*(1+o):t+o-o*t,n=2*t-r,t=255*goog.color.hueToRgb_(n,r,e+1/3),o=255*goog.color.hueToRgb_(n,r,e),e=255*goog.color.hueToRgb_(n,r,e-1/3)}return[Math.round(t),Math.round(o),Math.round(e)]},goog.color.hslArrayToRgb=function(e){return goog.color.hslToRgb(e[0],e[1],e[2])},goog.color.validHexColorRe_=/^#(?:[0-9a-f]{3}){1,2}$/i,goog.color.isValidHexColor_=function(e){return goog.color.validHexColorRe_.test(e)},goog.color.normalizedHexColorRe_=/^#[0-9a-f]{6}$/,goog.color.isNormalizedHexColor_=function(e){return goog.color.normalizedHexColorRe_.test(e)},goog.color.rgbColorRe_=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,goog.color.isValidRgbColor_=function(e){var o=e.match(goog.color.rgbColorRe_);if(o){e=Number(o[1]);var t=Number(o[2]),o=Number(o[3]);if(e>=0&&255>=e&&t>=0&&255>=t&&o>=0&&255>=o)return[e,t,o]}return[]},goog.color.prependZeroIfNecessaryHelper=function(e){return 1==e.length?"0"+e:e},goog.color.prependHashIfNecessaryHelper=function(e){return"#"==e.charAt(0)?e:"#"+e},goog.color.rgbStyle_=function(e){return"rgb("+e.join(",")+")"},goog.color.hsvToRgb=function(e,o,t){var n=0,r=0,i=0;if(0==o)i=r=n=t;else{var s=Math.floor(e/60),l=e/60-s;e=t*(1-o);var g=t*(1-o*l);switch(o=t*(1-o*(1-l)),s){case 1:n=g,r=t,i=e;break;case 2:n=e,r=t,i=o;break;case 3:n=e,r=g,i=t;break;case 4:n=o,r=e,i=t;break;case 5:n=t,r=e,i=g;break;case 6:case 0:n=t,r=o,i=e}}return[Math.floor(n),Math.floor(r),Math.floor(i)]},goog.color.rgbToHsv=function(e,o,t){var n=Math.max(Math.max(e,o),t),r=Math.min(Math.min(e,o),t);if(r==n)r=e=0;else{var i=n-r,r=i/n;e=60*(e==n?(o-t)/i:o==n?2+(t-e)/i:4+(e-o)/i),0>e&&(e+=360),e>360&&(e-=360)}return[e,r,n]},goog.color.rgbArrayToHsv=function(e){return goog.color.rgbToHsv(e[0],e[1],e[2])},goog.color.hsvArrayToRgb=function(e){return goog.color.hsvToRgb(e[0],e[1],e[2])},goog.color.hexToHsl=function(e){return e=goog.color.hexToRgb(e),goog.color.rgbToHsl(e[0],e[1],e[2])},goog.color.hslToHex=function(e,o,t){return goog.color.rgbArrayToHex(goog.color.hslToRgb(e,o,t))},goog.color.hslArrayToHex=function(e){return goog.color.rgbArrayToHex(goog.color.hslToRgb(e[0],e[1],e[2]))},goog.color.hexToHsv=function(e){return goog.color.rgbArrayToHsv(goog.color.hexToRgb(e))},goog.color.hsvToHex=function(e,o,t){return goog.color.rgbArrayToHex(goog.color.hsvToRgb(e,o,t))},goog.color.hsvArrayToHex=function(e){return goog.color.hsvToHex(e[0],e[1],e[2])},goog.color.hslDistance=function(e,o){var t,n;return t=.5>=e[2]?e[1]*e[2]:e[1]*(1-e[2]),n=.5>=o[2]?o[1]*o[2]:o[1]*(1-o[2]),(e[2]-o[2])*(e[2]-o[2])+t*t+n*n-2*t*n*Math.cos(2*(e[0]/360-o[0]/360)*Math.PI)},goog.color.blend=function(e,o,t){return t=goog.math.clamp(t,0,1),[Math.round(t*e[0]+(1-t)*o[0]),Math.round(t*e[1]+(1-t)*o[1]),Math.round(t*e[2]+(1-t)*o[2])]},goog.color.darken=function(e,o){return goog.color.blend([0,0,0],e,o)},goog.color.lighten=function(e,o){return goog.color.blend([255,255,255],e,o)},goog.color.highContrast=function(e,o){for(var t=[],n=0;n=e.length)throw goog.iter.StopIteration;if(o in e)return e[o++];o++}},t}throw Error("Not implemented")},goog.iter.forEach=function(e,o,t){if(goog.isArrayLike(e))try{goog.array.forEach(e,o,t)}catch(n){if(n!==goog.iter.StopIteration)throw n}else{e=goog.iter.toIterator(e);try{for(;;)o.call(t,e.next(),void 0,e)}catch(n){if(n!==goog.iter.StopIteration)throw n}}},goog.iter.filter=function(e,o,t){var n=goog.iter.toIterator(e);return e=new goog.iter.Iterator,e.next=function(){for(;;){var e=n.next();if(o.call(t,e,void 0,n))return e}},e},goog.iter.filterFalse=function(e,o,t){return goog.iter.filter(e,goog.functions.not(o),t)},goog.iter.range=function(e,o,t){var n=0,r=e,i=t||1;if(10&&n>=r||0>i&&r>=n)throw goog.iter.StopIteration;var e=n;return n+=i,e},s},goog.iter.join=function(e,o){return goog.iter.toArray(e).join(o)},goog.iter.map=function(e,o,t){var n=goog.iter.toIterator(e);return e=new goog.iter.Iterator,e.next=function(){var e=n.next();return o.call(t,e,void 0,n)},e},goog.iter.reduce=function(e,o,t,n){var r=t;return goog.iter.forEach(e,function(e){r=o.call(n,r,e)}),r},goog.iter.some=function(e,o,t){e=goog.iter.toIterator(e);try{for(;;)if(o.call(t,e.next(),void 0,e))return!0}catch(n){if(n!==goog.iter.StopIteration)throw n}return!1},goog.iter.every=function(e,o,t){e=goog.iter.toIterator(e);try{for(;;)if(!o.call(t,e.next(),void 0,e))return!1}catch(n){if(n!==goog.iter.StopIteration)throw n}return!0},goog.iter.chain=function(e){return goog.iter.chainFromIterable(arguments)},goog.iter.chainFromIterable=function(e){var o=goog.iter.toIterator(e);e=new goog.iter.Iterator;var t=null;return e.next=function(){for(;;){if(null==t){var e=o.next();t=goog.iter.toIterator(e)}try{return t.next()}catch(n){if(n!==goog.iter.StopIteration)throw n;t=null}}},e},goog.iter.dropWhile=function(e,o,t){var n=goog.iter.toIterator(e);e=new goog.iter.Iterator;var r=!0;return e.next=function(){for(;;){var e=n.next();if(!r||!o.call(t,e,void 0,n))return r=!1,e}},e},goog.iter.takeWhile=function(e,o,t){var n=goog.iter.toIterator(e);return e=new goog.iter.Iterator,e.next=function(){var e=n.next();if(o.call(t,e,void 0,n))return e;throw goog.iter.StopIteration},e},goog.iter.toArray=function(e){if(goog.isArrayLike(e))return goog.array.toArray(e);e=goog.iter.toIterator(e);var o=[];return goog.iter.forEach(e,function(e){o.push(e)}),o},goog.iter.equals=function(e,o,t){e=goog.iter.zipLongest({},e,o);var n=t||goog.array.defaultCompareEquality;return goog.iter.every(e,function(e){return n(e[0],e[1])})},goog.iter.nextOrValue=function(e,o){try{return goog.iter.toIterator(e).next()}catch(t){if(t!=goog.iter.StopIteration)throw t;return o}},goog.iter.product=function(e){if(goog.array.some(arguments,function(e){return!e.length})||!arguments.length)return new goog.iter.Iterator;var o=new goog.iter.Iterator,t=arguments,n=goog.array.repeat(0,t.length);return o.next=function(){if(n){for(var e=goog.array.map(n,function(e,o){return t[o][e]}),o=n.length-1;o>=0;o--){if(goog.asserts.assert(n),n[o]=0);var t=goog.iter.toIterator(e),n=new goog.iter.Iterator,r=o;return n.next=function(){if(0=0);for(var t=goog.iter.toIterator(e);0=0),e=goog.iter.consume(e,o),goog.isNumber(t)&&(goog.asserts.assert(goog.math.isInt(t)&&t>=o),e=goog.iter.limit(e,t-o)),e},goog.iter.hasDuplicates_=function(e){var o=[];return goog.array.removeDuplicates(e,o),e.length!=o.length},goog.iter.permutations=function(e,o){var t=goog.iter.toArray(e),n=goog.isNumber(o)?o:t.length,t=goog.array.repeat(t,n),t=goog.iter.product.apply(void 0,t);return goog.iter.filter(t,function(e){return!goog.iter.hasDuplicates_(e)})},goog.iter.combinations=function(e,o){function t(e){return n[e]}var n=goog.iter.toArray(e),r=goog.iter.range(n.length),r=goog.iter.permutations(r,o),i=goog.iter.filter(r,function(e){return goog.array.isSorted(e)}),r=new goog.iter.Iterator;return r.next=function(){return goog.array.map(i.next(),t)},r},goog.iter.combinationsWithReplacement=function(e,o){function t(e){return n[e]}var n=goog.iter.toArray(e),r=goog.array.range(n.length),r=goog.array.repeat(r,o),r=goog.iter.product.apply(void 0,r),i=goog.iter.filter(r,function(e){return goog.array.isSorted(e)}),r=new goog.iter.Iterator;return r.next=function(){return goog.array.map(i.next(),t)},r},goog.dom.TagWalkType={START_TAG:1,OTHER:0,END_TAG:-1},goog.dom.TagIterator=function(e,o,t,n,r){this.reversed=!!o,this.node=null,this.tagType=goog.dom.TagWalkType.OTHER,this.started_=!1,this.constrained=!t,e&&this.setPosition(e,n),this.depth=void 0!=r?r:this.tagType||0,this.reversed&&(this.depth*=-1)},goog.inherits(goog.dom.TagIterator,goog.iter.Iterator),goog.dom.TagIterator.prototype.setPosition=function(e,o,t){(this.node=e)&&(goog.isNumber(o)?this.tagType=o:this.tagType=this.node.nodeType!=goog.dom.NodeType.ELEMENT?goog.dom.TagWalkType.OTHER:this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG),goog.isNumber(t)&&(this.depth=t)},goog.dom.TagIterator.prototype.copyFrom=function(e){this.node=e.node,this.tagType=e.tagType,this.depth=e.depth,this.reversed=e.reversed,this.constrained=e.constrained},goog.dom.TagIterator.prototype.clone=function(){return new goog.dom.TagIterator(this.node,this.reversed,!this.constrained,this.tagType,this.depth)},goog.dom.TagIterator.prototype.skipTag=function(){var e=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;this.tagType==e&&(this.tagType=-1*e,this.depth+=this.tagType*(this.reversed?-1:1))},goog.dom.TagIterator.prototype.restartTag=function(){var e=this.reversed?goog.dom.TagWalkType.START_TAG:goog.dom.TagWalkType.END_TAG;this.tagType==e&&(this.tagType=-1*e,this.depth+=this.tagType*(this.reversed?-1:1))},goog.dom.TagIterator.prototype.next=function(){var e;if(this.started_){if(!this.node||this.constrained&&0==this.depth)throw goog.iter.StopIteration;e=this.node;var o=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(this.tagType==o){var t=this.reversed?e.lastChild:e.firstChild;t?this.setPosition(t):this.setPosition(e,-1*o)}else(t=this.reversed?e.previousSibling:e.nextSibling)?this.setPosition(t):this.setPosition(e.parentNode,-1*o);this.depth+=this.tagType*(this.reversed?-1:1)}else this.started_=!0;if(e=this.node,!this.node)throw goog.iter.StopIteration;return e},goog.dom.TagIterator.prototype.isStarted=function(){return this.started_},goog.dom.TagIterator.prototype.isStartTag=function(){return this.tagType==goog.dom.TagWalkType.START_TAG},goog.dom.TagIterator.prototype.isEndTag=function(){return this.tagType==goog.dom.TagWalkType.END_TAG},goog.dom.TagIterator.prototype.isNonElement=function(){return this.tagType==goog.dom.TagWalkType.OTHER},goog.dom.TagIterator.prototype.equals=function(e){return e.node==this.node&&(!this.node||e.tagType==this.tagType)},goog.dom.TagIterator.prototype.splice=function(e){var o=this.node;this.restartTag(),this.reversed=!this.reversed,goog.dom.TagIterator.prototype.next.call(this),this.reversed=!this.reversed;for(var t=goog.isArrayLike(arguments[0])?arguments[0]:arguments,n=t.length-1;n>=0;n--)goog.dom.insertSiblingAfter(t[n],o);goog.dom.removeNode(o)},goog.dom.NodeIterator=function(e,o,t,n){goog.dom.TagIterator.call(this,e,o,t,null,n)},goog.inherits(goog.dom.NodeIterator,goog.dom.TagIterator),goog.dom.NodeIterator.prototype.next=function(){do goog.dom.NodeIterator.superClass_.next.call(this);while(this.isEndTag());return this.node},goog.ui.PaletteRenderer=function(){goog.ui.ControlRenderer.call(this)},goog.inherits(goog.ui.PaletteRenderer,goog.ui.ControlRenderer),goog.addSingletonGetter(goog.ui.PaletteRenderer),goog.ui.PaletteRenderer.cellId_=0,goog.ui.PaletteRenderer.CSS_CLASS="goog-palette",goog.ui.PaletteRenderer.prototype.createDom=function(e){var o=this.getClassNames(e);return e=e.getDomHelper().createDom("DIV",o?o.join(" "):null,this.createGrid(e.getContent(),e.getSize(),e.getDomHelper())),goog.a11y.aria.setRole(e,goog.a11y.aria.Role.GRID),e},goog.ui.PaletteRenderer.prototype.createGrid=function(e,o,t){for(var n=[],r=0,i=0;rthis.highlightedIndex_?this.getSelectedIndex():this.highlightedIndex_;switch(e.keyCode){case goog.events.KeyCodes.LEFT:return(-1==n||0==n)&&(n=o),this.setHighlightedIndex(n-1),e.preventDefault(),!0;case goog.events.KeyCodes.RIGHT:return n==o-1&&(n=-1),this.setHighlightedIndex(n+1),e.preventDefault(),!0;case goog.events.KeyCodes.UP:if(-1==n&&(n=o+t-1),n>=t)return this.setHighlightedIndex(n-t),e.preventDefault(),!0;break;case goog.events.KeyCodes.DOWN:if(-1==n&&(n=-t),o-t>n)return this.setHighlightedIndex(n+t),e.preventDefault(),!0}return!1},goog.ui.Palette.prototype.handleSelectionChange=function(e){},goog.ui.Palette.prototype.getSize=function(){return this.size_},goog.ui.Palette.prototype.setSize=function(e,o){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.size_=goog.isNumber(e)?new goog.math.Size(e,o):e,this.adjustSize_()},goog.ui.Palette.prototype.getHighlightedIndex=function(){return this.highlightedIndex_},goog.ui.Palette.prototype.getHighlightedItem=function(){var e=this.getContent();return e&&e[this.highlightedIndex_]},goog.ui.Palette.prototype.getHighlightedCellElement_=function(){return this.getRenderer().getCellForItem(this.getHighlightedItem())},goog.ui.Palette.prototype.setHighlightedIndex=function(e){e!=this.highlightedIndex_&&(this.highlightIndex_(this.highlightedIndex_,!1),this.lastHighlightedIndex_=this.highlightedIndex_,this.highlightedIndex_=e,this.highlightIndex_(e,!0),this.dispatchEvent(goog.ui.Palette.EventType.AFTER_HIGHLIGHT))},goog.ui.Palette.prototype.setHighlightedItem=function(e){var o=this.getContent();this.setHighlightedIndex(o&&e?goog.array.indexOf(o,e):-1)},goog.ui.Palette.prototype.getSelectedIndex=function(){return this.selectionModel_?this.selectionModel_.getSelectedIndex():-1},goog.ui.Palette.prototype.getSelectedItem=function(){return this.selectionModel_?this.selectionModel_.getSelectedItem():null},goog.ui.Palette.prototype.setSelectedIndex=function(e){this.selectionModel_&&this.selectionModel_.setSelectedIndex(e)},goog.ui.Palette.prototype.setSelectedItem=function(e){this.selectionModel_&&this.selectionModel_.setSelectedItem(e)},goog.ui.Palette.prototype.highlightIndex_=function(e,o){if(this.getElement()){var t=this.getContent();if(t&&e>=0&&en;n++)o.push(e[n]);return o}return goog.object.getValues(e)},goog.structs.getKeys=function(e){if(e.getKeys&&"function"==typeof e.getKeys)return e.getKeys();if(!e.getValues||"function"!=typeof e.getValues){if(goog.isArrayLike(e)||goog.isString(e)){var o=[];e=e.length;for(var t=0;e>t;t++)o.push(t);return o}return goog.object.getKeys(e)}},goog.structs.contains=function(e,o){return e.contains&&"function"==typeof e.contains?e.contains(o):e.containsValue&&"function"==typeof e.containsValue?e.containsValue(o):goog.isArrayLike(e)||goog.isString(e)?goog.array.contains(e,o):goog.object.containsValue(e,o)},goog.structs.isEmpty=function(e){return e.isEmpty&&"function"==typeof e.isEmpty?e.isEmpty():goog.isArrayLike(e)||goog.isString(e)?goog.array.isEmpty(e):goog.object.isEmpty(e)},goog.structs.clear=function(e){e.clear&&"function"==typeof e.clear?e.clear():goog.isArrayLike(e)?goog.array.clear(e):goog.object.clear(e)},goog.structs.forEach=function(e,o,t){if(e.forEach&&"function"==typeof e.forEach)e.forEach(o,t);else if(goog.isArrayLike(e)||goog.isString(e))goog.array.forEach(e,o,t);else for(var n=goog.structs.getKeys(e),r=goog.structs.getValues(e),i=r.length,s=0;i>s;s++)o.call(t,r[s],n&&n[s],e)},goog.structs.filter=function(e,o,t){if("function"==typeof e.filter)return e.filter(o,t);if(goog.isArrayLike(e)||goog.isString(e))return goog.array.filter(e,o,t);var n,r=goog.structs.getKeys(e),i=goog.structs.getValues(e),s=i.length;if(r){n={};for(var l=0;s>l;l++)o.call(t,i[l],r[l],e)&&(n[r[l]]=i[l])}else for(n=[],l=0;s>l;l++)o.call(t,i[l],void 0,e)&&n.push(i[l]);return n},goog.structs.map=function(e,o,t){if("function"==typeof e.map)return e.map(o,t);if(goog.isArrayLike(e)||goog.isString(e))return goog.array.map(e,o,t);var n,r=goog.structs.getKeys(e),i=goog.structs.getValues(e),s=i.length;if(r){n={};for(var l=0;s>l;l++)n[r[l]]=o.call(t,i[l],r[l],e)}else for(n=[],l=0;s>l;l++)n[l]=o.call(t,i[l],void 0,e);return n},goog.structs.some=function(e,o,t){if("function"==typeof e.some)return e.some(o,t);if(goog.isArrayLike(e)||goog.isString(e))return goog.array.some(e,o,t);for(var n=goog.structs.getKeys(e),r=goog.structs.getValues(e),i=r.length,s=0;i>s;s++)if(o.call(t,r[s],n&&n[s],e))return!0;return!1},goog.structs.every=function(e,o,t){if("function"==typeof e.every)return e.every(o,t);if(goog.isArrayLike(e)||goog.isString(e))return goog.array.every(e,o,t);for(var n=goog.structs.getKeys(e),r=goog.structs.getValues(e),i=r.length,s=0;i>s;s++)if(!o.call(t,r[s],n&&n[s],e))return!1;return!0},goog.structs.Collection=function(){},goog.structs.Map=function(e,o){this.map_={},this.keys_=[],this.version_=this.count_=0;var t=arguments.length;if(t>1){if(t%2)throw Error("Uneven number of arguments");for(var n=0;t>n;n+=2)this.set(arguments[n],arguments[n+1])}else e&&this.addAll(e)},goog.structs.Map.prototype.getCount=function(){return this.count_},goog.structs.Map.prototype.getValues=function(){this.cleanupKeysArray_();for(var e=[],o=0;o2*this.count_&&this.cleanupKeysArray_(),!0):!1},goog.structs.Map.prototype.cleanupKeysArray_=function(){if(this.count_!=this.keys_.length){for(var e=0,o=0;e=n.keys_.length)throw goog.iter.StopIteration; var r=n.keys_[o++];return e?r:n.map_[r]},r},goog.structs.Map.hasKey_=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},goog.structs.Set=function(e){this.map_=new goog.structs.Map,e&&this.addAll(e)},goog.structs.Set.getKey_=function(e){var o=typeof e;return"object"==o&&e||"function"==o?"o"+goog.getUid(e):o.substr(0,1)+e},goog.structs.Set.prototype.getCount=function(){return this.map_.getCount()},goog.structs.Set.prototype.add=function(e){this.map_.set(goog.structs.Set.getKey_(e),e)},goog.structs.Set.prototype.addAll=function(e){e=goog.structs.getValues(e);for(var o=e.length,t=0;o>t;t++)this.add(e[t])},goog.structs.Set.prototype.removeAll=function(e){e=goog.structs.getValues(e);for(var o=e.length,t=0;o>t;t++)this.remove(e[t])},goog.structs.Set.prototype.remove=function(e){return this.map_.remove(goog.structs.Set.getKey_(e))},goog.structs.Set.prototype.clear=function(){this.map_.clear()},goog.structs.Set.prototype.isEmpty=function(){return this.map_.isEmpty()},goog.structs.Set.prototype.contains=function(e){return this.map_.containsKey(goog.structs.Set.getKey_(e))},goog.structs.Set.prototype.containsAll=function(e){return goog.structs.every(e,this.contains,this)},goog.structs.Set.prototype.intersection=function(e){var o=new goog.structs.Set;e=goog.structs.getValues(e);for(var t=0;to?!1:(!(e instanceof goog.structs.Set)&&o>5&&(e=new goog.structs.Set(e)),goog.structs.every(this,function(o){return goog.structs.contains(e,o)}))},goog.structs.Set.prototype.__iterator__=function(e){return this.map_.__iterator__(!1)},goog.debug.LOGGING_ENABLED=goog.DEBUG,goog.debug.FORCE_SLOPPY_STACKS=!1,goog.debug.catchErrors=function(e,o,t){t=t||goog.global;var n=t.onerror,r=!!o;goog.userAgent.WEBKIT&&!goog.userAgent.isVersionOrHigher("535.3")&&(r=!r),t.onerror=function(o,t,i,s,l){return n&&n(o,t,i,s,l),e({message:o,fileName:t,line:i,col:s,error:l}),r}},goog.debug.expose=function(e,o){if("undefined"==typeof e)return"undefined";if(null==e)return"NULL";var t,n=[];for(t in e)if(o||!goog.isFunction(e[t])){var r=t+" = ";try{r+=e[t]}catch(i){r+="*** "+i+" ***"}n.push(r)}return n.join("\n")},goog.debug.deepExpose=function(e,o){var t=[],n=function(e,r,i){var s=r+" ";i=new goog.structs.Set(i);try{if(goog.isDef(e))if(goog.isNull(e))t.push("NULL");else if(goog.isString(e))t.push('"'+e.replace(/\n/g,"\n"+r)+'"');else if(goog.isFunction(e))t.push(String(e).replace(/\n/g,"\n"+r));else if(goog.isObject(e))if(i.contains(e))t.push("*** reference loop detected ***");else{i.add(e),t.push("{");for(var l in e)(o||!goog.isFunction(e[l]))&&(t.push("\n"),t.push(s),t.push(l+" = "),n(e[l],s,i));t.push("\n"+r+"}")}else t.push(e);else t.push("undefined")}catch(g){t.push("*** "+g+" ***")}};return n(e,"",new goog.structs.Set),t.join("")},goog.debug.exposeArray=function(e){for(var o=[],t=0;t [end]\n\nJS stack traversal:\n"+goog.debug.getStacktrace(o)+"-> "))}catch(r){return goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces("Exception trying to expose exception! You win, we lose. "+r)}},goog.debug.createViewSourceUrl_=function(e){return goog.isDefAndNotNull(e)||(e=""),/^https?:\/\//i.test(e)?(e=goog.html.SafeUrl.sanitize(e),goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("view-source scheme plus HTTP/HTTPS URL"),"view-source:"+goog.html.SafeUrl.unwrap(e))):goog.html.SafeUrl.fromConstant(goog.string.Const.from("sanitizedviewsrc"))},goog.debug.normalizeErrorObject=function(e){var o=goog.getObjectByName("window.location.href");if(goog.isString(e))return{message:e,name:"Unknown error",lineNumber:"Not available",fileName:o,stack:"Not available"};var t,n,r=!1;try{t=e.lineNumber||e.line||"Not available"}catch(i){t="Not available",r=!0}try{n=e.fileName||e.filename||e.sourceURL||goog.global.$googDebugFname||o}catch(i){n="Not available",r=!0}return!r&&e.lineNumber&&e.fileName&&e.stack&&e.message&&e.name?e:{message:e.message||"Not available",name:e.name||"UnknownError",lineNumber:t,fileName:n,stack:e.stack||"Not available"}},goog.debug.enhanceError=function(e,o){var t;if(e instanceof Error?t=e:(t=Error(e),Error.captureStackTrace&&Error.captureStackTrace(t,goog.debug.enhanceError)),t.stack||(t.stack=goog.debug.getStacktrace(goog.debug.enhanceError)),o){for(var n=0;t["message"+n];)++n;t["message"+n]=String(o)}return t},goog.debug.getStacktraceSimple=function(e){if(!goog.debug.FORCE_SLOPPY_STACKS){var o=goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);if(o)return o}for(var o=[],t=arguments.callee.caller,n=0;t&&(!e||e>n);){o.push(goog.debug.getFunctionName(t)),o.push("()\n");try{t=t.caller}catch(r){o.push("[exception trying to get caller]\n");break}if(n++,n>=goog.debug.MAX_STACK_DEPTH){o.push("[...long stack...]");break}}return e&&n>=e?o.push("[...reached max depth limit...]"):o.push("[end]"),o.join("")},goog.debug.MAX_STACK_DEPTH=50,goog.debug.getNativeStackTrace_=function(e){var o=Error();if(Error.captureStackTrace)return Error.captureStackTrace(o,e),String(o.stack);try{throw o}catch(t){o=t}return(e=o.stack)?String(e):null},goog.debug.getStacktrace=function(e){var o;return goog.debug.FORCE_SLOPPY_STACKS||(o=goog.debug.getNativeStackTrace_(e||goog.debug.getStacktrace)),o||(o=goog.debug.getStacktraceHelper_(e||arguments.callee.caller,[])),o},goog.debug.getStacktraceHelper_=function(e,o){var t=[];if(goog.array.contains(o,e))t.push("[...circular reference...]");else if(e&&o.length0&&t.push(", ");var i;switch(i=n[r],typeof i){case"object":i=i?"object":"null";break;case"string":break;case"number":i=String(i);break;case"boolean":i=i?"true":"false";break;case"function":i=(i=goog.debug.getFunctionName(i))?i:"[fn]";break;default:i=typeof i}40=this.getEffectiveLevel().value},goog.debug.Logger.prototype.log=function(e,o,t){goog.debug.LOGGING_ENABLED&&this.isLoggable(e)&&(goog.isFunction(o)&&(o=o()),this.doLogRecord_(this.getLogRecord(e,o,t)))},goog.debug.Logger.prototype.getLogRecord=function(e,o,t){return e=goog.debug.LogBuffer.isBufferingEnabled()?goog.debug.LogBuffer.getInstance().addRecord(e,o,this.name_):new goog.debug.LogRecord(e,String(o),this.name_),t&&e.setException(t),e},goog.debug.Logger.prototype.shout=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.SHOUT,e,o)},goog.debug.Logger.prototype.severe=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.SEVERE,e,o)},goog.debug.Logger.prototype.warning=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.WARNING,e,o)},goog.debug.Logger.prototype.info=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.INFO,e,o)},goog.debug.Logger.prototype.config=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.CONFIG,e,o)},goog.debug.Logger.prototype.fine=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINE,e,o)},goog.debug.Logger.prototype.finer=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINER,e,o)},goog.debug.Logger.prototype.finest=function(e,o){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINEST,e,o)},goog.debug.Logger.prototype.logRecord=function(e){goog.debug.LOGGING_ENABLED&&this.isLoggable(e.getLevel())&&this.doLogRecord_(e)},goog.debug.Logger.prototype.doLogRecord_=function(e){if(goog.debug.Logger.logToProfilers("log:"+e.getMessage()),goog.debug.Logger.ENABLE_HIERARCHY)for(var o=this;o;)o.callPublish_(e),o=o.getParent();else for(var t,o=0;t=goog.debug.Logger.rootHandlers_[o++];)t(e)},goog.debug.Logger.prototype.callPublish_=function(e){if(this.handlers_)for(var o,t=0;o=this.handlers_[t];t++)o(e)},goog.debug.Logger.prototype.setParent_=function(e){this.parent_=e},goog.debug.Logger.prototype.addChild_=function(e,o){this.getChildren()[e]=o},goog.debug.LogManager={},goog.debug.LogManager.loggers_={},goog.debug.LogManager.rootLogger_=null,goog.debug.LogManager.initialize=function(){goog.debug.LogManager.rootLogger_||(goog.debug.LogManager.rootLogger_=new goog.debug.Logger(goog.debug.Logger.ROOT_LOGGER_NAME),goog.debug.LogManager.loggers_[goog.debug.Logger.ROOT_LOGGER_NAME]=goog.debug.LogManager.rootLogger_,goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG))},goog.debug.LogManager.getLoggers=function(){return goog.debug.LogManager.loggers_},goog.debug.LogManager.getRoot=function(){return goog.debug.LogManager.initialize(),goog.debug.LogManager.rootLogger_},goog.debug.LogManager.getLogger=function(e){return goog.debug.LogManager.initialize(),goog.debug.LogManager.loggers_[e]||goog.debug.LogManager.createLogger_(e)},goog.debug.LogManager.createFunctionForCatchErrors=function(e){return function(o){(e||goog.debug.LogManager.getRoot()).severe("Error: "+o.message+" ("+o.fileName+" @ Line: "+o.line+")")}},goog.debug.LogManager.createLogger_=function(e){var o=new goog.debug.Logger(e);if(goog.debug.Logger.ENABLE_HIERARCHY){var t=e.lastIndexOf("."),n=e.substr(0,t),t=e.substr(t+1),n=goog.debug.LogManager.getLogger(n);n.addChild_(t,o),o.setParent_(n)}return goog.debug.LogManager.loggers_[e]=o},goog.log={},goog.log.ENABLED=goog.debug.LOGGING_ENABLED,goog.log.ROOT_LOGGER_NAME=goog.debug.Logger.ROOT_LOGGER_NAME,goog.log.Logger=goog.debug.Logger,goog.log.Level=goog.debug.Logger.Level,goog.log.LogRecord=goog.debug.LogRecord,goog.log.getLogger=function(e,o){if(goog.log.ENABLED){var t=goog.debug.LogManager.getLogger(e);return o&&t&&t.setLevel(o),t}return null},goog.log.addHandler=function(e,o){goog.log.ENABLED&&e&&e.addHandler(o)},goog.log.removeHandler=function(e,o){return goog.log.ENABLED&&e?e.removeHandler(o):!1},goog.log.log=function(e,o,t,n){goog.log.ENABLED&&e&&e.log(o,t,n)},goog.log.error=function(e,o,t){goog.log.ENABLED&&e&&e.severe(o,t)},goog.log.warning=function(e,o,t){goog.log.ENABLED&&e&&e.warning(o,t)},goog.log.info=function(e,o,t){goog.log.ENABLED&&e&&e.info(o,t)},goog.log.fine=function(e,o,t){goog.log.ENABLED&&e&&e.fine(o,t)},goog.string.StringBuffer=function(e,o){null!=e&&this.append.apply(this,arguments)},goog.string.StringBuffer.prototype.buffer_="",goog.string.StringBuffer.prototype.set=function(e){this.buffer_=""+e},goog.string.StringBuffer.prototype.append=function(e,o,t){if(this.buffer_+=String(e),null!=o)for(var n=1;n=o;o++){var t=this.getChildAt(o-1).getElement();goog.asserts.assert(t,"The child element cannot be null"),goog.a11y.aria.setState(t,"setsize",e),goog.a11y.aria.setState(t,"posinset",o)}}},goog.ui.tree.BaseNode.prototype.createDom=function(){var e=this.getDomHelper().safeHtmlToNode(this.toSafeHtml());this.setElementInternal(e)},goog.ui.tree.BaseNode.prototype.enterDocument=function(){goog.ui.tree.BaseNode.superClass_.enterDocument.call(this),goog.ui.tree.BaseNode.allNodes[this.getId()]=this,this.initAccessibility()},goog.ui.tree.BaseNode.prototype.exitDocument=function(){goog.ui.tree.BaseNode.superClass_.exitDocument.call(this),delete goog.ui.tree.BaseNode.allNodes[this.getId()]},goog.ui.tree.BaseNode.prototype.addChildAt=function(e,o,t){goog.asserts.assert(!e.getParent()),goog.asserts.assertInstanceof(e,goog.ui.tree.BaseNode),t=this.getChildAt(o-1);var n=this.getChildAt(o);if(goog.ui.tree.BaseNode.superClass_.addChildAt.call(this,e,o),e.previousSibling_=t,e.nextSibling_=n,t?t.nextSibling_=e:this.firstChild_=e,n?n.previousSibling_=e:this.lastChild_=e,(o=this.getTree())&&e.setTreeInternal(o),e.setDepth_(this.getDepth()+1),this.getElement()&&(this.updateExpandIcon(),this.getExpanded())){o=this.getChildrenElement(),e.getElement()||e.createDom();var r=e.getElement(),i=n&&n.getElement();o.insertBefore(r,i),this.isInDocument()&&e.enterDocument(),n||(t?t.updateExpandIcon():(goog.style.setElementShown(o,!0),this.setExpanded(this.getExpanded())))}},goog.ui.tree.BaseNode.prototype.add=function(e,o){return goog.asserts.assert(!o||o.getParent()==this,"Can only add nodes before siblings"),e.getParent()&&e.getParent().removeChild(e),this.addChildAt(e,o?this.indexOfChild(o):this.getChildCount()),e},goog.ui.tree.BaseNode.prototype.removeChild=function(e,o){var t=this.getTree(),n=t?t.getSelectedItem():null;if((n==e||e.contains(n))&&(t.hasFocus()?(this.select(),goog.Timer.callOnce(this.onTimeoutSelect_,10,this)):this.select()),goog.ui.tree.BaseNode.superClass_.removeChild.call(this,e),this.lastChild_==e&&(this.lastChild_=e.previousSibling_),this.firstChild_==e&&(this.firstChild_=e.nextSibling_),e.previousSibling_&&(e.previousSibling_.nextSibling_=e.nextSibling_),e.nextSibling_&&(e.nextSibling_.previousSibling_=e.previousSibling_),n=e.isLastSibling(),e.tree=null,e.depth_=-1,t&&(t.removeNode(e),this.isInDocument())){if(t=this.getChildrenElement(),e.isInDocument()){var r=e.getElement();t.removeChild(r),e.exitDocument()}n&&(n=this.getLastChild())&&n.updateExpandIcon(),this.hasChildren()||(t.style.display="none",this.updateExpandIcon(),this.updateIcon_())}return e},goog.ui.tree.BaseNode.prototype.remove=goog.ui.tree.BaseNode.prototype.removeChild,goog.ui.tree.BaseNode.prototype.onTimeoutSelect_=function(){this.select()},goog.ui.tree.BaseNode.prototype.getTree=goog.abstractMethod,goog.ui.tree.BaseNode.prototype.getDepth=function(){var e=this.depth_;return 0>e&&(e=this.computeDepth_(),this.setDepth_(e)),e},goog.ui.tree.BaseNode.prototype.computeDepth_=function(){var e=this.getParent();return e?e.getDepth()+1:0},goog.ui.tree.BaseNode.prototype.setDepth_=function(e){if(e!=this.depth_){this.depth_=e;var o=this.getRowElement();if(o){var t=this.getPixelIndent_()+"px";this.isRightToLeft()?o.style.paddingRight=t:o.style.paddingLeft=t}this.forEachChild(function(o){o.setDepth_(e+1)})}},goog.ui.tree.BaseNode.prototype.contains=function(e){for(;e;){if(e==this)return!0;e=e.getParent()}return!1},goog.ui.tree.BaseNode.EMPTY_CHILDREN_=[],goog.ui.tree.BaseNode.prototype.getChildren=function(){var e=[];return this.forEachChild(function(o){e.push(o)}),e},goog.ui.tree.BaseNode.prototype.getFirstChild=function(){return this.getChildAt(0)},goog.ui.tree.BaseNode.prototype.getLastChild=function(){return this.getChildAt(this.getChildCount()-1)},goog.ui.tree.BaseNode.prototype.getPreviousSibling=function(){return this.previousSibling_},goog.ui.tree.BaseNode.prototype.getNextSibling=function(){return this.nextSibling_},goog.ui.tree.BaseNode.prototype.isLastSibling=function(){return!this.nextSibling_},goog.ui.tree.BaseNode.prototype.isSelected=function(){return this.selected_},goog.ui.tree.BaseNode.prototype.select=function(){var e=this.getTree();e&&e.setSelectedItem(this)},goog.ui.tree.BaseNode.prototype.deselect=goog.nullFunction,goog.ui.tree.BaseNode.prototype.setSelectedInternal=function(e){if(this.selected_!=e){this.selected_=e,this.updateRow();var o=this.getElement();o&&(goog.a11y.aria.setState(o,"selected",e),e&&(e=this.getTree().getElement(),goog.asserts.assert(e,"The DOM element for the tree cannot be null"),goog.a11y.aria.setState(e,"activedescendant",this.getId())))}},goog.ui.tree.BaseNode.prototype.getExpanded=function(){return this.expanded_},goog.ui.tree.BaseNode.prototype.setExpandedInternal=function(e){this.expanded_=e},goog.ui.tree.BaseNode.prototype.setExpanded=function(e){var o=e!=this.expanded_;if(!o||this.dispatchEvent(e?goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND:goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE)){var t;this.expanded_=e,t=this.getTree();var n=this.getElement();if(this.hasChildren()){if(!e&&t&&this.contains(t.getSelectedItem())&&this.select(),n){if((t=this.getChildrenElement())&&(goog.style.setElementShown(t,e),e&&this.isInDocument()&&!t.hasChildNodes())){var r=[];this.forEachChild(function(e){r.push(e.toSafeHtml())}),goog.dom.safe.setInnerHtml(t,goog.html.SafeHtml.concat(r)),this.forEachChild(function(e){e.enterDocument()})}this.updateExpandIcon()}}else(t=this.getChildrenElement())&&goog.style.setElementShown(t,!1);n&&(this.updateIcon_(),goog.a11y.aria.setState(n,"expanded",e)),o&&this.dispatchEvent(e?goog.ui.tree.BaseNode.EventType.EXPAND:goog.ui.tree.BaseNode.EventType.COLLAPSE)}},goog.ui.tree.BaseNode.prototype.toggle=function(){this.setExpanded(!this.getExpanded())},goog.ui.tree.BaseNode.prototype.expand=function(){this.setExpanded(!0)},goog.ui.tree.BaseNode.prototype.collapse=function(){this.setExpanded(!1)},goog.ui.tree.BaseNode.prototype.collapseChildren=function(){this.forEachChild(function(e){e.collapseAll()})},goog.ui.tree.BaseNode.prototype.collapseAll=function(){this.collapseChildren(),this.collapse()},goog.ui.tree.BaseNode.prototype.expandChildren=function(){this.forEachChild(function(e){e.expandAll()})},goog.ui.tree.BaseNode.prototype.expandAll=function(){this.expandChildren(),this.expand()},goog.ui.tree.BaseNode.prototype.reveal=function(){var e=this.getParent();e&&(e.setExpanded(!0),e.reveal())},goog.ui.tree.BaseNode.prototype.setIsUserCollapsible=function(e){(this.isUserCollapsible_=e)||this.expand(),this.getElement()&&this.updateExpandIcon()},goog.ui.tree.BaseNode.prototype.isUserCollapsible=function(){return this.isUserCollapsible_},goog.ui.tree.BaseNode.prototype.toSafeHtml=function(){var e=this.getTree(),o=!e.getShowLines()||e==this.getParent()&&!e.getShowRootLines()?this.config_.cssChildrenNoLines:this.config_.cssChildren,e=this.getExpanded()&&this.hasChildren(),o={"class":o,style:this.getLineStyle()},t=[];return e&&this.forEachChild(function(e){t.push(e.toSafeHtml())}),e=goog.html.SafeHtml.create("div",o,t),goog.html.SafeHtml.create("div",{"class":this.config_.cssItem,id:this.getId()},[this.getRowSafeHtml(),e])},goog.ui.tree.BaseNode.prototype.getPixelIndent_=function(){return Math.max(0,(this.getDepth()-1)*this.config_.indentWidth)},goog.ui.tree.BaseNode.prototype.getRowSafeHtml=function(){var e={};e["padding-"+(this.isRightToLeft()?"right":"left")]=this.getPixelIndent_()+"px";var e={"class":this.getRowClassName(),style:e},o=[this.getExpandIconSafeHtml(),this.getIconSafeHtml(),this.getLabelSafeHtml()];return goog.html.SafeHtml.create("div",e,o)},goog.ui.tree.BaseNode.prototype.getRowClassName=function(){var e;return e=this.isSelected()?" "+this.config_.cssSelectedRow:"",this.config_.cssTreeRow+e},goog.ui.tree.BaseNode.prototype.getLabelSafeHtml=function(){var e=goog.html.SafeHtml.create("span",{"class":this.config_.cssItemLabel,title:this.getToolTip()||null},this.getSafeHtml());return goog.html.SafeHtml.concat(e,goog.html.SafeHtml.create("span",{},this.getAfterLabelSafeHtml()))},goog.ui.tree.BaseNode.prototype.getAfterLabelHtml=function(){return goog.html.SafeHtml.unwrap(this.getAfterLabelSafeHtml())},goog.ui.tree.BaseNode.prototype.getAfterLabelSafeHtml=function(){return this.afterLabelHtml_},goog.ui.tree.BaseNode.prototype.setAfterLabelSafeHtml=function(e){this.afterLabelHtml_=e;var o=this.getAfterLabelElement();o&&goog.dom.safe.setInnerHtml(o,e)},goog.ui.tree.BaseNode.prototype.getIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{style:{display:"inline-block"},"class":this.getCalculatedIconClass()})},goog.ui.tree.BaseNode.prototype.getCalculatedIconClass=goog.abstractMethod,goog.ui.tree.BaseNode.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{type:"expand",style:{display:"inline-block"},"class":this.getExpandIconClass()})},goog.ui.tree.BaseNode.prototype.getExpandIconClass=function(){var e=this.getTree(),o=!e.getShowLines()||e==this.getParent()&&!e.getShowRootLines(),t=this.config_,n=new goog.string.StringBuffer;if(n.append(t.cssTreeIcon," ",t.cssExpandTreeIcon," "),this.hasChildren()){var r=0;switch(e.getShowExpandIcons()&&this.isUserCollapsible_&&(r=this.getExpanded()?2:1),o||(r=this.isLastSibling()?r+4:r+8),r){case 1:n.append(t.cssExpandTreeIconPlus);break;case 2:n.append(t.cssExpandTreeIconMinus);break;case 4:n.append(t.cssExpandTreeIconL);break;case 5:n.append(t.cssExpandTreeIconLPlus);break;case 6:n.append(t.cssExpandTreeIconLMinus);break;case 8:n.append(t.cssExpandTreeIconT);break;case 9:n.append(t.cssExpandTreeIconTPlus);break;case 10:n.append(t.cssExpandTreeIconTMinus);break;default:n.append(t.cssExpandTreeIconBlank)}}else o?n.append(t.cssExpandTreeIconBlank):this.isLastSibling()?n.append(t.cssExpandTreeIconL):n.append(t.cssExpandTreeIconT);return n.toString()},goog.ui.tree.BaseNode.prototype.getLineStyle=function(){var e=this.getExpanded()&&this.hasChildren();return goog.html.SafeStyle.create({"background-position":this.getBackgroundPosition(),display:e?null:"none"})},goog.ui.tree.BaseNode.prototype.getBackgroundPosition=function(){return(this.isLastSibling()?"-100":(this.getDepth()-1)*this.config_.indentWidth)+"px 0"},goog.ui.tree.BaseNode.prototype.getElement=function(){var e=goog.ui.tree.BaseNode.superClass_.getElement.call(this);return e||(e=this.getDomHelper().getElement(this.getId()),this.setElementInternal(e)),e},goog.ui.tree.BaseNode.prototype.getRowElement=function(){var e=this.getElement();return e?e.firstChild:null},goog.ui.tree.BaseNode.prototype.getExpandIconElement=function(){var e=this.getRowElement();return e?e.firstChild:null},goog.ui.tree.BaseNode.prototype.getIconElement=function(){var e=this.getRowElement();return e?e.childNodes[1]:null},goog.ui.tree.BaseNode.prototype.getLabelElement=function(){var e=this.getRowElement(); return e&&e.lastChild?e.lastChild.previousSibling:null},goog.ui.tree.BaseNode.prototype.getAfterLabelElement=function(){var e=this.getRowElement();return e?e.lastChild:null},goog.ui.tree.BaseNode.prototype.getChildrenElement=function(){var e=this.getElement();return e?e.lastChild:null},goog.ui.tree.BaseNode.prototype.setIconClass=function(e){this.iconClass_=e,this.isInDocument()&&this.updateIcon_()},goog.ui.tree.BaseNode.prototype.getIconClass=function(){return this.iconClass_},goog.ui.tree.BaseNode.prototype.setExpandedIconClass=function(e){this.expandedIconClass_=e,this.isInDocument()&&this.updateIcon_()},goog.ui.tree.BaseNode.prototype.getExpandedIconClass=function(){return this.expandedIconClass_},goog.ui.tree.BaseNode.prototype.setText=function(e){this.setSafeHtml(goog.html.SafeHtml.htmlEscape(e))},goog.ui.tree.BaseNode.prototype.getText=function(){return goog.string.unescapeEntities(goog.html.SafeHtml.unwrap(this.html_))},goog.ui.tree.BaseNode.prototype.setSafeHtml=function(e){this.html_=e;var o=this.getLabelElement();o&&goog.dom.safe.setInnerHtml(o,e),(e=this.getTree())&&e.setNode(this)},goog.ui.tree.BaseNode.prototype.getHtml=function(){return goog.html.SafeHtml.unwrap(this.getSafeHtml())},goog.ui.tree.BaseNode.prototype.getSafeHtml=function(){return this.html_},goog.ui.tree.BaseNode.prototype.setToolTip=function(e){this.toolTip_=e;var o=this.getLabelElement();o&&(o.title=e)},goog.ui.tree.BaseNode.prototype.getToolTip=function(){return this.toolTip_},goog.ui.tree.BaseNode.prototype.updateRow=function(){var e=this.getRowElement();e&&(e.className=this.getRowClassName())},goog.ui.tree.BaseNode.prototype.updateExpandIcon=function(){var e=this.getExpandIconElement();e&&(e.className=this.getExpandIconClass()),(e=this.getChildrenElement())&&(e.style.backgroundPosition=this.getBackgroundPosition())},goog.ui.tree.BaseNode.prototype.updateIcon_=function(){this.getIconElement().className=this.getCalculatedIconClass()},goog.ui.tree.BaseNode.prototype.onMouseDown=function(e){"expand"==e.target.getAttribute("type")&&this.hasChildren()?this.isUserCollapsible_&&this.toggle():(this.select(),this.updateRow())},goog.ui.tree.BaseNode.prototype.onClick_=goog.events.Event.preventDefault,goog.ui.tree.BaseNode.prototype.onDoubleClick_=function(e){"expand"==e.target.getAttribute("type")&&this.hasChildren()||this.isUserCollapsible_&&this.toggle()},goog.ui.tree.BaseNode.prototype.onKeyDown=function(e){var o=!0;switch(e.keyCode){case goog.events.KeyCodes.RIGHT:if(e.altKey)break;this.hasChildren()&&(this.getExpanded()?this.getFirstChild().select():this.setExpanded(!0));break;case goog.events.KeyCodes.LEFT:if(e.altKey)break;if(this.hasChildren()&&this.getExpanded()&&this.isUserCollapsible_)this.setExpanded(!1);else{var t=this.getParent(),n=this.getTree();t&&(n.getShowRootNode()||t!=n)&&t.select()}break;case goog.events.KeyCodes.DOWN:(t=this.getNextShownNode())&&t.select();break;case goog.events.KeyCodes.UP:(t=this.getPreviousShownNode())&&t.select();break;default:o=!1}return o&&(e.preventDefault(),(n=this.getTree())&&n.clearTypeAhead()),o},goog.ui.tree.BaseNode.prototype.getLastShownDescendant=function(){return this.getExpanded()&&this.hasChildren()?this.getLastChild().getLastShownDescendant():this},goog.ui.tree.BaseNode.prototype.getNextShownNode=function(){if(this.hasChildren()&&this.getExpanded())return this.getFirstChild();for(var e,o=this;o!=this.getTree();){if(e=o.getNextSibling(),null!=e)return e;o=o.getParent()}return null},goog.ui.tree.BaseNode.prototype.getPreviousShownNode=function(){var e=this.getPreviousSibling();if(null!=e)return e.getLastShownDescendant();var e=this.getParent(),o=this.getTree();return!o.getShowRootNode()&&e==o||this==o?null:e},goog.ui.tree.BaseNode.prototype.getClientData=goog.ui.tree.BaseNode.prototype.getModel,goog.ui.tree.BaseNode.prototype.setClientData=goog.ui.tree.BaseNode.prototype.setModel,goog.ui.tree.BaseNode.prototype.getConfig=function(){return this.config_},goog.ui.tree.BaseNode.prototype.setTreeInternal=function(e){this.tree!=e&&(this.tree=e,e.setNode(this),this.forEachChild(function(o){o.setTreeInternal(e)}))},goog.ui.tree.BaseNode.defaultConfig={indentWidth:19,cssRoot:"goog-tree-root goog-tree-item",cssHideRoot:"goog-tree-hide-root",cssItem:"goog-tree-item",cssChildren:"goog-tree-children",cssChildrenNoLines:"goog-tree-children-nolines",cssTreeRow:"goog-tree-row",cssItemLabel:"goog-tree-item-label",cssTreeIcon:"goog-tree-icon",cssExpandTreeIcon:"goog-tree-expand-icon",cssExpandTreeIconPlus:"goog-tree-expand-icon-plus",cssExpandTreeIconMinus:"goog-tree-expand-icon-minus",cssExpandTreeIconTPlus:"goog-tree-expand-icon-tplus",cssExpandTreeIconTMinus:"goog-tree-expand-icon-tminus",cssExpandTreeIconLPlus:"goog-tree-expand-icon-lplus",cssExpandTreeIconLMinus:"goog-tree-expand-icon-lminus",cssExpandTreeIconT:"goog-tree-expand-icon-t",cssExpandTreeIconL:"goog-tree-expand-icon-l",cssExpandTreeIconBlank:"goog-tree-expand-icon-blank",cssExpandedFolderIcon:"goog-tree-expanded-folder-icon",cssCollapsedFolderIcon:"goog-tree-collapsed-folder-icon",cssFileIcon:"goog-tree-file-icon",cssExpandedRootIcon:"goog-tree-expanded-folder-icon",cssCollapsedRootIcon:"goog-tree-collapsed-folder-icon",cssSelectedRow:"selected"},goog.ui.tree.TreeNode=function(e,o,t){goog.ui.tree.BaseNode.call(this,e,o,t)},goog.inherits(goog.ui.tree.TreeNode,goog.ui.tree.BaseNode),goog.ui.tree.TreeNode.prototype.getTree=function(){if(this.tree)return this.tree;var e=this.getParent();return e&&(e=e.getTree())?(this.setTreeInternal(e),e):null},goog.ui.tree.TreeNode.prototype.getCalculatedIconClass=function(){var e=this.getExpanded(),o=this.getExpandedIconClass();if(e&&o)return o;if(o=this.getIconClass(),!e&&o)return o;if(o=this.getConfig(),this.hasChildren()){if(e&&o.cssExpandedFolderIcon)return o.cssTreeIcon+" "+o.cssExpandedFolderIcon;if(!e&&o.cssCollapsedFolderIcon)return o.cssTreeIcon+" "+o.cssCollapsedFolderIcon}else if(o.cssFileIcon)return o.cssTreeIcon+" "+o.cssFileIcon;return""},goog.structs.Trie=function(e){this.value_=void 0,this.childNodes_={},e&&this.setAll(e)},goog.structs.Trie.prototype.set=function(e,o){this.setOrAdd_(e,o,!1)},goog.structs.Trie.prototype.add=function(e,o){this.setOrAdd_(e,o,!0)},goog.structs.Trie.prototype.setOrAdd_=function(e,o,t){for(var n=this,r=0;r0?(this.buffer_=this.buffer_.substring(0,e),this.jumpToLabel_(this.buffer_)):0==e?this.buffer_="":o=!1;break;case goog.events.KeyCodes.ESC:this.buffer_="",o=!0}return o},goog.ui.tree.TypeAhead.prototype.handleTypeAheadChar=function(e){var o=!1;return e.ctrlKey||e.altKey||(e=String.fromCharCode(e.charCode||e.keyCode).toLowerCase(),goog.string.isUnicodeChar(e)&&(" "!=e||this.buffer_)&&(this.buffer_+=e,o=this.jumpToLabel_(this.buffer_))),o},goog.ui.tree.TypeAhead.prototype.setNodeInMap=function(e){var o=e.getText();if(o&&!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(o))){var o=o.toLowerCase(),t=this.nodeMap_.get(o);t?t.push(e):this.nodeMap_.set(o,[e])}},goog.ui.tree.TypeAhead.prototype.removeNodeFromMap=function(e){var o=e.getText();if(o&&!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(o))){var o=o.toLowerCase(),t=this.nodeMap_.get(o);if(t){for(var n=e.getChildCount(),r=0;n>r;r++)this.removeNodeFromMap(e.getChildAt(r));goog.array.remove(t,e),t.length||this.nodeMap_.remove(o)}}},goog.ui.tree.TypeAhead.prototype.jumpToLabel_=function(e){var o=!1;return(e=this.nodeMap_.getKeys(e))&&e.length&&(this.matchingLabelIndex_=this.matchingNodeIndex_=0,o=this.nodeMap_.get(e[0]),o=this.selectMatchingNode_(o))&&(this.matchingLabels_=e),o},goog.ui.tree.TypeAhead.prototype.jumpTo_=function(e){var o=!1,t=this.matchingLabels_;if(t){var o=null,n=!1;if(this.matchingNodes_){var r=this.matchingNodeIndex_+e;r>=0&&r=0&&rthis.matchingLabelIndex_&&(o=this.nodeMap_.get(t[this.matchingLabelIndex_])),o&&o.length&&n&&(this.matchingNodeIndex_=e==goog.ui.tree.TypeAhead.Offset.UP?o.length-1:0)),(o=this.selectMatchingNode_(o))&&(this.matchingLabels_=t)}return o},goog.ui.tree.TypeAhead.prototype.selectMatchingNode_=function(e){var o;return e&&(this.matchingNodeIndex_Blockly.DRAG_RADIUS&&(Blockly.longStop_(),o.dragMode_=Blockly.DRAG_FREE),e.stopPropagation(),e.preventDefault()}},Blockly.Touch.clearTouchIdentifier=function(){Blockly.Touch.touchIdentifier_=null},Blockly.Touch.shouldHandleEvent=function(e){return!Blockly.Touch.isMouseOrTouchEvent(e)||Blockly.Touch.checkTouchIdentifier(e)},Blockly.Touch.checkTouchIdentifier=function(e){var o=e.changedTouches&&e.changedTouches[0]&&void 0!=e.changedTouches[0].identifier&&null!=e.changedTouches[0].identifier?e.changedTouches[0].identifier:"mouse";return void 0!=Blockly.Touch.touchIdentifier_&&null!=Blockly.Touch.touchIdentifier_?Blockly.Touch.touchIdentifier_==o:"mousedown"==e.type||"touchstart"==e.type?(Blockly.Touch.touchIdentifier_=o,!0):!1},Blockly.Touch.setClientFromTouch=function(e){if(goog.string.startsWith(e.type,"touch")){var o=e.changedTouches[0];e.clientX=o.clientX,e.clientY=o.clientY}},Blockly.Touch.isMouseOrTouchEvent=function(e){return goog.string.startsWith(e.type,"touch")||goog.string.startsWith(e.type,"mouse")},Blockly.Touch.splitEventByTouches=function(e){var o=[];if(e.changedTouches)for(var t=0;tthis.MAX_UNDO&&this.undoStack_.unshift());for(var o,t=0;o=this.listeners_[t];t++)o(e)},Blockly.Workspace.prototype.getBlockById=function(e){return this.blockDB_[e]||null},Blockly.Workspace.WorkspaceDB_=Object.create(null),Blockly.Workspace.getById=function(e){return Blockly.Workspace.WorkspaceDB_[e]||null},Blockly.Workspace.prototype.clear=Blockly.Workspace.prototype.clear,Blockly.Workspace.prototype.clearUndo=Blockly.Workspace.prototype.clearUndo,Blockly.Workspace.prototype.addChangeListener=Blockly.Workspace.prototype.addChangeListener,Blockly.Workspace.prototype.removeChangeListener=Blockly.Workspace.prototype.removeChangeListener,Blockly.Bubble=function(e,o,t,n,r,i){this.workspace_=e,this.content_=o,this.shape_=t,t=Blockly.Bubble.ARROW_ANGLE,this.workspace_.RTL&&(t=-t),this.arrow_radians_=goog.math.toRadians(t),e.getBubbleCanvas().appendChild(this.createDom_(o,!(!r||!i))),this.setAnchorLocation(n),r&&i||(o=this.content_.getBBox(),r=o.width+2*Blockly.Bubble.BORDER_WIDTH,i=o.height+2*Blockly.Bubble.BORDER_WIDTH),this.setBubbleSize(r,i),this.positionBubble_(),this.renderArrow_(),this.rendered_=!0,e.options.readOnly||(Blockly.bindEventWithChecks_(this.bubbleBack_,"mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&Blockly.bindEventWithChecks_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_))},Blockly.Bubble.BORDER_WIDTH=6,Blockly.Bubble.ARROW_THICKNESS=5,Blockly.Bubble.ARROW_ANGLE=20,Blockly.Bubble.ARROW_BEND=4,Blockly.Bubble.ANCHOR_RADIUS=8,Blockly.Bubble.onMouseUpWrapper_=null,Blockly.Bubble.onMouseMoveWrapper_=null,Blockly.Bubble.prototype.resizeCallback_=null,Blockly.Bubble.unbindDragEvents_=function(){Blockly.Bubble.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),Blockly.Bubble.onMouseUpWrapper_=null),Blockly.Bubble.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),Blockly.Bubble.onMouseMoveWrapper_=null)},Blockly.Bubble.bubbleMouseUp_=function(){Blockly.Touch.clearTouchIdentifier(),Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN),Blockly.Bubble.unbindDragEvents_()},Blockly.Bubble.prototype.rendered_=!1,Blockly.Bubble.prototype.anchorXY_=null,Blockly.Bubble.prototype.relativeLeft_=0,Blockly.Bubble.prototype.relativeTop_=0,Blockly.Bubble.prototype.width_=0,Blockly.Bubble.prototype.height_=0,Blockly.Bubble.prototype.autoLayout_=!0,Blockly.Bubble.prototype.createDom_=function(e,o){this.bubbleGroup_=Blockly.createSvgElement("g",{},null);var t={filter:"url(#"+this.workspace_.options.embossFilterId+")"};return-1!=goog.userAgent.getUserAgentString().indexOf("JavaFX")&&(t={}),t=Blockly.createSvgElement("g",t,this.bubbleGroup_),this.bubbleArrow_=Blockly.createSvgElement("path",{},t),this.bubbleBack_=Blockly.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},t),o?(this.resizeGroup_=Blockly.createSvgElement("g",{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),t=2*Blockly.Bubble.BORDER_WIDTH,Blockly.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,t.toString())},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:t/3,y1:t-1,x2:t-1,y2:t/3},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*t/3,y1:t-1,x2:t-1,y2:2*t/3},this.resizeGroup_)):this.resizeGroup_=null,this.bubbleGroup_.appendChild(e),this.bubbleGroup_},Blockly.Bubble.prototype.bubbleMouseDown_=function(e){this.promote_(),Blockly.Bubble.unbindDragEvents_(),Blockly.isRightButton(e)?e.stopPropagation():Blockly.isTargetInput_(e)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.workspace_.startDrag(e,new goog.math.Coordinate(this.workspace_.RTL?-this.relativeLeft_:this.relativeLeft_,this.relativeTop_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.bubbleMouseMove_),Blockly.hideChaff(),e.stopPropagation())},Blockly.Bubble.prototype.bubbleMouseMove_=function(e){this.autoLayout_=!1,e=this.workspace_.moveDrag(e),this.relativeLeft_=this.workspace_.RTL?-e.x:e.x,this.relativeTop_=e.y,this.positionBubble_(),this.renderArrow_()},Blockly.Bubble.prototype.resizeMouseDown_=function(e){this.promote_(),Blockly.Bubble.unbindDragEvents_(),Blockly.isRightButton(e)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.workspace_.startDrag(e,new goog.math.Coordinate(this.workspace_.RTL?-this.width_:this.width_,this.height_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.resizeMouseMove_),Blockly.hideChaff()),e.stopPropagation()},Blockly.Bubble.prototype.resizeMouseMove_=function(e){this.autoLayout_=!1,e=this.workspace_.moveDrag(e),this.setBubbleSize(this.workspace_.RTL?-e.x:e.x,e.y),this.workspace_.RTL&&this.positionBubble_()},Blockly.Bubble.prototype.registerResizeEvent=function(e){this.resizeCallback_=e},Blockly.Bubble.prototype.promote_=function(){this.bubbleGroup_.parentNode.appendChild(this.bubbleGroup_)},Blockly.Bubble.prototype.setAnchorLocation=function(e){this.anchorXY_=e,this.rendered_&&this.positionBubble_()},Blockly.Bubble.prototype.layoutBubble_=function(){var e=-this.width_/4,o=-this.height_-Blockly.BlockSvg.MIN_BLOCK_Y,t=this.workspace_.getMetrics();t.viewWidth/=this.workspace_.scale,t.viewLeft/=this.workspace_.scale;var n=this.anchorXY_.x;this.workspace_.RTL?n-t.viewLeft-e-this.width_t.viewWidth&&(e=n-t.viewLeft-t.viewWidth):n+er&&(s=2*Math.PI-s);var l=s+Math.PI/2;l>2*Math.PI&&(l-=2*Math.PI);var g=Math.sin(l),a=Math.cos(l),c=this.getBubbleSize(),l=(c.width+c.height)/Blockly.Bubble.ARROW_THICKNESS,l=Math.min(l,c.width,c.height)/4,c=1-Blockly.Bubble.ANCHOR_RADIUS/i,n=o+c*n,r=t+c*r,c=o+l*a,u=t+l*g,o=o-l*a,t=t-l*g,g=s+this.arrow_radians_;g>2*Math.PI&&(g-=2*Math.PI),s=Math.sin(g)*i/Blockly.Bubble.ARROW_BEND,i=Math.cos(g)*i/Blockly.Bubble.ARROW_BEND,e.push("M"+c+","+u),e.push("C"+(c+i)+","+(u+s)+" "+n+","+r+" "+n+","+r),e.push("C"+n+","+r+" "+(o+i)+","+(t+s)+" "+o+","+t)}e.push("z"),this.bubbleArrow_.setAttribute("d",e.join(" "))},Blockly.Bubble.prototype.setColour=function(e){this.bubbleBack_.setAttribute("fill",e),this.bubbleArrow_.setAttribute("fill",e)},Blockly.Bubble.prototype.dispose=function(){Blockly.Bubble.unbindDragEvents_(),goog.dom.removeNode(this.bubbleGroup_),this.shape_=this.content_=this.workspace_=this.resizeGroup_=this.bubbleBack_=this.bubbleArrow_=this.bubbleGroup_=null},Blockly.Icon=function(e){this.block_=e},Blockly.Icon.prototype.collapseHidden=!0,Blockly.Icon.prototype.SIZE=17,Blockly.Icon.prototype.bubble_=null,Blockly.Icon.prototype.iconXY_=null,Blockly.Icon.prototype.createIcon=function(){this.iconGroup_||(this.iconGroup_=Blockly.createSvgElement("g",{"class":"blocklyIconGroup"},null),this.block_.isInFlyout&&Blockly.addClass_(this.iconGroup_,"blocklyIconGroupReadonly"),this.drawIcon_(this.iconGroup_),this.block_.getSvgRoot().appendChild(this.iconGroup_),Blockly.bindEventWithChecks_(this.iconGroup_,"mouseup",this,this.iconClick_),this.updateEditable())},Blockly.Icon.prototype.dispose=function(){goog.dom.removeNode(this.iconGroup_),this.iconGroup_=null,this.setVisible(!1),this.block_=null},Blockly.Icon.prototype.updateEditable=function(){},Blockly.Icon.prototype.isVisible=function(){return!!this.bubble_},Blockly.Icon.prototype.iconClick_=function(e){this.block_.workspace.isDragging()||this.block_.isInFlyout||Blockly.isRightButton(e)||this.setVisible(!this.isVisible())},Blockly.Icon.prototype.updateColour=function(){this.isVisible()&&this.bubble_.setColour(this.block_.getColour())},Blockly.Icon.prototype.renderIcon=function(e){if(this.collapseHidden&&this.block_.isCollapsed())return this.iconGroup_.setAttribute("display","none"),e;this.iconGroup_.setAttribute("display","block");var o=this.SIZE;return this.block_.RTL&&(e-=o),this.iconGroup_.setAttribute("transform","translate("+e+",5)"),this.computeIconLocation(),e=this.block_.RTL?e-Blockly.BlockSvg.SEP_SPACE_X:e+(o+Blockly.BlockSvg.SEP_SPACE_X)},Blockly.Icon.prototype.setIconLocation=function(e){this.iconXY_=e,this.isVisible()&&this.bubble_.setAnchorLocation(e)},Blockly.Icon.prototype.computeIconLocation=function(){var e=this.block_.getRelativeToSurfaceXY(),o=Blockly.getRelativeXY_(this.iconGroup_),e=new goog.math.Coordinate(e.x+o.x+this.SIZE/2,e.y+o.y+this.SIZE/2);goog.math.Coordinate.equals(this.getIconLocation(),e)||this.setIconLocation(e)},Blockly.Icon.prototype.getIconLocation=function(){return this.iconXY_},Blockly.Comment=function(e){Blockly.Comment.superClass_.constructor.call(this,e),this.createIcon()},goog.inherits(Blockly.Comment,Blockly.Icon),Blockly.Comment.prototype.text_="",Blockly.Comment.prototype.width_=160,Blockly.Comment.prototype.height_=80,Blockly.Comment.prototype.drawIcon_=function(e){Blockly.createSvgElement("circle",{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},e),Blockly.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405 0.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25 -1.201,0.998 -1.201,1.528 -1.204,2.19z"},e),Blockly.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},e)},Blockly.Comment.prototype.createEditor_=function(){this.foreignObject_=Blockly.createSvgElement("foreignObject",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);var e=document.createElementNS(Blockly.HTML_NS,"body");e.setAttribute("xmlns",Blockly.HTML_NS),e.className="blocklyMinimalBody";var o=document.createElementNS(Blockly.HTML_NS,"textarea");return o.className="blocklyCommentTextarea",o.setAttribute("dir",this.block_.RTL?"RTL":"LTR"),e.appendChild(o),this.textarea_=o,this.foreignObject_.appendChild(e),Blockly.bindEventWithChecks_(o,"mouseup",this,this.textareaFocus_),Blockly.bindEventWithChecks_(o,"wheel",this,function(e){e.stopPropagation()}),Blockly.bindEventWithChecks_(o,"change",this,function(e){this.text_!=o.value&&(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,o.value)),this.text_=o.value)}),setTimeout(function(){o.focus()},0),this.foreignObject_},Blockly.Comment.prototype.updateEditable=function(){this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)),Blockly.Icon.prototype.updateEditable.call(this)},Blockly.Comment.prototype.resizeBubble_=function(){if(this.isVisible()){var e=this.bubble_.getBubbleSize(),o=2*Blockly.Bubble.BORDER_WIDTH;this.foreignObject_.setAttribute("width",e.width-o),this.foreignObject_.setAttribute("height",e.height-o),this.textarea_.style.width=e.width-o-4+"px",this.textarea_.style.height=e.height-o-4+"px"}},Blockly.Comment.prototype.setVisible=function(e){if(e!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"commentOpen",!e,e)),!this.block_.isEditable()&&!this.textarea_||goog.userAgent.IE)Blockly.Warning.prototype.setVisible.call(this,e);else{var o=this.getText(),t=this.getBubbleSize();e?(this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,this.width_,this.height_),this.bubble_.registerResizeEvent(this.resizeBubble_.bind(this)),this.updateColour()):(this.bubble_.dispose(),this.foreignObject_=this.textarea_=this.bubble_=null),this.setText(o),this.setBubbleSize(t.width,t.height)}},Blockly.Comment.prototype.textareaFocus_=function(e){this.bubble_.promote_(),this.textarea_.focus()},Blockly.Comment.prototype.getBubbleSize=function(){return this.isVisible()?this.bubble_.getBubbleSize():{width:this.width_,height:this.height_}},Blockly.Comment.prototype.setBubbleSize=function(e,o){this.textarea_?this.bubble_.setBubbleSize(e,o):(this.width_=e,this.height_=o)},Blockly.Comment.prototype.getText=function(){return this.textarea_?this.textarea_.value:this.text_},Blockly.Comment.prototype.setText=function(e){this.text_!=e&&(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,e)),this.text_=e),this.textarea_&&(this.textarea_.value=e)},Blockly.Comment.prototype.dispose=function(){Blockly.Events.isEnabled()&&this.setText(""),this.block_.comment=null,Blockly.Icon.prototype.dispose.call(this)},Blockly.Connection=function(e,o){this.sourceBlock_=e,this.type=o,e.workspace.connectionDBList&&(this.db_=e.workspace.connectionDBList[o],this.dbOpposite_=e.workspace.connectionDBList[Blockly.OPPOSITE_TYPE[o]],this.hidden_=!this.db_)},Blockly.Connection.CAN_CONNECT=0,Blockly.Connection.REASON_SELF_CONNECTION=1,Blockly.Connection.REASON_WRONG_TYPE=2,Blockly.Connection.REASON_TARGET_NULL=3,Blockly.Connection.REASON_CHECKS_FAILED=4,Blockly.Connection.REASON_DIFFERENT_WORKSPACES=5,Blockly.Connection.REASON_SHADOW_PARENT=6,Blockly.Connection.prototype.targetConnection=null,Blockly.Connection.prototype.check_=null,Blockly.Connection.prototype.shadowDom_=null,Blockly.Connection.prototype.x_=0,Blockly.Connection.prototype.y_=0,Blockly.Connection.prototype.inDB_=!1,Blockly.Connection.prototype.db_=null,Blockly.Connection.prototype.dbOpposite_=null,Blockly.Connection.prototype.hidden_=null,Blockly.Connection.prototype.connect_=function(e){var o=this,t=o.getSourceBlock(),n=e.getSourceBlock();if(e.isConnected()&&e.disconnect(),o.isConnected()){var r=o.targetBlock(),i=o.getShadowDom();if(o.setShadowDom(null),r.isShadow())i=Blockly.Xml.blockToDom(r),r.dispose(),r=null;else if(o.type==Blockly.INPUT_VALUE){if(!r.outputConnection)throw"Orphan block does not have an output connection.";var s=Blockly.Connection.lastConnectionInRow_(n,r);s&&(r.outputConnection.connect(s),r=null)}else if(o.type==Blockly.NEXT_STATEMENT){if(!r.previousConnection)throw"Orphan block does not have a previous connection.";for(s=n;s.nextConnection;){var l=s.getNextBlock();if(!l||l.isShadow()){r.previousConnection.checkType_(s.nextConnection)&&(s.nextConnection.connect(r.previousConnection),r=null);break}s=l}}if(r&&(o.disconnect(),Blockly.Events.recordUndo)){var g=Blockly.Events.getGroup();setTimeout(function(){r.workspace&&!r.getParent()&&(Blockly.Events.setGroup(g),r.outputConnection?r.outputConnection.bumpAwayFrom_(o):r.previousConnection&&r.previousConnection.bumpAwayFrom_(o),Blockly.Events.setGroup(!1))},Blockly.BUMP_DELAY)}o.setShadowDom(i)}var a;Blockly.Events.isEnabled()&&(a=new Blockly.Events.Move(n)),Blockly.Connection.connectReciprocally_(o,e),n.setParent(t),a&&(a.recordNew(),Blockly.Events.fire(a))},Blockly.Connection.prototype.dispose=function(){if(this.isConnected())throw"Disconnect connection before disposing of it.";this.inDB_&&this.db_.removeConnection_(this),Blockly.highlightedConnection_==this&&(Blockly.highlightedConnection_=null),Blockly.localConnection_==this&&(Blockly.localConnection_=null),this.dbOpposite_=this.db_=null},Blockly.Connection.prototype.getSourceBlock=function(){return this.sourceBlock_},Blockly.Connection.prototype.isSuperior=function(){return this.type==Blockly.INPUT_VALUE||this.type==Blockly.NEXT_STATEMENT},Blockly.Connection.prototype.isConnected=function(){return!!this.targetConnection},Blockly.Connection.prototype.canConnectWithReason_=function(e){if(!e)return Blockly.Connection.REASON_TARGET_NULL;if(this.isSuperior())var o=this.sourceBlock_,t=e.getSourceBlock();else t=this.sourceBlock_,o=e.getSourceBlock();return o&&o==t?Blockly.Connection.REASON_SELF_CONNECTION:e.type!=Blockly.OPPOSITE_TYPE[this.type]?Blockly.Connection.REASON_WRONG_TYPE:o&&t&&o.workspace!==t.workspace?Blockly.Connection.REASON_DIFFERENT_WORKSPACES:this.checkType_(e)?o.isShadow()&&!t.isShadow()?Blockly.Connection.REASON_SHADOW_PARENT:Blockly.Connection.CAN_CONNECT:Blockly.Connection.REASON_CHECKS_FAILED},Blockly.Connection.prototype.checkConnection_=function(e){switch(this.canConnectWithReason_(e)){case Blockly.Connection.CAN_CONNECT:break;case Blockly.Connection.REASON_SELF_CONNECTION:throw"Attempted to connect a block to itself.";case Blockly.Connection.REASON_DIFFERENT_WORKSPACES:throw"Blocks not on same workspace.";case Blockly.Connection.REASON_WRONG_TYPE:throw"Attempt to connect incompatible types.";case Blockly.Connection.REASON_TARGET_NULL:throw"Target connection is null.";case Blockly.Connection.REASON_CHECKS_FAILED:throw"Connection checks failed.";case Blockly.Connection.REASON_SHADOW_PARENT:throw"Connecting non-shadow to shadow block.";default:throw"Unknown connection failure: this should never happen!"}},Blockly.Connection.prototype.isConnectionAllowed=function(e){return this.canConnectWithReason_(e)!=Blockly.Connection.CAN_CONNECT?!1:e.type!=Blockly.OUTPUT_VALUE&&e.type!=Blockly.PREVIOUS_STATEMENT||!e.isConnected()&&!this.isConnected()?e.type==Blockly.INPUT_VALUE&&e.isConnected()&&!e.targetBlock().isMovable()&&!e.targetBlock().isShadow()||this.type==Blockly.PREVIOUS_STATEMENT&&e.isConnected()&&!this.sourceBlock_.nextConnection&&!e.targetBlock().isShadow()&&e.targetBlock().nextConnection||-1!=Blockly.draggingConnections_.indexOf(e)?!1:!0:!1},Blockly.Connection.prototype.connect=function(e){this.targetConnection!=e&&(this.checkConnection_(e),this.isSuperior()?this.connect_(e):e.connect_(this))},Blockly.Connection.connectReciprocally_=function(e,o){goog.asserts.assert(e&&o,"Cannot connect null connections."),e.targetConnection=o,o.targetConnection=e},Blockly.Connection.singleConnection_=function(e,o){for(var t=!1,n=0;nthis.maxDisplayLength&&(e=e.substring(0,this.maxDisplayLength-2)+"…"),e=e.replace(/\s/g,Blockly.Field.NBSP),this.sourceBlock_.RTL&&e&&(e+="‏"),e||(e=Blockly.Field.NBSP),goog.dom.removeChildren(this.textElement_),e=document.createTextNode(e),this.textElement_.appendChild(e),this.size_.width=0}},Blockly.Field.prototype.getValue=function(){return this.getText()},Blockly.Field.prototype.setValue=function(e){if(null!==e){var o=this.getValue();o!=e&&(this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,o,e)),this.setText(e))}},Blockly.Field.prototype.onMouseUp_=function(e){(!goog.userAgent.IPHONE&&!goog.userAgent.IPAD||goog.userAgent.isVersionOrHigher("537.51.2")||0===e.layerX||0===e.layerY)&&(Blockly.isRightButton(e)||this.sourceBlock_.workspace.isDragging()||this.sourceBlock_.isEditable()&&this.showEditor_())},Blockly.Field.prototype.setTooltip=function(e){},Blockly.Field.prototype.getAbsoluteXY_=function(){return goog.style.getPageOffset(this.borderRect_)},Blockly.Tooltip={},Blockly.Tooltip.visible=!1,Blockly.Tooltip.LIMIT=50,Blockly.Tooltip.mouseOutPid_=0,Blockly.Tooltip.showPid_=0,Blockly.Tooltip.lastX_=0,Blockly.Tooltip.lastY_=0,Blockly.Tooltip.element_=null,Blockly.Tooltip.poisonedElement_=null,Blockly.Tooltip.OFFSET_X=0,Blockly.Tooltip.OFFSET_Y=10,Blockly.Tooltip.RADIUS_OK=10,Blockly.Tooltip.HOVER_MS=750,Blockly.Tooltip.MARGINS=5,Blockly.Tooltip.DIV=null,Blockly.Tooltip.createDom=function(){Blockly.Tooltip.DIV||(Blockly.Tooltip.DIV=goog.dom.createDom("DIV","blocklyTooltipDiv"),document.body.appendChild(Blockly.Tooltip.DIV))},Blockly.Tooltip.bindMouseEvents=function(e){Blockly.bindEvent_(e,"mouseover",null,Blockly.Tooltip.onMouseOver_),Blockly.bindEvent_(e,"mouseout",null,Blockly.Tooltip.onMouseOut_),e.addEventListener("mousemove",Blockly.Tooltip.onMouseMove_,!1)},Blockly.Tooltip.onMouseOver_=function(e){for(e=e.target;!goog.isString(e.tooltip)&&!goog.isFunction(e.tooltip);)e=e.tooltip;Blockly.Tooltip.element_!=e&&(Blockly.Tooltip.hide(),Blockly.Tooltip.poisonedElement_=null,Blockly.Tooltip.element_=e),clearTimeout(Blockly.Tooltip.mouseOutPid_)},Blockly.Tooltip.onMouseOut_=function(e){Blockly.Tooltip.mouseOutPid_=setTimeout(function(){Blockly.Tooltip.element_=null,Blockly.Tooltip.poisonedElement_=null,Blockly.Tooltip.hide()},1),clearTimeout(Blockly.Tooltip.showPid_)},Blockly.Tooltip.onMouseMove_=function(e){if(Blockly.Tooltip.element_&&Blockly.Tooltip.element_.tooltip&&Blockly.dragMode_==Blockly.DRAG_NONE&&!Blockly.WidgetDiv.isVisible())if(Blockly.Tooltip.visible){var o=Blockly.Tooltip.lastX_-e.pageX;e=Blockly.Tooltip.lastY_-e.pageY,Math.sqrt(o*o+e*e)>Blockly.Tooltip.RADIUS_OK&&Blockly.Tooltip.hide()}else Blockly.Tooltip.poisonedElement_!=Blockly.Tooltip.element_&&(clearTimeout(Blockly.Tooltip.showPid_),Blockly.Tooltip.lastX_=e.pageX,Blockly.Tooltip.lastY_=e.pageY,Blockly.Tooltip.showPid_=setTimeout(Blockly.Tooltip.show_,Blockly.Tooltip.HOVER_MS))},Blockly.Tooltip.hide=function(){Blockly.Tooltip.visible&&(Blockly.Tooltip.visible=!1,Blockly.Tooltip.DIV&&(Blockly.Tooltip.DIV.style.display="none")),clearTimeout(Blockly.Tooltip.showPid_)},Blockly.Tooltip.show_=function(){if(Blockly.Tooltip.poisonedElement_=Blockly.Tooltip.element_,Blockly.Tooltip.DIV){goog.dom.removeChildren(Blockly.Tooltip.DIV);for(var e=Blockly.Tooltip.element_.tooltip;goog.isFunction(e);)e=e();for(var e=Blockly.utils.wrap(e,Blockly.Tooltip.LIMIT),e=e.split("\n"),o=0;oo.height+window.scrollY&&(n-=Blockly.Tooltip.DIV.offsetHeight+2*Blockly.Tooltip.OFFSET_Y),e?t=Math.max(Blockly.Tooltip.MARGINS-window.scrollX,t):t+Blockly.Tooltip.DIV.offsetWidth>o.width+window.scrollX-2*Blockly.Tooltip.MARGINS&&(t=o.width-Blockly.Tooltip.DIV.offsetWidth-2*Blockly.Tooltip.MARGINS),Blockly.Tooltip.DIV.style.top=n+"px",Blockly.Tooltip.DIV.style.left=t+"px"}},Blockly.FieldLabel=function(e,o){this.size_=new goog.math.Size(0,17.5),this.class_=o,this.setValue(e)},goog.inherits(Blockly.FieldLabel,Blockly.Field),Blockly.FieldLabel.prototype.EDITABLE=!1,Blockly.FieldLabel.prototype.init=function(){this.textElement_||(this.textElement_=Blockly.createSvgElement("text",{"class":"blocklyText",y:this.size_.height-5},null),this.class_&&Blockly.addClass_(this.textElement_,this.class_),this.visible_||(this.textElement_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.textElement_),this.textElement_.tooltip=this.sourceBlock_,Blockly.Tooltip.bindMouseEvents(this.textElement_),this.updateTextNode_())},Blockly.FieldLabel.prototype.dispose=function(){goog.dom.removeNode(this.textElement_),this.textElement_=null},Blockly.FieldLabel.prototype.getSvgRoot=function(){return this.textElement_},Blockly.FieldLabel.prototype.setTooltip=function(e){this.textElement_.tooltip=e},Blockly.Input=function(e,o,t,n){this.type=e,this.name=o,this.sourceBlock_=t,this.connection=n,this.fieldRow=[]},Blockly.Input.prototype.align=Blockly.ALIGN_LEFT,Blockly.Input.prototype.visible_=!0,Blockly.Input.prototype.appendField=function(e,o){return e||o?(goog.isString(e)&&(e=new Blockly.FieldLabel(e)),e.setSourceBlock(this.sourceBlock_),this.sourceBlock_.rendered&&e.init(),e.name=o,e.prefixField&&this.appendField(e.prefixField),this.fieldRow.push(e),e.suffixField&&this.appendField(e.suffixField),this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_()),this):this},Blockly.Input.prototype.appendTitle=function(e,o){return console.warn("Deprecated call to appendTitle, use appendField instead."),this.appendField(e,o)},Blockly.Input.prototype.removeField=function(e){for(var o,t=0;o=this.fieldRow[t];t++)if(o.name===e)return o.dispose(),this.fieldRow.splice(t,1),void(this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_()));goog.asserts.fail('Field "%s" not found.',e)},Blockly.Input.prototype.isVisible=function(){return this.visible_},Blockly.Input.prototype.setVisible=function(e){var o=[];if(this.visible_==e)return o;for(var t,n=(this.visible_=e)?"block":"none",r=0;t=this.fieldRow[r];r++)t.setVisible(e);return this.connection&&(e?o=this.connection.unhideAll():this.connection.hideAll(),r=this.connection.targetBlock())&&(r.getSvgRoot().style.display=n,e||(r.rendered=!1)),o},Blockly.Input.prototype.setCheck=function(e){if(!this.connection)throw"This input does not have a connection.";return this.connection.setCheck(e),this},Blockly.Input.prototype.setAlign=function(e){return this.align=e,this.sourceBlock_.rendered&&this.sourceBlock_.render(),this},Blockly.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var e=0;e=this.length)return-1;for(var t=e.y_,n=o;n>=0&&this[n].y_==t;){if(this[n]==e)return n;n--}for(;oo;){var n=Math.floor((o+t)/2);if(this[n].y_e.y_)){o=n;break}t=n}}return o},Blockly.ConnectionDB.prototype.removeConnection_=function(e){if(!e.inDB_)throw"Connection not in database.";var o=this.findConnection(e);if(-1==o)throw"Unable to find connection in connectionDB.";e.inDB_=!1,this.splice(o,1)},Blockly.ConnectionDB.prototype.getNeighbours=function(e,o){function t(e){var t=r-n[e].x_,s=i-n[e].y_;return Math.sqrt(t*t+s*s)<=o&&a.push(n[e]),o>s}for(var n=this,r=e.x_,i=e.y_,s=0,l=n.length-2,g=l;g>s;)n[g].y_=0&&t(s);)s--;do l++;while(l=0&&this.isInYRange_(g,e.y_,o);)s=this[g],e.isConnectionAllowed(s,l)&&(t=s,l=s.distanceFrom(e)),g--;for(;i=o?n-=r:o>=t+this.handleLength_&&(n+=r),this.setHandlePosition(this.constrainHandle_(n)),this.onScroll_(),e.stopPropagation(),e.preventDefault()}},Blockly.Scrollbar.prototype.onMouseDownHandle_=function(e){this.workspace_.markFocused(),this.cleanUp_(),Blockly.isRightButton(e)?e.stopPropagation():(this.startDragHandle=this.handlePosition_,this.startDragMouse=this.horizontal_?e.clientX:e.clientY,Blockly.Scrollbar.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,this.onMouseUpHandle_),Blockly.Scrollbar.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.onMouseMoveHandle_),e.stopPropagation(),e.preventDefault())},Blockly.Scrollbar.prototype.onMouseMoveHandle_=function(e){this.setHandlePosition(this.constrainHandle_(this.startDragHandle+((this.horizontal_?e.clientX:e.clientY)-this.startDragMouse))),this.onScroll_()},Blockly.Scrollbar.prototype.onMouseUpHandle_=function(){Blockly.Touch.clearTouchIdentifier(),this.cleanUp_()},Blockly.Scrollbar.prototype.cleanUp_=function(){Blockly.hideChaff(!0),Blockly.Scrollbar.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseUpWrapper_),Blockly.Scrollbar.onMouseUpWrapper_=null),Blockly.Scrollbar.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseMoveWrapper_),Blockly.Scrollbar.onMouseMoveWrapper_=null)},Blockly.Scrollbar.prototype.constrainHandle_=function(e){return e=0>=e||isNaN(e)||this.scrollViewSize_this.lidOpen_&&(this.lidTask_=goog.Timer.callOnce(this.animateLid_,20,this))},Blockly.Trashcan.prototype.close=function(){this.setOpen_(!1)},Blockly.Trashcan.prototype.click=function(){var e=this.workspace_.startScrollX-this.workspace_.scrollX,o=this.workspace_.startScrollY-this.workspace_.scrollY;Math.sqrt(e*e+o*o)>Blockly.DRAG_RADIUS||console.log("TODO: Inspect trash.")},Blockly.Xml={},Blockly.Xml.workspaceToDom=function(e,o){for(var t,n=goog.dom.createDom("xml"),r=e.getTopBlocks(!0),i=0;t=r[i];i++)n.appendChild(Blockly.Xml.blockToDomWithXY(t,o));return n},Blockly.Xml.blockToDomWithXY=function(e,o){var t;e.workspace.RTL&&(t=e.workspace.getWidth());var n=Blockly.Xml.blockToDom(e,o),r=e.getRelativeToSurfaceXY();return n.setAttribute("x",Math.round(e.workspace.RTL?t-r.x:r.x)),n.setAttribute("y",Math.round(r.y)),n},Blockly.Xml.blockToDom=function(e,o){var t=goog.dom.createDom(e.isShadow()?"shadow":"block");if(t.setAttribute("type",e.type),o||t.setAttribute("id",e.id),e.mutationToDom){var n=e.mutationToDom();n&&(n.hasChildNodes()||n.hasAttributes())&&t.appendChild(n)}for(var r,n=0;r=e.inputList[n];n++)for(var i,s=0;i=r.fieldRow[s];s++)if(i.name&&i.EDITABLE){var l=goog.dom.createDom("field",null,i.getValue());l.setAttribute("name",i.name),t.appendChild(l)}for((n=e.getCommentText())&&(n=goog.dom.createDom("comment",null,n),"object"==typeof e.comment&&(n.setAttribute("pinned",e.comment.isVisible()),r=e.comment.getBubbleSize(),n.setAttribute("h",r.height),n.setAttribute("w",r.width)),t.appendChild(n)),e.data&&(n=goog.dom.createDom("data",null,e.data),t.appendChild(n)),n=0;r=e.inputList[n];n++){var g;i=!0,r.type!=Blockly.DUMMY_INPUT&&(l=r.connection.targetBlock(),r.type==Blockly.INPUT_VALUE?g=goog.dom.createDom("value"):r.type==Blockly.NEXT_STATEMENT&&(g=goog.dom.createDom("statement")),s=r.connection.getShadowDom(),!s||l&&l.isShadow()||g.appendChild(Blockly.Xml.cloneShadow_(s)),l&&(g.appendChild(Blockly.Xml.blockToDom(l,o)),i=!1),g.setAttribute("name",r.name),i||t.appendChild(g))}return e.inputsInlineDefault!=e.inputsInline&&t.setAttribute("inline",e.inputsInline),e.isCollapsed()&&t.setAttribute("collapsed",!0),e.disabled&&t.setAttribute("disabled",!0),e.isDeletable()||e.isShadow()||t.setAttribute("deletable",!1),e.isMovable()||e.isShadow()||t.setAttribute("movable",!1),e.isEditable()||t.setAttribute("editable",!1),(n=e.getNextBlock())&&(g=goog.dom.createDom("next",null,Blockly.Xml.blockToDom(n,o)),t.appendChild(g)),s=e.nextConnection&&e.nextConnection.getShadowDom(),!s||n&&n.isShadow()||g.appendChild(Blockly.Xml.cloneShadow_(s)),t},Blockly.Xml.cloneShadow_=function(e){for(var o,t=e=e.cloneNode(!0);t;)if(t.firstChild)t=t.firstChild;else{for(;t&&!t.nextSibling;)o=t,t=t.parentNode,3==o.nodeType&&""==o.data.trim()&&t.firstChild!=o&&goog.dom.removeNode(o);t&&(o=t,t=t.nextSibling,3==o.nodeType&&""==o.data.trim()&&goog.dom.removeNode(o))}return e},Blockly.Xml.domToText=function(e){return(new XMLSerializer).serializeToString(e)},Blockly.Xml.domToPrettyText=function(e){e=Blockly.Xml.domToText(e).split("<");for(var o="",t=1;t"!=n.slice(-2)&&(o+=" ")}return e=e.join("\n"),e=e.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1"),e.replace(/^\n/,"")},Blockly.Xml.textToDom=function(e){return(e=(new DOMParser).parseFromString(e,"text/xml"))&&e.firstChild&&"xml"==e.firstChild.nodeName.toLowerCase()&&e.firstChild===e.lastChild||goog.asserts.fail("Blockly.Xml.textToDom did not obtain a valid XML tree."),e.firstChild},Blockly.Xml.domToWorkspace=function(e,o){if(e instanceof Blockly.Workspace){var t=e;e=o,o=t,console.warn("Deprecated call to Blockly.Xml.domToWorkspace, swap the arguments.")}var n;o.RTL&&(n=o.getWidth()),Blockly.Field.startCache();var t=e.childNodes.length,r=Blockly.Events.getGroup();r||Blockly.Events.setGroup(!0),o.setResizesEnabled&&o.setResizesEnabled(!1);for(var i=0;t>i;i++){var s=e.childNodes[i],l=s.nodeName.toLowerCase();if("block"==l||"shadow"==l&&!Blockly.Events.recordUndo){var l=Blockly.Xml.domToBlock(s,o),g=parseInt(s.getAttribute("x"),10),s=parseInt(s.getAttribute("y"),10);isNaN(g)||isNaN(s)||l.moveBy(o.RTL?n-g:g,s)}else"shadow"==l&&goog.asserts.fail("Shadow block cannot be a top-level block.")}r||Blockly.Events.setGroup(!1),Blockly.Field.stopCache(),o.updateVariableList(!1),o.setResizesEnabled&&o.setResizesEnabled(!0)},Blockly.Xml.domToBlock=function(e,o){if(e instanceof Blockly.Workspace){var t=e;e=o,o=t,console.warn("Deprecated call to Blockly.Xml.domToBlock, swap the arguments.")}Blockly.Events.disable();try{var n=Blockly.Xml.domToBlockHeadless_(e,o);if(o.rendered){n.setConnectionsHidden(!0);for(var r=n.getDescendants(),i=r.length-1;i>=0;i--)r[i].initSvg();for(i=r.length-1;i>=0;i--)r[i].render(!1);setTimeout(function(){n.workspace&&n.setConnectionsHidden(!1)},1),n.updateDisabled(),o.resizeContents()}}finally{Blockly.Events.enable()}return Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Create(n)),n},Blockly.Xml.domToBlockHeadless_=function(e,o){var t=null,n=e.getAttribute("type");goog.asserts.assert(n,"Block type unspecified: %s",e.outerHTML);for(var r,i=e.getAttribute("id"),t=o.newBlock(n,i),s=null,i=0;r=e.childNodes[i];i++)if(3!=r.nodeType){for(var l,g=s=null,a=0;l=r.childNodes[a];a++)1==l.nodeType&&("block"==l.nodeName.toLowerCase()?s=l:"shadow"==l.nodeName.toLowerCase()&&(g=l));switch(!s&&g&&(s=g),a=r.getAttribute("name"),r.nodeName.toLowerCase()){case"mutation":t.domToMutation&&(t.domToMutation(r),t.initSvg&&t.initSvg());break;case"comment":t.setCommentText(r.textContent);var c=r.getAttribute("pinned");c&&!t.isInFlyout&&setTimeout(function(){t.comment&&t.comment.setVisible&&t.comment.setVisible("true"==c)},1),s=parseInt(r.getAttribute("w"),10),r=parseInt(r.getAttribute("h"),10),!isNaN(s)&&!isNaN(r)&&t.comment&&t.comment.setVisible&&t.comment.setBubbleSize(s,r);break;case"data":t.data=r.textContent;break;case"title":case"field":if(s=t.getField(a),!s){console.warn("Ignoring non-existent field "+a+" in block "+n);break}s.setValue(r.textContent);break;case"value":case"statement":if(r=t.getInput(a),!r){console.warn("Ignoring non-existent input "+a+" in block "+n);break}g&&r.connection.setShadowDom(g),s&&(s=Blockly.Xml.domToBlockHeadless_(s,o),s.outputConnection?r.connection.connect(s.outputConnection):s.previousConnection?r.connection.connect(s.previousConnection):goog.asserts.fail("Child block does not have output or previous statement."));break;case"next":g&&t.nextConnection&&t.nextConnection.setShadowDom(g),s&&(goog.asserts.assert(t.nextConnection,"Next statement does not exist."),goog.asserts.assert(!t.nextConnection.isConnected(),"Next statement is already connected."),s=Blockly.Xml.domToBlockHeadless_(s,o),goog.asserts.assert(s.previousConnection,"Next block does not have previous statement."),t.nextConnection.connect(s.previousConnection));break;default:console.warn("Ignoring unknown tag: "+r.nodeName)}}if((i=e.getAttribute("inline"))&&t.setInputsInline("true"==i),(i=e.getAttribute("disabled"))&&t.setDisabled("true"==i),(i=e.getAttribute("deletable"))&&t.setDeletable("true"==i),(i=e.getAttribute("movable"))&&t.setMovable("true"==i),(i=e.getAttribute("editable"))&&t.setEditable("true"==i),(i=e.getAttribute("collapsed"))&&t.setCollapsed("true"==i),"shadow"==e.nodeName.toLowerCase()){for(n=t.getChildren(),i=0;r=n[i];i++)goog.asserts.assert(r.isShadow(),"Shadow block not allowed non-shadow child.");goog.asserts.assert(0==t.getVars().length,"Shadow blocks cannot have variable fields."),t.setShadow(!0)}return t},Blockly.Xml.deleteNext=function(e){for(var o,t=0;o=e.childNodes[t];t++)if("next"==o.nodeName.toLowerCase()){e.removeChild(o);break}},goog.global.Blockly||(goog.global.Blockly={}),goog.global.Blockly.Xml||(goog.global.Blockly.Xml={}),goog.global.Blockly.Xml.domToText=Blockly.Xml.domToText,goog.global.Blockly.Xml.domToWorkspace=Blockly.Xml.domToWorkspace,goog.global.Blockly.Xml.textToDom=Blockly.Xml.textToDom,goog.global.Blockly.Xml.workspaceToDom=Blockly.Xml.workspaceToDom,Blockly.ZoomControls=function(e){this.workspace_=e},Blockly.ZoomControls.prototype.WIDTH_=32,Blockly.ZoomControls.prototype.HEIGHT_=110,Blockly.ZoomControls.prototype.MARGIN_BOTTOM_=20,Blockly.ZoomControls.prototype.MARGIN_SIDE_=20,Blockly.ZoomControls.prototype.svgGroup_=null,Blockly.ZoomControls.prototype.left_=0,Blockly.ZoomControls.prototype.top_=0,Blockly.ZoomControls.prototype.createDom=function(){var e=this.workspace_;this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyZoom"},null);var o=String(Math.random()).substring(2),t=Blockly.createSvgElement("clipPath",{id:"blocklyZoomoutClipPath"+o},this.svgGroup_);Blockly.createSvgElement("rect",{width:32,height:32,y:77},t);var n=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-64,y:-15,"clip-path":"url(#blocklyZoomoutClipPath"+o+")"},this.svgGroup_);n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.options.pathToMedia+Blockly.SPRITE.url),t=Blockly.createSvgElement("clipPath",{id:"blocklyZoominClipPath"+o},this.svgGroup_),Blockly.createSvgElement("rect",{width:32,height:32,y:43},t);var r=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-32,y:-49,"clip-path":"url(#blocklyZoominClipPath"+o+")"},this.svgGroup_);return r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.options.pathToMedia+Blockly.SPRITE.url),t=Blockly.createSvgElement("clipPath",{id:"blocklyZoomresetClipPath"+o},this.svgGroup_),Blockly.createSvgElement("rect",{width:32,height:32},t),o=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+o+")"},this.svgGroup_),o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.options.pathToMedia+Blockly.SPRITE.url),Blockly.bindEventWithChecks_(o,"mousedown",null,function(o){e.markFocused(),e.setScale(e.options.zoomOptions.startScale),e.scrollCenter(),Blockly.Touch.clearTouchIdentifier(),o.stopPropagation(),o.preventDefault()}),Blockly.bindEventWithChecks_(r,"mousedown",null,function(o){e.markFocused(),e.zoomCenter(1),Blockly.Touch.clearTouchIdentifier(),o.stopPropagation(),o.preventDefault()}),Blockly.bindEventWithChecks_(n,"mousedown",null,function(o){e.markFocused(),e.zoomCenter(-1),Blockly.Touch.clearTouchIdentifier(),o.stopPropagation(),o.preventDefault()}),this.svgGroup_},Blockly.ZoomControls.prototype.init=function(e){return this.bottom_=this.MARGIN_BOTTOM_+e,this.bottom_+this.HEIGHT_},Blockly.ZoomControls.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null),this.workspace_=null},Blockly.ZoomControls.prototype.position=function(){var e=this.workspace_.getMetrics();e&&(this.workspace_.RTL?(this.left_=this.MARGIN_SIDE_+Blockly.Scrollbar.scrollbarThickness,e.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&&(this.left_+=e.flyoutWidth,this.workspace_.toolbox_&&(this.left_+=e.absoluteLeft))):(this.left_=e.viewWidth+e.absoluteLeft-this.WIDTH_-this.MARGIN_SIDE_-Blockly.Scrollbar.scrollbarThickness,e.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&&(this.left_-=e.flyoutWidth)),this.top_=e.viewHeight+e.absoluteTop-this.HEIGHT_-this.bottom_,e.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&&(this.top_-=e.flyoutHeight),this.svgGroup_.setAttribute("transform","translate("+this.left_+","+this.top_+")"))},Blockly.WorkspaceSvg=function(e){Blockly.WorkspaceSvg.superClass_.constructor.call(this,e),this.getMetrics=e.getMetrics||Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_,this.setMetrics=e.setMetrics||Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_,Blockly.ConnectionDB.init(this),this.SOUNDS_=Object.create(null),this.highlightedBlocks_=[]},goog.inherits(Blockly.WorkspaceSvg,Blockly.Workspace),Blockly.WorkspaceSvg.prototype.resizeHandlerWrapper_=null,Blockly.WorkspaceSvg.prototype.rendered=!0,Blockly.WorkspaceSvg.prototype.isFlyout=!1,Blockly.WorkspaceSvg.prototype.isMutator=!1,Blockly.WorkspaceSvg.prototype.dragMode_=Blockly.DRAG_NONE,Blockly.WorkspaceSvg.prototype.resizesEnabled_=!0,Blockly.WorkspaceSvg.prototype.scrollX=0,Blockly.WorkspaceSvg.prototype.scrollY=0,Blockly.WorkspaceSvg.prototype.startScrollX=0,Blockly.WorkspaceSvg.prototype.startScrollY=0,Blockly.WorkspaceSvg.prototype.dragDeltaXY_=null,Blockly.WorkspaceSvg.prototype.scale=1,Blockly.WorkspaceSvg.prototype.trashcan=null,Blockly.WorkspaceSvg.prototype.scrollbar=null,Blockly.WorkspaceSvg.prototype.lastSound_=null,Blockly.WorkspaceSvg.prototype.lastRecordedPageScroll_=null,Blockly.WorkspaceSvg.prototype.inverseScreenCTM_=null,Blockly.WorkspaceSvg.prototype.getInverseScreenCTM=function(){return this.inverseScreenCTM_},Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM=function(){var e=this.getParentSvg().getScreenCTM();e&&(this.inverseScreenCTM_=e.inverse())},Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper=function(e){this.resizeHandlerWrapper_=e},Blockly.WorkspaceSvg.prototype.createDom=function(e){if(this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyWorkspace"},null),e&&(this.svgBackground_=Blockly.createSvgElement("rect",{height:"100%",width:"100%","class":e},this.svgGroup_),"blocklyMainBackground"==e&&(this.svgBackground_.style.fill="url(#"+this.options.gridPattern.id+")")),this.svgBlockCanvas_=Blockly.createSvgElement("g",{"class":"blocklyBlockCanvas"},this.svgGroup_,this),this.svgBubbleCanvas_=Blockly.createSvgElement("g",{"class":"blocklyBubbleCanvas"},this.svgGroup_,this),e=Blockly.Scrollbar.scrollbarThickness,this.options.hasTrashcan&&(e=this.addTrashcan_(e)),this.options.zoomOptions&&this.options.zoomOptions.controls&&(e=this.addZoomControls_(e)),!this.isFlyout){Blockly.bindEventWithChecks_(this.svgGroup_,"mousedown",this,this.onMouseDown_);var o=this;Blockly.bindEvent_(this.svgGroup_,"touchstart",null,function(e){Blockly.longStart_(e,o)}),this.options.zoomOptions&&this.options.zoomOptions.wheel&&Blockly.bindEventWithChecks_(this.svgGroup_,"wheel",this,this.onMouseWheel_)}return this.options.hasCategories?this.toolbox_=new Blockly.Toolbox(this):this.options.languageTree&&this.addFlyout_(),this.updateGridPattern_(),this.recordDeleteAreas(),this.svgGroup_},Blockly.WorkspaceSvg.prototype.dispose=function(){this.rendered=!1,Blockly.WorkspaceSvg.superClass_.dispose.call(this),this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null),this.svgBubbleCanvas_=this.svgBlockCanvas_=null,this.toolbox_&&(this.toolbox_.dispose(),this.toolbox_=null),this.flyout_&&(this.flyout_.dispose(),this.flyout_=null),this.trashcan&&(this.trashcan.dispose(),this.trashcan=null),this.scrollbar&&(this.scrollbar.dispose(),this.scrollbar=null),this.zoomControls_&&(this.zoomControls_.dispose(),this.zoomControls_=null),this.options.parentWorkspace||goog.dom.removeNode(this.getParentSvg().parentNode),this.resizeHandlerWrapper_&&(Blockly.unbindEvent_(this.resizeHandlerWrapper_),this.resizeHandlerWrapper_=null)},Blockly.WorkspaceSvg.prototype.newBlock=function(e,o){return new Blockly.BlockSvg(this,e,o)},Blockly.WorkspaceSvg.prototype.addTrashcan_=function(e){this.trashcan=new Blockly.Trashcan(this);var o=this.trashcan.createDom();return this.svgGroup_.insertBefore(o,this.svgBlockCanvas_),this.trashcan.init(e)},Blockly.WorkspaceSvg.prototype.addZoomControls_=function(e){this.zoomControls_=new Blockly.ZoomControls(this);var o=this.zoomControls_.createDom();return this.svgGroup_.appendChild(o),this.zoomControls_.init(e)},Blockly.WorkspaceSvg.prototype.addFlyout_=function(){this.flyout_=new Blockly.Flyout({disabledPatternId:this.options.disabledPatternId,parentWorkspace:this,RTL:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,toolboxPosition:this.options.toolboxPosition}),this.flyout_.autoClose=!1;var e=this.flyout_.createDom();this.svgGroup_.insertBefore(e,this.svgBlockCanvas_)},Blockly.WorkspaceSvg.prototype.updateScreenCalculations_=function(){this.updateInverseScreenCTM(),this.recordDeleteAreas()},Blockly.WorkspaceSvg.prototype.resizeContents=function(){this.resizesEnabled_&&this.rendered&&(this.scrollbar&&this.scrollbar.resize(),this.updateInverseScreenCTM())},Blockly.WorkspaceSvg.prototype.resize=function(){this.toolbox_&&this.toolbox_.position(),this.flyout_&&this.flyout_.position(),this.trashcan&&this.trashcan.position(),this.zoomControls_&&this.zoomControls_.position(),this.scrollbar&&this.scrollbar.resize(),this.updateScreenCalculations_()},Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled=function(){var e=goog.dom.getDocumentScroll();goog.math.Coordinate.equals(this.lastRecordedPageScroll_,e)||(this.lastRecordedPageScroll_=e,this.updateScreenCalculations_())},Blockly.WorkspaceSvg.prototype.getCanvas=function(){return this.svgBlockCanvas_},Blockly.WorkspaceSvg.prototype.getBubbleCanvas=function(){return this.svgBubbleCanvas_},Blockly.WorkspaceSvg.prototype.getParentSvg=function(){if(this.cachedParentSvg_)return this.cachedParentSvg_;for(var e=this.svgGroup_;e;){if("svg"==e.tagName)return this.cachedParentSvg_=e;e=e.parentNode}return null},Blockly.WorkspaceSvg.prototype.translate=function(e,o){var t="translate("+e+","+o+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",t),this.svgBubbleCanvas_.setAttribute("transform",t)},Blockly.WorkspaceSvg.prototype.getWidth=function(){var e=this.getMetrics();return e?e.viewWidth/this.scale:0},Blockly.WorkspaceSvg.prototype.setVisible=function(e){this.getParentSvg().style.display=e?"block":"none",this.toolbox_&&(this.toolbox_.HtmlDiv.style.display=e?"block":"none"),e?(this.render(),this.toolbox_&&this.toolbox_.position()):Blockly.hideChaff(!0)},Blockly.WorkspaceSvg.prototype.render=function(){for(var e=this.getAllBlocks(),o=e.length-1;o>=0;o--)e[o].render(!1)},Blockly.WorkspaceSvg.prototype.traceOn=function(){console.warn("Deprecated call to traceOn, delete this.")},Blockly.WorkspaceSvg.prototype.highlightBlock=function(e,o){if(void 0===o){for(var t,n=0;t=this.highlightedBlocks_[n];n++)t.setHighlighted(!1);this.highlightedBlocks_.length=0}(t=e?this.getBlockById(e):null)&&((n=void 0===o||o)?-1==this.highlightedBlocks_.indexOf(t)&&this.highlightedBlocks_.push(t):goog.array.remove(this.highlightedBlocks_,t), t.setHighlighted(n))},Blockly.WorkspaceSvg.prototype.paste=function(e){if(this.rendered&&!(e.getElementsByTagName("block").length>=this.remainingCapacity())){Blockly.terminateDrag_(),Blockly.Events.disable();try{var o=Blockly.Xml.domToBlock(e,this),t=parseInt(e.getAttribute("x"),10),n=parseInt(e.getAttribute("y"),10);if(!isNaN(t)&&!isNaN(n)){this.RTL&&(t=-t);do{e=!1;for(var r,i=this.getAllBlocks(),s=0;r=i[s];s++){var l=r.getRelativeToSurfaceXY();if(1>=Math.abs(t-l.x)&&1>=Math.abs(n-l.y)){e=!0;break}}if(!e)for(var g,a=o.getConnections_(!1),s=0;g=a[s];s++)if(g.closest(Blockly.SNAP_RADIUS,new goog.math.Coordinate(t,n)).connection){e=!0;break}e&&(t=this.RTL?t-Blockly.SNAP_RADIUS:t+Blockly.SNAP_RADIUS,n+=2*Blockly.SNAP_RADIUS)}while(e);o.moveBy(t,n)}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!o.isShadow()&&Blockly.Events.fire(new Blockly.Events.Create(o)),o.select()}},Blockly.WorkspaceSvg.prototype.createVariable=function(e){Blockly.WorkspaceSvg.superClass_.createVariable.call(this,e),this.toolbox_&&this.toolbox_.flyout_&&!Blockly.Flyout.startFlyout_&&this.toolbox_.refreshSelection()},Blockly.WorkspaceSvg.prototype.recordDeleteAreas=function(){this.deleteAreaTrash_=this.trashcan?this.trashcan.getClientRect():null,this.deleteAreaToolbox_=this.flyout_?this.flyout_.getClientRect():this.toolbox_?this.toolbox_.getClientRect():null},Blockly.WorkspaceSvg.prototype.isDeleteArea=function(e){if(e=new goog.math.Coordinate(e.clientX,e.clientY),this.deleteAreaTrash_){if(this.deleteAreaTrash_.contains(e))return this.trashcan.setOpen_(!0),Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),!0;this.trashcan.setOpen_(!1)}return this.deleteAreaToolbox_&&this.deleteAreaToolbox_.contains(e)?(Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),!0):(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),!1)},Blockly.WorkspaceSvg.prototype.onMouseDown_=function(e){this.markFocused(),Blockly.isTargetInput_(e)?Blockly.Touch.clearTouchIdentifier():(Blockly.terminateDrag_(),Blockly.hideChaff(),e.target&&e.target.nodeName&&("svg"==e.target.nodeName.toLowerCase()||e.target==this.svgBackground_)&&Blockly.selected&&!this.options.readOnly&&Blockly.selected.unselect(),Blockly.isRightButton(e)?(this.showContextMenu_(e),Blockly.Touch.clearTouchIdentifier()):this.scrollbar?(this.dragMode_=Blockly.DRAG_BEGIN,this.startDragMouseX=e.clientX,this.startDragMouseY=e.clientY,this.startDragMetrics=this.getMetrics(),this.startScrollX=this.scrollX,this.startScrollY=this.scrollY,"mouseup"in Blockly.Touch.TOUCH_MAP&&(Blockly.Touch.onTouchUpWrapper_=Blockly.Touch.onTouchUpWrapper_||[],Blockly.Touch.onTouchUpWrapper_=Blockly.Touch.onTouchUpWrapper_.concat(Blockly.bindEventWithChecks_(document,"mouseup",null,Blockly.onMouseUp_))),Blockly.onMouseMoveWrapper_=Blockly.onMouseMoveWrapper_||[],Blockly.onMouseMoveWrapper_=Blockly.onMouseMoveWrapper_.concat(Blockly.bindEventWithChecks_(document,"mousemove",null,Blockly.onMouseMove_))):Blockly.Touch.clearTouchIdentifier(),e.stopPropagation(),e.preventDefault())},Blockly.WorkspaceSvg.prototype.startDrag=function(e,o){var t=Blockly.mouseToSvg(e,this.getParentSvg(),this.getInverseScreenCTM());t.x/=this.scale,t.y/=this.scale,this.dragDeltaXY_=goog.math.Coordinate.difference(o,t)},Blockly.WorkspaceSvg.prototype.moveDrag=function(e){return e=Blockly.mouseToSvg(e,this.getParentSvg(),this.getInverseScreenCTM()),e.x/=this.scale,e.y/=this.scale,goog.math.Coordinate.sum(this.dragDeltaXY_,e)},Blockly.WorkspaceSvg.prototype.isDragging=function(){return Blockly.dragMode_==Blockly.DRAG_FREE||Blockly.Flyout.startFlyout_&&Blockly.Flyout.startFlyout_.dragMode_==Blockly.DRAG_FREE||this.dragMode_==Blockly.DRAG_FREE},Blockly.WorkspaceSvg.prototype.onMouseWheel_=function(e){Blockly.terminateDrag_();var o=0o.bottomRight.x&&(o.bottomRight.x=n.bottomRight.x),n.topLeft.yo.bottomRight.y&&(o.bottomRight.y=n.bottomRight.y)}return{x:o.topLeft.x,y:o.topLeft.y,width:o.bottomRight.x-o.topLeft.x,height:o.bottomRight.y-o.topLeft.y}},Blockly.WorkspaceSvg.prototype.cleanUp=function(){Blockly.Events.setGroup(!0);for(var e,o=this.getTopBlocks(!0),t=0,n=0;e=o[n];n++){var r=e.getRelativeToSurfaceXY();e.moveBy(-r.x,t-r.y),e.snapToGrid(),t=e.getRelativeToSurfaceXY().y+e.getHeightWidth().height+Blockly.BlockSvg.MIN_BLOCK_Y}Blockly.Events.setGroup(!1),this.resizeContents()},Blockly.WorkspaceSvg.prototype.showContextMenu_=function(e){function o(e){if(e.isDeletable())u=u.concat(e.getDescendants());else{e=e.getChildren();for(var t=0;tu.length?t():Blockly.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1",u.length),function(e){e&&t()})}},n.push(s),Blockly.ContextMenu.show(e,n,this.RTL)}},Blockly.WorkspaceSvg.prototype.loadAudio_=function(e,o){if(e.length){try{var t=new window.Audio}catch(n){return}for(var r,i=0;ithis.options.zoomOptions.maxScale?n=this.options.zoomOptions.maxScale/this.scale:tthis.options.zoomOptions.maxScale?e=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&eo||Math.abs(this.workspaceHeight_-t)>o)&&(this.workspaceWidth_=e,this.workspaceHeight_=t,this.bubble_.setBubbleSize(e+o,t+o),this.svgDialog_.setAttribute("width",this.workspaceWidth_),this.svgDialog_.setAttribute("height",this.workspaceHeight_)),this.block_.RTL&&(o="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",o)),this.workspace_.resize()},Blockly.Mutator.prototype.setVisible=function(e){if(e!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"mutatorOpen",!e,e)),e){this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,null,null),(e=this.workspace_.options.languageTree)&&(this.workspace_.flyout_.init(this.workspace_),this.workspace_.flyout_.show(e.childNodes)),this.rootBlock_=this.block_.decompose(this.workspace_),e=this.rootBlock_.getDescendants();for(var o,t=0;o=e[t];t++)o.render();if(this.rootBlock_.setMovable(!1),this.rootBlock_.setDeletable(!1),this.workspace_.flyout_?(e=2*this.workspace_.flyout_.CORNER_RADIUS,t=this.workspace_.flyout_.width_+e):t=e=16,this.block_.RTL&&(t=-t),this.rootBlock_.moveBy(t,e),this.block_.saveConnections){var n=this;this.block_.saveConnections(this.rootBlock_),this.sourceListener_=function(){n.block_.saveConnections(n.rootBlock_)},this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_(),this.workspace_.addChangeListener(this.workspaceChanged_.bind(this)),this.updateColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(this.block_.workspace.removeChangeListener(this.sourceListener_),this.sourceListener_=null)},Blockly.Mutator.prototype.workspaceChanged_=function(){if(Blockly.dragMode_==Blockly.DRAG_NONE)for(var e,o=this.workspace_.getTopBlocks(!1),t=0;e=o[t];t++){var n=e.getRelativeToSurfaceXY(),r=e.getHeightWidth();20>n.y+r.height&&e.moveBy(0,20-r.height-n.y)}if(this.rootBlock_.workspace==this.workspace_){if(Blockly.Events.setGroup(!0),e=this.block_,o=(o=e.mutationToDom())&&Blockly.Xml.domToText(o),t=e.rendered,e.rendered=!1,e.compose(this.rootBlock_),e.rendered=t,e.initSvg(),t=(t=e.mutationToDom())&&Blockly.Xml.domToText(t),o!=t){Blockly.Events.fire(new Blockly.Events.Change(e,"mutation",null,o,t));var i=Blockly.Events.getGroup();setTimeout(function(){Blockly.Events.setGroup(i),e.bumpNeighbours_(),Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY)}e.rendered&&e.render(),this.resizeBubble_(),Blockly.Events.setGroup(!1)}},Blockly.Mutator.prototype.getFlyoutMetrics_=function(){return{viewHeight:this.workspaceHeight_,viewWidth:this.workspaceWidth_,absoluteTop:0,absoluteLeft:0}},Blockly.Mutator.prototype.dispose=function(){this.block_.mutator=null,Blockly.Icon.prototype.dispose.call(this)},Blockly.Mutator.reconnect=function(e,o,t){if(!e||!e.getSourceBlock().workspace)return!1;t=o.getInput(t).connection;var n=e.targetBlock();return n&&n!=o||t.targetConnection==e?!1:(t.isConnected()&&t.disconnect(),t.connect(e),!0)},goog.global.Blockly||(goog.global.Blockly={}),goog.global.Blockly.Mutator||(goog.global.Blockly.Mutator={}),goog.global.Blockly.Mutator.reconnect=Blockly.Mutator.reconnect,Blockly.Warning=function(e){Blockly.Warning.superClass_.constructor.call(this,e),this.createIcon(),this.text_={}},goog.inherits(Blockly.Warning,Blockly.Icon),Blockly.Warning.prototype.collapseHidden=!1,Blockly.Warning.prototype.drawIcon_=function(e){Blockly.createSvgElement("path",{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},e),Blockly.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},e),Blockly.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},e)},Blockly.Warning.textToDom_=function(e){var o=Blockly.createSvgElement("text",{"class":"blocklyText blocklyBubbleText",y:Blockly.Bubble.BORDER_WIDTH},null);e=e.split("\n");for(var t=0;t=0;o--)this.childBlocks_[o].dispose(!1);for(var t,o=0;t=this.inputList[o];o++)t.dispose();this.inputList.length=0;for(var n=this.getConnections_(!0),o=0;o0&&l<=o.length,'Message index "%s" out of range.',l),goog.asserts.assert(!r[l],'Message index "%s" duplicated.',l),r[l]=!0,i++,e.push(o[l-1])):(l=l.trim())&&e.push(l)}for(goog.asserts.assert(i==o.length,"Message does not reference all %s arg(s).",o.length),e.length&&("string"==typeof e[e.length-1]||goog.string.startsWith(e[e.length-1].type,"field_"))&&(s={type:"input_dummy"},t&&(s.align=t),e.push(s)),t={LEFT:Blockly.ALIGN_LEFT,RIGHT:Blockly.ALIGN_RIGHT,CENTRE:Blockly.ALIGN_CENTRE},o=[],s=0;se&&o--,this.inputList.splice(o,0,t)},Blockly.Block.prototype.removeInput=function(e,o){for(var t,n=0;t=this.inputList[n];n++)if(t.name==e){if(t.connection&&t.connection.isConnected()){t.connection.setShadowDom(null);var r=t.connection.targetBlock();r.isShadow()?r.dispose():r.unplug()}return t.dispose(),void this.inputList.splice(n,1)}o||goog.asserts.fail('Input "%s" not found.',e)},Blockly.Block.prototype.getInput=function(e){for(var o,t=0;o=this.inputList[t];t++)if(o.name==e)return o;return null},Blockly.Block.prototype.getInputTargetBlock=function(e){return(e=this.getInput(e))&&e.connection&&e.connection.targetBlock()},Blockly.Block.prototype.getCommentText=function(){return this.comment||""},Blockly.Block.prototype.setCommentText=function(e){this.comment!=e&&(Blockly.Events.fire(new Blockly.Events.Change(this,"comment",null,this.comment,e||"")),this.comment=e)},Blockly.Block.prototype.setWarningText=function(e){},Blockly.Block.prototype.setMutator=function(e){},Blockly.Block.prototype.getRelativeToSurfaceXY=function(){return this.xy_},Blockly.Block.prototype.moveBy=function(e,o){goog.asserts.assert(!this.parentBlock_,"Block has parent.");var t=new Blockly.Events.Move(this);this.xy_.translate(e,o),t.recordNew(),Blockly.Events.fire(t)},Blockly.Block.prototype.makeConnection_=function(e){return new Blockly.Connection(this,e)},Blockly.ContextMenu={},Blockly.ContextMenu.currentBlock=null,Blockly.ContextMenu.show=function(e,o,t){if(Blockly.WidgetDiv.show(Blockly.ContextMenu,t,null),o.length){var n=new goog.ui.Menu;n.setRightToLeft(t);for(var r,i=0;r=o[i];i++){var s=new goog.ui.MenuItem(r.text);s.setRightToLeft(t),n.addChild(s,!0),s.setEnabled(r.enabled),r.enabled&&(goog.events.listen(s,goog.ui.Component.EventType.ACTION,r.callback),s.handleContextMenu=function(e){goog.events.dispatchEvent(this,goog.ui.Component.EventType.ACTION)})}goog.events.listen(n,goog.ui.Component.EventType.ACTION,Blockly.ContextMenu.hide),o=goog.dom.getViewportSize(),i=goog.style.getViewportPageOffset(document),n.render(Blockly.WidgetDiv.DIV);var l=n.getElement();Blockly.addClass_(l,"blocklyContextMenu"),Blockly.bindEventWithChecks_(l,"contextmenu",null,Blockly.noEvent),r=goog.style.getSize(l);var s=e.clientX+i.x,g=e.clientY+i.y;e.clientY+r.height>=o.height&&(g-=r.height),t?r.width>=e.clientX&&(s+=r.width):e.clientX+r.width>=o.width&&(s-=r.width),Blockly.WidgetDiv.position(s,g,o,i,t),n.setAllowAutoFocus(!0),setTimeout(function(){l.focus()},1),Blockly.ContextMenu.currentBlock=null}else Blockly.ContextMenu.hide()},Blockly.ContextMenu.hide=function(){Blockly.WidgetDiv.hideIfOwner(Blockly.ContextMenu),Blockly.ContextMenu.currentBlock=null},Blockly.ContextMenu.callbackFactory=function(e,o){return function(){Blockly.Events.disable();try{var t=Blockly.Xml.domToBlock(o,e.workspace),n=e.getRelativeToSurfaceXY();n.x=e.RTL?n.x-Blockly.SNAP_RADIUS:n.x+Blockly.SNAP_RADIUS,n.y+=2*Blockly.SNAP_RADIUS,t.moveBy(n.x,n.y)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!t.isShadow()&&Blockly.Events.fire(new Blockly.Events.Create(t)),t.select()}},Blockly.RenderedConnection=function(e,o){Blockly.RenderedConnection.superClass_.constructor.call(this,e,o),this.offsetInBlock_=new goog.math.Coordinate(0,0)},goog.inherits(Blockly.RenderedConnection,Blockly.Connection),Blockly.RenderedConnection.prototype.distanceFrom=function(e){var o=this.x_-e.x_;return e=this.y_-e.y_,Math.sqrt(o*o+e*e)},Blockly.RenderedConnection.prototype.bumpAwayFrom_=function(e){if(Blockly.dragMode_==Blockly.DRAG_NONE){var o=this.sourceBlock_.getRootBlock();if(!o.isInFlyout){var t=!1;if(!o.isMovable()){if(o=e.getSourceBlock().getRootBlock(),!o.isMovable())return;e=this,t=!0}var n=Blockly.selected==o;n||o.addSelect();var r=e.x_+Blockly.SNAP_RADIUS-this.x_;e=e.y_+Blockly.SNAP_RADIUS-this.y_,t&&(e=-e),o.RTL&&(r=-r),o.moveBy(r,e),n||o.removeSelect()}}},Blockly.RenderedConnection.prototype.moveTo=function(e,o){this.inDB_&&this.db_.removeConnection_(this),this.x_=e,this.y_=o,this.hidden_||this.db_.addConnection(this)},Blockly.RenderedConnection.prototype.moveBy=function(e,o){this.moveTo(this.x_+e,this.y_+o)},Blockly.RenderedConnection.prototype.moveToOffset=function(e){this.moveTo(e.x+this.offsetInBlock_.x,e.y+this.offsetInBlock_.y)},Blockly.RenderedConnection.prototype.setOffsetInBlock=function(e,o){this.offsetInBlock_.x=e,this.offsetInBlock_.y=o},Blockly.RenderedConnection.prototype.tighten_=function(){var e=this.targetConnection.x_-this.x_,o=this.targetConnection.y_-this.y_;if(0!=e||0!=o){var t=this.targetBlock(),n=t.getSvgRoot();if(!n)throw"block is not rendered.";n=Blockly.getRelativeXY_(n),t.getSvgRoot().setAttribute("transform","translate("+(n.x-e)+","+(n.y-o)+")"),t.moveConnections_(-e,-o)}},Blockly.RenderedConnection.prototype.closest=function(e,o,t){return this.dbOpposite_.searchForClosest(this,e,o,t)},Blockly.RenderedConnection.prototype.highlight=function(){var e;e=this.type==Blockly.INPUT_VALUE||this.type==Blockly.OUTPUT_VALUE?"m 0,0 "+Blockly.BlockSvg.TAB_PATH_DOWN+" v 5":"m -20,0 h 5 "+Blockly.BlockSvg.NOTCH_PATH_LEFT+" h 5";var o=this.sourceBlock_.getRelativeToSurfaceXY();Blockly.Connection.highlightedPath_=Blockly.createSvgElement("path",{"class":"blocklyHighlightedConnectionPath",d:e,transform:"translate("+(this.x_-o.x)+","+(this.y_-o.y)+")"+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())},Blockly.RenderedConnection.prototype.unhideAll=function(){this.setHidden(!1);var e=[];if(this.type!=Blockly.INPUT_VALUE&&this.type!=Blockly.NEXT_STATEMENT)return e;var o=this.targetBlock();if(o){var t;o.isCollapsed()?(t=[],o.outputConnection&&t.push(o.outputConnection),o.nextConnection&&t.push(o.nextConnection),o.previousConnection&&t.push(o.previousConnection)):t=o.getConnections_(!0);for(var n=0;no?!1:Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this,e)},Blockly.RenderedConnection.prototype.disconnectInternal_=function(e,o){Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this,e,o),e.rendered&&e.render(),o.rendered&&(o.updateDisabled(),o.render())},Blockly.RenderedConnection.prototype.respawnShadow_=function(){var e=this.getSourceBlock(),o=this.getShadowDom();if(e.workspace&&o&&Blockly.Events.recordUndo){if(Blockly.RenderedConnection.superClass_.respawnShadow_.call(this),o=this.targetBlock(),!o)throw"Couldn't respawn the shadow block that should exist here.";o.initSvg(),o.render(!1),e.rendered&&e.render()}},Blockly.RenderedConnection.prototype.neighbours_=function(e){return this.dbOpposite_.getNeighbours(this,e)},Blockly.RenderedConnection.prototype.connect_=function(e){Blockly.RenderedConnection.superClass_.connect_.call(this,e);var o=this.getSourceBlock();e=e.getSourceBlock(),o.rendered&&o.updateDisabled(),e.rendered&&e.updateDisabled(),o.rendered&&e.rendered&&(this.type==Blockly.NEXT_STATEMENT||this.type==Blockly.PREVIOUS_STATEMENT?e.render():o.render())},Blockly.BlockSvg=function(e,o,t){this.svgGroup_=Blockly.createSvgElement("g",{},null),this.svgPathDark_=Blockly.createSvgElement("path",{"class":"blocklyPathDark",transform:"translate(1,1)"},this.svgGroup_),this.svgPath_=Blockly.createSvgElement("path",{"class":"blocklyPath"},this.svgGroup_),this.svgPathLight_=Blockly.createSvgElement("path",{"class":"blocklyPathLight"},this.svgGroup_),this.svgPath_.tooltip=this,this.rendered=!1,Blockly.Tooltip.bindMouseEvents(this.svgPath_),Blockly.BlockSvg.superClass_.constructor.call(this,e,o,t)},goog.inherits(Blockly.BlockSvg,Blockly.Block),Blockly.BlockSvg.prototype.height=0,Blockly.BlockSvg.prototype.width=0,Blockly.BlockSvg.prototype.dragStartXY_=null,Blockly.BlockSvg.INLINE=-1,Blockly.BlockSvg.prototype.initSvg=function(){goog.asserts.assert(this.workspace.rendered,"Workspace is headless.");for(var e,o=0;e=this.inputList[o];o++)e.init();for(e=this.getIcons(),o=0;othis.workspace.remainingCapacity()&&(n.enabled=!1),t.push(n),this.isEditable()&&!this.collapsed_&&this.workspace.options.comments&&(n={enabled:!goog.userAgent.IE},this.comment?(n.text=Blockly.Msg.REMOVE_COMMENT,n.callback=function(){o.setCommentText(null)}):(n.text=Blockly.Msg.ADD_COMMENT,n.callback=function(){o.setCommentText("")}),t.push(n)),!this.collapsed_)for(n=1;n=e.clientX&&0==e.clientY&&0==e.button)e.stopPropagation();else{var o=this.getRelativeToSurfaceXY(),t=this.workspace.moveDrag(e);if(Blockly.dragMode_==Blockly.DRAG_STICKY&&goog.math.Coordinate.distance(o,t)*this.workspace.scale>Blockly.DRAG_RADIUS){if(Blockly.dragMode_=Blockly.DRAG_FREE,Blockly.longStop_(),this.workspace.setResizesEnabled(!1),this.parentBlock_){this.unplug();var n=this.getSvgRoot();n.translate_="translate("+t.x+","+t.y+")",this.disconnectUiEffect()}this.setDragging_(!0)}if(Blockly.dragMode_==Blockly.DRAG_FREE){for(o=goog.math.Coordinate.difference(o,this.dragStartXY_),n=this.getSvgRoot(),n.translate_="translate("+t.x+","+t.y+")",n.setAttribute("transform",n.translate_+n.skew_),t=0;t1?goog.dom.removeNode(e):(e.setAttribute("transform","translate("+(e.translateX_+(o?-1:1)*e.bBox_.width*n/2*r)+","+(e.translateY_+e.bBox_.height*n*r)+") scale("+(1-r)*n+")"),setTimeout(function(){Blockly.BlockSvg.disposeUiStep_(e,o,t,n)},10))},Blockly.BlockSvg.prototype.connectionUiEffect=function(){if(this.workspace.playAudio("click"),!(1>this.workspace.scale)){var e=Blockly.getSvgXY_(this.svgGroup_,this.workspace);this.outputConnection?(e.x+=(this.RTL?3:-3)*this.workspace.scale,e.y+=13*this.workspace.scale):this.previousConnection&&(e.x+=(this.RTL?-23:23)*this.workspace.scale,e.y+=3*this.workspace.scale),e=Blockly.createSvgElement("circle",{cx:e.x,cy:e.y,r:0,fill:"none",stroke:"#888","stroke-width":10},this.workspace.getParentSvg()),Blockly.BlockSvg.connectionUiStep_(e,new Date,this.workspace.scale)}},Blockly.BlockSvg.connectionUiStep_=function(e,o,t){var n=(new Date-o)/150;n>1?goog.dom.removeNode(e):(e.setAttribute("r",25*n*t),e.style.opacity=1-n,Blockly.BlockSvg.disconnectUiStop_.pid_=setTimeout(function(){Blockly.BlockSvg.connectionUiStep_(e,o,t)},10))},Blockly.BlockSvg.prototype.disconnectUiEffect=function(){if(this.workspace.playAudio("disconnect"),!(1>this.workspace.scale)){var e=this.getHeightWidth().height,e=Math.atan(10/e)/Math.PI*180;this.RTL||(e*=-1),Blockly.BlockSvg.disconnectUiStep_(this.svgGroup_,e,new Date)}},Blockly.BlockSvg.disconnectUiStep_=function(e,o,t){var n=(new Date-t)/200;n>1?e.skew_="":(e.skew_="skewX("+Math.round(Math.sin(n*Math.PI*3)*(1-n)*o)+")",Blockly.BlockSvg.disconnectUiStop_.group=e,Blockly.BlockSvg.disconnectUiStop_.pid=setTimeout(function(){Blockly.BlockSvg.disconnectUiStep_(e,o,t)},10)),e.setAttribute("transform",e.translate_+e.skew_)},Blockly.BlockSvg.disconnectUiStop_=function(){if(Blockly.BlockSvg.disconnectUiStop_.group){clearTimeout(Blockly.BlockSvg.disconnectUiStop_.pid);var e=Blockly.BlockSvg.disconnectUiStop_.group;e.skew_="",e.setAttribute("transform",e.translate_),Blockly.BlockSvg.disconnectUiStop_.group=null}},Blockly.BlockSvg.disconnectUiStop_.pid=0,Blockly.BlockSvg.disconnectUiStop_.group=null,Blockly.BlockSvg.prototype.updateColour=function(){if(!this.disabled){var e=this.getColour(),o=goog.color.hexToRgb(e);if(this.isShadow())o=goog.color.lighten(o,.6),e=goog.color.rgbArrayToHex(o),this.svgPathLight_.style.display="none",this.svgPathDark_.setAttribute("fill",e);else{this.svgPathLight_.style.display="";var t=goog.color.rgbArrayToHex(goog.color.lighten(o,.3)),o=goog.color.rgbArrayToHex(goog.color.darken(o,.2));this.svgPathLight_.setAttribute("stroke",t),this.svgPathDark_.setAttribute("fill",o)}for(this.svgPath_.setAttribute("fill",e),e=this.getIcons(),t=0;t=0;r--)t[r].isNull()&&t.splice(r,1);for(o||t.reverse(),r=1;n=t[r];r++)n.type==Blockly.Events.CHANGE&&"mutation"==n.element&&t.unshift(t.splice(r,1)[0]);return t},Blockly.Events.clearPendingUndo=function(){for(var e,o=0;e=Blockly.Events.FIRE_QUEUE_[o];o++)e.recordUndo=!1},Blockly.Events.disable=function(){Blockly.Events.disabled_++},Blockly.Events.enable=function(){Blockly.Events.disabled_--},Blockly.Events.isEnabled=function(){return 0==Blockly.Events.disabled_},Blockly.Events.getGroup=function(){return Blockly.Events.group_},Blockly.Events.setGroup=function(e){Blockly.Events.group_="boolean"==typeof e?e?Blockly.genUid():"":e},Blockly.Events.getDescendantIds_=function(e){var o=[];e=e.getDescendants();for(var t,n=0;t=e[n];n++)o[n]=t.id;return o},Blockly.Events.fromJson=function(e,o){var t;switch(e.type){case Blockly.Events.CREATE:t=new Blockly.Events.Create(null);break;case Blockly.Events.DELETE:t=new Blockly.Events.Delete(null);break;case Blockly.Events.CHANGE:t=new Blockly.Events.Change(null);break;case Blockly.Events.MOVE:t=new Blockly.Events.Move(null);break;case Blockly.Events.UI:t=new Blockly.Events.Ui(null);break;default:throw"Unknown event type."}return t.fromJson(e),t.workspaceId=o.id,t},Blockly.Events.Abstract=function(e){e&&(this.blockId=e.id,this.workspaceId=e.workspace.id),this.group=Blockly.Events.group_,this.recordUndo=Blockly.Events.recordUndo},Blockly.Events.Abstract.prototype.toJson=function(){var e={type:this.type};return this.blockId&&(e.blockId=this.blockId),this.group&&(e.group=this.group),e},Blockly.Events.Abstract.prototype.fromJson=function(e){this.blockId=e.blockId,this.group=e.group},Blockly.Events.Abstract.prototype.isNull=function(){return!1},Blockly.Events.Abstract.prototype.run=function(e){},Blockly.Events.Create=function(e){e&&(Blockly.Events.Create.superClass_.constructor.call(this,e),this.xml=Blockly.Xml.blockToDomWithXY(e),this.ids=Blockly.Events.getDescendantIds_(e))},goog.inherits(Blockly.Events.Create,Blockly.Events.Abstract),Blockly.Events.Create.prototype.type=Blockly.Events.CREATE,Blockly.Events.Create.prototype.toJson=function(){var e=Blockly.Events.Create.superClass_.toJson.call(this);return e.xml=Blockly.Xml.domToText(this.xml),e.ids=this.ids,e},Blockly.Events.Create.prototype.fromJson=function(e){Blockly.Events.Create.superClass_.fromJson.call(this,e),this.xml=Blockly.Xml.textToDom(""+e.xml+"").firstChild,this.ids=e.ids},Blockly.Events.Create.prototype.run=function(e){var o=Blockly.Workspace.getById(this.workspaceId);if(e)e=goog.dom.createDom("xml"),e.appendChild(this.xml),Blockly.Xml.domToWorkspace(e,o);else{e=0;for(var t;t=this.ids[e];e++){var n=o.getBlockById(t);n?n.dispose(!1,!1):t==this.blockId&&console.warn("Can't uncreate non-existant block: "+t)}}},Blockly.Events.Delete=function(e){if(e){if(e.getParent())throw"Connected blocks cannot be deleted.";Blockly.Events.Delete.superClass_.constructor.call(this,e),this.oldXml=Blockly.Xml.blockToDomWithXY(e),this.ids=Blockly.Events.getDescendantIds_(e)}},goog.inherits(Blockly.Events.Delete,Blockly.Events.Abstract),Blockly.Events.Delete.prototype.type=Blockly.Events.DELETE,Blockly.Events.Delete.prototype.toJson=function(){var e=Blockly.Events.Delete.superClass_.toJson.call(this);return e.ids=this.ids,e},Blockly.Events.Delete.prototype.fromJson=function(e){Blockly.Events.Delete.superClass_.fromJson.call(this,e),this.ids=e.ids},Blockly.Events.Delete.prototype.run=function(e){var o=Blockly.Workspace.getById(this.workspaceId);if(e){e=0;for(var t;t=this.ids[e];e++){var n=o.getBlockById(t);n?n.dispose(!1,!1):t==this.blockId&&console.warn("Can't delete non-existant block: "+t)}}else e=goog.dom.createDom("xml"),e.appendChild(this.oldXml),Blockly.Xml.domToWorkspace(e,o)},Blockly.Events.Change=function(e,o,t,n,r){e&&(Blockly.Events.Change.superClass_.constructor.call(this,e),this.element=o,this.name=t,this.oldValue=n,this.newValue=r)},goog.inherits(Blockly.Events.Change,Blockly.Events.Abstract),Blockly.Events.Change.prototype.type=Blockly.Events.CHANGE,Blockly.Events.Change.prototype.toJson=function(){var e=Blockly.Events.Change.superClass_.toJson.call(this);return e.element=this.element,this.name&&(e.name=this.name),e.newValue=this.newValue,e},Blockly.Events.Change.prototype.fromJson=function(e){Blockly.Events.Change.superClass_.fromJson.call(this,e),this.element=e.element,this.name=e.name,this.newValue=e.newValue},Blockly.Events.Change.prototype.isNull=function(){return this.oldValue==this.newValue},Blockly.Events.Change.prototype.run=function(e){var o=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId);if(o)switch(o.mutator&&o.mutator.setVisible(!1),e=e?this.newValue:this.oldValue,this.element){case"field":(o=o.getField(this.name))?(o.callValidator(e),o.setValue(e)):console.warn("Can't set non-existant field: "+this.name);break;case"comment":o.setCommentText(e||null);break;case"collapsed":o.setCollapsed(e);break;case"disabled":o.setDisabled(e);break;case"inline":o.setInputsInline(e);break;case"mutation":var t="";if(o.mutationToDom&&(t=(t=o.mutationToDom())&&Blockly.Xml.domToText(t)),o.domToMutation){e=e||"";var n=Blockly.Xml.textToDom(""+e+"");o.domToMutation(n.firstChild)}Blockly.Events.fire(new Blockly.Events.Change(o,"mutation",null,t,e));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can't change non-existant block: "+this.blockId)},Blockly.Events.Move=function(e){e&&(Blockly.Events.Move.superClass_.constructor.call(this,e),e=this.currentLocation_(),this.oldParentId=e.parentId,this.oldInputName=e.inputName,this.oldCoordinate=e.coordinate)},goog.inherits(Blockly.Events.Move,Blockly.Events.Abstract),Blockly.Events.Move.prototype.type=Blockly.Events.MOVE,Blockly.Events.Move.prototype.toJson=function(){var e=Blockly.Events.Move.superClass_.toJson.call(this);return this.newParentId&&(e.newParentId=this.newParentId),this.newInputName&&(e.newInputName=this.newInputName),this.newCoordinate&&(e.newCoordinate=Math.round(this.newCoordinate.x)+","+Math.round(this.newCoordinate.y)),e},Blockly.Events.Move.prototype.fromJson=function(e){Blockly.Events.Move.superClass_.fromJson.call(this,e),this.newParentId=e.newParentId,this.newInputName=e.newInputName,e.newCoordinate&&(e=e.newCoordinate.split(","),this.newCoordinate=new goog.math.Coordinate(parseFloat(e[0]),parseFloat(e[1])))},Blockly.Events.Move.prototype.recordNew=function(){var e=this.currentLocation_();this.newParentId=e.parentId,this.newInputName=e.inputName,this.newCoordinate=e.coordinate},Blockly.Events.Move.prototype.currentLocation_=function(){var e=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId),o={},t=e.getParent();return t?(o.parentId=t.id,(e=t.getInputWithBlock(e))&&(o.inputName=e.name)):o.coordinate=e.getRelativeToSurfaceXY(),o},Blockly.Events.Move.prototype.isNull=function(){return this.oldParentId==this.newParentId&&this.oldInputName==this.newInputName&&goog.math.Coordinate.equals(this.oldCoordinate,this.newCoordinate)},Blockly.Events.Move.prototype.run=function(e){var o=Blockly.Workspace.getById(this.workspaceId),t=o.getBlockById(this.blockId);if(t){var n=e?this.newParentId:this.oldParentId,r=e?this.newInputName:this.oldInputName;e=e?this.newCoordinate:this.oldCoordinate;var i=null;if(n&&(i=o.getBlockById(n),!i))return void console.warn("Can't connect to non-existant block: "+n);if(t.getParent()&&t.unplug(),e)r=t.getRelativeToSurfaceXY(),t.moveBy(e.x-r.x,e.y-r.y);else{var s,t=t.outputConnection||t.previousConnection;r?(o=i.getInput(r))&&(s=o.connection):t.type==Blockly.PREVIOUS_STATEMENT&&(s=i.nextConnection),s?t.connect(s):console.warn("Can't connect to non-existant input: "+r)}}else console.warn("Can't move non-existant block: "+this.blockId)},Blockly.Events.Ui=function(e,o,t,n){Blockly.Events.Ui.superClass_.constructor.call(this,e),this.element=o,this.oldValue=t,this.newValue=n,this.recordUndo=!1},goog.inherits(Blockly.Events.Ui,Blockly.Events.Abstract),Blockly.Events.Ui.prototype.type=Blockly.Events.UI,Blockly.Events.Ui.prototype.toJson=function(){var e=Blockly.Events.Ui.superClass_.toJson.call(this);return e.element=this.element,void 0!==this.newValue&&(e.newValue=this.newValue),e},Blockly.Events.Ui.prototype.fromJson=function(e){Blockly.Events.Ui.superClass_.fromJson.call(this,e),this.element=e.element,this.newValue=e.newValue},Blockly.Events.disableOrphans=function(e){if(e.type==Blockly.Events.MOVE||e.type==Blockly.Events.CREATE){if(Blockly.Events.disable(),e=Blockly.Workspace.getById(e.workspaceId).getBlockById(e.blockId))if(e.getParent()&&!e.getParent().disabled){e=e.getDescendants();for(var o,t=0;o=e[t];t++)o.setDisabled(!1)}else if((e.outputConnection||e.previousConnection)&&Blockly.dragMode_==Blockly.DRAG_NONE)do e.setDisabled(!0),e=e.getNextBlock();while(e);Blockly.Events.enable()}},Blockly.Msg={},goog.getMsgOrig=goog.getMsg,goog.getMsg=function(e,o){var t=goog.getMsg.blocklyMsgMap[e];return t&&(e=Blockly.Msg[t]),goog.getMsgOrig(e,o)},goog.getMsg.blocklyMsgMap={Today:"TODAY"},Blockly.FieldTextInput=function(e,o){Blockly.FieldTextInput.superClass_.constructor.call(this,e,o)},goog.inherits(Blockly.FieldTextInput,Blockly.Field),Blockly.FieldTextInput.FONTSIZE=11,Blockly.FieldTextInput.prototype.CURSOR="text",Blockly.FieldTextInput.prototype.spellcheck_=!0,Blockly.FieldTextInput.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this),Blockly.FieldTextInput.superClass_.dispose.call(this)},Blockly.FieldTextInput.prototype.setValue=function(e){if(null!==e){if(this.sourceBlock_){var o=this.callValidator(e);null!==o&&(e=o)}Blockly.Field.prototype.setValue.call(this,e)}},Blockly.FieldTextInput.prototype.setSpellcheck=function(e){this.spellcheck_=e},Blockly.FieldTextInput.prototype.showEditor_=function(e){if(this.workspace_=this.sourceBlock_.workspace,e=e||!1,!e&&(goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD)){var o=this;Blockly.prompt(Blockly.Msg.CHANGE_VALUE_TITLE,this.text_,function(e){o.sourceBlock_&&(e=o.callValidator(e)),o.setValue(e)})}else{Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,this.widgetDispose_());var t=Blockly.WidgetDiv.DIV,n=goog.dom.createDom("INPUT","blocklyHtmlInput");n.setAttribute("spellcheck",this.spellcheck_);var r=Blockly.FieldTextInput.FONTSIZE*this.workspace_.scale+"pt";t.style.fontSize=r,n.style.fontSize=r,Blockly.FieldTextInput.htmlInput_=n,t.appendChild(n),n.value=n.defaultValue=this.text_,n.oldValue_=null,this.validate_(),this.resizeEditor_(),e||(n.focus(),n.select()),n.onKeyDownWrapper_=Blockly.bindEventWithChecks_(n,"keydown",this,this.onHtmlInputKeyDown_),n.onKeyUpWrapper_=Blockly.bindEventWithChecks_(n,"keyup",this,this.onHtmlInputChange_),n.onKeyPressWrapper_=Blockly.bindEventWithChecks_(n,"keypress",this,this.onHtmlInputChange_),n.onWorkspaceChangeWrapper_=this.resizeEditor_.bind(this),this.workspace_.addChangeListener(n.onWorkspaceChangeWrapper_)}},Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_=function(e){var o=Blockly.FieldTextInput.htmlInput_;13==e.keyCode?Blockly.WidgetDiv.hide():27==e.keyCode?(o.value=o.defaultValue,Blockly.WidgetDiv.hide()):9==e.keyCode&&(Blockly.WidgetDiv.hide(),this.sourceBlock_.tab(this,!e.shiftKey),e.preventDefault())},Blockly.FieldTextInput.prototype.onHtmlInputChange_=function(e){e=Blockly.FieldTextInput.htmlInput_;var o=e.value;o!==e.oldValue_?(e.oldValue_=o,this.setValue(o),this.validate_()):goog.userAgent.WEBKIT&&this.sourceBlock_.render(),this.resizeEditor_(),Blockly.svgResize(this.sourceBlock_.workspace)},Blockly.FieldTextInput.prototype.validate_=function(){var e=!0;goog.asserts.assertObject(Blockly.FieldTextInput.htmlInput_);var o=Blockly.FieldTextInput.htmlInput_;this.sourceBlock_&&(e=this.callValidator(o.value)),null===e?Blockly.addClass_(o,"blocklyInvalidInput"):Blockly.removeClass_(o,"blocklyInvalidInput")},Blockly.FieldTextInput.prototype.resizeEditor_=function(){var e=Blockly.WidgetDiv.DIV,o=this.fieldGroup_.getBBox();if(e.style.width=o.width*this.workspace_.scale+"px",e.style.height=o.height*this.workspace_.scale+"px",o=this.getAbsoluteXY_(),this.sourceBlock_.RTL){var t=this.getScaledBBox_();o.x+=t.width,o.x-=e.offsetWidth}o.y+=1,goog.userAgent.GECKO&&Blockly.WidgetDiv.DIV.style.top&&(--o.x,--o.y),goog.userAgent.WEBKIT&&(o.y-=3),e.style.left=o.x+"px",e.style.top=o.y+"px"},Blockly.FieldTextInput.prototype.widgetDispose_=function(){var e=this;return function(){var o=Blockly.FieldTextInput.htmlInput_,t=o.value;e.sourceBlock_&&(t=e.callValidator(t),null===t?t=o.defaultValue:e.onFinishEditing_&&e.onFinishEditing_(t)),e.setValue(t),e.sourceBlock_.rendered&&e.sourceBlock_.render(),Blockly.unbindEvent_(o.onKeyDownWrapper_),Blockly.unbindEvent_(o.onKeyUpWrapper_),Blockly.unbindEvent_(o.onKeyPressWrapper_),e.workspace_.removeChangeListener(o.onWorkspaceChangeWrapper_),Blockly.FieldTextInput.htmlInput_=null,o=Blockly.WidgetDiv.DIV.style,o.width="auto",o.height="auto",o.fontSize=""}},Blockly.FieldTextInput.numberValidator=function(e){return console.warn("Blockly.FieldTextInput.numberValidator is deprecated. Use Blockly.FieldNumber instead."),null===e?null:(e=String(e),e=e.replace(/O/gi,"0"),e=e.replace(/,/g,""),e=parseFloat(e||0),isNaN(e)?null:String(e))},Blockly.FieldTextInput.nonnegativeIntegerValidator=function(e){return(e=Blockly.FieldTextInput.numberValidator(e))&&(e=String(Math.max(0,Math.floor(e)))),e},Blockly.FieldAngle=function(e,o){this.symbol_=Blockly.createSvgElement("tspan",{},null),this.symbol_.appendChild(document.createTextNode("°")),Blockly.FieldAngle.superClass_.constructor.call(this,e,o)},goog.inherits(Blockly.FieldAngle,Blockly.FieldTextInput),Blockly.FieldAngle.ROUND=15,Blockly.FieldAngle.HALF=50,Blockly.FieldAngle.CLOCKWISE=!1,Blockly.FieldAngle.OFFSET=0,Blockly.FieldAngle.WRAP=360,Blockly.FieldAngle.RADIUS=Blockly.FieldAngle.HALF-1,Blockly.FieldAngle.prototype.dispose_=function(){var e=this;return function(){Blockly.FieldAngle.superClass_.dispose_.call(e)(),e.gauge_=null,e.clickWrapper_&&Blockly.unbindEvent_(e.clickWrapper_),e.moveWrapper1_&&Blockly.unbindEvent_(e.moveWrapper1_),e.moveWrapper2_&&Blockly.unbindEvent_(e.moveWrapper2_)}},Blockly.FieldAngle.prototype.showEditor_=function(){Blockly.FieldAngle.superClass_.showEditor_.call(this,goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD);var e=Blockly.WidgetDiv.DIV;if(e.firstChild){var e=Blockly.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml", "xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",height:2*Blockly.FieldAngle.HALF+"px",width:2*Blockly.FieldAngle.HALF+"px"},e),o=Blockly.createSvgElement("circle",{cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},e);this.gauge_=Blockly.createSvgElement("path",{"class":"blocklyAngleGauge"},e),this.line_=Blockly.createSvgElement("line",{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},e);for(var t=0;360>t;t+=15)Blockly.createSvgElement("line",{x1:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS,y1:Blockly.FieldAngle.HALF,x2:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS-(0==t%45?10:5),y2:Blockly.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+t+","+Blockly.FieldAngle.HALF+","+Blockly.FieldAngle.HALF+")"},e);e.style.marginLeft=15-Blockly.FieldAngle.RADIUS+"px",this.clickWrapper_=Blockly.bindEvent_(e,"click",this,Blockly.WidgetDiv.hide),this.moveWrapper1_=Blockly.bindEvent_(o,"mousemove",this,this.onMouseMove),this.moveWrapper2_=Blockly.bindEvent_(this.gauge_,"mousemove",this,this.onMouseMove),this.updateGraph_()}},Blockly.FieldAngle.prototype.onMouseMove=function(e){var o=this.gauge_.ownerSVGElement.getBoundingClientRect(),t=e.clientX-o.left-Blockly.FieldAngle.HALF;e=e.clientY-o.top-Blockly.FieldAngle.HALF,o=Math.atan(-e/t),isNaN(o)||(o=goog.math.toDegrees(o),0>t?o+=180:e>0&&(o+=360),o=Blockly.FieldAngle.CLOCKWISE?Blockly.FieldAngle.OFFSET+360-o:o-Blockly.FieldAngle.OFFSET,Blockly.FieldAngle.ROUND&&(o=Math.round(o/Blockly.FieldAngle.ROUND)*Blockly.FieldAngle.ROUND),o=this.callValidator(o),Blockly.FieldTextInput.htmlInput_.value=o,this.setValue(o),this.validate_(),this.resizeEditor_())},Blockly.FieldAngle.prototype.setText=function(e){Blockly.FieldAngle.superClass_.setText.call(this,e),this.textElement_&&(this.updateGraph_(),this.sourceBlock_.RTL?this.textElement_.insertBefore(this.symbol_,this.textElement_.firstChild):this.textElement_.appendChild(this.symbol_),this.size_.width=0)},Blockly.FieldAngle.prototype.updateGraph_=function(){if(this.gauge_){var e=Number(this.getText())+Blockly.FieldAngle.OFFSET,o=goog.math.toRadians(e),e=["M ",Blockly.FieldAngle.HALF,",",Blockly.FieldAngle.HALF],t=Blockly.FieldAngle.HALF,n=Blockly.FieldAngle.HALF;if(!isNaN(o)){var r=goog.math.toRadians(Blockly.FieldAngle.OFFSET),i=Math.cos(r)*Blockly.FieldAngle.RADIUS,s=Math.sin(r)*-Blockly.FieldAngle.RADIUS;Blockly.FieldAngle.CLOCKWISE&&(o=2*r-o),t+=Math.cos(o)*Blockly.FieldAngle.RADIUS,n-=Math.sin(o)*Blockly.FieldAngle.RADIUS,o=Math.abs(Math.floor((o-r)/Math.PI)%2),Blockly.FieldAngle.CLOCKWISE&&(o=1-o),e.push(" l ",i,",",s," A ",Blockly.FieldAngle.RADIUS,",",Blockly.FieldAngle.RADIUS," 0 ",o," ",Number(Blockly.FieldAngle.CLOCKWISE)," ",t,",",n," z")}this.gauge_.setAttribute("d",e.join("")),this.line_.setAttribute("x2",t),this.line_.setAttribute("y2",n)}},Blockly.FieldAngle.prototype.classValidator=function(e){return null===e?null:(e=parseFloat(e||0),isNaN(e)?null:(e%=360,0>e&&(e+=360),e>Blockly.FieldAngle.WRAP&&(e-=360),String(e)))},Blockly.FieldCheckbox=function(e,o){Blockly.FieldCheckbox.superClass_.constructor.call(this,"",o),this.setValue(e)},goog.inherits(Blockly.FieldCheckbox,Blockly.Field),Blockly.FieldCheckbox.CHECK_CHAR="✓",Blockly.FieldCheckbox.prototype.CURSOR="default",Blockly.FieldCheckbox.prototype.init=function(){if(!this.fieldGroup_){Blockly.FieldCheckbox.superClass_.init.call(this),this.checkElement_=Blockly.createSvgElement("text",{"class":"blocklyText blocklyCheckbox",x:-3,y:14},this.fieldGroup_);var e=document.createTextNode(Blockly.FieldCheckbox.CHECK_CHAR);this.checkElement_.appendChild(e),this.checkElement_.style.display=this.state_?"block":"none"}},Blockly.FieldCheckbox.prototype.getValue=function(){return String(this.state_).toUpperCase()},Blockly.FieldCheckbox.prototype.setValue=function(e){e="TRUE"==e.toUpperCase(),this.state_!==e&&(this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.state_,e)),this.state_=e,this.checkElement_&&(this.checkElement_.style.display=e?"block":"none"))},Blockly.FieldCheckbox.prototype.showEditor_=function(){var e=!this.state_;this.sourceBlock_&&(e=this.callValidator(e)),null!==e&&this.setValue(String(e).toUpperCase())},Blockly.FieldColour=function(e,o){Blockly.FieldColour.superClass_.constructor.call(this,e,o),this.setText(Blockly.Field.NBSP+Blockly.Field.NBSP+Blockly.Field.NBSP)},goog.inherits(Blockly.FieldColour,Blockly.Field),Blockly.FieldColour.prototype.colours_=null,Blockly.FieldColour.prototype.columns_=0,Blockly.FieldColour.prototype.init=function(){Blockly.FieldColour.superClass_.init.call(this),this.borderRect_.style.fillOpacity=1,this.setValue(this.getValue())},Blockly.FieldColour.prototype.CURSOR="default",Blockly.FieldColour.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this),Blockly.FieldColour.superClass_.dispose.call(this)},Blockly.FieldColour.prototype.getValue=function(){return this.colour_},Blockly.FieldColour.prototype.setValue=function(e){this.sourceBlock_&&Blockly.Events.isEnabled()&&this.colour_!=e&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.colour_,e)),this.colour_=e,this.borderRect_&&(this.borderRect_.style.fill=e)},Blockly.FieldColour.prototype.getText=function(){var e=this.colour_,o=e.match(/^#(.)\1(.)\2(.)\3$/);return o&&(e="#"+o[1]+o[2]+o[3]),e},Blockly.FieldColour.COLOURS=goog.ui.ColorPicker.SIMPLE_GRID_COLORS,Blockly.FieldColour.COLUMNS=7,Blockly.FieldColour.prototype.setColours=function(e){return this.colours_=e,this},Blockly.FieldColour.prototype.setColumns=function(e){return this.columns_=e,this},Blockly.FieldColour.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,Blockly.FieldColour.widgetDispose_);var e=new goog.ui.ColorPicker;e.setSize(this.columns_||Blockly.FieldColour.COLUMNS),e.setColors(this.colours_||Blockly.FieldColour.COLOURS);var o=goog.dom.getViewportSize(),t=goog.style.getViewportPageOffset(document),n=this.getAbsoluteXY_(),r=this.getScaledBBox_();e.render(Blockly.WidgetDiv.DIV),e.setSelectedColor(this.getValue());var i=goog.style.getSize(e.getElement());n.y=n.y+i.height+r.height>=o.height+t.y?n.y-(i.height-1):n.y+(r.height-1),this.sourceBlock_.RTL?(n.x+=r.width,n.x-=i.width,n.xo.width+t.x-i.width&&(n.x=o.width+t.x-i.width),Blockly.WidgetDiv.position(n.x,n.y,o,t,this.sourceBlock_.RTL);var s=this;Blockly.FieldColour.changeEventKey_=goog.events.listen(e,goog.ui.ColorPicker.EventType.CHANGE,function(e){e=e.target.getSelectedColor()||"#000000",Blockly.WidgetDiv.hide(),s.sourceBlock_&&(e=s.callValidator(e)),null!==e&&s.setValue(e)})},Blockly.FieldColour.widgetDispose_=function(){Blockly.FieldColour.changeEventKey_&&goog.events.unlistenByKey(Blockly.FieldColour.changeEventKey_)},Blockly.FieldDropdown=function(e,o){this.menuGenerator_=e,this.trimOptions_();var t=this.getOptions_()[0];Blockly.FieldDropdown.superClass_.constructor.call(this,t[1],o)},goog.inherits(Blockly.FieldDropdown,Blockly.Field),Blockly.FieldDropdown.CHECKMARK_OVERHANG=25,Blockly.FieldDropdown.ARROW_CHAR=goog.userAgent.ANDROID?"▼":"▾",Blockly.FieldDropdown.prototype.CURSOR="default",Blockly.FieldDropdown.prototype.value_="",Blockly.FieldDropdown.prototype.init=function(){if(!this.fieldGroup_){this.arrow_=Blockly.createSvgElement("tspan",{},null),this.arrow_.appendChild(document.createTextNode(this.sourceBlock_.RTL?Blockly.FieldDropdown.ARROW_CHAR+" ":" "+Blockly.FieldDropdown.ARROW_CHAR)),Blockly.FieldDropdown.superClass_.init.call(this);var e=this.text_;this.text_=null,this.setText(e)}},Blockly.FieldDropdown.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,null);var e=this,o=new goog.ui.Menu;o.setRightToLeft(this.sourceBlock_.RTL);for(var t=this.getOptions_(),n=0;n=t.height+n.y?r.y-(l.height+2):r.y+i.height,this.sourceBlock_.RTL?(r.x+=i.width,r.x+=Blockly.FieldDropdown.CHECKMARK_OVERHANG,r.xt.width+n.x-l.width&&(r.x=t.width+n.x-l.width)),Blockly.WidgetDiv.position(r.x,r.y,t,n,this.sourceBlock_.RTL),o.setAllowAutoFocus(!0),s.focus()},Blockly.FieldDropdown.prototype.onItemSelected=function(e,o){var t=o.getValue();this.sourceBlock_&&(t=this.callValidator(t)),null!==t&&this.setValue(t)},Blockly.FieldDropdown.prototype.trimOptions_=function(){this.suffixField=this.prefixField=null;var e=this.menuGenerator_;if(goog.isArray(e)&&!(2>e.length)){var o=e.map(function(e){return e[0]}),t=Blockly.shortestStringLength(o),n=Blockly.commonWordPrefix(o,t),r=Blockly.commonWordSuffix(o,t);if((n||r)&&!(n+r>=t)){for(n&&(this.prefixField=o[0].substring(0,n-1)),r&&(this.suffixField=o[0].substr(1-r)),o=[],t=0;to.contentWidth-o.viewWidth)){var t=e.clientX-this.startDragMouseX_;this.startDragMouseX_=e.clientX,e=o.viewLeft-t,e=goog.math.clamp(e,0,o.contentWidth-o.viewWidth),this.scrollbar_.set(e)}}else 0>o.contentHeight-o.viewHeight||(t=e.clientY-this.startDragMouseY_,this.startDragMouseY_=e.clientY,e=o.viewTop-t,e=goog.math.clamp(e,0,o.contentHeight-o.viewHeight),this.scrollbar_.set(e))},Blockly.Flyout.prototype.onMouseMoveBlock_=function(e){"mousemove"==e.type&&1>=e.clientX&&0==e.clientY&&0==e.button||(this.determineDragIntention_(e.clientX-Blockly.Flyout.startDownEvent_.clientX,e.clientY-Blockly.Flyout.startDownEvent_.clientY)?(Blockly.longStop_(),this.createBlockFunc_(Blockly.Flyout.startBlock_)(Blockly.Flyout.startDownEvent_)):this.dragMode_==Blockly.DRAG_FREE&&(Blockly.longStop_(),this.onMouseMove_(e))),e.stopPropagation()},Blockly.Flyout.prototype.determineDragIntention_=function(e,o){return this.dragMode_==Blockly.DRAG_FREE?!1:Math.sqrt(e*e+o*o)t&&t>90-n||t>-90-n&&-90+n>t)return!0}else if(n>t&&t>-n||-180+n>t||t>180-n)return!0;return!1},Blockly.Flyout.prototype.createBlockFunc_=function(e){var o=this;return function(t){if(!Blockly.isRightButton(t)&&!e.disabled){Blockly.Events.disable();try{var n=o.placeNewBlock_(e)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&(Blockly.Events.setGroup(!0),Blockly.Events.fire(new Blockly.Events.Create(n))),o.autoClose?o.hide():o.filterForCapacity_(),n.onMouseDown_(t),Blockly.dragMode_=Blockly.DRAG_FREE,n.setDragging_(!0),o.targetWorkspace_.setResizesEnabled(!1)}}},Blockly.Flyout.prototype.placeNewBlock_=function(e){var o=this.targetWorkspace_,t=e.getSvgRoot();if(!t)throw"originBlock is not rendered.";var t=Blockly.getSvgXY_(t,o),n=this.workspace_.scrollX,r=this.workspace_.scale;if(t.x+=n/r-n,this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&&(n=o.getMetrics().viewWidth-this.width_,r=o.scale,t.x+=n/r-n),n=this.workspace_.scrollY,r=this.workspace_.scale,t.y+=n/r-n, this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&&(n=o.getMetrics().viewHeight-this.height_,r=o.scale,t.y+=n/r-n),e=Blockly.Xml.blockToDom(e),e=Blockly.Xml.domToBlock(e,o),r=e.getSvgRoot(),!r)throw"block is not rendered.";return r=Blockly.getSvgXY_(r,o),r.x+=o.scrollX/o.scale-o.scrollX,r.y+=o.scrollY/o.scale-o.scrollY,o.toolbox_&&!o.scrollbar&&(r.x+=o.toolbox_.getWidth()/o.scale,r.y+=o.toolbox_.getHeight()/o.scale),e.moveBy(t.x-r.x,t.y-r.y),e},Blockly.Flyout.prototype.filterForCapacity_=function(){for(var e,o=this.targetWorkspace_.remainingCapacity(),t=this.workspace_.getTopBlocks(!1),n=0;e=t[n];n++)if(-1==this.permanentlyDisabled_.indexOf(e)){var r=e.getDescendants();e.setDisabled(r.length>o)}},Blockly.Flyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var e=this.svgGroup_.getBoundingClientRect(),o=e.left,t=e.top,n=e.width,e=e.height;return this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP?new goog.math.Rect(-1e9,t-1e9,2e9,1e9+e):this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM?new goog.math.Rect(-1e9,t,2e9,1e9+e):this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(o-1e9,-1e9,1e9+n,2e9):new goog.math.Rect(o,-1e9,1e9+n,2e9)},Blockly.Flyout.terminateDrag_=function(){Blockly.Flyout.startFlyout_&&(Blockly.Flyout.startFlyout_.dragMode_==Blockly.DRAG_FREE&&Blockly.Touch.clearTouchIdentifier(),Blockly.Flyout.startFlyout_.dragMode_=Blockly.DRAG_NONE,Blockly.Flyout.startFlyout_=null),Blockly.Flyout.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseUpWrapper_),Blockly.Flyout.onMouseUpWrapper_=null),Blockly.Flyout.onMouseMoveBlockWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveBlockWrapper_),Blockly.Flyout.onMouseMoveBlockWrapper_=null),Blockly.Flyout.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveWrapper_),Blockly.Flyout.onMouseMoveWrapper_=null),Blockly.Flyout.startDownEvent_=null,Blockly.Flyout.startBlock_=null},Blockly.Flyout.prototype.reflowHorizontal=function(e){this.workspace_.scale=this.targetWorkspace_.scale;for(var o,t=0,n=0;o=e[n];n++)t=Math.max(t,o.getHeightWidth().height);if(t+=1.5*this.MARGIN,t*=this.workspace_.scale,t+=Blockly.Scrollbar.scrollbarThickness,this.height_!=t){for(n=0;o=e[n];n++){var r=o.getHeightWidth();if(o.flyoutRect_){o.flyoutRect_.setAttribute("width",r.width),o.flyoutRect_.setAttribute("height",r.height);var i=o.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0,s=o.getRelativeToSurfaceXY();o.flyoutRect_.setAttribute("y",s.y),o.flyoutRect_.setAttribute("x",this.RTL?s.x-r.width+i:s.x-i),(r=o.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)&&o.moveBy(0,r),o.flyoutRect_.setAttribute("y",s.y)}}this.height_=t,this.targetWorkspace_.resize()}},Blockly.Flyout.prototype.reflowVertical=function(e){this.workspace_.scale=this.targetWorkspace_.scale;for(var o,t=0,n=0;o=e[n];n++){var r=o.getHeightWidth().width;o.outputConnection&&(r-=Blockly.BlockSvg.TAB_WIDTH),t=Math.max(t,r)}for(n=0;o=this.buttons_[n];n++)t=Math.max(t,o.width);if(t+=1.5*this.MARGIN+Blockly.BlockSvg.TAB_WIDTH,t*=this.workspace_.scale,t+=Blockly.Scrollbar.scrollbarThickness,this.width_!=t){for(n=0;o=e[n];n++){if(r=o.getHeightWidth(),this.RTL){var i=o.getRelativeToSurfaceXY().x,s=t/this.workspace_.scale-this.MARGIN,s=s-Blockly.BlockSvg.TAB_WIDTH;o.moveBy(s-i,0)}o.flyoutRect_&&(o.flyoutRect_.setAttribute("width",r.width),o.flyoutRect_.setAttribute("height",r.height),s=o.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0,i=o.getRelativeToSurfaceXY(),o.flyoutRect_.setAttribute("x",this.RTL?i.x-r.width+s:i.x-s),(r=o.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)&&o.moveBy(0,r),o.flyoutRect_.setAttribute("y",i.y))}this.width_=t,this.targetWorkspace_.resize()}},Blockly.Flyout.prototype.reflow=function(){this.reflowWrapper_&&this.workspace_.removeChangeListener(this.reflowWrapper_);var e=this.workspace_.getTopBlocks(!1);this.horizontalLayout_?this.reflowHorizontal(e):this.reflowVertical(e),this.reflowWrapper_&&this.workspace_.addChangeListener(this.reflowWrapper_)},Blockly.Toolbox=function(e){this.workspace_=e,this.RTL=e.options.RTL,this.horizontalLayout_=e.options.horizontalLayout,this.toolboxPosition=e.options.toolboxPosition,this.config_={indentWidth:19,cssRoot:"blocklyTreeRoot",cssHideRoot:"blocklyHidden",cssItem:"",cssTreeRow:"blocklyTreeRow",cssItemLabel:"blocklyTreeLabel",cssTreeIcon:"blocklyTreeIcon",cssExpandedFolderIcon:"blocklyTreeIconOpen",cssFileIcon:"blocklyTreeIconNone",cssSelectedRow:"blocklyTreeSelected"},this.treeSeparatorConfig_={cssTreeRow:"blocklyTreeSeparator"},this.horizontalLayout_&&(this.config_.cssTreeRow+=e.RTL?" blocklyHorizontalTreeRtl":" blocklyHorizontalTree",this.treeSeparatorConfig_.cssTreeRow="blocklyTreeSeparatorHorizontal "+(e.RTL?"blocklyHorizontalTreeRtl":"blocklyHorizontalTree"),this.config_.cssTreeIcon="")},Blockly.Toolbox.prototype.width=0,Blockly.Toolbox.prototype.height=0,Blockly.Toolbox.prototype.selectedOption_=null,Blockly.Toolbox.prototype.lastCategory_=null,Blockly.Toolbox.prototype.init=function(){var e=this.workspace_,o=this.workspace_.getParentSvg();this.HtmlDiv=goog.dom.createDom("DIV","blocklyToolboxDiv"),this.HtmlDiv.setAttribute("dir",e.RTL?"RTL":"LTR"),o.parentNode.insertBefore(this.HtmlDiv,o),Blockly.bindEventWithChecks_(this.HtmlDiv,"mousedown",this,function(e){Blockly.isRightButton(e)||e.target==this.HtmlDiv?Blockly.hideChaff(!1):Blockly.hideChaff(!0),Blockly.Touch.clearTouchIdentifier()}),this.flyout_=new Blockly.Flyout({disabledPatternId:e.options.disabledPatternId,parentWorkspace:e,RTL:e.RTL,oneBasedIndex:e.options.oneBasedIndex,horizontalLayout:e.horizontalLayout,toolboxPosition:e.options.toolboxPosition}),goog.dom.insertSiblingAfter(this.flyout_.createDom(),e.svgGroup_),this.flyout_.init(e),this.config_.cleardotPath=e.options.pathToMedia+"1x1.gif",this.config_.cssCollapsedFolderIcon="blocklyTreeIconClosed"+(e.RTL?"Rtl":"Ltr"),this.tree_=o=new Blockly.Toolbox.TreeControl(this,this.config_),o.setShowRootNode(!1),o.setShowLines(!1),o.setShowExpandIcons(!1),o.setSelectedItem(null),e=this.populate_(e.options.languageTree),o.render(this.HtmlDiv),e&&o.setSelectedItem(e),this.addColour_(),this.position()},Blockly.Toolbox.prototype.dispose=function(){this.flyout_.dispose(),this.tree_.dispose(),goog.dom.removeNode(this.HtmlDiv),this.lastCategory_=this.workspace_=null},Blockly.Toolbox.prototype.getWidth=function(){return this.width},Blockly.Toolbox.prototype.getHeight=function(){return this.height},Blockly.Toolbox.prototype.position=function(){var e=this.HtmlDiv;if(e){var o=this.workspace_.getParentSvg();goog.style.getPageOffset(o),o=Blockly.svgSize(o),this.horizontalLayout_?(e.style.left="0",e.style.height="auto",e.style.width=o.width+"px",this.height=e.offsetHeight,this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?e.style.top="0":e.style.bottom="0"):(this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?e.style.right="0":e.style.left="0",e.style.height=o.height+"px",this.width=e.offsetWidth),this.flyout_.position()}},Blockly.Toolbox.prototype.populate_=function(e){if(this.tree_.removeChildren(),this.tree_.blocks=[],this.hasColours_=!1,e=this.syncTrees_(e,this.tree_,this.workspace_.options.pathToMedia),this.tree_.blocks.length)throw"Toolbox cannot have both blocks and categories in the root level.";return this.workspace_.resizeContents(),e},Blockly.Toolbox.prototype.syncTrees_=function(e,o,t){for(var n,r=null,i=null,s=0;n=e.childNodes[s];s++)if(n.tagName)switch(n.tagName.toUpperCase()){case"CATEGORY":i=this.tree_.createNode(n.getAttribute("name")),i.blocks=[],o.add(i);var l=n.getAttribute("custom");l?i.blocks=l:(l=this.syncTrees_(n,i,t))&&(r=l),l=n.getAttribute("colour"),goog.isString(l)?(l.match(/^#[0-9a-fA-F]{6}$/)?i.hexColour=l:i.hexColour=Blockly.hueToRgb(l),this.hasColours_=!0):i.hexColour="","true"==n.getAttribute("expanded")?(i.blocks.length&&(r=i),i.setExpanded(!0)):i.setExpanded(!1),i=n;break;case"SEP":i&&("CATEGORY"==i.tagName.toUpperCase()?o.add(new Blockly.Toolbox.TreeSeparator(this.treeSeparatorConfig_)):(n=parseFloat(n.getAttribute("gap")),!isNaN(n)&&i&&i.setAttribute("gap",n)));break;case"BLOCK":case"SHADOW":case"LABEL":case"BUTTON":o.blocks.push(n),i=n}return r},Blockly.Toolbox.prototype.addColour_=function(e){e=(e||this.tree_).getChildren();for(var o,t=0;o=e[t];t++){var n=o.getRowElement();if(n){var r=this.hasColours_?"8px solid "+(o.hexColour||"#ddd"):"none";this.workspace_.RTL?n.style.borderRight=r:n.style.borderLeft=r}this.addColour_(o)}},Blockly.Toolbox.prototype.clearSelection=function(){this.tree_.setSelectedItem(null)},Blockly.Toolbox.prototype.getClientRect=function(){if(!this.HtmlDiv)return null;var e=this.HtmlDiv.getBoundingClientRect(),o=e.left,t=e.top,n=e.width,e=e.height;return this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(-1e7,-1e7,1e7+o+n,2e7):this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?new goog.math.Rect(o,-1e7,1e7+n,2e7):this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?new goog.math.Rect(-1e7,-1e7,2e7,1e7+t+e):new goog.math.Rect(0,t,2e7,1e7+n)},Blockly.Toolbox.prototype.refreshSelection=function(){var e=this.tree_.getSelectedItem();e&&e.blocks&&this.flyout_.show(e.blocks)},Blockly.Toolbox.TreeControl=function(e,o){this.toolbox_=e,goog.ui.tree.TreeControl.call(this,goog.html.SafeHtml.EMPTY,o)},goog.inherits(Blockly.Toolbox.TreeControl,goog.ui.tree.TreeControl),Blockly.Toolbox.TreeControl.prototype.enterDocument=function(){Blockly.Toolbox.TreeControl.superClass_.enterDocument.call(this);var e=this.getElement();goog.events.BrowserFeature.TOUCH_ENABLED&&Blockly.bindEventWithChecks_(e,goog.events.EventType.TOUCHSTART,this,this.handleTouchEvent_)},Blockly.Toolbox.TreeControl.prototype.handleTouchEvent_=function(e){e.preventDefault();var o=this.getNodeFromEvent_(e);o&&e.type===goog.events.EventType.TOUCHSTART&&setTimeout(function(){o.onMouseDown(e)},1)},Blockly.Toolbox.TreeControl.prototype.createNode=function(e){return new Blockly.Toolbox.TreeNode(this.toolbox_,e?goog.html.SafeHtml.htmlEscape(e):goog.html.SafeHtml.EMPTY,this.getConfig(),this.getDomHelper())},Blockly.Toolbox.TreeControl.prototype.setSelectedItem=function(e){var o=this.toolbox_;if(e!=this.selectedItem_&&e!=o.tree_){if(o.lastCategory_&&(o.lastCategory_.getRowElement().style.backgroundColor=""),e){var t=e.hexColour||"#57e";e.getRowElement().style.backgroundColor=t,o.addColour_(e)}t=this.getSelectedItem(),goog.ui.tree.TreeControl.prototype.setSelectedItem.call(this,e),e&&e.blocks&&e.blocks.length?(o.flyout_.show(e.blocks),o.lastCategory_!=e&&o.flyout_.scrollToStart()):o.flyout_.hide(),t!=e&&t!=this&&(t=new Blockly.Events.Ui(null,"category",t&&t.getHtml(),e&&e.getHtml()),t.workspaceId=o.workspace_.id,Blockly.Events.fire(t)),e&&(o.lastCategory_=e)}},Blockly.Toolbox.TreeNode=function(e,o,t,n){goog.ui.tree.TreeNode.call(this,o,t,n),e&&(o=function(){Blockly.svgResize(e.workspace_)},goog.events.listen(e.tree_,goog.ui.tree.BaseNode.EventType.EXPAND,o),goog.events.listen(e.tree_,goog.ui.tree.BaseNode.EventType.COLLAPSE,o))},goog.inherits(Blockly.Toolbox.TreeNode,goog.ui.tree.TreeNode),Blockly.Toolbox.TreeNode.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.create("span")},Blockly.Toolbox.TreeNode.prototype.onMouseDown=function(e){this.hasChildren()&&this.isUserCollapsible_?(this.toggle(),this.select()):this.isSelected()?this.getTree().setSelectedItem(null):this.select(),this.updateRow()},Blockly.Toolbox.TreeNode.prototype.onDoubleClick_=function(e){},Blockly.Toolbox.TreeNode.prototype.onKeyDown=function(e){if(this.tree.toolbox_.horizontalLayout_){var o={},t=goog.events.KeyCodes.DOWN,n=goog.events.KeyCodes.UP;o[goog.events.KeyCodes.RIGHT]=this.rightToLeft_?n:t,o[goog.events.KeyCodes.LEFT]=this.rightToLeft_?t:n,o[goog.events.KeyCodes.UP]=goog.events.KeyCodes.LEFT,o[goog.events.KeyCodes.DOWN]=goog.events.KeyCodes.RIGHT,e.keyCode=o[e.keyCode]||e.keyCode}return Blockly.Toolbox.TreeNode.superClass_.onKeyDown.call(this,e)},Blockly.Toolbox.TreeSeparator=function(e){Blockly.Toolbox.TreeNode.call(this,null,"",e)},goog.inherits(Blockly.Toolbox.TreeSeparator,Blockly.Toolbox.TreeNode),Blockly.Css={},Blockly.Css.Cursor={OPEN:"handopen",CLOSED:"handclosed",DELETE:"handdelete"},Blockly.Css.currentCursor_="",Blockly.Css.styleSheet_=null,Blockly.Css.mediaPath_="",Blockly.Css.inject=function(e,o){if(!Blockly.Css.styleSheet_){var t=".blocklyDraggable {}\n";e&&(t+=Blockly.Css.CONTENT.join("\n"),Blockly.FieldDate&&(t+=Blockly.FieldDate.CSS.join("\n"))),Blockly.Css.mediaPath_=o.replace(/[\\\/]$/,"");var t=t.replace(/<<>>/g,Blockly.Css.mediaPath_),n=document.createElement("style");document.head.insertBefore(n,document.head.firstChild),t=document.createTextNode(t),n.appendChild(t),Blockly.Css.styleSheet_=n.sheet,Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN)}},Blockly.Css.setCursor=function(e){if(Blockly.Css.currentCursor_!=e){Blockly.Css.currentCursor_=e;var o="url("+Blockly.Css.mediaPath_+"/"+e+".cur), auto",t=".blocklyDraggable {\n cursor: "+o+";\n}\n";Blockly.Css.styleSheet_.deleteRule(0),Blockly.Css.styleSheet_.insertRule(t,0);for(var n,t=document.getElementsByClassName("blocklyToolboxDiv"),r=0;n=t[r];r++)n.style.cursor=e==Blockly.Css.Cursor.DELETE?o:"";document.body.parentNode.style.cursor=e==Blockly.Css.Cursor.OPEN?"":o}},Blockly.Css.CONTENT=[".blocklySvg {","background-color: #fff;","outline: none;","overflow: hidden;","display: block;","}",".blocklyWidgetDiv {","display: none;","position: absolute;","z-index: 99999;","}",".injectionDiv {","height: 100%;","position: relative;","}",".blocklyNonSelectable {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","-ms-user-select: none;","}",".blocklyTooltipDiv {","background-color: #ffffc7;","border: 1px solid #ddc;","box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);","color: #000;","display: none;","font-family: sans-serif;","font-size: 9pt;","opacity: 0.9;","padding: 2px;","position: absolute;","z-index: 100000;","}",".blocklyResizeSE {","cursor: se-resize;","fill: #aaa;","}",".blocklyResizeSW {","cursor: sw-resize;","fill: #aaa;","}",".blocklyResizeLine {","stroke: #888;","stroke-width: 1;","}",".blocklyHighlightedConnectionPath {","fill: none;","stroke: #fc3;","stroke-width: 4px;","}",".blocklyPathLight {","fill: none;","stroke-linecap: round;","stroke-width: 1;","}",".blocklySelected>.blocklyPath {","stroke: #fc3;","stroke-width: 3px;","}",".blocklySelected>.blocklyPathLight {","display: none;","}",".blocklyDragging>.blocklyPath,",".blocklyDragging>.blocklyPathLight {","fill-opacity: .8;","stroke-opacity: .8;","}",".blocklyDragging>.blocklyPathDark {","display: none;","}",".blocklyDisabled>.blocklyPath {","fill-opacity: .5;","stroke-opacity: .5;","}",".blocklyDisabled>.blocklyPathLight,",".blocklyDisabled>.blocklyPathDark {","display: none;","}",".blocklyText {","cursor: default;","fill: #fff;","font-family: sans-serif;","font-size: 11pt;","}",".blocklyNonEditableText>text {","pointer-events: none;","}",".blocklyNonEditableText>rect,",".blocklyEditableText>rect {","fill: #fff;","fill-opacity: .6;","}",".blocklyNonEditableText>text,",".blocklyEditableText>text {","fill: #000;","}",".blocklyEditableText:hover>rect {","stroke: #fff;","stroke-width: 2;","}",".blocklyBubbleText {","fill: #000;","}",".blocklyFlyoutButton {","fill: #888;","cursor: default;","}",".blocklyFlyoutButtonShadow {","fill: #666;","}",".blocklyFlyoutButton:hover {","fill: #aaa;","}",".blocklyFlyoutLabel {","cursor: default;","}",".blocklyFlyoutLabelBackground {","opacity: 0;","}",".blocklyFlyoutLabelText {","fill: #000;","}",".blocklyFlyoutLabelText:hover {","fill: #aaa;","}",".blocklySvg text {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","cursor: inherit;","}",".blocklyHidden {","display: none;","}",".blocklyFieldDropdown:not(.blocklyHidden) {","display: block;","}",".blocklyIconGroup {","cursor: default;","}",".blocklyIconGroup:not(:hover),",".blocklyIconGroupReadonly {","opacity: .6;","}",".blocklyIconShape {","fill: #00f;","stroke: #fff;","stroke-width: 1px;","}",".blocklyIconSymbol {","fill: #fff;","}",".blocklyMinimalBody {","margin: 0;","padding: 0;","}",".blocklyCommentTextarea {","background-color: #ffc;","border: 0;","margin: 0;","padding: 2px;","resize: none;","}",".blocklyHtmlInput {","border: none;","border-radius: 4px;","font-family: sans-serif;","height: 100%;","margin: 0;","outline: none;","padding: 0 1px;","width: 100%","}",".blocklyMainBackground {","stroke-width: 1;","stroke: #c6c6c6;","}",".blocklyMutatorBackground {","fill: #fff;","stroke: #ddd;","stroke-width: 1;","}",".blocklyFlyoutBackground {","fill: #ddd;","fill-opacity: .8;","}",".blocklyScrollbarBackground {","opacity: 0;","}",".blocklyScrollbarHandle {","fill: #ccc;","}",".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyScrollbarHandle:hover {","fill: #bbb;","}",".blocklyZoom>image {","opacity: .4;","}",".blocklyZoom>image:hover {","opacity: .6;","}",".blocklyZoom>image:active {","opacity: .8;","}",".blocklyFlyout .blocklyScrollbarHandle {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyFlyout .blocklyScrollbarHandle:hover {","fill: #aaa;","}",".blocklyInvalidInput {","background: #faa;","}",".blocklyAngleCircle {","stroke: #444;","stroke-width: 1;","fill: #ddd;","fill-opacity: .8;","}",".blocklyAngleMarks {","stroke: #444;","stroke-width: 1;","}",".blocklyAngleGauge {","fill: #f88;","fill-opacity: .8;","}",".blocklyAngleLine {","stroke: #f00;","stroke-width: 2;","stroke-linecap: round;","}",".blocklyContextMenu {","border-radius: 4px;","}",".blocklyDropdownMenu {","padding: 0 !important;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {","background: url(<<>>/sprites.png) no-repeat -48px -16px !important;","}",".blocklyToolboxDiv {","background-color: #ddd;","overflow-x: visible;","overflow-y: auto;","position: absolute;","}",".blocklyTreeRoot {","padding: 4px 0;","}",".blocklyTreeRoot:focus {","outline: none;","}",".blocklyTreeRow {","height: 22px;","line-height: 22px;","margin-bottom: 3px;","padding-right: 8px;","white-space: nowrap;","}",".blocklyHorizontalTree {","float: left;","margin: 1px 5px 8px 0;","}",".blocklyHorizontalTreeRtl {","float: right;","margin: 1px 0 8px 5px;","}",'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {',"margin-left: 8px;","}",".blocklyTreeRow:not(.blocklyTreeSelected):hover {","background-color: #e4e4e4;","}",".blocklyTreeSeparator {","border-bottom: solid #e5e5e5 1px;","height: 0;","margin: 5px 0;","}",".blocklyTreeSeparatorHorizontal {","border-right: solid #e5e5e5 1px;","width: 0;","padding: 5px 0;","margin: 0 5px;","}",".blocklyTreeIcon {","background-image: url(<<>>/sprites.png);","height: 16px;","vertical-align: middle;","width: 16px;","}",".blocklyTreeIconClosedLtr {","background-position: -32px -1px;","}",".blocklyTreeIconClosedRtl {","background-position: 0px -1px;","}",".blocklyTreeIconOpen {","background-position: -16px -1px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedLtr {","background-position: -32px -17px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedRtl {","background-position: 0px -17px;","}",".blocklyTreeSelected>.blocklyTreeIconOpen {","background-position: -16px -17px;","}",".blocklyTreeIconNone,",".blocklyTreeSelected>.blocklyTreeIconNone {","background-position: -48px -1px;","}",".blocklyTreeLabel {","cursor: default;","font-family: sans-serif;","font-size: 16px;","padding: 0 3px;","vertical-align: middle;","}",".blocklyTreeSelected .blocklyTreeLabel {","color: #fff;","}",".blocklyWidgetDiv .goog-palette {","outline: none;","cursor: default;","}",".blocklyWidgetDiv .goog-palette-table {","border: 1px solid #666;","border-collapse: collapse;","}",".blocklyWidgetDiv .goog-palette-cell {","height: 13px;","width: 15px;","margin: 0;","border: 0;","text-align: center;","vertical-align: middle;","border-right: 1px solid #666;","font-size: 1px;","}",".blocklyWidgetDiv .goog-palette-colorswatch {","position: relative;","height: 13px;","width: 15px;","border: 1px solid #666;","}",".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {","border: 1px solid #FFF;","}",".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {","border: 1px solid #000;","color: #fff;","}",".blocklyWidgetDiv .goog-menu {","background: #fff;","border-color: #ccc #666 #666 #ccc;","border-style: solid;","border-width: 1px;","cursor: default;","font: normal 13px Arial, sans-serif;","margin: 0;","outline: none;","padding: 4px 0;","position: absolute;","overflow-y: auto;","overflow-x: hidden;","max-height: 100%;","z-index: 20000;","}",".blocklyWidgetDiv .goog-menuitem {","color: #000;","font: normal 13px Arial, sans-serif;","list-style: none;","margin: 0;","padding: 4px 7em 4px 28px;","white-space: nowrap;","}",".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl {","padding-left: 7em;","padding-right: 28px;","}",".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,",".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem {","padding-left: 12px;","}",".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem {","padding-right: 20px;","}",".blocklyWidgetDiv .goog-menuitem-content {","color: #000;","font: normal 13px Arial, sans-serif;","}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {","color: #ccc !important;","}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon {","opacity: 0.3;","-moz-opacity: 0.3;","filter: alpha(opacity=30);","}",".blocklyWidgetDiv .goog-menuitem-highlight,",".blocklyWidgetDiv .goog-menuitem-hover {","background-color: #d6e9f8;","border-color: #d6e9f8;","border-style: dotted;","border-width: 1px 0;","padding-bottom: 3px;","padding-top: 3px;","}",".blocklyWidgetDiv .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-icon {","background-repeat: no-repeat;","height: 16px;","left: 6px;","position: absolute;","right: auto;","vertical-align: middle;","width: 16px;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon {","left: auto;","right: 6px;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {","background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;","}",".blocklyWidgetDiv .goog-menuitem-accel {","color: #999;","direction: ltr;","left: auto;","padding: 0 6px;","position: absolute;","right: 0;","text-align: right;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel {","left: 0;","right: auto;","text-align: left;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-hint {","text-decoration: underline;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-separator {","color: #999;","font-size: 12px;","padding-left: 4px;","}",".blocklyWidgetDiv .goog-menuseparator {","border-top: 1px solid #ccc;","margin: 4px 0;","padding: 0;","}",""],Blockly.WidgetDiv={},Blockly.WidgetDiv.DIV=null,Blockly.WidgetDiv.owner_=null,Blockly.WidgetDiv.dispose_=null,Blockly.WidgetDiv.createDom=function(){Blockly.WidgetDiv.DIV||(Blockly.WidgetDiv.DIV=goog.dom.createDom("DIV","blocklyWidgetDiv"),document.body.appendChild(Blockly.WidgetDiv.DIV))},Blockly.WidgetDiv.show=function(e,o,t){Blockly.WidgetDiv.hide(),Blockly.WidgetDiv.owner_=e,Blockly.WidgetDiv.dispose_=t,e=goog.style.getViewportPageOffset(document),Blockly.WidgetDiv.DIV.style.top=e.y+"px",Blockly.WidgetDiv.DIV.style.direction=o?"rtl":"ltr",Blockly.WidgetDiv.DIV.style.display="block"},Blockly.WidgetDiv.hide=function(){Blockly.WidgetDiv.owner_&&(Blockly.WidgetDiv.owner_=null,Blockly.WidgetDiv.DIV.style.display="none",Blockly.WidgetDiv.DIV.style.left="",Blockly.WidgetDiv.DIV.style.top="",Blockly.WidgetDiv.dispose_&&Blockly.WidgetDiv.dispose_(),Blockly.WidgetDiv.dispose_=null,goog.dom.removeChildren(Blockly.WidgetDiv.DIV))},Blockly.WidgetDiv.isVisible=function(){return!!Blockly.WidgetDiv.owner_},Blockly.WidgetDiv.hideIfOwner=function(e){Blockly.WidgetDiv.owner_==e&&Blockly.WidgetDiv.hide()},Blockly.WidgetDiv.position=function(e,o,t,n,r){ot.width+n.x&&(e=t.width+n.x):ee.viewHeight+r||e.contentLeft<(o.RTL?e.viewLeft:n)||e.contentLeft+e.contentWidth>(o.RTL?e.viewWidth:e.viewWidth+n))for(var i,s=t.getTopBlocks(!1),l=0;i=s[l];l++){var g=i.getRelativeToSurfaceXY(),a=i.getHeightWidth(),c=r+25-a.height-g.y;c>0&&i.moveBy(0,c),c=r+e.viewHeight-25-g.y,0>c&&i.moveBy(0,c),c=25+n-g.x-(o.RTL?0:a.width),c>0&&i.moveBy(c,0),g=n+e.viewWidth-25-g.x+(o.RTL?a.width:0),0>g&&i.moveBy(g,0)}}}),Blockly.svgResize(t),Blockly.WidgetDiv.createDom(),Blockly.Tooltip.createDom(),t},Blockly.init_=function(e){var o=e.options,t=e.getParentSvg();Blockly.bindEventWithChecks_(t,"contextmenu",null,function(e){Blockly.isTargetInput_(e)||e.preventDefault()}),t=Blockly.bindEventWithChecks_(window,"resize",null,function(){Blockly.hideChaff(!0),Blockly.svgResize(e)}),e.setResizeHandlerWrapper(t),Blockly.inject.bindDocumentEvents_(),o.languageTree&&(e.toolbox_?e.toolbox_.init(e):e.flyout_&&(e.flyout_.init(e),e.flyout_.show(o.languageTree.childNodes),e.flyout_.scrollToStart(),e.scrollX=e.flyout_.width_,o.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&&(e.scrollX*=-1),e.translate(e.scrollX,0))),o.hasScrollbars&&(e.scrollbar=new Blockly.ScrollbarPair(e),e.scrollbar.resize()),o.hasSounds&&Blockly.inject.loadSounds_(o.pathToMedia,e)},Blockly.inject.bindDocumentEvents_=function(){Blockly.documentEventsBound_||(Blockly.bindEventWithChecks_(document,"keydown",null,Blockly.onKeyDown_),Blockly.bindEventWithChecks_(document,"touchend",null,Blockly.longStop_),Blockly.bindEventWithChecks_(document,"touchcancel",null,Blockly.longStop_),document.addEventListener("mouseup",Blockly.onMouseUp_,!1),goog.userAgent.IPAD&&Blockly.bindEventWithChecks_(window,"orientationchange",document,function(){Blockly.svgResize(Blockly.getMainWorkspace())})),Blockly.documentEventsBound_=!0},Blockly.inject.loadSounds_=function(e,o){o.loadAudio_([e+"click.mp3",e+"click.wav",e+"click.ogg"],"click"),o.loadAudio_([e+"disconnect.wav",e+"disconnect.mp3",e+"disconnect.ogg"],"disconnect"),o.loadAudio_([e+"delete.mp3",e+"delete.ogg",e+"delete.wav"],"delete");var t=[],n=function(){for(;t.length;)Blockly.unbindEvent_(t.pop());o.preloadAudio_()};t.push(Blockly.bindEventWithChecks_(document,"mousemove",null,n,!0)),t.push(Blockly.bindEventWithChecks_(document,"touchstart",null,n,!0))},Blockly.updateToolbox=function(e){console.warn("Deprecated call to Blockly.updateToolbox, use workspace.updateToolbox instead."),Blockly.getMainWorkspace().updateToolbox(e)},Blockly.utils={},Blockly.addClass_=function(e,o){var t=e.getAttribute("class")||"";-1==(" "+t+" ").indexOf(" "+o+" ")&&(t&&(t+=" "),e.setAttribute("class",t+o))},Blockly.removeClass_=function(e,o){var t=e.getAttribute("class");if(-1!=(" "+t+" ").indexOf(" "+o+" ")){for(var t=t.split(/\s+/),n=0;nr;r++){for(var i=e[0][r],s=1;sr;r++){for(var i=e[0].substr(-r-1,1),s=1;s="0"&&"9">=s?(t=2,r=s,(s=n.join(""))&&o.push(s),n.length=0):(n.push("%",s),t=0):2==t&&(s>="0"&&"9">=s?r+=s:(o.push(parseInt(r,10)),i--,t=0))}return(s=n.join(""))&&o.push(s),o},Blockly.genUid=function(){for(var e=Blockly.genUid.soup_.length,o=[],t=0;20>t;t++)o[t]=Blockly.genUid.soup_.charAt(Math.random()*e);return o.join("")},Blockly.genUid.soup_="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",Blockly.utils.wrap=function(e,o){for(var t=e.split("\n"),n=0;no&&(o=t[n].length);var r,i,n=-(1/0),s=1;do{r=n,i=e;for(var l=[],g=t.length/s,a=1,n=0;na?(a++,l[n]=!0):l[n]=!1;l=Blockly.utils.wrapMutate_(t,l,o),n=Blockly.utils.wrapScore_(t,l,o),e=Blockly.utils.wrapToText_(t,l),s++}while(n>r);return i},Blockly.utils.wrapScore_=function(e,o,t){for(var n=[0],r=[],i=0;ir&&(r=l,n=s)}return n?Blockly.utils.wrapMutate_(e,n,t):o},Blockly.utils.wrapToText_=function(e,o){for(var t=[],n=0;n