add emoji autocomplete@@ -0,0 +1,5 @@
+/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,
+r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c||"false"!==c&&("null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var $=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,_=new RegExp("^(?:([+-])=|)("+$+")([a-z%]*)$","i"),aa=["Top","Right","Bottom","Left"],ba=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ca=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function da(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&_.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ea={};function fa(a){var b,c=a.ownerDocument,d=a.nodeName,e=ea[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ea[d]=e,e)}function ga(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;c<h;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==va()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===va()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ta:ua,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ta,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ta,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ta,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&qa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ra.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return wa(this,a,b,c,d)},one:function(a,b,c,d){return wa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ua),this.each(function(){r.event.remove(this,a,c,b)})}});var xa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/<script|<style|<link/i,za=/checked\s*(?:[^=]|=\s*.checked.)/i,Aa=/^true\/(.*)/,Ba=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;l<i;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;d<e;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Ma(a,b,f),(d<0||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)})},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);f<g;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Ya=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){Za||(Za=a.requestAnimationFrame?a.requestAnimationFrame(ab):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame(Za):a.clearInterval(Za),Za=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var hb,ib=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);
+if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i<h;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=oa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=r.trim(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||pa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Na(o.pixelPosition,function(a,c){if(c)return c=Ma(a,b),Ka.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
+
@@ -0,0 +1,3 @@
+/*! jquery-textcomplete - v1.6.2 - 2016-07-08 */
+!function(a){if("function"==typeof define&&define.amd)define(["jquery"],a);else if("object"==typeof module&&module.exports){var b=require("jquery");module.exports=a(b)}else a(jQuery)}(function(a){if("undefined"==typeof a)throw new Error("jQuery.textcomplete requires jQuery");return+function(a){"use strict";var b=function(a){console.warn&&console.warn(a)},c=1;a.fn.textcomplete=function(d,e){var f=Array.prototype.slice.call(arguments);return this.each(function(){var g=this,h=a(this),i=h.data("textComplete");if(i||(e||(e={}),e._oid=c++,i=new a.fn.textcomplete.Completer(this,e),h.data("textComplete",i)),"string"==typeof d){if(!i)return;f.shift(),i[d].apply(i,f),"destroy"===d&&h.removeData("textComplete")}else a.each(d,function(c){a.each(["header","footer","placement","maxCount"],function(a){c[a]&&(i.option[a]=c[a],b(a+"as a strategy param is deprecated. Use option."),delete c[a])})}),i.register(a.fn.textcomplete.Strategy.parse(d,{el:g,$el:h}))})}}(a),+function(a){"use strict";function b(c,d){if(this.$el=a(c),this.id="textcomplete"+e++,this.strategies=[],this.views=[],this.option=a.extend({},b._getDefaults(),d),!(this.$el.is("input[type=text]")||this.$el.is("input[type=search]")||this.$el.is("textarea")||c.isContentEditable||"true"==c.contentEditable))throw new Error("textcomplete must be called on a Textarea or a ContentEditable.");if(c===c.ownerDocument.activeElement)this.initialize();else{var f=this;this.$el.one("focus."+this.id,function(){f.initialize()}),this.option.adapter&&"CKEditor"!=this.option.adapter||"undefined"==typeof CKEDITOR||!this.$el.is("textarea")||CKEDITOR.on("instanceReady",function(b){b.editor.once("focus",function(c){f.$el=a(b.editor.editable().$),f.option.adapter||(f.option.adapter=a.fn.textcomplete.CKEditor),f.initialize()})})}}var c=function(a){var b,c;return function(){var d=Array.prototype.slice.call(arguments);if(b)return void(c=d);b=!0;var e=this;d.unshift(function f(){if(c){var d=c;c=void 0,d.unshift(f),a.apply(e,d)}else b=!1}),a.apply(this,d)}},d=function(a){return"[object String]"===Object.prototype.toString.call(a)},e=0;b._getDefaults=function(){return b.DEFAULTS||(b.DEFAULTS={appendTo:a("body"),className:"",dropdownClassName:"dropdown-menu textcomplete-dropdown",maxCount:10,zIndex:"100"}),b.DEFAULTS},a.extend(b.prototype,{id:null,option:null,strategies:null,adapter:null,dropdown:null,$el:null,$iframe:null,initialize:function(){var b=this.$el.get(0);if(this.$el.prop("ownerDocument")!==document&&window.frames.length)for(var c=0;c<window.frames.length;c++)if(this.$el.prop("ownerDocument")===window.frames[c].document){this.$iframe=a(window.frames[c].frameElement);break}this.dropdown=new a.fn.textcomplete.Dropdown(b,this,this.option);var d,e;this.option.adapter?d=this.option.adapter:(e=this.$el.is("textarea")||this.$el.is("input[type=text]")||this.$el.is("input[type=search]")?"number"==typeof b.selectionEnd?"Textarea":"IETextarea":"ContentEditable",d=a.fn.textcomplete[e]),this.adapter=new d(b,this,this.option)},destroy:function(){this.$el.off("."+this.id),this.adapter&&this.adapter.destroy(),this.dropdown&&this.dropdown.destroy(),this.$el=this.adapter=this.dropdown=null},deactivate:function(){this.dropdown&&this.dropdown.deactivate()},trigger:function(a,b){this.dropdown||this.initialize(),null!=a||(a=this.adapter.getTextFromHeadToCaret());var c=this._extractSearchQuery(a);if(c.length){var d=c[1];if(b&&this._term===d&&""!==d)return;this._term=d,this._search.apply(this,c)}else this._term=null,this.dropdown.deactivate()},fire:function(a){var b=Array.prototype.slice.call(arguments,1);return this.$el.trigger(a,b),this},register:function(a){Array.prototype.push.apply(this.strategies,a)},select:function(a,b,c){this._term=null,this.adapter.select(a,b,c),this.fire("change").fire("textComplete:select",a,b),this.adapter.focus()},_clearAtNext:!0,_term:null,_extractSearchQuery:function(b){for(var c=0;c<this.strategies.length;c++){var e=this.strategies[c],f=e.context(b);if(f||""===f){var g=a.isFunction(e.match)?e.match(b):e.match;d(f)&&(b=f);var h=b.match(g);if(h)return[e,h[e.index],h]}}return[]},_search:c(function(a,b,c,d){var e=this;b.search(c,function(d,f){e.dropdown.shown||e.dropdown.activate(),e._clearAtNext&&(e.dropdown.clear(),e._clearAtNext=!1),e.dropdown.setPosition(e.adapter.getCaretPosition()),e.dropdown.render(e._zip(d,b,c)),f||(a(),e._clearAtNext=!0)},d)}),_zip:function(b,c,d){return a.map(b,function(a){return{value:a,strategy:c,term:d}})}}),a.fn.textcomplete.Completer=b}(a),+function(a){"use strict";function b(c,d,f){this.$el=b.createElement(f),this.completer=d,this.id=d.id+"dropdown",this._data=[],this.$inputEl=a(c),this.option=f,f.listPosition&&(this.setPosition=f.listPosition),f.height&&this.$el.height(f.height);var g=this;a.each(["maxCount","placement","footer","header","noResultsMessage","className"],function(a,b){null!=f[b]&&(g[b]=f[b])}),this._bindEvents(c),e[this.id]=this}var c=a(window),d=function(a,b){var c,d,e=b.strategy.idProperty;for(c=0;c<a.length;c++)if(d=a[c],d.strategy===b.strategy)if(e){if(d.value[e]===b.value[e])return!0}else if(d.value===b.value)return!0;return!1},e={};a(document).on("click",function(b){var c=b.originalEvent&&b.originalEvent.keepTextCompleteDropdown;a.each(e,function(a,b){a!==c&&b.deactivate()})});var f={SKIP_DEFAULT:0,KEY_UP:1,KEY_DOWN:2,KEY_ENTER:3,KEY_PAGEUP:4,KEY_PAGEDOWN:5,KEY_ESCAPE:6};a.extend(b,{createElement:function(b){var c=b.appendTo;c instanceof a||(c=a(c));var d=a("<ul></ul>").addClass(b.dropdownClassName).attr("id","textcomplete-dropdown-"+b._oid).css({display:"none",left:0,position:"absolute",zIndex:b.zIndex}).appendTo(c);return d}}),a.extend(b.prototype,{$el:null,$inputEl:null,completer:null,footer:null,header:null,id:null,maxCount:null,placement:"",shown:!1,data:[],className:"",destroy:function(){this.deactivate(),this.$el.off("."+this.id),this.$inputEl.off("."+this.id),this.clear(),this.$el.remove(),this.$el=this.$inputEl=this.completer=null,delete e[this.id]},render:function(b){var c=this._buildContents(b),d=a.map(this.data,function(a){return a.value});if(this.data.length){var e=b[0].strategy;e.id?this.$el.attr("data-strategy",e.id):this.$el.removeAttr("data-strategy"),this._renderHeader(d),this._renderFooter(d),c&&(this._renderContents(c),this._fitToBottom(),this._fitToRight(),this._activateIndexedItem()),this._setScroll()}else this.noResultsMessage?this._renderNoResultsMessage(d):this.shown&&this.deactivate()},setPosition:function(b){var d="absolute";return this.$inputEl.add(this.$inputEl.parents()).each(function(){return"absolute"===a(this).css("position")?!1:"fixed"===a(this).css("position")?(b.top-=c.scrollTop(),b.left-=c.scrollLeft(),d="fixed",!1):void 0}),this.$el.css(this._applyPlacement(b)),this.$el.css({position:d}),this},clear:function(){this.$el.html(""),this.data=[],this._index=0,this._$header=this._$footer=this._$noResultsMessage=null},activate:function(){return this.shown||(this.clear(),this.$el.show(),this.className&&this.$el.addClass(this.className),this.completer.fire("textComplete:show"),this.shown=!0),this},deactivate:function(){return this.shown&&(this.$el.hide(),this.className&&this.$el.removeClass(this.className),this.completer.fire("textComplete:hide"),this.shown=!1),this},isUp:function(a){return 38===a.keyCode||a.ctrlKey&&80===a.keyCode},isDown:function(a){return 40===a.keyCode||a.ctrlKey&&78===a.keyCode},isEnter:function(a){var b=a.ctrlKey||a.altKey||a.metaKey||a.shiftKey;return!b&&(13===a.keyCode||9===a.keyCode||this.option.completeOnSpace===!0&&32===a.keyCode)},isPageup:function(a){return 33===a.keyCode},isPagedown:function(a){return 34===a.keyCode},isEscape:function(a){return 27===a.keyCode},_data:null,_index:null,_$header:null,_$noResultsMessage:null,_$footer:null,_bindEvents:function(){this.$el.on("mousedown."+this.id,".textcomplete-item",a.proxy(this._onClick,this)),this.$el.on("touchstart."+this.id,".textcomplete-item",a.proxy(this._onClick,this)),this.$el.on("mouseover."+this.id,".textcomplete-item",a.proxy(this._onMouseover,this)),this.$inputEl.on("keydown."+this.id,a.proxy(this._onKeydown,this))},_onClick:function(b){var c=a(b.target);b.preventDefault(),b.originalEvent.keepTextCompleteDropdown=this.id,c.hasClass("textcomplete-item")||(c=c.closest(".textcomplete-item"));var d=this.data[parseInt(c.data("index"),10)];this.completer.select(d.value,d.strategy,b);var e=this;setTimeout(function(){e.deactivate(),"touchstart"===b.type&&e.$inputEl.focus()},0)},_onMouseover:function(b){var c=a(b.target);b.preventDefault(),c.hasClass("textcomplete-item")||(c=c.closest(".textcomplete-item")),this._index=parseInt(c.data("index"),10),this._activateIndexedItem()},_onKeydown:function(b){if(this.shown){var c;switch(a.isFunction(this.option.onKeydown)&&(c=this.option.onKeydown(b,f)),null==c&&(c=this._defaultKeydown(b)),c){case f.KEY_UP:b.preventDefault(),this._up();break;case f.KEY_DOWN:b.preventDefault(),this._down();break;case f.KEY_ENTER:b.preventDefault(),this._enter(b);break;case f.KEY_PAGEUP:b.preventDefault(),this._pageup();break;case f.KEY_PAGEDOWN:b.preventDefault(),this._pagedown();break;case f.KEY_ESCAPE:b.preventDefault(),this.deactivate()}}},_defaultKeydown:function(a){return this.isUp(a)?f.KEY_UP:this.isDown(a)?f.KEY_DOWN:this.isEnter(a)?f.KEY_ENTER:this.isPageup(a)?f.KEY_PAGEUP:this.isPagedown(a)?f.KEY_PAGEDOWN:this.isEscape(a)?f.KEY_ESCAPE:void 0},_up:function(){0===this._index?this._index=this.data.length-1:this._index-=1,this._activateIndexedItem(),this._setScroll()},_down:function(){this._index===this.data.length-1?this._index=0:this._index+=1,this._activateIndexedItem(),this._setScroll()},_enter:function(a){var b=this.data[parseInt(this._getActiveElement().data("index"),10)];this.completer.select(b.value,b.strategy,a),this.deactivate()},_pageup:function(){var b=0,c=this._getActiveElement().position().top-this.$el.innerHeight();this.$el.children().each(function(d){return a(this).position().top+a(this).outerHeight()>c?(b=d,!1):void 0}),this._index=b,this._activateIndexedItem(),this._setScroll()},_pagedown:function(){var b=this.data.length-1,c=this._getActiveElement().position().top+this.$el.innerHeight();this.$el.children().each(function(d){return a(this).position().top>c?(b=d,!1):void 0}),this._index=b,this._activateIndexedItem(),this._setScroll()},_activateIndexedItem:function(){this.$el.find(".textcomplete-item.active").removeClass("active"),this._getActiveElement().addClass("active")},_getActiveElement:function(){return this.$el.children(".textcomplete-item:nth("+this._index+")")},_setScroll:function(){var a=this._getActiveElement(),b=a.position().top,c=a.outerHeight(),d=this.$el.innerHeight(),e=this.$el.scrollTop();0===this._index||this._index==this.data.length-1||0>b?this.$el.scrollTop(b+e):b+c>d&&this.$el.scrollTop(b+c+e-d)},_buildContents:function(a){var b,c,e,f="";for(c=0;c<a.length&&this.data.length!==this.maxCount;c++)b=a[c],d(this.data,b)||(e=this.data.length,this.data.push(b),f+='<li class="textcomplete-item" data-index="'+e+'"><a>',f+=b.strategy.template(b.value,b.term),f+="</a></li>");return f},_renderHeader:function(b){if(this.header){this._$header||(this._$header=a('<li class="textcomplete-header"></li>').prependTo(this.$el));var c=a.isFunction(this.header)?this.header(b):this.header;this._$header.html(c)}},_renderFooter:function(b){if(this.footer){this._$footer||(this._$footer=a('<li class="textcomplete-footer"></li>').appendTo(this.$el));var c=a.isFunction(this.footer)?this.footer(b):this.footer;this._$footer.html(c)}},_renderNoResultsMessage:function(b){if(this.noResultsMessage){this._$noResultsMessage||(this._$noResultsMessage=a('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));var c=a.isFunction(this.noResultsMessage)?this.noResultsMessage(b):this.noResultsMessage;this._$noResultsMessage.html(c)}},_renderContents:function(a){this._$footer?this._$footer.before(a):this.$el.append(a)},_fitToBottom:function(){var a=c.scrollTop()+c.height(),b=this.$el.height();this.$el.position().top+b>a&&(this.completer.$iframe||this.$el.offset({top:a-b}))},_fitToRight:function(){for(var a,b=30,d=this.$el.offset().left,e=this.$el.width(),f=c.width()-b;d+e>f&&(this.$el.offset({left:d-b}),a=this.$el.offset().left,!(a>=d));)d=a},_applyPlacement:function(a){return a.height=Math.min(this.$el.parent().height(),c.height()),-1!==this.placement.indexOf("top")?a={top:"auto",bottom:a.height-a.top+a.lineHeight,left:a.left}:(a.bottom="auto",delete a.lineHeight),-1!==this.placement.indexOf("absleft")?a.left=0:-1!==this.placement.indexOf("absright")&&(a.right=0,a.left="auto"),a}}),a.fn.textcomplete.Dropdown=b,a.extend(a.fn.textcomplete,f)}(a),+function(a){"use strict";function b(b){a.extend(this,b),this.cache&&(this.search=c(this.search))}var c=function(a){var b={};return function(c,d){b[c]?d(b[c]):a.call(this,c,function(a){b[c]=(b[c]||[]).concat(a),d.apply(null,arguments)})}};b.parse=function(c,d){return a.map(c,function(a){var c=new b(a);return c.el=d.el,c.$el=d.$el,c})},a.extend(b.prototype,{match:null,replace:null,search:null,id:null,cache:!1,context:function(){return!0},index:2,template:function(a){return a},idProperty:null}),a.fn.textcomplete.Strategy=b}(a),+function(a){"use strict";function b(){}var c=Date.now||function(){return(new Date).getTime()},d=function(a,b){var d,e,f,g,h,i=function(){var j=c()-g;b>j?d=setTimeout(i,b-j):(d=null,h=a.apply(f,e),f=e=null)};return function(){return f=this,e=arguments,g=c(),d||(d=setTimeout(i,b)),h}};a.extend(b.prototype,{id:null,completer:null,el:null,$el:null,option:null,initialize:function(b,c,e){this.el=b,this.$el=a(b),this.id=c.id+this.constructor.name,this.completer=c,this.option=e,this.option.debounce&&(this._onKeyup=d(this._onKeyup,this.option.debounce)),this._bindEvents()},destroy:function(){this.$el.off("."+this.id),this.$el=this.el=this.completer=null},select:function(){throw new Error("Not implemented")},getCaretPosition:function(){var b=this._getCaretRelativePosition(),c=this.$el.offset(),d=this.option.appendTo;if(d){d instanceof a||(d=a(d));var e=d.offsetParent().offset();c.top-=e.top,c.left-=e.left}return b.top+=c.top,b.left+=c.left,b},focus:function(){this.$el.focus()},_bindEvents:function(){this.$el.on("keyup."+this.id,a.proxy(this._onKeyup,this))},_onKeyup:function(a){this._skipSearch(a)||this.completer.trigger(this.getTextFromHeadToCaret(),!0)},_skipSearch:function(a){switch(a.keyCode){case 9:case 13:case 40:case 38:case 27:return!0}if(a.ctrlKey)switch(a.keyCode){case 78:case 80:return!0}}}),a.fn.textcomplete.Adapter=b}(a),+function(a){"use strict";function b(a,b,c){this.initialize(a,b,c)}a.extend(b.prototype,a.fn.textcomplete.Adapter.prototype,{select:function(b,c,d){var e,f=this.getTextFromHeadToCaret(),g=this.el.value.substring(this.el.selectionEnd),h=c.replace(b,d);"undefined"!=typeof h&&(a.isArray(h)&&(g=h[1]+g,h=h[0]),e=a.isFunction(c.match)?c.match(f):c.match,f=f.replace(e,h),this.$el.val(f+g),this.el.selectionStart=this.el.selectionEnd=f.length)},getTextFromHeadToCaret:function(){return this.el.value.substring(0,this.el.selectionEnd)},_getCaretRelativePosition:function(){var b=a.fn.textcomplete.getCaretCoordinates(this.el,this.el.selectionStart);return{top:b.top+this._calculateLineHeight()-this.$el.scrollTop(),left:b.left-this.$el.scrollLeft(),lineHeight:this._calculateLineHeight()}},_calculateLineHeight:function(){var a=parseInt(this.$el.css("line-height"),10);if(isNaN(a)){var b=this.el.parentNode,c=document.createElement(this.el.nodeName),d=this.el.style;c.setAttribute("style","margin:0px;padding:0px;font-family:"+d.fontFamily+";font-size:"+d.fontSize),c.innerHTML="test",b.appendChild(c),a=c.clientHeight,b.removeChild(c)}return a}}),a.fn.textcomplete.Textarea=b}(a),+function(a){"use strict";function b(b,d,e){this.initialize(b,d,e),a("<span>"+c+"</span>").css({position:"absolute",top:-9999,left:-9999}).insertBefore(b)}var c="吶";a.extend(b.prototype,a.fn.textcomplete.Textarea.prototype,{select:function(b,c,d){var e,f=this.getTextFromHeadToCaret(),g=this.el.value.substring(f.length),h=c.replace(b,d);if("undefined"!=typeof h){a.isArray(h)&&(g=h[1]+g,h=h[0]),e=a.isFunction(c.match)?c.match(f):c.match,f=f.replace(e,h),this.$el.val(f+g),this.el.focus();var i=this.el.createTextRange();i.collapse(!0),i.moveEnd("character",f.length),i.moveStart("character",f.length),i.select()}},getTextFromHeadToCaret:function(){this.el.focus();var a=document.selection.createRange();a.moveStart("character",-this.el.value.length);var b=a.text.split(c);return 1===b.length?b[0]:b[1]}}),a.fn.textcomplete.IETextarea=b}(a),+function(a){"use strict";function b(a,b,c){this.initialize(a,b,c)}a.extend(b.prototype,a.fn.textcomplete.Adapter.prototype,{select:function(b,c,d){var e=this.getTextFromHeadToCaret(),f=this.el.ownerDocument.getSelection(),g=f.getRangeAt(0),h=g.cloneRange();h.selectNodeContents(g.startContainer);var i,j=h.toString(),k=j.substring(g.startOffset),l=c.replace(b,d);if("undefined"!=typeof l){a.isArray(l)&&(k=l[1]+k,l=l[0]),i=a.isFunction(c.match)?c.match(e):c.match,e=e.replace(i,l).replace(/ $/," "),g.selectNodeContents(g.startContainer),g.deleteContents();var m=this.el.ownerDocument.createElement("div");m.innerHTML=e;var n=this.el.ownerDocument.createElement("div");n.innerHTML=k;for(var o,p,q=this.el.ownerDocument.createDocumentFragment();o=m.firstChild;)p=q.appendChild(o);for(;o=n.firstChild;)q.appendChild(o);g.insertNode(q),g.setStartAfter(p),g.collapse(!0),f.removeAllRanges(),f.addRange(g)}},_getCaretRelativePosition:function(){var b=this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),c=this.el.ownerDocument.createElement("span");b.insertNode(c),b.selectNodeContents(c),b.deleteContents();var d=a(c),e=d.offset();if(e.left-=this.$el.offset().left,e.top+=d.height()-this.$el.offset().top,e.lineHeight=d.height(),this.completer.$iframe){var f=this.completer.$iframe.offset();e.top+=f.top,e.left+=f.left,e.top-=this.$el.scrollTop()}return d.remove(),e},getTextFromHeadToCaret:function(){var a=this.el.ownerDocument.getSelection().getRangeAt(0),b=a.cloneRange();return b.selectNodeContents(a.startContainer),b.toString().substring(0,a.startOffset)}}),a.fn.textcomplete.ContentEditable=b}(a),+function(a){"use strict";function b(a,b,c){this.initialize(a,b,c)}a.extend(b.prototype,a.fn.textcomplete.ContentEditable.prototype,{_bindEvents:function(){var b=this;CKEDITOR.instances.issue_notes.on("key",function(a){var c=a.data;return b._onKeyup(c),b.completer.dropdown.shown&&b._skipSearch(c)?!1:void 0},null,null,1),this.$el.on("keyup."+this.id,a.proxy(this._onKeyup,this))}}),a.fn.textcomplete.CKEditor=b}(a),function(a){function b(a,b,f){if(!d)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");var g=f&&f.debug||!1;if(g){var h=document.querySelector("#input-textarea-caret-position-mirror-div");h&&h.parentNode.removeChild(h)}var i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div",document.body.appendChild(i);var j=i.style,k=window.getComputedStyle?getComputedStyle(a):a.currentStyle;j.whiteSpace="pre-wrap","INPUT"!==a.nodeName&&(j.wordWrap="break-word"),j.position="absolute",g||(j.visibility="hidden"),c.forEach(function(a){j[a]=k[a]}),e?a.scrollHeight>parseInt(k.height)&&(j.overflowY="scroll"):j.overflow="hidden",i.textContent=a.value.substring(0,b),"INPUT"===a.nodeName&&(i.textContent=i.textContent.replace(/\s/g," "));var l=document.createElement("span");l.textContent=a.value.substring(b)||".",i.appendChild(l);var m={top:l.offsetTop+parseInt(k.borderTopWidth),left:l.offsetLeft+parseInt(k.borderLeftWidth)};return g?l.style.backgroundColor="#aaa":document.body.removeChild(i),m}var c=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],d="undefined"!=typeof window,e=d&&null!=window.mozInnerScreenX;a.fn.textcomplete.getCaretCoordinates=b}(a),a});
+//# sourceMappingURL=dist/jquery.textcomplete.min.map
@@ -163,15 +163,37 @@ aside {
background-color: #333;
}
+#contacts-list-filters label {
+ height: 26px;
+ width: 26px;
+
+ /*display: flex;
+ align-self: center;*/
+ padding: 5px 8px;
+ padding-right: 0;
+
+ background-color: #171717;
+ border: none;
+ border-top-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ color: #555555;
+ font-size: 14px;
+}
+#contacts-list-filters label.active { color: #fff; }
+#contacts-list-filters #contacts-list-search::-webkit-input-placeholder {
+ color: #555555;
+ font-style: italic;
+}
#contacts-list-filters #contacts-list-search {
height: 26px;
width: 70%;
- padding: 5px 10px;
+ padding: 5px;
margin-right: 10px;
background-color: #171717;
border: none;
- border-radius: 5px;
+ border-top-right-radius: 5px;
+ border-bottom-right-radius: 5px;
color: #fff;
}
#contacts-list-filters #contacts-list-filter {
@@ -492,6 +514,10 @@ section#chatview-content {
flex: 1;
padding: 0 10px;
}
+#chatview-content .message .message-content.quote {
+ font-weight: bold;
+ color: #27ae60;
+}
/**
* Fix for the word-break not working within anonymous flex content.
* @see https://bugzilla.mozilla.org/show_bug.cgi?id=1136818
@@ -771,4 +797,84 @@ dialog .dialog-footer button {
border-radius: 5px;
}
+/* AutoComplete styles for Emoji One */
+.dropdown-menu {
+ list-style: none;
+ padding: 5px 0;
+ margin: 0;
+ top: -10px;
+ border: 1px solid #ccc;
+ background-color: white;
+ border-radius: 5px;
+ overflow: hidden;
+ font-size: inherit;
+ letter-spacing: .025em;
+}
+.dropdown-menu a:hover {
+ cursor: pointer;
+}
+.dropdown-menu li {
+ letter-spacing: 0;
+ display: block;
+ float: none;
+ margin: 0;
+ padding: 0;
+ border:none;
+}
+.dropdown-menu li:before {
+ display: none;
+}
+.dropdown-menu li .emojione {
+ vertical-align: middle;
+ font-size: 1.23em;
+ width: 1em;
+ height: 1em;
+ top: -1px;
+ margin: 0 .3em 0 0;
+}
+.dropdown-menu li a {
+ display: block;
+ height: 100%;
+ line-height: 1.8em;
+ padding: 0 1.54em 0 .615em;
+ color: #4f4f4f;
+}
+.dropdown-menu .active,
+.dropdown-menu li:hover {
+ background: #222222;
+ color: white;
+}
+.dropdown-menu .active a,
+.dropdown-menu li:hover a {
+ color: inherit;
+}
+/*
+.textcomplete-dropdown {
+ border: 1px solid #ddd;
+ background-color: white;
+}
+
+.textcomplete-dropdown li {
+ border-top: 1px solid #ddd;
+ padding: 2px 5px;
+}
+
+.textcomplete-dropdown li:first-child {
+ border-top: none;
+}
+
+.textcomplete-dropdown li:hover,
+.textcomplete-dropdown .active {
+ background-color: rgb(110, 183, 219);
+}
+
+.textcomplete-dropdown {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.textcomplete-dropdown a:hover {
+ cursor: pointer;
+}*/
@@ -5,8 +5,10 @@ const electron = require('electron');
const app = electron.remote;
const ipc = electron.ipcRenderer;
const toxcore = require('toxcore');
-const emojione = require('emojione');
+const emojione = window.emojione = require('emojione');
const dateformat = require('date-format');
+window.$ = window.jQuery = require('jquery');
+const jqueryTextComplete = require('jquery-textcomplete');
const ToxStatus = require('./ToxStatus.js');
const stringHelper = require('../helpers/string.js');
@@ -46,6 +48,8 @@ Tox.prototype.mockup = function () {
this.addMessage("outgoing", selfName, "Nice ink work mate", "12:54");
this.addMessage("outgoing", selfName, "so where's the rest of it", "12:54");
this.addMessage("incoming", friendName, "With full support for emojione! 😀😬😁😂😃😄😅😆😇😉😊🙂🙃☺😋😌😍😘😗😙😚😜😝😛🤑🤓😎🤗😏😶😐😑😒🙄🤔😳😞😟😠😡😔😕🙁☹😣😖😫😩😤😮😱😨😰😯😦😧😢😥😪😓😭😵😲🤐😷🤒🤕😴💤💩😈👿👹👺💀👻👽🤖😺😸😹😻😼😽 and many more ! ", "12:55");
+ this.addQuote("outgoing", selfName, "so where's the rest of it", "12:55");
+ this.addMessage("incoming", friendName, "That's coming soon! :monkey:", "12:55");
const timestamp = dateformat('dd/MM/yyyy');
this.addInfoMessage("Day changed, " + timestamp);
@@ -57,10 +61,10 @@ Tox.prototype.mockup = function () {
**/
Tox.prototype.init = function () {
// Initialize emojione.
- emojione.imageType = 'png';
- emojione.ascii = true;
- emojione.imagePathPNG = '../assets/images/emojis/png/';
- emojione.imagePathSVG = '../assets/images/emojis/svg/';
+ emojione.imageType = window.emojione.imageType = 'png';
+ emojione.ascii = window.emojione.ascii = true;
+ emojione.imagePathPNG = window.emojione.imagePathPNG = '../assets/images/emojis/png/';
+ emojione.imagePathSVG = window.emojione.imagePathSVG = '../assets/images/emojis/svg/';
// Define a profile.
// TODO: Refactorize this in a class.
@@ -86,6 +90,8 @@ Tox.prototype.init = function () {
this.buttonShowTransfers = document.querySelector('#tox-menu #show-transfers');
this.buttonShowSettings = document.querySelector('#tox-menu #show-settings');
+ this.labelContactsFilter = document.querySelector('#contacts-list-search-label');
+ this.inputContactsFilter = document.querySelector('#contacts-list-search');
this.contactslist = document.querySelector('#contacts-list');
this.chatview = document.querySelector('#chatview-content');
@@ -203,7 +209,9 @@ Tox.prototype.bindEvents = function () {
// We handle message sending via Enter / We handle shift+enter newline.
this.entryMessage.addEventListener('keydown', function (e) {
- if (e.shiftKey && e.keyCode == 13) {
+ if (window.emojiSearch != undefined && window.emojiSearch == true) return true;
+
+ if (e.shiftKey && e.keyCode == 13) {
return true;
} else if (e.keyCode == 13) { // Message sending.
e.preventDefault();
@@ -236,11 +244,16 @@ Tox.prototype.bindEvents = function () {
this.modalAddFriend.classList.toggle('hide');
this.modalAddFriend.close();
}
-
- console.log(e);
- //this.modalAddFriend.classList.toggle('hide');
- //this.modalAddFriend.close();
}.bind(this));
+
+ // Can't be done using only css, damn.
+ let toggleLabel = function (e) {
+ if (this.inputContactsFilter.value != "") return;
+ this.labelContactsFilter.classList.toggle('active');
+ };
+ this.inputContactsFilter.addEventListener('active', toggleLabel.bind(this));
+ this.inputContactsFilter.addEventListener('focus', toggleLabel.bind(this));
+ this.inputContactsFilter.addEventListener('blur', toggleLabel.bind(this));
}
/**
@@ -277,7 +290,7 @@ Tox.prototype.addMessage = function (direction, author, message, timestamp) {
}
const tpl = `<article class="message message-${direction.escape()}">
- <span class="message-author unselectable ellipsis">${_author.escape()}</span>
+ <span class="message-author unselectable ellipsis" title="${_author.escape()}">${_author.escape()}</span>
<span class="message-content"><div>${emojione.toImage(message.escape().nl2br())}</div></span>
<span class="message-timestamp unselectable">${timestamp.escape()}</span>
</article>`;
SkyzohKey/Tox Client | Show object: 329ed8e88688362405d69f358de5d86204a8f92e ∙ GitFOSS @@ -288,6 +301,35 @@ Tox.prototype.addMessage = function (direction, author, message, timestamp) {
this.scrollChatView();
}
+/**
+* addMessage - Add a message to the current chatview.
+* TODO: Refactorize this using a Message class.
+* TODO: Use html templates instead of this big string.
+**/
+Tox.prototype.addQuote = function (direction, author, message, timestamp) {
+ let _author = "";
+ if (this.latestDirection != direction) {
+ _author = author;
+ }
+
+ this.latestDirection = direction;
+
+ if (timestamp === undefined) {
+ timestamp = dateformat('hh:mm', new Date());
+ }
+
+ const tpl = `<article class="message message-${direction.escape()}">
+ <span class="message-author unselectable ellipsis" title="${_author.escape()}">${_author.escape()}</span>
+ <span class="message-content quote"><div>>${emojione.toImage(message.escape().nl2br())}</div></span>
+ <span class="message-timestamp unselectable">${timestamp.escape()}</span>
+ </article>`;
+
+ const c = this.chatview.innerHTML;
+ this.chatview.innerHTML = c + tpl;
+ this.entryMessage.value = ''; // Clear the entry once message added.
+ this.scrollChatView();
+}
+
/**
* addFileTransfer - Add a file transfer to the current chatview.
* TODO: Refactorize this via a FileTransfer class.
@@ -306,7 +348,7 @@ Tox.prototype.addFileTransfer = function (direction, author, filename, filesize,
}
const tpl = `<article class="message message-${direction.escape()}">
- <span class="message-author unselectable ellipsis">${_author.escape()}</span>
+ <span class="message-author unselectable ellipsis" title="${_author.escape()}">${_author.escape()}</span>
<span class="transfer-content">
<span class="transfer-icon unselectable"></span>
<span class="transfer-name ellipsis">${filename.escape()}</span>
@@ -0,0 +1,3 @@
+var emojiStrategy = {"grinning":{"unicode":"1F600","shortname":":grinning:","aliases":"","keywords":"grinning face face happy joy smile grin grinning smiling smile smiley"},"grin":{"unicode":"1F601","shortname":":grin:","aliases":"","keywords":"grinning face with smiling eyes face happy joy smile grin grinning smiling smile smiley"},"joy":{"unicode":"1F602","shortname":":joy:","aliases":"","keywords":"face with tears of joy cry face haha happy tears tears cry joy happy weep"},"smiley":{"unicode":"1F603","shortname":":smiley:","aliases":"","keywords":"smiling face with open mouth face haha happy joy smiling smile smiley"},"smile":{"unicode":"1F604","shortname":":smile:","aliases":"","keywords":"smiling face with open mouth and smiling eyes face funny haha happy joy laugh smile smiley smiling"},"sweat_smile":{"unicode":"1F605","shortname":":sweat_smile:","aliases":"","keywords":"smiling face with open mouth and cold sweat face happy hot smiling cold sweat perspiration"},"laughing":{"unicode":"1F606","shortname":":laughing:","aliases":":satisfied:","keywords":"smiling face with open mouth and tightly-closed ey happy joy lol smiling laughing laugh"},"innocent":{"unicode":"1F607","shortname":":innocent:","aliases":"","keywords":"smiling face with halo angel face halo halo angel innocent ring circle heaven"},"smiling_imp":{"unicode":"1F608","shortname":":smiling_imp:","aliases":"","keywords":"smiling face with horns devil horns horns devil impish trouble"},"imp":{"unicode":"1F47F","shortname":":imp:","aliases":"","keywords":"imp angry devil evil horns cute devil"},"wink":{"unicode":"1F609","shortname":":wink:","aliases":"","keywords":"winking face face happy mischievous secret wink winking friendly joke"},"blush":{"unicode":"1F60A","shortname":":blush:","aliases":"","keywords":"smiling face with smiling eyes crush embarrassed face flushed happy shy smile smiling smile smiley"},"relaxed":{"unicode":"263A","shortname":":relaxed:","aliases":"","keywords":"white smiling face blush face happiness massage smile"},"yum":{"unicode":"1F60B","shortname":":yum:","aliases":"","keywords":"face savouring delicious food face happy joy smile tongue delicious savoring food eat yummy yum tasty savory"},"relieved":{"unicode":"1F60C","shortname":":relieved:","aliases":"","keywords":"relieved face face happiness massage phew relaxed relieved satisfied phew relief"},"heart_eyes":{"unicode":"1F60D","shortname":":heart_eyes:","aliases":"","keywords":"smiling face with heart-shaped eyes affection crush face infatuation like love valentines smiling heart lovestruck love flirt smile heart-shaped"},"sunglasses":{"unicode":"1F60E","shortname":":sunglasses:","aliases":"","keywords":"smiling face with sunglasses cool face smiling sunglasses sun glasses sunny cool smooth"},"smirk":{"unicode":"1F60F","shortname":":smirk:","aliases":"","keywords":"smirking face mean prank smile smug smirking smirk smug smile half-smile conceited"},"neutral_face":{"unicode":"1F610","shortname":":neutral_face:","aliases":"","keywords":"neutral face face indifference neutral objective impartial blank"},"expressionless":{"unicode":"1F611","shortname":":expressionless:","aliases":"","keywords":"expressionless face expressionless blank void vapid without expression face indifferent"},"unamused":{"unicode":"1F612","shortname":":unamused:","aliases":"","keywords":"unamused face bored face indifference serious straight face unamused not amused depressed unhappy disapprove lame"},"sweat":{"unicode":"1F613","shortname":":sweat:","aliases":"","keywords":"face with cold sweat cold sweat sick anxious worried clammy diaphoresis face hot"},"pensive":{"unicode":"1F614","shortname":":pensive:","aliases":"","keywords":"pensive face face okay sad pensive thoughtful think reflective wistful meditate serious"},"confused":{"unicode":"1F615","shortname":":confused:","aliases":"","keywords":"confused face confused confuse daze perplex puzzle indifference skeptical undecided uneasy hesitant"},"confounded":{"unicode":"1F616","shortname":":confounded:","aliases":"","keywords":"confounded face confused face sick unwell confound amaze perplex puzzle mystify"},"kissing":{"unicode":"1F617","shortname":":kissing:","aliases":"","keywords":"kissing face 3 face infatuation like love valentines kissing kiss pucker lips smooch"},"kissing_heart":{"unicode":"1F618","shortname":":kissing_heart:","aliases":"","keywords":"face throwing a kiss affection face infatuation kiss blowing kiss heart love lips like love valentines"},"kissing_smiling_eyes":{"unicode":"1F619","shortname":":kissing_smiling_eyes:","aliases":"","keywords":"kissing face with smiling eyes affection face infatuation valentines kissing kiss smile pucker lips smooch"},"kissing_closed_eyes":{"unicode":"1F61A","shortname":":kissing_closed_eyes:","aliases":"","keywords":"kissing face with closed eyes affection face infatuation like love valentines kissing kiss passion puckered heart love smooch"},"stuck_out_tongue":{"unicode":"1F61B","shortname":":stuck_out_tongue:","aliases":"","keywords":"face with stuck-out tongue childish face mischievous playful prank tongue silly playful cheeky"},"stuck_out_tongue_winking_eye":{"unicode":"1F61C","shortname":":stuck_out_tongue_winking_eye:","aliases":"","keywords":"face with stuck-out tongue and winking eye childish face mischievous playful prank tongue wink winking kidding silly playful crazy"},"stuck_out_tongue_closed_eyes":{"unicode":"1F61D","shortname":":stuck_out_tongue_closed_eyes:","aliases":"","keywords":"face with stuck-out tongue and tightly-closed eyes face mischievous playful prank tongue kidding silly playful ecstatic"},"disappointed":{"unicode":"1F61E","shortname":":disappointed:","aliases":"","keywords":"disappointed face disappointed disappoint frown depressed discouraged face sad upset"},"worried":{"unicode":"1F61F","shortname":":worried:","aliases":"","keywords":"worried face concern face nervous worried anxious distressed nervous tense"},"angry":{"unicode":"1F620","shortname":":angry:","aliases":"","keywords":"angry face angry livid mad vexed irritated annoyed face frustrated mad"},"rage":{"unicode":"1F621","shortname":":rage:","aliases":"","keywords":"pouting face angry despise hate mad pout anger rage irate"},"cry":{"unicode":"1F622","shortname":":cry:","aliases":"","keywords":"crying face face sad sad cry tear weep tears"},"persevere":{"unicode":"1F623","shortname":":persevere:","aliases":"","keywords":"persevering face endure persevere face no sick upset"},"triumph":{"unicode":"1F624","shortname":":triumph:","aliases":"","keywords":"face with look of triumph face gas phew triumph steam breath"},"disappointed_relieved":{"unicode":"1F625","shortname":":disappointed_relieved:","aliases":"","keywords":"disappointed but relieved face face nervous phew sweat disappoint relief"},"frowning":{"unicode":"1F626","shortname":":frowning:","aliases":"","keywords":"frowning face with open mouth aw face frown sad pout sulk glower"},"anguished":{"unicode":"1F627","shortname":":anguished:","aliases":"","keywords":"anguished face face nervous stunned pain anguish ouch misery distress grief"},"fearful":{"unicode":"1F628","shortname":":fearful:","aliases":"","keywords":"fearful face face nervous oops scared terrified fear fearful scared frightened"},"weary":{"unicode":"1F629","shortname":":weary:","aliases":"","keywords":"weary face face frustrated sad sleepy tired weary sleepy tired tiredness study finals school exhausted"},"sleepy":{"unicode":"1F62A","shortname":":sleepy:","aliases":"","keywords":"sleepy face face rest tired sleepy tired exhausted"},"tired_face":{"unicode":"1F62B","shortname":":tired_face:","aliases":"","keywords":"tired face face frustrated sick upset whine exhausted sleepy tired"},"grimacing":{"unicode":"1F62C","shortname":":grimacing:","aliases":"","keywords":"grimacing face face grimace teeth grimace disapprove pain"},"sob":{"unicode":"1F62D","shortname":":sob:","aliases":"","keywords":"loudly crying face cry face sad tears upset cry sob tears sad melancholy morn somber hurt"},"open_mouth":{"unicode":"1F62E","shortname":":open_mouth:","aliases":"","keywords":"face with open mouth face impressed mouth open jaw gapping surprise wow"},"hushed":{"unicode":"1F62F","shortname":":hushed:","aliases":"","keywords":"hushed face face woo quiet hush whisper silent"},"cold_sweat":{"unicode":"1F630","shortname":":cold_sweat:","aliases":"","keywords":"face with open mouth and cold sweat face nervous sweat exasperated frustrated"},"scream":{"unicode":"1F631","shortname":":scream:","aliases":"","keywords":"face screaming in fear face munch scream painting artist alien"},"astonished":{"unicode":"1F632","shortname":":astonished:","aliases":"","keywords":"astonished face face xox shocked surprise astonished"},"flushed":{"unicode":"1F633","shortname":":flushed:","aliases":"","keywords":"flushed face blush face flattered flush blush red pink cheeks shy"},"sleeping":{"unicode":"1F634","shortname":":sleeping:","aliases":"","keywords":"sleeping face face sleepy tired sleep sleepy sleeping snore"},"dizzy_face":{"unicode":"1F635","shortname":":dizzy_face:","aliases":"","keywords":"dizzy face dizzy drunk inebriated face spent unconscious xox"},"no_mouth":{"unicode":"1F636","shortname":":no_mouth:","aliases":"","keywords":"face without mouth face hellokitty mouth silent vapid"},"mask":{"unicode":"1F637","shortname":":mask:","aliases":"","keywords":"face with medical mask face ill sick sick virus flu medical mask"},"slight_frown":{"unicode":"1F641","shortname":":slight_frown:","aliases":":slightly_frowning_face:","keywords":"slightly frowning face "},"slight_smile":{"unicode":"1F642","shortname":":slight_smile:","aliases":":slightly_smiling_face:","keywords":"slightly smiling face "},"smile_cat":{"unicode":"1F638","shortname":":smile_cat:","aliases":"","keywords":"grinning cat face with smiling eyes animal cats cat smile grin grinning"},"joy_cat":{"unicode":"1F639","shortname":":joy_cat:","aliases":"","keywords":"cat face with tears of joy animal cats haha happy tears happy tears cry joy"},"smiley_cat":{"unicode":"1F63A","shortname":":smiley_cat:","aliases":"","keywords":"smiling cat face with open mouth animal cats happy smile smiley cat happy"},"heart_eyes_cat":{"unicode":"1F63B","shortname":":heart_eyes_cat:","aliases":"","keywords":"smiling cat face with heart-shaped eyes affection animal cats like love valentines lovestruck love heart"},"smirk_cat":{"unicode":"1F63C","shortname":":smirk_cat:","aliases":"","keywords":"cat face with wry smile animal cats smirk smirking wry confident confidence"},"kissing_cat":{"unicode":"1F63D","shortname":":kissing_cat:","aliases":"","keywords":"kissing cat face with closed eyes animal cats passion kiss puckered heart love"},"pouting_cat":{"unicode":"1F63E","shortname":":pouting_cat:","aliases":"","keywords":"pouting cat face animal cats pout annoyed miffed glower frown"},"crying_cat_face":{"unicode":"1F63F","shortname":":crying_cat_face:","aliases":"","keywords":"crying cat face animal cats sad tears weep cry cat sob tears sad melancholy morn somber hurt"},"scream_cat":{"unicode":"1F640","shortname":":scream_cat:","aliases":"","keywords":"weary cat face animal cats munch weary sleepy tired tiredness study finals school exhausted scream painting artist"},"footprints":{"unicode":"1F463","shortname":":footprints:","aliases":"","keywords":"footprints feet"},"bust_in_silhouette":{"unicode":"1F464","shortname":":bust_in_silhouette:","aliases":"","keywords":"bust in silhouette human man person user silhouette person user member account guest icon avatar profile me myself i"},"busts_in_silhouette":{"unicode":"1F465","shortname":":busts_in_silhouette:","aliases":"","keywords":"busts in silhouette group human man person team user silhouette silhouettes people user members accounts relationship shadow"},"levitate":{"unicode":"1F574","shortname":":levitate:","aliases":":man_in_business_suit_levitating:","keywords":"man in business suit levitating "},"spy":{"unicode":"1F575","shortname":":spy:","aliases":":sleuth_or_spy:","keywords":"sleuth or spy "},"baby":{"unicode":"1F476","shortname":":baby:","aliases":"","keywords":"baby boy child infant"},"boy":{"unicode":"1F466","shortname":":boy:","aliases":"","keywords":"boy guy male man"},"girl":{"unicode":"1F467","shortname":":girl:","aliases":"","keywords":"girl female woman"},"man":{"unicode":"1F468","shortname":":man:","aliases":"","keywords":"man classy dad father guy mustashe"},"woman":{"unicode":"1F469","shortname":":woman:","aliases":"","keywords":"woman female girls"},"family":{"unicode":"1F46A","shortname":":family:","aliases":"","keywords":"family child dad father home mom mother parents family mother father child girl boy group unit"},"family_mwg":{"unicode":"1F468-1F469-1F467","shortname":":family_mwg:","aliases":"","keywords":"family(man,woman,girl) "},"family_mwgb":{"unicode":"1F468-1F469-1F467-1F466","shortname":":family_mwgb:","aliases":"","keywords":"family(man,woman,girl,boy) "},"family_mwbb":{"unicode":"1F468-1F469-1F466-1F466","shortname":":family_mwbb:","aliases":"","keywords":"family(man,woman,boy,boy) "},"family_mwgg":{"unicode":"1F468-1F469-1F467-1F467","shortname":":family_mwgg:","aliases":"","keywords":"family(man,woman,girl,girl) "},"family_wwb":{"unicode":"1F469-1F469-1F466","shortname":":family_wwb:","aliases":"","keywords":"family(woman,woman,boy) "},"family_wwg":{"unicode":"1F469-1F469-1F467","shortname":":family_wwg:","aliases":"","keywords":"family(woman,woman,girl) "},"family_wwgb":{"unicode":"1F469-1F469-1F467-1F466","shortname":":family_wwgb:","aliases":"","keywords":"family(woman,woman,girl,boy) "},"family_wwbb":{"unicode":"1F469-1F469-1F466-1F466","shortname":":family_wwbb:","aliases":"","keywords":"family(woman,woman,boy,boy) "},"family_wwgg":{"unicode":"1F469-1F469-1F467-1F467","shortname":":family_wwgg:","aliases":"","keywords":"family(woman,woman,girl,girl) "},"family_mmb":{"unicode":"1F468-1F468-1F466","shortname":":family_mmb:","aliases":"","keywords":"family(man,man,boy) "},"family_mmg":{"unicode":"1F468-1F468-1F467","shortname":":family_mmg:","aliases":"","keywords":"family(man,man,girl) "},"family_mmgb":{"unicode":"1F468-1F468-1F467-1F466","shortname":":family_mmgb:","aliases":"","keywords":"family(man,man,girl,boy) "},"family_mmbb":{"unicode":"1F468-1F468-1F466-1F466","shortname":":family_mmbb:","aliases":"","keywords":"family(man,man,boy,boy) "},"family_mmgg":{"unicode":"1F468-1F468-1F467-1F467","shortname":":family_mmgg:","aliases":"","keywords":"family(man,man,girl,girl) "},"couple":{"unicode":"1F46B","shortname":":couple:","aliases":"","keywords":"man and woman holding hands affection date dating human like love marriage people valentines"},"two_men_holding_hands":{"unicode":"1F46C","shortname":":two_men_holding_hands:","aliases":"","keywords":"two men holding hands bromance couple friends like love men gay homosexual friends hands holding team unity"},"two_women_holding_hands":{"unicode":"1F46D","shortname":":two_women_holding_hands:","aliases":"","keywords":"two women holding hands couple female friends like love women hands girlfriends friends sisters mother daughter gay homosexual couple unity"},"dancers":{"unicode":"1F46F","shortname":":dancers:","aliases":"","keywords":"woman with bunny ears bunny female girls women dancing dancers showgirl playboy costume bunny cancan"},"bride_with_veil":{"unicode":"1F470","shortname":":bride_with_veil:","aliases":"","keywords":"bride with veil couple marriage wedding bride wedding planning veil gown dress engagement white"},"person_with_blond_hair":{"unicode":"1F471","shortname":":person_with_blond_hair:","aliases":"","keywords":"person with blond hair male man blonde young western westerner occidental"},"man_with_gua_pi_mao":{"unicode":"1F472","shortname":":man_with_gua_pi_mao:","aliases":"","keywords":"man with gua pi mao boy male skullcap chinese asian qing"},"man_with_turban":{"unicode":"1F473","shortname":":man_with_turban:","aliases":"","keywords":"man with turban male turban headdress headwear pagri india indian mummy wisdom peace"},"older_man":{"unicode":"1F474","shortname":":older_man:","aliases":"","keywords":"older man human male men"},"older_woman":{"unicode":"1F475","shortname":":older_woman:","aliases":":grandma:","keywords":"older woman female girl women grandma grandmother"},"cop":{"unicode":"1F46E","shortname":":cop:","aliases":"","keywords":"police officer arrest enforcement law man police"},"construction_worker":{"unicode":"1F477","shortname":":construction_worker:","aliases":"","keywords":"construction worker human male man wip"},"princess":{"unicode":"1F478","shortname":":princess:","aliases":"","keywords":"princess blond crown female girl woman princess royal royalty king queen daughter disney high-maintenance"},"guardsman":{"unicode":"1F482","shortname":":guardsman:","aliases":"","keywords":"guardsman british gb male man uk guardsman guard bearskin hat british queen ceremonial military"},"angel":{"unicode":"1F47C","shortname":":angel:","aliases":"","keywords":"baby angel baby angel halo cupid wings halo heaven wings jesus"},"santa":{"unicode":"1F385","shortname":":santa:","aliases":"","keywords":"father christmas christmas father christmas festival male man xmas santa saint nick jolly ho ho ho north pole presents gifts naughty nice sleigh father christmas holiday"},"ghost":{"unicode":"1F47B","shortname":":ghost:","aliases":"","keywords":"ghost halloween"},"japanese_ogre":{"unicode":"1F479","shortname":":japanese_ogre:","aliases":"","keywords":"japanese ogre monster japanese oni demon troll ogre folklore monster devil mask theater horns teeth"},"japanese_goblin":{"unicode":"1F47A","shortname":":japanese_goblin:","aliases":"","keywords":"japanese goblin evil mask red japanese tengu supernatural avian demon goblin mask theater nose frown mustache anger frustration"},"poop":{"unicode":"1F4A9","shortname":":poop:","aliases":":shit: :hankey: :poo:","keywords":"pile of poo poop shit shitface turd poo"},"skull":{"unicode":"1F480","shortname":":skull:","aliases":":skeleton:","keywords":"skull dead skeleton dying"},"alien":{"unicode":"1F47D","shortname":":alien:","aliases":"","keywords":"extraterrestrial alien UFO paul alien ufo"},"space_invader":{"unicode":"1F47E","shortname":":space_invader:","aliases":"","keywords":"alien monster arcade game"},"bow":{"unicode":"1F647","shortname":":bow:","aliases":"","keywords":"person bowing deeply boy male man sorry bow respect curtsy bend"},"information_desk_person":{"unicode":"1F481","shortname":":information_desk_person:","aliases":"","keywords":"information desk person female girl human woman information help question answer sassy unimpressed attitude snarky"},"no_good":{"unicode":"1F645","shortname":":no_good:","aliases":"","keywords":"face with no good gesture female girl woman no stop nope don't not"},"ok_woman":{"unicode":"1F646","shortname":":ok_woman:","aliases":"","keywords":"face with ok gesture female girl human pink women yes ok okay accept"},"raising_hand":{"unicode":"1F64B","shortname":":raising_hand:","aliases":"","keywords":"happy person raising one hand female girl woman hand raise notice attention answer"},"person_with_pouting_face":{"unicode":"1F64E","shortname":":person_with_pouting_face:","aliases":"","keywords":"person with pouting face female girl woman pout sexy cute annoyed"},"person_frowning":{"unicode":"1F64D","shortname":":person_frowning:","aliases":"","keywords":"person frowning female girl woman dejected rejected sad frown"},"massage":{"unicode":"1F486","shortname":":massage:","aliases":"","keywords":"face massage female girl woman"},"haircut":{"unicode":"1F487","shortname":":haircut:","aliases":"","keywords":"haircut female girl woman"},"couple_with_heart":{"unicode":"1F491","shortname":":couple_with_heart:","aliases":"","keywords":"couple with heart affection dating human like love marriage valentines"},"couple_ww":{"unicode":"1F469-2764-1F469","shortname":":couple_ww:","aliases":":couple_with_heart_ww:","keywords":"couple(woman,woman) "},"couple_mm":{"unicode":"1F468-2764-1F468","shortname":":couple_mm:","aliases":":couple_with_heart_mm:","keywords":"couple(man,man) "},"couplekiss":{"unicode":"1F48F","shortname":":couplekiss:","aliases":"","keywords":"kiss dating like love marriage valentines"},"kiss_ww":{"unicode":"1F469-2764-1F48B-1F469","shortname":":kiss_ww:","aliases":":couplekiss_ww:","keywords":"kiss(woman,woman) "},"kiss_mm":{"unicode":"1F468-2764-1F48B-1F468","shortname":":kiss_mm:","aliases":":couplekiss_mm:","keywords":"kiss(man,man) "},"raised_hands":{"unicode":"1F64C","shortname":":raised_hands:","aliases":"","keywords":"person raising both hands in celebration gesture hooray winning woot yay banzai"},"clap":{"unicode":"1F44F","shortname":":clap:","aliases":"","keywords":"clapping hands sign applause congrats hands praise clapping appreciation approval sound encouragement enthusiasm"},"ear":{"unicode":"1F442","shortname":":ear:","aliases":"","keywords":"ear face hear listen sound"},"eye":{"unicode":"1F441","shortname":":eye:","aliases":"","keywords":"eye "},"eyes":{"unicode":"1F440","shortname":":eyes:","aliases":"","keywords":"eyes look peek stalk watch"},"nose":{"unicode":"1F443","shortname":":nose:","aliases":"","keywords":"nose smell sniff"},"lips":{"unicode":"1F444","shortname":":lips:","aliases":"","keywords":"mouth kiss mouth"},"lips2":{"unicode":"1F5E2","shortname":":lips2:","aliases":"","keywords":"lips "},"kiss":{"unicode":"1F48B","shortname":":kiss:","aliases":"","keywords":"kiss mark affection face like lips love valentines"},"tongue":{"unicode":"1F445","shortname":":tongue:","aliases":"","keywords":"tongue mouth playful tongue mouth taste buds food silly playful tease kiss french kiss lick tasty playfulness silliness intimacy"},"nail_care":{"unicode":"1F485","shortname":":nail_care:","aliases":"","keywords":"nail polish beauty manicure"},"wave":{"unicode":"1F44B","shortname":":wave:","aliases":"","keywords":"waving hand sign farewell gesture goodbye hands solong"},"thumbsup":{"unicode":"1F44D","shortname":":thumbsup:","aliases":":+1:","keywords":"thumbs up sign cool hand like yes"},"thumbsdown":{"unicode":"1F44E","shortname":":thumbsdown:","aliases":":-1:","keywords":"thumbs down sign hand no"},"point_up":{"unicode":"261D","shortname":":point_up:","aliases":"","keywords":"white up pointing index direction fingers hand"},"point_up_2":{"unicode":"1F446","shortname":":point_up_2:","aliases":"","keywords":"white up pointing backhand index direction fingers hand"},"point_down":{"unicode":"1F447","shortname":":point_down:","aliases":"","keywords":"white down pointing backhand index direction fingers hand"},"point_left":{"unicode":"1F448","shortname":":point_left:","aliases":"","keywords":"white left pointing backhand index direction fingers hand"},"point_right":{"unicode":"1F449","shortname":":point_right:","aliases":"","keywords":"white right pointing backhand index direction fingers hand"},"ok_hand":{"unicode":"1F44C","shortname":":ok_hand:","aliases":"","keywords":"ok hand sign fingers limbs perfect okay ok smoke smoking marijuana joint pot 420"},"v":{"unicode":"270C","shortname":":v:","aliases":"","keywords":"victory hand fingers hand ohyeah peace two victory"},"punch":{"unicode":"1F44A","shortname":":punch:","aliases":"","keywords":"fisted hand sign fist hand"},"fist":{"unicode":"270A","shortname":":fist:","aliases":"","keywords":"raised fist fingers grasp hand"},"raised_hand":{"unicode":"270B","shortname":":raised_hand:","aliases":"","keywords":"raised hand female girl woman"},"muscle":{"unicode":"1F4AA","shortname":":muscle:","aliases":"","keywords":"flexed biceps arm flex hand strong muscle bicep"},"open_hands":{"unicode":"1F450","shortname":":open_hands:","aliases":"","keywords":"open hands sign butterfly fingers"},"writing_hand":{"unicode":"1F58E","shortname":":writing_hand:","aliases":":left_writing_hand:","keywords":"left writing hand "},"turned_ok_hand":{"unicode":"1F58F","shortname":":turned_ok_hand:","aliases":":turned_ok_hand_sign:","keywords":"turned ok hand sign "},"hand_splayed":{"unicode":"1F590","shortname":":hand_splayed:","aliases":":raised_hand_with_fingers_splayed:","keywords":"raised hand with fingers splayed "},"hand_splayed_reverse":{"unicode":"1F591","shortname":":hand_splayed_reverse:","aliases":":reversed_raised_hand_with_fingers_splayed:","keywords":"reversed raised hand with fingers splayed "},"thumbs_up_reverse":{"unicode":"1F592","shortname":":thumbs_up_reverse:","aliases":":reversed_thumbs_up_sign:","keywords":"reversed thumbs up sign "},"thumbs_down_reverse":{"unicode":"1F593","shortname":":thumbs_down_reverse:","aliases":":reversed_thumbs_down_sign:","keywords":"reversed thumbs down sign "},"hand_victory":{"unicode":"1F594","shortname":":hand_victory:","aliases":":reversed_victory_hand:","keywords":"reversed victory hand "},"middle_finger":{"unicode":"1F595","shortname":":middle_finger:","aliases":":reversed_hand_with_middle_finger_extended:","keywords":"reversed hand with middle finger extended "},"vulcan":{"unicode":"1F596","shortname":":vulcan:","aliases":":raised_hand_with_part_between_middle_and_ring_fingers:","keywords":"raised hand with part between middle and ring fingers "},"finger_pointing_down":{"unicode":"1F597","shortname":":finger_pointing_down:","aliases":":white_down_pointing_left_hand_index:","keywords":"white down pointing left hand index "},"finger_pointing_left":{"unicode":"1F598","shortname":":finger_pointing_left:","aliases":":sideways_white_left_pointing_index:","keywords":"sideways white left pointing index "},"finger_pointing_right":{"unicode":"1F599","shortname":":finger_pointing_right:","aliases":":sideways_white_right_pointing_index:","keywords":"sideways white right pointing index "},"finger_pointing_up":{"unicode":"1F59E","shortname":":finger_pointing_up:","aliases":":sideways_white_up_pointing_index:","keywords":"sideways white up pointing index "},"finger_pointing_down2":{"unicode":"1F59F","shortname":":finger_pointing_down2:","aliases":":sideways_white_down_pointing_index:","keywords":"sideways white down pointing index "},"pray":{"unicode":"1F64F","shortname":":pray:","aliases":"","keywords":"person with folded hands highfive hope namaste please wish pray high five hands sorrow regret sorry"},"seedling":{"unicode":"1F331","shortname":":seedling:","aliases":"","keywords":"seedling grass lawn nature plant seedling plant new start grow"},"evergreen_tree":{"unicode":"1F332","shortname":":evergreen_tree:","aliases":"","keywords":"evergreen tree nature plant evergreen tree needles christmas"},"deciduous_tree":{"unicode":"1F333","shortname":":deciduous_tree:","aliases":"","keywords":"deciduous tree nature plant deciduous tree leaves fall color"},"palm_tree":{"unicode":"1F334","shortname":":palm_tree:","aliases":"","keywords":"palm tree nature plant vegetable palm tree coconuts fronds warm tropical"},"cactus":{"unicode":"1F335","shortname":":cactus:","aliases":"","keywords":"cactus nature plant vegetable cactus desert drought spike poke"},"tulip":{"unicode":"1F337","shortname":":tulip:","aliases":"","keywords":"tulip flowers nature plant tulip flower bulb spring easter"},"cherry_blossom":{"unicode":"1F338","shortname":":cherry_blossom:","aliases":"","keywords":"cherry blossom flower nature plant cherry blossom tree flower"},"rose":{"unicode":"1F339","shortname":":rose:","aliases":"","keywords":"rose flowers love valentines rose fragrant flower thorns love petals romance"},"hibiscus":{"unicode":"1F33A","shortname":":hibiscus:","aliases":"","keywords":"hibiscus flowers plant vegetable hibiscus flower warm"},"sunflower":{"unicode":"1F33B","shortname":":sunflower:","aliases":"","keywords":"sunflower nature plant sunflower sun flower seeds yellow"},"blossom":{"unicode":"1F33C","shortname":":blossom:","aliases":"","keywords":"blossom flowers nature yellow blossom daisy flower"},"bouquet":{"unicode":"1F490","shortname":":bouquet:","aliases":"","keywords":"bouquet flowers nature"},"ear_of_rice":{"unicode":"1F33E","shortname":":ear_of_rice:","aliases":"","keywords":"ear of rice nature plant ear rice food plant seed"},"herb":{"unicode":"1F33F","shortname":":herb:","aliases":"","keywords":"herb grass lawn medicine plant vegetable weed herb spice plant cook cooking"},"four_leaf_clover":{"unicode":"1F340","shortname":":four_leaf_clover:","aliases":"","keywords":"four leaf clover lucky nature plant vegetable clover four leaf luck irish saint patrick green"},"maple_leaf":{"unicode":"1F341","shortname":":maple_leaf:","aliases":"","keywords":"maple leaf canada nature plant vegetable maple leaf syrup canada tree"},"fallen_leaf":{"unicode":"1F342","shortname":":fallen_leaf:","aliases":"","keywords":"fallen leaf leaves nature plant vegetable leaf fall color deciduous autumn"},"leaves":{"unicode":"1F343","shortname":":leaves:","aliases":"","keywords":"leaf fluttering in wind grass lawn nature plant tree vegetable leaves leaf wind float fluttering"},"mushroom":{"unicode":"1F344","shortname":":mushroom:","aliases":"","keywords":"mushroom plant vegetable mushroom fungi food fungus"},"chestnut":{"unicode":"1F330","shortname":":chestnut:","aliases":"","keywords":"chestnut food squirrel chestnut roasted food tree"},"rat":{"unicode":"1F400","shortname":":rat:","aliases":"","keywords":"rat animal mouse rat rodent crooked snitch"},"mouse2":{"unicode":"1F401","shortname":":mouse2:","aliases":"","keywords":"mouse animal nature mouse mice rodent"},"mouse":{"unicode":"1F42D","shortname":":mouse:","aliases":"","keywords":"mouse face animal nature"},"hamster":{"unicode":"1F439","shortname":":hamster:","aliases":"","keywords":"hamster face animal nature"},"ox":{"unicode":"1F402","shortname":":ox:","aliases":"","keywords":"ox animal beef cow bull"},"water_buffalo":{"unicode":"1F403","shortname":":water_buffalo:","aliases":"","keywords":"water buffalo animal cow nature ox water buffalo asia bovine milk dairy"},"cow2":{"unicode":"1F404","shortname":":cow2:","aliases":"","keywords":"cow animal beef nature ox cow milk dairy beef bessie moo"},"cow":{"unicode":"1F42E","shortname":":cow:","aliases":"","keywords":"cow face animal beef ox"},"tiger2":{"unicode":"1F405","shortname":":tiger2:","aliases":"","keywords":"tiger animal nature tiger cat striped tony tigger hobs"},"leopard":{"unicode":"1F406","shortname":":leopard:","aliases":"","keywords":"leopard animal nature leopard cat spot spotted sexy"},"tiger":{"unicode":"1F42F","shortname":":tiger:","aliases":"","keywords":"tiger face animal"},"chipmunk":{"unicode":"1F43F","shortname":":chipmunk:","aliases":"","keywords":"chipmunk "},"rabbit2":{"unicode":"1F407","shortname":":rabbit2:","aliases":"","keywords":"rabbit animal nature rabbit bunny easter reproduction prolific"},"rabbit":{"unicode":"1F430","shortname":":rabbit:","aliases":"","keywords":"rabbit face animal nature"},"cat2":{"unicode":"1F408","shortname":":cat2:","aliases":"","keywords":"cat animal meow pet cat kitten meow"},"cat":{"unicode":"1F431","shortname":":cat:","aliases":"","keywords":"cat face animal meow"},"racehorse":{"unicode":"1F40E","shortname":":racehorse:","aliases":"","keywords":"horse animal gamble horse powerful draft calvary cowboy cowgirl mounted race ride gallop trot colt filly mare stallion gelding yearling thoroughbred pony"},"horse":{"unicode":"1F434","shortname":":horse:","aliases":"","keywords":"horse face animal brown"},"ram":{"unicode":"1F40F","shortname":":ram:","aliases":"","keywords":"ram animal nature sheep ram sheep male horn horns"},"sheep":{"unicode":"1F411","shortname":":sheep:","aliases":"","keywords":"sheep animal nature sheep wool flock follower ewe female lamb"},"goat":{"unicode":"1F410","shortname":":goat:","aliases":"","keywords":"goat animal nature goat sheep kid billy livestock"},"rooster":{"unicode":"1F413","shortname":":rooster:","aliases":"","keywords":"rooster animal chicken nature rooster cockerel cock male cock-a-doodle-doo crowing"},"chicken":{"unicode":"1F414","shortname":":chicken:","aliases":"","keywords":"chicken animal cluck chicken hen poultry livestock"},"baby_chick":{"unicode":"1F424","shortname":":baby_chick:","aliases":"","keywords":"baby chick animal chicken chick baby bird chicken young woman cute"},"hatching_chick":{"unicode":"1F423","shortname":":hatching_chick:","aliases":"","keywords":"hatching chick born chicken egg chick egg baby bird chicken young woman cute"},"hatched_chick":{"unicode":"1F425","shortname":":hatched_chick:","aliases":"","keywords":"front-facing baby chick baby chicken chick baby bird chicken young woman cute"},"bird":{"unicode":"1F426","shortname":":bird:","aliases":"","keywords":"bird animal fly nature tweet"},"penguin":{"unicode":"1F427","shortname":":penguin:","aliases":"","keywords":"penguin animal nature"},"elephant":{"unicode":"1F418","shortname":":elephant:","aliases":"","keywords":"elephant animal nature nose thailand"},"dromedary_camel":{"unicode":"1F42A","shortname":":dromedary_camel:","aliases":"","keywords":"dromedary camel animal desert hot dromedary camel hump desert middle east heat hot water hump day wednesday sex"},"camel":{"unicode":"1F42B","shortname":":camel:","aliases":"","keywords":"bactrian camel animal hot nature bactrian camel hump desert central asia heat hot water hump day wednesday sex"},"boar":{"unicode":"1F417","shortname":":boar:","aliases":"","keywords":"boar animal nature"},"pig2":{"unicode":"1F416","shortname":":pig2:","aliases":"","keywords":"pig animal nature pig piggy pork ham hog bacon oink slop livestock greed greedy"},"pig":{"unicode":"1F437","shortname":":pig:","aliases":"","keywords":"pig face animal oink"},"pig_nose":{"unicode":"1F43D","shortname":":pig_nose:","aliases":"","keywords":"pig nose animal oink pig nose snout food eat cute oink pink smell truffle"},"dog2":{"unicode":"1F415","shortname":":dog2:","aliases":"","keywords":"dog animal doge friend nature pet dog puppy pet friend woof bark fido"},"poodle":{"unicode":"1F429","shortname":":poodle:","aliases":"","keywords":"poodle 101 animal dog nature poodle dog clip showy sophisticated vain"},"dog":{"unicode":"1F436","shortname":":dog:","aliases":"","keywords":"dog face animal friend nature woof"},"wolf":{"unicode":"1F43A","shortname":":wolf:","aliases":"","keywords":"wolf face animal nature"},"bear":{"unicode":"1F43B","shortname":":bear:","aliases":"","keywords":"bear face animal nature"},"koala":{"unicode":"1F428","shortname":":koala:","aliases":"","keywords":"koala animal nature"},"panda_face":{"unicode":"1F43C","shortname":":panda_face:","aliases":"","keywords":"panda face animal nature panda bear face cub cute endearment friendship love bamboo china black white"},"monkey_face":{"unicode":"1F435","shortname":":monkey_face:","aliases":"","keywords":"monkey face animal nature"},"see_no_evil":{"unicode":"1F648","shortname":":see_no_evil:","aliases":"","keywords":"see-no-evil monkey animal monkey nature monkey see eyes vision sight mizaru"},"hear_no_evil":{"unicode":"1F649","shortname":":hear_no_evil:","aliases":"","keywords":"hear-no-evil monkey animal monkey monkey ears hear sound kikazaru"},"speak_no_evil":{"unicode":"1F64A","shortname":":speak_no_evil:","aliases":"","keywords":"speak-no-evil monkey animal monkey monkey mouth talk say words verbal verbalize oral iwazaru"},"monkey":{"unicode":"1F412","shortname":":monkey:","aliases":"","keywords":"monkey animal nature monkey primate banana silly"},"dragon":{"unicode":"1F409","shortname":":dragon:","aliases":"","keywords":"dragon animal chinese green myth nature dragon fire legendary myth"},"dragon_face":{"unicode":"1F432","shortname":":dragon_face:","aliases":"","keywords":"dragon face animal chinese green myth nature dragon head fire legendary myth"},"crocodile":{"unicode":"1F40A","shortname":":crocodile:","aliases":"","keywords":"crocodile animal nature crocodile croc alligator gator cranky"},"snake":{"unicode":"1F40D","shortname":":snake:","aliases":"","keywords":"snake animal evil"},"turtle":{"unicode":"1F422","shortname":":turtle:","aliases":"","keywords":"turtle animal slow turtle shell tortoise chelonian reptile slow snap steady"},"frog":{"unicode":"1F438","shortname":":frog:","aliases":"","keywords":"frog face animal nature"},"whale2":{"unicode":"1F40B","shortname":":whale2:","aliases":"","keywords":"whale animal nature ocean sea whale blubber bloated fat large massive"},"whale":{"unicode":"1F433","shortname":":whale:","aliases":"","keywords":"spouting whale animal nature ocean sea"},"dolphin":{"unicode":"1F42C","shortname":":dolphin:","aliases":"","keywords":"dolphin animal fins fish flipper nature ocean sea"},"octopus":{"unicode":"1F419","shortname":":octopus:","aliases":"","keywords":"octopus animal creature ocean sea"},"fish":{"unicode":"1F41F","shortname":":fish:","aliases":"","keywords":"fish animal food nature"},"tropical_fish":{"unicode":"1F420","shortname":":tropical_fish:","aliases":"","keywords":"tropical fish animal swim"},"blowfish":{"unicode":"1F421","shortname":":blowfish:","aliases":"","keywords":"blowfish food nature ocean sea blowfish pufferfish puffer ballonfish toadfish fugu fish sushi"},"shell":{"unicode":"1F41A","shortname":":shell:","aliases":"","keywords":"spiral shell beach nature sea shell spiral beach sand crab nautilus"},"snail":{"unicode":"1F40C","shortname":":snail:","aliases":"","keywords":"snail animal shell slow snail slow escargot french appetizer"},"bug":{"unicode":"1F41B","shortname":":bug:","aliases":"","keywords":"bug insect nature bug insect virus error"},"ant":{"unicode":"1F41C","shortname":":ant:","aliases":"","keywords":"ant animal insect ant queen insect team"},"bee":{"unicode":"1F41D","shortname":":bee:","aliases":"","keywords":"honeybee animal insect bee queen buzz flower pollen sting honey hive bumble pollination"},"beetle":{"unicode":"1F41E","shortname":":beetle:","aliases":"","keywords":"lady beetle insect nature lady bug ladybug ladybird beetle cow lady cow insect endearment"},"spider":{"unicode":"1F577","shortname":":spider:","aliases":"","keywords":"spider "},"spider_web":{"unicode":"1F578","shortname":":spider_web:","aliases":"","keywords":"spider_web "},"feet":{"unicode":"1F43E","shortname":":feet:","aliases":"","keywords":"paw prints animal cat dog footprints paw pet tracking paw prints mark imprints footsteps animal lion bear dog cat raccoon critter feet pawsteps"},"zap":{"unicode":"26A1","shortname":":zap:","aliases":"","keywords":"high voltage sign lightning bolt thunder weather"},"fire":{"unicode":"1F525","shortname":":fire:","aliases":":flame:","keywords":"fire cook hot flame"},"crescent_moon":{"unicode":"1F319","shortname":":crescent_moon:","aliases":"","keywords":"crescent moon night moon crescent waxing sky night cheese phase"},"sunny":{"unicode":"2600","shortname":":sunny:","aliases":"","keywords":"black sun with rays brightness weather"},"partly_sunny":{"unicode":"26C5","shortname":":partly_sunny:","aliases":"","keywords":"sun behind cloud cloud morning nature weather"},"cloud":{"unicode":"2601","shortname":":cloud:","aliases":"","keywords":"cloud sky weather"},"cloud_rain":{"unicode":"1F327","shortname":":cloud_rain:","aliases":":cloud_with_rain:","keywords":"cloud with rain "},"cloud_snow":{"unicode":"1F328","shortname":":cloud_snow:","aliases":":cloud_with_snow:","keywords":"cloud with snow "},"cloud_lightning":{"unicode":"1F329","shortname":":cloud_lightning:","aliases":":cloud_with_lightning:","keywords":"cloud with lightning "},"cloud_tornado":{"unicode":"1F32A","shortname":":cloud_tornado:","aliases":":cloud_with_tornado:","keywords":"cloud with tornado "},"droplet":{"unicode":"1F4A7","shortname":":droplet:","aliases":"","keywords":"droplet drip faucet water drop droplet h20 water aqua tear sweat rain moisture wet moist spit"},"sweat_drops":{"unicode":"1F4A6","shortname":":sweat_drops:","aliases":"","keywords":"splashing sweat symbol water"},"umbrella":{"unicode":"2614","shortname":":umbrella:","aliases":"","keywords":"umbrella with rain drops rain weather"},"fog":{"unicode":"1F32B","shortname":":fog:","aliases":"","keywords":"fog "},"dash":{"unicode":"1F4A8","shortname":":dash:","aliases":"","keywords":"dash symbol air fast shoo wind"},"snowflake":{"unicode":"2744","shortname":":snowflake:","aliases":"","keywords":"snowflake christmas cold season weather winter xmas snowflake snow frozen droplet ice crystal cold chilly winter unique special below zero elsa"},"star2":{"unicode":"1F31F","shortname":":star2:","aliases":"","keywords":"glowing star night sparkle glow glowing star five points classic"},"star":{"unicode":"2B50","shortname":":star:","aliases":"","keywords":"white medium star night yellow"},"stars":{"unicode":"1F320","shortname":":stars:","aliases":"","keywords":"shooting star night photo shooting shoot star sky night comet meteoroid"},"sunrise_over_mountains":{"unicode":"1F304","shortname":":sunrise_over_mountains:","aliases":"","keywords":"sunrise over mountains photo vacation view sunrise sun morning mountain rural color sky"},"sunrise":{"unicode":"1F305","shortname":":sunrise:","aliases":"","keywords":"sunrise morning photo vacation view sunrise sun morning color sky"},"rainbow":{"unicode":"1F308","shortname":":rainbow:","aliases":"","keywords":"rainbow happy nature photo sky unicorn rainbow color pride diversity spectrum refract leprechaun gold"},"ocean":{"unicode":"1F30A","shortname":":ocean:","aliases":"","keywords":"water wave sea water wave ocean wave surf beach tide"},"volcano":{"unicode":"1F30B","shortname":":volcano:","aliases":"","keywords":"volcano nature photo volcano lava magma hot explode"},"milky_way":{"unicode":"1F30C","shortname":":milky_way:","aliases":"","keywords":"milky way photo space milky galaxy star stars planets space sky"},"mount_fuji":{"unicode":"1F5FB","shortname":":mount_fuji:","aliases":"","keywords":"mount fuji japan mountain nature photo"},"japan":{"unicode":"1F5FE","shortname":":japan:","aliases":"","keywords":"silhouette of japan nation"},"globe_with_meridians":{"unicode":"1F310","shortname":":globe_with_meridians:","aliases":"","keywords":"globe with meridians earth international world earth meridian globe space planet home"},"earth_africa":{"unicode":"1F30D","shortname":":earth_africa:","aliases":"","keywords":"earth globe europe-africa globe international world earth globe space planet africa europe home"},"earth_americas":{"unicode":"1F30E","shortname":":earth_americas:","aliases":"","keywords":"earth globe americas USA globe international world earth globe space planet north south america americas home"},"earth_asia":{"unicode":"1F30F","shortname":":earth_asia:","aliases":"","keywords":"earth globe asia-australia east globe international world earth globe space planet asia australia home"},"new_moon":{"unicode":"1F311","shortname":":new_moon:","aliases":"","keywords":"new moon symbol nature moon new sky night cheese phase"},"waxing_crescent_moon":{"unicode":"1F312","shortname":":waxing_crescent_moon:","aliases":"","keywords":"waxing crescent moon symbol nature moon waxing sky night cheese phase"},"first_quarter_moon":{"unicode":"1F313","shortname":":first_quarter_moon:","aliases":"","keywords":"first quarter moon symbol nature moon quarter first sky night cheese phase"},"waxing_gibbous_moon":{"unicode":"1F314","shortname":":waxing_gibbous_moon:","aliases":"","keywords":"waxing gibbous moon symbol nature"},"full_moon":{"unicode":"1F315","shortname":":full_moon:","aliases":"","keywords":"full moon symbol nature yellow moon full sky night cheese phase monster spooky werewolves twilight"},"waning_gibbous_moon":{"unicode":"1F316","shortname":":waning_gibbous_moon:","aliases":"","keywords":"waning gibbous moon symbol nature moon waning gibbous sky night cheese phase"},"last_quarter_moon":{"unicode":"1F317","shortname":":last_quarter_moon:","aliases":"","keywords":"last quarter moon symbol nature moon last quarter sky night cheese phase"},"waning_crescent_moon":{"unicode":"1F318","shortname":":waning_crescent_moon:","aliases":"","keywords":"waning crescent moon symbol nature moon crescent waning sky night cheese phase"},"new_moon_with_face":{"unicode":"1F31A","shortname":":new_moon_with_face:","aliases":"","keywords":"new moon with face nature moon new anthropomorphic face sky night cheese phase"},"full_moon_with_face":{"unicode":"1F31D","shortname":":full_moon_with_face:","aliases":"","keywords":"full moon with face night moon full anthropomorphic face sky night cheese phase spooky werewolves monsters"},"first_quarter_moon_with_face":{"unicode":"1F31B","shortname":":first_quarter_moon_with_face:","aliases":"","keywords":"first quarter moon with face nature moon first quarter anthropomorphic face sky night cheese phase"},"last_quarter_moon_with_face":{"unicode":"1F31C","shortname":":last_quarter_moon_with_face:","aliases":"","keywords":"last quarter moon with face nature moon last quarter anthropomorphic face sky night cheese phase"},"sun_with_face":{"unicode":"1F31E","shortname":":sun_with_face:","aliases":"","keywords":"sun with face morning sun anthropomorphic face sky"},"wind_blowing_face":{"unicode":"1F32C","shortname":":wind_blowing_face:","aliases":"","keywords":"wind blowing face "},"ribbon":{"unicode":"1F380","shortname":":ribbon:","aliases":"","keywords":"ribbon bowtie decoration girl pink ribbon lace wrap decorate"},"gift":{"unicode":"1F381","shortname":":gift:","aliases":"","keywords":"wrapped present birthday christmas present xmas gift present wrap package birthday wedding"},"birthday":{"unicode":"1F382","shortname":":birthday:","aliases":"","keywords":"birthday cake cake party birthday birth cake dessert wish celebrate"},"jack_o_lantern":{"unicode":"1F383","shortname":":jack_o_lantern:","aliases":"","keywords":"jack-o-lantern halloween jack-o-lantern pumpkin halloween holiday carve autumn fall october saints costume spooky horror scary scared dead"},"christmas_tree":{"unicode":"1F384","shortname":":christmas_tree:","aliases":"","keywords":"christmas tree celebration december festival vacation xmas christmas xmas santa holiday winter december santa evergreen ornaments jesus gifts presents"},"tanabata_tree":{"unicode":"1F38B","shortname":":tanabata_tree:","aliases":"","keywords":"tanabata tree nature plant tanabata tree festival star wish holiday"},"bamboo":{"unicode":"1F38D","shortname":":bamboo:","aliases":"","keywords":"pine decoration nature plant vegetable pine bamboo decoration new years spirits harvest prosperity longevity fortune luck welcome farming agriculture"},"rice_scene":{"unicode":"1F391","shortname":":rice_scene:","aliases":"","keywords":"moon viewing ceremony photo moon viewing observing otsukimi tsukimi rice scene festival autumn"},"fireworks":{"unicode":"1F386","shortname":":fireworks:","aliases":"","keywords":"fireworks carnival congratulations festival photo fireworks independence celebration explosion july 4th rocket sky idea excitement"},"sparkler":{"unicode":"1F387","shortname":":sparkler:","aliases":"","keywords":"firework sparkler night shine stars"},"tada":{"unicode":"1F389","shortname":":tada:","aliases":"","keywords":"party popper contulations party party popper tada celebration victory announcement climax congratulations"},"confetti_ball":{"unicode":"1F38A","shortname":":confetti_ball:","aliases":"","keywords":"confetti ball festival party party congratulations confetti ball celebrate win birthday new years wedding"},"balloon":{"unicode":"1F388","shortname":":balloon:","aliases":"","keywords":"balloon celebration party balloon birthday celebration helium gas children float"},"dizzy":{"unicode":"1F4AB","shortname":":dizzy:","aliases":"","keywords":"dizzy symbol shoot sparkle star dizzy drunk sick intoxicated squeans starburst star"},"sparkles":{"unicode":"2728","shortname":":sparkles:","aliases":"","keywords":"sparkles cool shine shiny stars"},"boom":{"unicode":"1F4A5","shortname":":boom:","aliases":"","keywords":"collision symbol bomb explode explosion boom bang collision fire emphasis wow bam"},"mortar_board":{"unicode":"1F393","shortname":":mortar_board:","aliases":"","keywords":"graduation cap cap college degree graduation hat school university graduation cap mortarboard academic education ceremony square tassel"},"crown":{"unicode":"1F451","shortname":":crown:","aliases":"","keywords":"crown king kod leader royalty"},"reminder_ribbon":{"unicode":"1F397","shortname":":reminder_ribbon:","aliases":"","keywords":"reminder ribbon "},"military_medal":{"unicode":"1F396","shortname":":military_medal:","aliases":"","keywords":"military medal "},"dolls":{"unicode":"1F38E","shortname":":dolls:","aliases":"","keywords":"japanese dolls japanese kimono toy dolls japan japanese day girls emperor empress pray blessing imperial family royal"},"flags":{"unicode":"1F38F","shortname":":flags:","aliases":"","keywords":"carp streamer banner carp fish japanese koinobori children kids boys celebration happiness carp streamers japanese holiday flags"},"wind_chime":{"unicode":"1F390","shortname":":wind_chime:","aliases":"","keywords":"wind chime ding nature wind chime bell f\u016brin instrument music spirits soothing protective spiritual sound"},"crossed_flags":{"unicode":"1F38C","shortname":":crossed_flags:","aliases":"","keywords":"crossed flags japan"},"izakaya_lantern":{"unicode":"1F3EE","shortname":":izakaya_lantern:","aliases":"","keywords":"izakaya lantern light izakaya lantern stay drink alcohol bar sake restaurant"},"ring":{"unicode":"1F48D","shortname":":ring:","aliases":"","keywords":"ring marriage propose valentines wedding"},"bouquet2":{"unicode":"1F395","shortname":":bouquet2:","aliases":":bouquet_of_flowers:","keywords":"bouquet of flowers "},"heart":{"unicode":"2764","shortname":":heart:","aliases":"","keywords":"heavy black heart like love red pink black heart love passion romance intense desire death evil cold valentines"},"broken_heart":{"unicode":"1F494","shortname":":broken_heart:","aliases":"","keywords":"broken heart sad sorry"},"love_letter":{"unicode":"1F48C","shortname":":love_letter:","aliases":"","keywords":"love letter affection email envelope like valentines love letter kiss heart"},"two_hearts":{"unicode":"1F495","shortname":":two_hearts:","aliases":"","keywords":"two hearts affection like love valentines heart hearts two love emotion"},"revolving_hearts":{"unicode":"1F49E","shortname":":revolving_hearts:","aliases":"","keywords":"revolving hearts affection like love valentines heart hearts revolving moving circle multiple lovers"},"heartbeat":{"unicode":"1F493","shortname":":heartbeat:","aliases":"","keywords":"beating heart affection like love valentines"},"heartpulse":{"unicode":"1F497","shortname":":heartpulse:","aliases":"","keywords":"growing heart affection like love valentines"},"sparkling_heart":{"unicode":"1F496","shortname":":sparkling_heart:","aliases":"","keywords":"sparkling heart affection like love valentines"},"cupid":{"unicode":"1F498","shortname":":cupid:","aliases":"","keywords":"heart with arrow affection heart like love valentines"},"gift_heart":{"unicode":"1F49D","shortname":":gift_heart:","aliases":"","keywords":"heart with ribbon love valentines"},"heart_tip":{"unicode":"1F394","shortname":":heart_tip:","aliases":":heart_with_tip_on_the_left:","keywords":"heart with tip on the left "},"heart_decoration":{"unicode":"1F49F","shortname":":heart_decoration:","aliases":"","keywords":"heart decoration like love purple-square"},"purple_heart":{"unicode":"1F49C","shortname":":purple_heart:","aliases":"","keywords":"purple heart affection like love valentines purple violet heart love sensitive understanding compassionate compassion duty honor royalty veteran sacrifice"},"yellow_heart":{"unicode":"1F49B","shortname":":yellow_heart:","aliases":"","keywords":"yellow heart affection like love valentines yellow gold heart love friendship happy happiness trust compassionate respectful honest caring selfless"},"green_heart":{"unicode":"1F49A","shortname":":green_heart:","aliases":"","keywords":"green heart affection like love valentines green heart love nature rebirth reborn jealous clingy envious possessive"},"blue_heart":{"unicode":"1F499","shortname":":blue_heart:","aliases":"","keywords":"blue heart affection like love valentines blue heart love stability truth loyalty trust"},"runner":{"unicode":"1F3C3","shortname":":runner:","aliases":"","keywords":"runner exercise man walking run runner jog exercise sprint race dash"},"walking":{"unicode":"1F6B6","shortname":":walking:","aliases":"","keywords":"pedestrian human man walk pedestrian stroll stride foot feet"},"dancer":{"unicode":"1F483","shortname":":dancer:","aliases":"","keywords":"dancer female fun girl woman dance dancer dress fancy boogy party celebrate ballet tango cha cha music"},"lifter":{"unicode":"1F3CB","shortname":":lifter:","aliases":":weight_lifter:","keywords":"weight lifter "},"golfer":{"unicode":"1F3CC","shortname":":golfer:","aliases":"","keywords":"golfer "},"rowboat":{"unicode":"1F6A3","shortname":":rowboat:","aliases":"","keywords":"rowboat hobby ship sports water boat row oar paddle"},"swimmer":{"unicode":"1F3CA","shortname":":swimmer:","aliases":"","keywords":"swimmer sports swimmer swim water pool laps freestyle butterfly breaststroke backstroke"},"surfer":{"unicode":"1F3C4","shortname":":surfer:","aliases":"","keywords":"surfer ocean sea sports surfer surf wave ocean ride swell"},"bath":{"unicode":"1F6C0","shortname":":bath:","aliases":"","keywords":"bath clean shower bath tub basin wash bubble soak bathroom soap water clean shampoo lather water"},"snowboarder":{"unicode":"1F3C2","shortname":":snowboarder:","aliases":"","keywords":"snowboarder sports winter snow boarding sports freestyle halfpipe board mountain alpine winter"},"ski":{"unicode":"1F3BF","shortname":":ski:","aliases":"","keywords":"ski and ski boot cold sports winter ski downhill cross-country poles snow winter mountain alpine powder slalom freestyle"},"snowman":{"unicode":"26C4","shortname":":snowman:","aliases":"","keywords":"snowman without snow christmas cold season weather winter xmas"},"bicyclist":{"unicode":"1F6B4","shortname":":bicyclist:","aliases":"","keywords":"bicyclist bike exercise hipster sports bicyclist road bike pedal bicycle transportation"},"mountain_bicyclist":{"unicode":"1F6B5","shortname":":mountain_bicyclist:","aliases":"","keywords":"mountain bicyclist human sports transportation bicyclist mountain bike pedal bicycle transportation"},"motorcycle":{"unicode":"1F3CD","shortname":":motorcycle:","aliases":":racing_motorcycle:","keywords":"racing motorcycle "},"race_car":{"unicode":"1F3CE","shortname":":race_car:","aliases":":racing_car:","keywords":"racing car "},"horse_racing":{"unicode":"1F3C7","shortname":":horse_racing:","aliases":"","keywords":"horse racing animal betting competition horse race racing jockey triple crown"},"tent":{"unicode":"26FA","shortname":":tent:","aliases":"","keywords":"tent camp outdoors photo"},"fishing_pole_and_fish":{"unicode":"1F3A3","shortname":":fishing_pole_and_fish:","aliases":"","keywords":"fishing pole and fish food hobby fish fishing pole"},"soccer":{"unicode":"26BD","shortname":":soccer:","aliases":"","keywords":"soccer ball balls fifa football sports european football"},"basketball":{"unicode":"1F3C0","shortname":":basketball:","aliases":"","keywords":"basketball and hoop NBA balls sports basketball bball dribble hoop net swish rip city"},"football":{"unicode":"1F3C8","shortname":":football:","aliases":"","keywords":"american football NFL balls sports football ball sport america american"},"baseball":{"unicode":"26BE","shortname":":baseball:","aliases":"","keywords":"baseball MLB balls sports"},"tennis":{"unicode":"1F3BE","shortname":":tennis:","aliases":"","keywords":"tennis racquet and ball balls green sports tennis racket racquet ball game net court love"},"rugby_football":{"unicode":"1F3C9","shortname":":rugby_football:","aliases":"","keywords":"rugby football sports rugby football ball sport team england"},"golf":{"unicode":"26F3","shortname":":golf:","aliases":"","keywords":"flag in hole business sports"},"trophy":{"unicode":"1F3C6","shortname":":trophy:","aliases":"","keywords":"trophy award ceremony contest ftw place win trophy first show place win reward achievement medal"},"medal":{"unicode":"1F3C5","shortname":":medal:","aliases":":sports_medal:","keywords":"sports medal "},"running_shirt_with_sash":{"unicode":"1F3BD","shortname":":running_shirt_with_sash:","aliases":"","keywords":"running shirt with sash pageant play running run shirt cloths compete sports"},"checkered_flag":{"unicode":"1F3C1","shortname":":checkered_flag:","aliases":"","keywords":"chequered flag contest finishline gokart rase checkered chequred race flag finish complete end"},"musical_keyboard":{"unicode":"1F3B9","shortname":":musical_keyboard:","aliases":"","keywords":"musical keyboard instrument piano music keyboard piano organ instrument electric"},"guitar":{"unicode":"1F3B8","shortname":":guitar:","aliases":"","keywords":"guitar instrument music guitar string music instrument jam rock acoustic electric"},"violin":{"unicode":"1F3BB","shortname":":violin:","aliases":"","keywords":"violin instrument music violin fiddle music instrument"},"saxophone":{"unicode":"1F3B7","shortname":":saxophone:","aliases":"","keywords":"saxophone instrument music saxophone sax music instrument woodwind"},"trumpet":{"unicode":"1F3BA","shortname":":trumpet:","aliases":"","keywords":"trumpet brass music trumpet brass music instrument"},"musical_note":{"unicode":"1F3B5","shortname":":musical_note:","aliases":"","keywords":"musical note score musical music note music sound"},"notes":{"unicode":"1F3B6","shortname":":notes:","aliases":"","keywords":"multiple musical notes music score musical music notes music sound melody"},"musical_score":{"unicode":"1F3BC","shortname":":musical_score:","aliases":"","keywords":"musical score clef treble music musical score clef g-clef stave staff"},"headphones":{"unicode":"1F3A7","shortname":":headphones:","aliases":"","keywords":"headphone gadgets music score headphone sound music ears beats buds audio listen"},"microphone":{"unicode":"1F3A4","shortname":":microphone:","aliases":"","keywords":"microphone PA music sound microphone mic audio sound voice karaoke"},"performing_arts":{"unicode":"1F3AD","shortname":":performing_arts:","aliases":"","keywords":"performing arts acting drama theater performing arts performance entertainment acting story mask masks"},"ticket":{"unicode":"1F3AB","shortname":":ticket:","aliases":"","keywords":"ticket concert event pass ticket show entertainment stub admission proof purchase"},"tophat":{"unicode":"1F3A9","shortname":":tophat:","aliases":"","keywords":"top hat classy gentleman magic top hat cap beaver high tall stove pipe chimney topper london period piece magic magician"},"circus_tent":{"unicode":"1F3AA","shortname":":circus_tent:","aliases":"","keywords":"circus tent carnival festival party circus tent event carnival big top canvas"},"clapper":{"unicode":"1F3AC","shortname":":clapper:","aliases":"","keywords":"clapper board film movie record clapper board clapboard movie film take"},"film_frames":{"unicode":"1F39E","shortname":":film_frames:","aliases":"","keywords":"film frames "},"tickets":{"unicode":"1F39F","shortname":":tickets:","aliases":":admission_tickets:","keywords":"admission tickets "},"art":{"unicode":"1F3A8","shortname":":art:","aliases":"","keywords":"artist palette design draw paint artist palette art colors paint draw brush pastels oils"},"dart":{"unicode":"1F3AF","shortname":":dart:","aliases":"","keywords":"direct hit bar game direct hit bullseye dart archery game fletching arrow sport"},"8ball":{"unicode":"1F3B1","shortname":":8ball:","aliases":"","keywords":"billiards pool billiards eight ball pool pocket ball cue"},"bowling":{"unicode":"1F3B3","shortname":":bowling:","aliases":"","keywords":"bowling fun play sports bowl bowling ball pin strike spare game"},"slot_machine":{"unicode":"1F3B0","shortname":":slot_machine:","aliases":"","keywords":"slot machine bet gamble vegas slot machine gamble one-armed bandit slots luck"},"game_die":{"unicode":"1F3B2","shortname":":game_die:","aliases":"","keywords":"game die dice game die dice craps gamble play"},"video_game":{"unicode":"1F3AE","shortname":":video_game:","aliases":"","keywords":"video game PS4 console controller play video game console controller nintendo xbox playstation"},"flower_playing_cards":{"unicode":"1F3B4","shortname":":flower_playing_cards:","aliases":"","keywords":"flower playing cards playing card flower game august moon special"},"black_joker":{"unicode":"1F0CF","shortname":":black_joker:","aliases":"","keywords":"playing card black joker cards game poker"},"mahjong":{"unicode":"1F004","shortname":":mahjong:","aliases":"","keywords":"mahjong tile red dragon chinese game kanji"},"carousel_horse":{"unicode":"1F3A0","shortname":":carousel_horse:","aliases":"","keywords":"carousel horse carnival horse photo carousel horse amusement park ride entertainment park fair"},"ferris_wheel":{"unicode":"1F3A1","shortname":":ferris_wheel:","aliases":"","keywords":"ferris wheel carnival londoneye photo farris wheel amusement park fair ride entertainment"},"roller_coaster":{"unicode":"1F3A2","shortname":":roller_coaster:","aliases":"","keywords":"roller coaster carnival fun photo play playground roller coaster amusement park fair ride entertainment"},"tomato":{"unicode":"1F345","shortname":":tomato:","aliases":"","keywords":"tomato food fruit nature vegetable tomato fruit sauce italian"},"eggplant":{"unicode":"1F346","shortname":":eggplant:","aliases":"","keywords":"aubergine aubergine food nature vegetable eggplant aubergine fruit purple penis"},"corn":{"unicode":"1F33D","shortname":":corn:","aliases":"","keywords":"ear of maize food plant vegetable corn maize food iowa kernel popcorn husk yellow stalk cob ear"},"sweet_potato":{"unicode":"1F360","shortname":":sweet_potato:","aliases":"","keywords":"roasted sweet potato food nature sweet potato potassium roasted roast"},"hot_pepper":{"unicode":"1F336","shortname":":hot_pepper:","aliases":"","keywords":"hot pepper "},"grapes":{"unicode":"1F347","shortname":":grapes:","aliases":"","keywords":"grapes food fruit grapes wine vinegar fruit cluster vine"},"melon":{"unicode":"1F348","shortname":":melon:","aliases":"","keywords":"melon food fruit nature melon cantaloupe honeydew"},"watermelon":{"unicode":"1F349","shortname":":watermelon:","aliases":"","keywords":"watermelon food fruit melon watermelon summer fruit large"},"tangerine":{"unicode":"1F34A","shortname":":tangerine:","aliases":"","keywords":"tangerine food fruit nature tangerine citrus orange"},"lemon":{"unicode":"1F34B","shortname":":lemon:","aliases":"","keywords":"lemon fruit nature lemon yellow citrus"},"banana":{"unicode":"1F34C","shortname":":banana:","aliases":"","keywords":"banana food fruit banana peel bunch"},"pineapple":{"unicode":"1F34D","shortname":":pineapple:","aliases":"","keywords":"pineapple food fruit nature pineapple pina tropical flower"},"apple":{"unicode":"1F34E","shortname":":apple:","aliases":"","keywords":"red apple fruit mac apple fruit electronics red doctor teacher school core"},"green_apple":{"unicode":"1F34F","shortname":":green_apple:","aliases":"","keywords":"green apple fruit nature apple fruit green pie granny smith core"},"pear":{"unicode":"1F350","shortname":":pear:","aliases":"","keywords":"pear fruit nature pear fruit shape"},"peach":{"unicode":"1F351","shortname":":peach:","aliases":"","keywords":"peach food fruit nature peach fruit juicy pit"},"cherries":{"unicode":"1F352","shortname":":cherries:","aliases":"","keywords":"cherries food fruit cherry cherries tree fruit pit"},"strawberry":{"unicode":"1F353","shortname":":strawberry:","aliases":"","keywords":"strawberry food fruit nature strawberry short cake berry"},"hamburger":{"unicode":"1F354","shortname":":hamburger:","aliases":"","keywords":"hamburger food meat hamburger burger meat cow beef"},"pizza":{"unicode":"1F355","shortname":":pizza:","aliases":"","keywords":"slice of pizza food party pizza pie new york italian italy slice peperoni"},"meat_on_bone":{"unicode":"1F356","shortname":":meat_on_bone:","aliases":"","keywords":"meat on bone food good meat bone animal cooked"},"poultry_leg":{"unicode":"1F357","shortname":":poultry_leg:","aliases":"","keywords":"poultry leg food meat poultry leg chicken fried"},"rice_cracker":{"unicode":"1F358","shortname":":rice_cracker:","aliases":"","keywords":"rice cracker food japanese rice cracker seaweed food japanese"},"rice_ball":{"unicode":"1F359","shortname":":rice_ball:","aliases":"","keywords":"rice ball food japanese rice ball white nori seaweed japanese"},"rice":{"unicode":"1F35A","shortname":":rice:","aliases":"","keywords":"cooked rice food rice white grain food bowl"},"curry":{"unicode":"1F35B","shortname":":curry:","aliases":"","keywords":"curry and rice food hot indian spicy curry spice flavor food meal"},"ramen":{"unicode":"1F35C","shortname":":ramen:","aliases":"","keywords":"steaming bowl chipsticks food japanese noodle ramen noodles bowl steaming soup"},"spaghetti":{"unicode":"1F35D","shortname":":spaghetti:","aliases":"","keywords":"spaghetti food italian noodle spaghetti noodles tomato sauce italian"},"bread":{"unicode":"1F35E","shortname":":bread:","aliases":"","keywords":"bread breakfast food toast wheat bread loaf yeast"},"fries":{"unicode":"1F35F","shortname":":fries:","aliases":"","keywords":"french fries chips food fries french potato fry russet idaho"},"dango":{"unicode":"1F361","shortname":":dango:","aliases":"","keywords":"dango food dango japanese dumpling mochi balls skewer"},"oden":{"unicode":"1F362","shortname":":oden:","aliases":"","keywords":"oden food japanese oden seafood casserole stew"},"sushi":{"unicode":"1F363","shortname":":sushi:","aliases":"","keywords":"sushi food japanese sushi fish raw nigiri japanese"},"fried_shrimp":{"unicode":"1F364","shortname":":fried_shrimp:","aliases":"","keywords":"fried shrimp animal food shrimp fried seafood small fish"},"fish_cake":{"unicode":"1F365","shortname":":fish_cake:","aliases":"","keywords":"fish cake with swirl design food fish cake kamboko swirl ramen noodles naruto"},"icecream":{"unicode":"1F366","shortname":":icecream:","aliases":"","keywords":"soft ice cream desert food hot icecream ice cream dairy dessert cold soft serve cone yogurt"},"shaved_ice":{"unicode":"1F367","shortname":":shaved_ice:","aliases":"","keywords":"shaved ice desert hot shaved ice dessert treat syrup flavoring"},"ice_cream":{"unicode":"1F368","shortname":":ice_cream:","aliases":"","keywords":"ice cream desert food hot icecream ice cream dairy dessert cold soft serve cone waffle"},"doughnut":{"unicode":"1F369","shortname":":doughnut:","aliases":"","keywords":"doughnut desert food snack sweet doughnut donut pastry fried dessert breakfast police homer sweet"},"cookie":{"unicode":"1F36A","shortname":":cookie:","aliases":"","keywords":"cookie chocolate food oreo snack cookie dessert biscuit sweet chocolate"},"chocolate_bar":{"unicode":"1F36B","shortname":":chocolate_bar:","aliases":"","keywords":"chocolate bar desert food snack chocolate bar candy coca hershey's"},"candy":{"unicode":"1F36C","shortname":":candy:","aliases":"","keywords":"candy desert snack candy sugar sweet hard"},"lollipop":{"unicode":"1F36D","shortname":":lollipop:","aliases":"","keywords":"lollipop candy food snack sweet lollipop stick lick sweet sugar candy"},"custard":{"unicode":"1F36E","shortname":":custard:","aliases":"","keywords":"custard desert food custard cream rich butter dessert cr\u00e8me br\u00fbl\u00e9e french"},"honey_pot":{"unicode":"1F36F","shortname":":honey_pot:","aliases":"","keywords":"honey pot bees sweet honey pot bees pooh bear"},"cake":{"unicode":"1F370","shortname":":cake:","aliases":"","keywords":"shortcake desert food cake short dessert strawberry"},"bento":{"unicode":"1F371","shortname":":bento:","aliases":"","keywords":"bento box box food japanese bento japanese rice meal box obento convenient lunchbox"},"stew":{"unicode":"1F372","shortname":":stew:","aliases":"","keywords":"pot of food food meat stew hearty soup thick hot pot"},"egg":{"unicode":"1F373","shortname":":egg:","aliases":"","keywords":"cooking breakfast food egg fry pan flat cook frying cooking utensil"},"fork_and_knife":{"unicode":"1F374","shortname":":fork_and_knife:","aliases":"","keywords":"fork and knife cutlery kitchen fork knife restaurant meal food eat"},"tea":{"unicode":"1F375","shortname":":tea:","aliases":"","keywords":"teacup without handle bowl breakfast british drink green tea leaf drink teacup hot beverage"},"coffee":{"unicode":"2615","shortname":":coffee:","aliases":"","keywords":"hot beverage beverage cafe drink espresso"},"sake":{"unicode":"1F376","shortname":":sake:","aliases":"","keywords":"sake bottle and cup beverage drink drunk wine sake wine rice ferment alcohol japanese drink"},"wine_glass":{"unicode":"1F377","shortname":":wine_glass:","aliases":"","keywords":"wine glass alcohol beverage booze bottle drink drunk fermented glass grapes tasting wine winery"},"cocktail":{"unicode":"1F378","shortname":":cocktail:","aliases":"","keywords":"cocktail glass alcohol beverage drink drunk cocktail mixed drink alcohol glass martini bar"},"tropical_drink":{"unicode":"1F379","shortname":":tropical_drink:","aliases":"","keywords":"tropical drink beverage tropical drink mixed pineapple coconut pina fruit umbrella"},"beer":{"unicode":"1F37A","shortname":":beer:","aliases":"","keywords":"beer mug beverage drink drunk party pub relax beer hops mug barley malt yeast portland oregon brewery micro pint boot"},"beers":{"unicode":"1F37B","shortname":":beers:","aliases":"","keywords":"clinking beer mugs beverage drink drunk party pub relax beer beers cheers mug toast celebrate pub bar jolly hops clink"},"baby_bottle":{"unicode":"1F37C","shortname":":baby_bottle:","aliases":"","keywords":"baby bottle container food baby bottle milk mother nipple newborn formula"},"watch":{"unicode":"231A","shortname":":watch:","aliases":"","keywords":"watch accessories time"},"iphone":{"unicode":"1F4F1","shortname":":iphone:","aliases":"","keywords":"mobile phone apple dial gadgets technology"},"calling":{"unicode":"1F4F2","shortname":":calling:","aliases":"","keywords":"mobile phone with rightwards arrow at left incoming iphone"},"computer":{"unicode":"1F4BB","shortname":":computer:","aliases":"","keywords":"personal computer laptop tech"},"desktop":{"unicode":"1F5A5","shortname":":desktop:","aliases":":desktop_computer:","keywords":"desktop computer "},"computer_old":{"unicode":"1F5B3","shortname":":computer_old:","aliases":":old_personal_computer:","keywords":"old personal computer "},"keyboard":{"unicode":"1F5AE","shortname":":keyboard:","aliases":":wired_keyboard:","keywords":"wired keyboard "},"mouse-one":{"unicode":"1F5AF","shortname":":mouse-one:","aliases":":one_button_mouse:","keywords":"one button mouse "},"trackball":{"unicode":"1F5B2","shortname":":trackball:","aliases":"","keywords":"trackball "},"keyboard_mouse":{"unicode":"1F5A6","shortname":":keyboard_mouse:","aliases":":keyboard_and_mouse:","keywords":"keyboard and mouse "},"network":{"unicode":"1F5A7","shortname":":network:","aliases":":three_networked_computers:","keywords":"three networked computers "},"printer":{"unicode":"1F5A8","shortname":":printer:","aliases":"","keywords":"printer "},"desktop_window":{"unicode":"1F5D4","shortname":":desktop_window:","aliases":"","keywords":"desktop window "},"calculator":{"unicode":"1F5A9","shortname":":calculator:","aliases":":pocket calculator:","keywords":"pocket calculator "},"alarm_clock":{"unicode":"23F0","shortname":":alarm_clock:","aliases":"","keywords":"alarm clock time wake"},"clock":{"unicode":"1F570","shortname":":clock:","aliases":":mantlepiece_clock:","keywords":"mantlepiece clock time"},"hourglass_flowing_sand":{"unicode":"23F3","shortname":":hourglass_flowing_sand:","aliases":"","keywords":"hourglass with flowing sand countdown oldschool time"},"hourglass":{"unicode":"231B","shortname":":hourglass:","aliases":"","keywords":"hourglass clock oldschool time"},"camera":{"unicode":"1F4F7","shortname":":camera:","aliases":"","keywords":"camera gadgets photo"},"camera_with_flash":{"unicode":"1F4F8","shortname":":camera_with_flash:","aliases":"","keywords":"camera with flash photo"},"video_camera":{"unicode":"1F4F9","shortname":":video_camera:","aliases":"","keywords":"video camera film record"},"movie_camera":{"unicode":"1F3A5","shortname":":movie_camera:","aliases":"","keywords":"movie camera film record movie camera camcorder video motion picture"},"projector":{"unicode":"1F4FD","shortname":":projector:","aliases":":film_projector:","keywords":"film projector movie video motion picture 8mm 16mm"},"tv":{"unicode":"1F4FA","shortname":":tv:","aliases":"","keywords":"television oldschool program show technology"},"keyboard_with_jacks":{"unicode":"1F398","shortname":":keyboard_with_jacks:","aliases":":musical_keyboard_with_jacks:","keywords":"musical keyboard with jacks music instrument midi"},"microphone2":{"unicode":"1F399","shortname":":microphone2:","aliases":":studio_microphone:","keywords":"studio microphone mic audio recording"},"level_slider":{"unicode":"1F39A","shortname":":level_slider:","aliases":"","keywords":"level slider controls"},"control_knobs":{"unicode":"1F39B","shortname":":control_knobs:","aliases":"","keywords":"control knobs dial"},"radio":{"unicode":"1F4FB","shortname":":radio:","aliases":"","keywords":"radio communication music podcast program"},"stereo":{"unicode":"1F4FE","shortname":":stereo:","aliases":":portable_stereo:","keywords":"portable stereo communication music program boom box"},"pager":{"unicode":"1F4DF","shortname":":pager:","aliases":"","keywords":"pager bbcall oldschool"},"joystick":{"unicode":"1F579","shortname":":joystick:","aliases":"","keywords":"joystick games atari controller"},"telephone_receiver":{"unicode":"1F4DE","shortname":":telephone_receiver:","aliases":"","keywords":"telephone receiver communication dial technology"},"left_receiver":{"unicode":"1F57B","shortname":":left_receiver:","aliases":":left_hand_telephone_receiver:","keywords":"left hand telephone receiver communication dial technology"},"telephone":{"unicode":"260E","shortname":":telephone:","aliases":"","keywords":"black telephone communication dial technology"},"telephone_white":{"unicode":"1F57E","shortname":":telephone_white:","aliases":":white_touchtone_telephone:","keywords":"white touchtone telephone communication dial technology"},"telephone_black":{"unicode":"1F57F","shortname":":telephone_black:","aliases":":black_touchtone_telephone:","keywords":"black touchtone telephone communication dial technology"},"flip_phone":{"unicode":"1F581","shortname":":flip_phone:","aliases":":clamshell_mobile_phone:","keywords":"clamshell mobile phone cellphone"},"fax":{"unicode":"1F4E0","shortname":":fax:","aliases":"","keywords":"fax machine communication technology"},"minidisc":{"unicode":"1F4BD","shortname":":minidisc:","aliases":"","keywords":"minidisc data disc disk record technology"},"floppy_disk":{"unicode":"1F4BE","shortname":":floppy_disk:","aliases":"","keywords":"floppy disk oldschool save technology storage information computer drive megabyte"},"floppy_black":{"unicode":"1F5AA","shortname":":floppy_black:","aliases":":black_hard_shell_floppy_disk:","keywords":"black hard shell floppy disk oldschool save technology storage information computer drive megabyte"},"floppy_white":{"unicode":"1F5AB","shortname":":floppy_white:","aliases":":white_hard_shell_floppy_disk:","keywords":"white hard shell floppy disk oldschool save technology storage information computer drive megabyte"},"cartridge":{"unicode":"1F5AD","shortname":":cartridge:","aliases":":tape_cartridge:","keywords":"tape cartridge oldschool save technology disk storage information computer drive megabyte"},"hard_disk":{"unicode":"1F5B4","shortname":":hard_disk:","aliases":"","keywords":"hard disk save technology storage information computer drive megabyte gigabyte hd"},"cd":{"unicode":"1F4BF","shortname":":cd:","aliases":"","keywords":"optical disc disc disk dvd technology"},"dvd":{"unicode":"1F4C0","shortname":":dvd:","aliases":"","keywords":"dvd cd disc disk"},"optical_disk":{"unicode":"1F5B8","shortname":":optical_disk:","aliases":":optical_disc_icon:","keywords":"optical disc icon "},"vhs":{"unicode":"1F4FC","shortname":":vhs:","aliases":"","keywords":"videocassette oldschool record video"},"battery":{"unicode":"1F50B","shortname":":battery:","aliases":"","keywords":"battery energy power sustain"},"electric_plug":{"unicode":"1F50C","shortname":":electric_plug:","aliases":"","keywords":"electric plug charger power"},"bulb":{"unicode":"1F4A1","shortname":":bulb:","aliases":"","keywords":"electric light bulb electricity light idea bulb light"},"flashlight":{"unicode":"1F526","shortname":":flashlight:","aliases":"","keywords":"electric torch dark"},"candle":{"unicode":"1F56F","shortname":":candle:","aliases":"","keywords":"candle light wax"},"satellite":{"unicode":"1F4E1","shortname":":satellite:","aliases":"","keywords":"satellite antenna communication"},"satellite_orbital":{"unicode":"1F6F0","shortname":":satellite_orbital:","aliases":"","keywords":"satellite communication"},"credit_card":{"unicode":"1F4B3","shortname":":credit_card:","aliases":"","keywords":"credit card bill dollar money pay payment credit card loan purchase shopping mastercard visa american express wallet signature"},"money_with_wings":{"unicode":"1F4B8","shortname":":money_with_wings:","aliases":"","keywords":"money with wings bills dollar payment money wings easy spend work lost blown burned gift cash dollar"},"moneybag":{"unicode":"1F4B0","shortname":":moneybag:","aliases":"","keywords":"money bag coins dollar payment"},"gem":{"unicode":"1F48E","shortname":":gem:","aliases":"","keywords":"gem stone blue ruby"},"closed_umbrella":{"unicode":"1F302","shortname":":closed_umbrella:","aliases":"","keywords":"closed umbrella drizzle rain weather umbrella closed rain moisture protection sun ultraviolet uv"},"pouch":{"unicode":"1F45D","shortname":":pouch:","aliases":"","keywords":"pouch accessories bag pouch bag cosmetic packing grandma makeup"},"purse":{"unicode":"1F45B","shortname":":purse:","aliases":"","keywords":"purse accessories fashion money purse clutch bag handbag coin bag accessory money ladies shopping"},"handbag":{"unicode":"1F45C","shortname":":handbag:","aliases":"","keywords":"handbag accessories accessory bag fashion"},"briefcase":{"unicode":"1F4BC","shortname":":briefcase:","aliases":"","keywords":"briefcase business documents work"},"school_satchel":{"unicode":"1F392","shortname":":school_satchel:","aliases":"","keywords":"school satchel bag education student school satchel backpack bag packing pack hike education adventure travel sightsee"},"lipstick":{"unicode":"1F484","shortname":":lipstick:","aliases":"","keywords":"lipstick fashion female girl"},"eyeglasses":{"unicode":"1F453","shortname":":eyeglasses:","aliases":"","keywords":"eyeglasses accessories eyesight fashion eyeglasses spectacles eye sight nearsightedness myopia farsightedness hyperopia frames vision see blurry contacts"},"dark_sunglasses":{"unicode":"1F576","shortname":":dark_sunglasses:","aliases":"","keywords":"dark sunglasses shades"},"womans_hat":{"unicode":"1F452","shortname":":womans_hat:","aliases":"","keywords":"womans hat accessories fashion female"},"sandal":{"unicode":"1F461","shortname":":sandal:","aliases":"","keywords":"womans sandal fashion shoes"},"high_heel":{"unicode":"1F460","shortname":":high_heel:","aliases":"","keywords":"high-heeled shoe fashion female shoes"},"boot":{"unicode":"1F462","shortname":":boot:","aliases":"","keywords":"womans boots fashion shoes"},"mans_shoe":{"unicode":"1F45E","shortname":":mans_shoe:","aliases":"","keywords":"mans shoe fashion male"},"athletic_shoe":{"unicode":"1F45F","shortname":":athletic_shoe:","aliases":"","keywords":"athletic shoe shoes sports"},"bikini":{"unicode":"1F459","shortname":":bikini:","aliases":"","keywords":"bikini beach fashion female girl swimming woman"},"dress":{"unicode":"1F457","shortname":":dress:","aliases":"","keywords":"dress clothes fashion"},"kimono":{"unicode":"1F458","shortname":":kimono:","aliases":"","keywords":"kimono dress fashion female japanese women"},"womans_clothes":{"unicode":"1F45A","shortname":":womans_clothes:","aliases":"","keywords":"womans clothes fashion woman clothing clothes blouse shirt wardrobe breasts cleavage shopping shop dressing dressed"},"shirt":{"unicode":"1F455","shortname":":shirt:","aliases":"","keywords":"t-shirt cloth fashion"},"necktie":{"unicode":"1F454","shortname":":necktie:","aliases":"","keywords":"necktie cloth fashion formal shirt suitup"},"jeans":{"unicode":"1F456","shortname":":jeans:","aliases":"","keywords":"jeans fashion shopping jeans pants blue denim levi's levi designer work skinny"},"door":{"unicode":"1F6AA","shortname":":door:","aliases":"","keywords":"door entry exit house door doorway entrance enter exit entry"},"shower":{"unicode":"1F6BF","shortname":":shower:","aliases":"","keywords":"shower bath clean wash bathroom shower soap water clean shampoo lather"},"bathtub":{"unicode":"1F6C1","shortname":":bathtub:","aliases":"","keywords":"bathtub clean shower bath tub basin wash bubble soak bathroom soap water clean shampoo lather water"},"toilet":{"unicode":"1F6BD","shortname":":toilet:","aliases":"","keywords":"toilet restroom wc toilet bathroom throne porcelain waste flush plumbing"},"barber":{"unicode":"1F488","shortname":":barber:","aliases":"","keywords":"barber pole hair salon style"},"syringe":{"unicode":"1F489","shortname":":syringe:","aliases":"","keywords":"syringe blood drugs health hospital medicine needle"},"pill":{"unicode":"1F48A","shortname":":pill:","aliases":"","keywords":"pill health medicine"},"microscope":{"unicode":"1F52C","shortname":":microscope:","aliases":"","keywords":"microscope experiment laboratory zoomin"},"telescope":{"unicode":"1F52D","shortname":":telescope:","aliases":"","keywords":"telescope space stars"},"crystal_ball":{"unicode":"1F52E","shortname":":crystal_ball:","aliases":"","keywords":"crystal ball disco party"},"wrench":{"unicode":"1F527","shortname":":wrench:","aliases":"","keywords":"wrench diy ikea tools"},"knife":{"unicode":"1F52A","shortname":":knife:","aliases":"","keywords":"hocho blade"},"dagger":{"unicode":"1F5E1","shortname":":dagger:","aliases":":dagger_knife:","keywords":"dagger knife blade"},"nut_and_bolt":{"unicode":"1F529","shortname":":nut_and_bolt:","aliases":"","keywords":"nut and bolt handy tools"},"hammer":{"unicode":"1F528","shortname":":hammer:","aliases":"","keywords":"hammer done judge law ruling tools verdict"},"tools":{"unicode":"1F6E0","shortname":":tools:","aliases":":hammer_and_wrench:","keywords":"hammer and wrench "},"oil":{"unicode":"1F6E2","shortname":":oil:","aliases":":oil_drum:","keywords":"oil drum petroleum"},"bomb":{"unicode":"1F4A3","shortname":":bomb:","aliases":"","keywords":"bomb boom explode"},"smoking":{"unicode":"1F6AC","shortname":":smoking:","aliases":"","keywords":"smoking symbol cigarette kills tobacco smoking cigarette smoke cancer lungs inhale tar nicotine"},"crossbones":{"unicode":"1F571","shortname":":crossbones:","aliases":":black_skull_and_crossbones:","keywords":"black skull and crossbones poison danger death"},"gun":{"unicode":"1F52B","shortname":":gun:","aliases":"","keywords":"pistol violence weapon"},"bookmark":{"unicode":"1F516","shortname":":bookmark:","aliases":"","keywords":"bookmark favorite"},"newspaper":{"unicode":"1F4F0","shortname":":newspaper:","aliases":"","keywords":"newspaper headline press"},"newspaper2":{"unicode":"1F5DE","shortname":":newspaper2:","aliases":":rolled_up_newspaper:","keywords":"rolled-up newspaper headline press"},"thermometer":{"unicode":"1F321","shortname":":thermometer:","aliases":"","keywords":"thermometer temperature"},"label":{"unicode":"1F3F7","shortname":":label:","aliases":"","keywords":"label tag"},"key":{"unicode":"1F511","shortname":":key:","aliases":"","keywords":"key door lock password"},"key2":{"unicode":"1F5DD","shortname":":key2:","aliases":":old_key:","keywords":"old key door lock password skeleton"},"envelope":{"unicode":"2709","shortname":":envelope:","aliases":"","keywords":"envelope communication letter mail postal"},"envelope_back":{"unicode":"1F582","shortname":":envelope_back:","aliases":":back_of_envelope:","keywords":"back of envelope "},"envelope_stamped":{"unicode":"1F583","shortname":":envelope_stamped:","aliases":":stamped_envelope:","keywords":"stamped envelope "},"envelope_flying":{"unicode":"1F585","shortname":":envelope_flying:","aliases":":flying_envelope:","keywords":"flying envelope "},"envelope_stamped_pen":{"unicode":"1F586","shortname":":envelope_stamped_pen:","aliases":":pen_over_stamped_envelope:","keywords":"pen over stamped envelope "},"envelope_with_arrow":{"unicode":"1F4E9","shortname":":envelope_with_arrow:","aliases":"","keywords":"envelope with downwards arrow above email"},"incoming_envelope":{"unicode":"1F4E8","shortname":":incoming_envelope:","aliases":"","keywords":"incoming envelope email inbox"},"e-mail":{"unicode":"1F4E7","shortname":":e-mail:","aliases":":email:","keywords":"e-mail symbol communication inbox"},"inbox_tray":{"unicode":"1F4E5","shortname":":inbox_tray:","aliases":"","keywords":"inbox tray documents email"},"outbox_tray":{"unicode":"1F4E4","shortname":":outbox_tray:","aliases":"","keywords":"outbox tray email inbox"},"package":{"unicode":"1F4E6","shortname":":package:","aliases":"","keywords":"package gift mail"},"postal_horn":{"unicode":"1F4EF","shortname":":postal_horn:","aliases":"","keywords":"postal horn instrument music"},"postbox":{"unicode":"1F4EE","shortname":":postbox:","aliases":"","keywords":"postbox email envelope letter"},"mailbox_closed":{"unicode":"1F4EA","shortname":":mailbox_closed:","aliases":"","keywords":"closed mailbox with lowered flag communication email inbox"},"mailbox":{"unicode":"1F4EB","shortname":":mailbox:","aliases":"","keywords":"closed mailbox with raised flag communication email inbox"},"mailbox_with_no_mail":{"unicode":"1F4ED","shortname":":mailbox_with_no_mail:","aliases":"","keywords":"open mailbox with lowered flag email inbox"},"mailbox_with_mail":{"unicode":"1F4EC","shortname":":mailbox_with_mail:","aliases":"","keywords":"open mailbox with raised flag communication email inbox"},"document":{"unicode":"1F5CE","shortname":":document:","aliases":"","keywords":"document "},"document_text":{"unicode":"1F5B9","shortname":":document_text:","aliases":":document_with_text:","keywords":"document with text "},"page":{"unicode":"1F5CF","shortname":":page:","aliases":"","keywords":"page "},"page_facing_up":{"unicode":"1F4C4","shortname":":page_facing_up:","aliases":"","keywords":"page facing up documents"},"page_with_curl":{"unicode":"1F4C3","shortname":":page_with_curl:","aliases":"","keywords":"page with curl documents"},"pages":{"unicode":"1F5D0","shortname":":pages:","aliases":"","keywords":"pages "},"bookmark_tabs":{"unicode":"1F4D1","shortname":":bookmark_tabs:","aliases":"","keywords":"bookmark tabs favorite"},"wastebasket":{"unicode":"1F5D1","shortname":":wastebasket:","aliases":"","keywords":"wastebasket "},"note_empty":{"unicode":"1F5C6","shortname":":note_empty:","aliases":":empty_note_page:","keywords":"empty note page "},"notepad_empty":{"unicode":"1F5C7","shortname":":notepad_empty:","aliases":":empty_note_pad:","keywords":"empty note pad "},"note":{"unicode":"1F5C9","shortname":":note:","aliases":":note_page:","keywords":"note page "},"notepad":{"unicode":"1F5CA","shortname":":notepad:","aliases":":note_pad:","keywords":"note pad "},"notepad-spiral":{"unicode":"1F5D2","shortname":":notepad-spiral:","aliases":":spiral_note_pad:","keywords":"spiral note pad "},"chart_with_upwards_trend":{"unicode":"1F4C8","shortname":":chart_with_upwards_trend:","aliases":"","keywords":"chart with upwards trend graph"},"chart_with_downwards_trend":{"unicode":"1F4C9","shortname":":chart_with_downwards_trend:","aliases":"","keywords":"chart with downwards trend graph"},"bar_chart":{"unicode":"1F4CA","shortname":":bar_chart:","aliases":"","keywords":"bar chart graph presentation stats"},"stock_chart":{"unicode":"1F5E0","shortname":":stock_chart:","aliases":"","keywords":"stock chart "},"date":{"unicode":"1F4C5","shortname":":date:","aliases":"","keywords":"calendar calendar schedule"},"calendar":{"unicode":"1F4C6","shortname":":calendar:","aliases":"","keywords":"tear-off calendar schedule"},"calendar_spiral":{"unicode":"1F5D3","shortname":":calendar_spiral:","aliases":":spiral_calendar_pad:","keywords":"spiral calendar pad "},"ballot_box":{"unicode":"1F5F3","shortname":":ballot_box:","aliases":":ballot_box_with_ballot:","keywords":"ballot box with ballot "},"low_brightness":{"unicode":"1F505","shortname":":low_brightness:","aliases":"","keywords":"low brightness symbol summer sun"},"high_brightness":{"unicode":"1F506","shortname":":high_brightness:","aliases":"","keywords":"high brightness symbol light summer sun"},"compression":{"unicode":"1F5DC","shortname":":compression:","aliases":"","keywords":"compression "},"frame_x":{"unicode":"1F5BE","shortname":":frame_x:","aliases":":frame_with_an_x:","keywords":"frame with an x "},"frame_photo":{"unicode":"1F5BC","shortname":":frame_photo:","aliases":":frame_with_picture:","keywords":"frame with picture "},"frame_tiles":{"unicode":"1F5BD","shortname":":frame_tiles:","aliases":":frame_with_tiles:","keywords":"frame with tiles "},"scroll":{"unicode":"1F4DC","shortname":":scroll:","aliases":"","keywords":"scroll documents"},"clipboard":{"unicode":"1F4CB","shortname":":clipboard:","aliases":"","keywords":"clipboard documents stationery"},"book2":{"unicode":"1F56E","shortname":":book2:","aliases":"","keywords":"book "},"book":{"unicode":"1F4D6","shortname":":book:","aliases":"","keywords":"open book library literature"},"notebook":{"unicode":"1F4D3","shortname":":notebook:","aliases":"","keywords":"notebook notes paper record stationery"},"notebook_with_decorative_cover":{"unicode":"1F4D4","shortname":":notebook_with_decorative_cover:","aliases":"","keywords":"notebook with decorative cover classroom notes paper record"},"ledger":{"unicode":"1F4D2","shortname":":ledger:","aliases":"","keywords":"ledger notes paper"},"closed_book":{"unicode":"1F4D5","shortname":":closed_book:","aliases":"","keywords":"closed book knowledge library read"},"green_book":{"unicode":"1F4D7","shortname":":green_book:","aliases":"","keywords":"green book knowledge library read"},"blue_book":{"unicode":"1F4D8","shortname":":blue_book:","aliases":"","keywords":"blue book knowledge library read"},"orange_book":{"unicode":"1F4D9","shortname":":orange_book:","aliases":"","keywords":"orange book knowledge library read"},"books":{"unicode":"1F4DA","shortname":":books:","aliases":"","keywords":"books library literature"},"card_index":{"unicode":"1F4C7","shortname":":card_index:","aliases":"","keywords":"card index business stationery"},"dividers":{"unicode":"1F5C2","shortname":":dividers:","aliases":":card_index_dividers:","keywords":"card index dividers "},"card_box":{"unicode":"1F5C3","shortname":":card_box:","aliases":":card_file_box:","keywords":"card file box "},"link":{"unicode":"1F517","shortname":":link:","aliases":"","keywords":"link symbol rings url"},"paperclip":{"unicode":"1F4CE","shortname":":paperclip:","aliases":"","keywords":"paperclip documents stationery"},"paperclips":{"unicode":"1F587","shortname":":paperclips:","aliases":":linked_paperclips:","keywords":"linked paperclips "},"pushpin":{"unicode":"1F4CC","shortname":":pushpin:","aliases":"","keywords":"pushpin stationery"},"pushpin_black":{"unicode":"1F588","shortname":":pushpin_black:","aliases":"","keywords":"black pushpin "},"scissors":{"unicode":"2702","shortname":":scissors:","aliases":"","keywords":"black scissors cut stationery"},"triangular_ruler":{"unicode":"1F4D0","shortname":":triangular_ruler:","aliases":"","keywords":"triangular ruler architect math sketch stationery"},"round_pushpin":{"unicode":"1F4CD","shortname":":round_pushpin:","aliases":"","keywords":"round pushpin stationery"},"straight_ruler":{"unicode":"1F4CF","shortname":":straight_ruler:","aliases":"","keywords":"straight ruler stationery"},"triangular_flag_on_post":{"unicode":"1F6A9","shortname":":triangular_flag_on_post:","aliases":"","keywords":"triangular flag on post triangle triangular flag golf post flagpole"},"pennant_white":{"unicode":"1F3F1","shortname":":pennant_white:","aliases":":white_pennant:","keywords":"white pennant "},"pennant_black":{"unicode":"1F3F2","shortname":":pennant_black:","aliases":":black_pennant:","keywords":"black pennant "},"flag_white":{"unicode":"1F3F3","shortname":":flag_white:","aliases":":waving_white_flag:","keywords":"waving white flag "},"flag_black":{"unicode":"1F3F4","shortname":":flag_black:","aliases":":waving_black_flag:","keywords":"waving black flag "},"hole":{"unicode":"1F573","shortname":":hole:","aliases":"","keywords":"hole "},"folder":{"unicode":"1F5C0","shortname":":folder:","aliases":"","keywords":"folder "},"folder_open":{"unicode":"1F5C1","shortname":":folder_open:","aliases":":open_folder:","keywords":"open folder "},"file_folder":{"unicode":"1F4C1","shortname":":file_folder:","aliases":"","keywords":"file folder documents"},"open_file_folder":{"unicode":"1F4C2","shortname":":open_file_folder:","aliases":"","keywords":"open file folder documents load"},"file_cabinet":{"unicode":"1F5C4","shortname":":file_cabinet:","aliases":"","keywords":"file cabinet "},"black_nib":{"unicode":"2712","shortname":":black_nib:","aliases":"","keywords":"black nib pen stationery"},"pencil2":{"unicode":"270F","shortname":":pencil2:","aliases":"","keywords":"pencil paper stationery write"},"pencil3":{"unicode":"1F589","shortname":":pencil3:","aliases":":lower_left_pencil:","keywords":"lower left pencil "},"pen_ballpoint":{"unicode":"1F58A","shortname":":pen_ballpoint:","aliases":":lower_left_ballpoint_pen:","keywords":"lower left ballpoint pen "},"pen_fountain":{"unicode":"1F58B","shortname":":pen_fountain:","aliases":":lower_left_fountain_pen:","keywords":"lower left fountain pen "},"paintbrush":{"unicode":"1F58C","shortname":":paintbrush:","aliases":":lower_left_paintbrush:","keywords":"lower left paintbrush "},"crayon":{"unicode":"1F58D","shortname":":crayon:","aliases":":lower_left_crayon:","keywords":"lower left crayon "},"pencil":{"unicode":"1F4DD","shortname":":pencil:","aliases":"","keywords":"memo documents paper station write"},"lock_with_ink_pen":{"unicode":"1F50F","shortname":":lock_with_ink_pen:","aliases":"","keywords":"lock with ink pen secret security"},"closed_lock_with_key":{"unicode":"1F510","shortname":":closed_lock_with_key:","aliases":"","keywords":"closed lock with key privacy security"},"lock":{"unicode":"1F512","shortname":":lock:","aliases":"","keywords":"lock password security"},"unlock":{"unicode":"1F513","shortname":":unlock:","aliases":"","keywords":"open lock privacy security"},"mega":{"unicode":"1F4E3","shortname":":mega:","aliases":"","keywords":"cheering megaphone sound speaker volume"},"loudspeaker":{"unicode":"1F4E2","shortname":":loudspeaker:","aliases":"","keywords":"public address loudspeaker sound volume"},"speaker":{"unicode":"1F508","shortname":":speaker:","aliases":"","keywords":"speaker sound listen hear noise"},"sound":{"unicode":"1F509","shortname":":sound:","aliases":"","keywords":"speaker with one sound wave speaker volume"},"loud_sound":{"unicode":"1F50A","shortname":":loud_sound:","aliases":"","keywords":"speaker with three sound waves "},"mute":{"unicode":"1F507","shortname":":mute:","aliases":"","keywords":"speaker with cancellation stroke sound volume"},"right_speaker":{"unicode":"1F568","shortname":":right_speaker:","aliases":"","keywords":"right speaker "},"right_speaker_one":{"unicode":"1F569","shortname":":right_speaker_one:","aliases":":right_speaker_with_one_sound_wave:","keywords":"right speaker with one sound wave "},"right_speaker_three":{"unicode":"1F56A","shortname":":right_speaker_three:","aliases":":right_speaker_with_three_sound_waves:","keywords":"right speaker with three sound waves "},"bullhorn":{"unicode":"1F56B","shortname":":bullhorn:","aliases":"","keywords":"bullhorn "},"bullhorn_waves":{"unicode":"1F56C","shortname":":bullhorn_waves:","aliases":":bullhorn_with_sound_waves:","keywords":"bullhorn with sound waves "},"zzz":{"unicode":"1F4A4","shortname":":zzz:","aliases":"","keywords":"sleeping symbol sleepy tired"},"bell":{"unicode":"1F514","shortname":":bell:","aliases":"","keywords":"bell chime christmas notification sound xmas"},"no_bell":{"unicode":"1F515","shortname":":no_bell:","aliases":"","keywords":"bell with cancellation stroke mute sound volume"},"ringing_bell":{"unicode":"1F56D","shortname":":ringing_bell:","aliases":"","keywords":"ringing bell "},"ascending_notes":{"unicode":"1F39C","shortname":":ascending_notes:","aliases":"","keywords":"beamed ascending musical notes "},"descending_notes":{"unicode":"1F39D","shortname":":descending_notes:","aliases":"","keywords":"beamed descending musical notes "},"cross_white":{"unicode":"1F546","shortname":":cross_white:","aliases":":white_latin_cross:","keywords":"white latin cross "},"cross_heavy":{"unicode":"1F547","shortname":":cross_heavy:","aliases":":heavy_latin_cross:","keywords":"heavy latin cross "},"celtic_cross":{"unicode":"1F548","shortname":":celtic_cross:","aliases":"","keywords":"celtic cross "},"om_symbol":{"unicode":"1F549","shortname":":om_symbol:","aliases":"","keywords":"om symbol "},"dove":{"unicode":"1F54A","shortname":":dove:","aliases":":dove_of_peace:","keywords":"dove of peace "},"thought_balloon":{"unicode":"1F4AD","shortname":":thought_balloon:","aliases":"","keywords":"thought balloon bubble cloud speech thought balloon comic think day dream wonder"},"speech_balloon":{"unicode":"1F4AC","shortname":":speech_balloon:","aliases":"","keywords":"speech balloon bubble words speech balloon talk conversation communication comic dialogue"},"speech_left":{"unicode":"1F5E8","shortname":":speech_left:","aliases":":left_speech_bubble:","keywords":"left speech bubble "},"speech_right":{"unicode":"1F5E9","shortname":":speech_right:","aliases":":right_speech_bubble:","keywords":"right speech bubble "},"speech_two":{"unicode":"1F5EA","shortname":":speech_two:","aliases":":two_speech_bubbles:","keywords":"two speech bubbles "},"speech_three":{"unicode":"1F5EB","shortname":":speech_three:","aliases":":three_speech_bubbles:","keywords":"three speech bubbles "},"thought_left":{"unicode":"1F5EC","shortname":":thought_left:","aliases":":left_thought_bubble:","keywords":"left thought bubble "},"thought_right":{"unicode":"1F5ED","shortname":":thought_right:","aliases":":right_thought_bubble:","keywords":"right thought bubble "},"anger_left":{"unicode":"1F5EE","shortname":":anger_left:","aliases":":left_anger_bubble:","keywords":"left anger bubble "},"anger_right":{"unicode":"1F5EF","shortname":":anger_right:","aliases":":right_anger_bubble:","keywords":"right anger bubble "},"mood_bubble":{"unicode":"1F5F0","shortname":":mood_bubble:","aliases":"","keywords":"mood bubble "},"mood_bubble_lightning":{"unicode":"1F5F1","shortname":":mood_bubble_lightning:","aliases":":lightning_mood_bubble:","keywords":"lightning mood bubble "},"children_crossing":{"unicode":"1F6B8","shortname":":children_crossing:","aliases":"","keywords":"children crossing school children kids caution crossing street crosswalk slow"},"shield":{"unicode":"1F6E1","shortname":":shield:","aliases":"","keywords":"shield "},"mag":{"unicode":"1F50D","shortname":":mag:","aliases":"","keywords":"left-pointing magnifying glass search zoom detective investigator detail details"},"mag_right":{"unicode":"1F50E","shortname":":mag_right:","aliases":"","keywords":"right-pointing magnifying glass search zoom detective investigator detail details"},"speaking_head":{"unicode":"1F5E3","shortname":":speaking_head:","aliases":":speaking_head_in_silhouette:","keywords":"speaking head in silhouette "},"sleeping_accommodation":{"unicode":"1F6CC","shortname":":sleeping_accommodation:","aliases":"","keywords":"sleeping accommodation "},"prohibited":{"unicode":"1F6C7","shortname":":prohibited:","aliases":":prohibited_sign:","keywords":"prohibited sign "},"no_entry_sign":{"unicode":"1F6AB","shortname":":no_entry_sign:","aliases":"","keywords":"no entry sign denied disallow forbid limit stop no stop entry"},"no_entry":{"unicode":"26D4","shortname":":no_entry:","aliases":"","keywords":"no entry bad denied limit privacy security stop"},"name_badge":{"unicode":"1F4DB","shortname":":name_badge:","aliases":"","keywords":"name badge fire forbid"},"no_pedestrians":{"unicode":"1F6B7","shortname":":no_pedestrians:","aliases":"","keywords":"no pedestrians crossing rules walking no walk pedestrian stroll stride foot feet"},"do_not_litter":{"unicode":"1F6AF","shortname":":do_not_litter:","aliases":"","keywords":"do not litter symbol bin garbage trash litter garbage waste no can trash"},"no_bicycles":{"unicode":"1F6B3","shortname":":no_bicycles:","aliases":"","keywords":"no bicycles cyclist prohibited bicycle bike pedal no"},"non-potable_water":{"unicode":"1F6B1","shortname":":non-potable_water:","aliases":"","keywords":"non-potable water symbol drink faucet tap non-potable water not drinkable dirty gross aqua h20"},"no_mobile_phones":{"unicode":"1F4F5","shortname":":no_mobile_phones:","aliases":"","keywords":"no mobile phones iphone mute"},"underage":{"unicode":"1F51E","shortname":":underage:","aliases":"","keywords":"no one under eighteen symbol 18 drink night pub"},"piracy":{"unicode":"1F572","shortname":":piracy:","aliases":":no_piracy:","keywords":"no piracy "},"accept":{"unicode":"1F251","shortname":":accept:","aliases":"","keywords":"circled ideograph accept agree chinese good kanji ok yes"},"ideograph_advantage":{"unicode":"1F250","shortname":":ideograph_advantage:","aliases":"","keywords":"circled ideograph advantage chinese get kanji obtain"},"white_flower":{"unicode":"1F4AE","shortname":":white_flower:","aliases":"","keywords":"white flower japanese white flower teacher school grade score brilliance intelligence homework student assignment praise"},"secret":{"unicode":"3299","shortname":":secret:","aliases":"","keywords":"circled ideograph secret privacy"},"congratulations":{"unicode":"3297","shortname":":congratulations:","aliases":"","keywords":"circled ideograph congratulation chinese japanese kanji"},"u5408":{"unicode":"1F234","shortname":":u5408:","aliases":"","keywords":"squared cjk unified ideograph-5408 chinese japanese join kanji"},"u6e80":{"unicode":"1F235","shortname":":u6e80:","aliases":"","keywords":"squared cjk unified ideograph-6e80 chinese full japanese kanji red-square"},"u7981":{"unicode":"1F232","shortname":":u7981:","aliases":"","keywords":"squared cjk unified ideograph-7981 chinese forbidden japanese kanji limit restricted"},"u6709":{"unicode":"1F236","shortname":":u6709:","aliases":"","keywords":"squared cjk unified ideograph-6709 chinese have kanji orange-square"},"u7121":{"unicode":"1F21A","shortname":":u7121:","aliases":"","keywords":"squared cjk unified ideograph-7121 chinese japanese kanji no nothing orange-square"},"u7533":{"unicode":"1F238","shortname":":u7533:","aliases":"","keywords":"squared cjk unified ideograph-7533 chinese japanese kanji"},"u55b6":{"unicode":"1F23A","shortname":":u55b6:","aliases":"","keywords":"squared cjk unified ideograph-55b6 japanese opening hours"},"u6708":{"unicode":"1F237","shortname":":u6708:","aliases":"","keywords":"squared cjk unified ideograph-6708 chinese japanese kanji moon orange-square"},"u5272":{"unicode":"1F239","shortname":":u5272:","aliases":"","keywords":"squared cjk unified ideograph-5272 chinese cut divide kanji pink"},"u7a7a":{"unicode":"1F233","shortname":":u7a7a:","aliases":"","keywords":"squared cjk unified ideograph-7a7a chinese empty japanese kanji"},"sa":{"unicode":"1F202","shortname":":sa:","aliases":"","keywords":"squared katakana sa blue-square japanese"},"koko":{"unicode":"1F201","shortname":":koko:","aliases":"","keywords":"squared katakana koko blue-square destination here japanese katakana"},"u6307":{"unicode":"1F22F","shortname":":u6307:","aliases":"","keywords":"squared cjk unified ideograph-6307 chinese green-square kanji point"},"chart":{"unicode":"1F4B9","shortname":":chart:","aliases":"","keywords":"chart with upwards trend and yen sign graph green-square"},"sparkle":{"unicode":"2747","shortname":":sparkle:","aliases":"","keywords":"sparkle green-square stars"},"eight_spoked_asterisk":{"unicode":"2733","shortname":":eight_spoked_asterisk:","aliases":"","keywords":"eight spoked asterisk green-square sparkle star"},"negative_squared_cross_mark":{"unicode":"274E","shortname":":negative_squared_cross_mark:","aliases":"","keywords":"negative squared cross mark deny green-square no x"},"white_check_mark":{"unicode":"2705","shortname":":white_check_mark:","aliases":"","keywords":"white heavy check mark agree green-square ok"},"eight_pointed_black_star":{"unicode":"2734","shortname":":eight_pointed_black_star:","aliases":"","keywords":"eight pointed black star "},"vibration_mode":{"unicode":"1F4F3","shortname":":vibration_mode:","aliases":"","keywords":"vibration mode orange-square phone"},"mobile_phone_off":{"unicode":"1F4F4","shortname":":mobile_phone_off:","aliases":"","keywords":"mobile phone off mute"},"vs":{"unicode":"1F19A","shortname":":vs:","aliases":"","keywords":"squared vs orange-square words"},"a":{"unicode":"1F170","shortname":":a:","aliases":"","keywords":"negative squared latin capital letter a alphabet letter red-square"},"b":{"unicode":"1F171","shortname":":b:","aliases":"","keywords":"negative squared latin capital letter b alphabet letter red-square"},"ab":{"unicode":"1F18E","shortname":":ab:","aliases":"","keywords":"negative squared ab alphabet red-square"},"cl":{"unicode":"1F191","shortname":":cl:","aliases":"","keywords":"squared cl alphabet red-square words"},"o2":{"unicode":"1F17E","shortname":":o2:","aliases":"","keywords":"negative squared latin capital letter o alphabet letter red-square"},"sos":{"unicode":"1F198","shortname":":sos:","aliases":"","keywords":"squared sos emergency help red-square words"},"id":{"unicode":"1F194","shortname":":id:","aliases":"","keywords":"squared id purple-square words"},"parking":{"unicode":"1F17F","shortname":":parking:","aliases":"","keywords":"negative squared latin capital letter p alphabet blue-square cars letter"},"wc":{"unicode":"1F6BE","shortname":":wc:","aliases":"","keywords":"water closet blue-square restroom toilet water closet toilet bathroom throne porcelain waste flush plumbing"},"cool":{"unicode":"1F192","shortname":":cool:","aliases":"","keywords":"squared cool blue-square words"},"free":{"unicode":"1F193","shortname":":free:","aliases":"","keywords":"squared free blue-square words"},"new":{"unicode":"1F195","shortname":":new:","aliases":"","keywords":"squared new blue-square"},"ng":{"unicode":"1F196","shortname":":ng:","aliases":"","keywords":"squared ng blue-square"},"ok":{"unicode":"1F197","shortname":":ok:","aliases":"","keywords":"squared ok agree blue-square good yes"},"up":{"unicode":"1F199","shortname":":up:","aliases":"","keywords":"squared up with exclamation mark blue-square"},"atm":{"unicode":"1F3E7","shortname":":atm:","aliases":"","keywords":"automated teller machine atm cash withdrawal money deposit financial bank adam payday bank blue-square cash money payment"},"aries":{"unicode":"2648","shortname":":aries:","aliases":"","keywords":"aries aries ram astrology greek constellation stars zodiac sign purple-square sign zodiac horoscope"},"taurus":{"unicode":"2649","shortname":":taurus:","aliases":"","keywords":"taurus purple-square sign taurus bull astrology greek constellation stars zodiac sign zodiac horoscope"},"gemini":{"unicode":"264A","shortname":":gemini:","aliases":"","keywords":"gemini gemini twins astrology greek constellation stars zodiac sign sign zodiac horoscope"},"cancer":{"unicode":"264B","shortname":":cancer:","aliases":"","keywords":"cancer cancer crab astrology greek constellation stars zodiac sign sign zodiac horoscope"},"leo":{"unicode":"264C","shortname":":leo:","aliases":"","keywords":"leo leo lion astrology greek constellation stars zodiac sign purple-square sign zodiac horoscope"},"virgo":{"unicode":"264D","shortname":":virgo:","aliases":"","keywords":"virgo sign virgo maiden astrology greek constellation stars zodiac sign zodiac horoscope"},"libra":{"unicode":"264E","shortname":":libra:","aliases":"","keywords":"libra libra scales astrology greek constellation stars zodiac sign purple-square sign zodiac horoscope"},"scorpius":{"unicode":"264F","shortname":":scorpius:","aliases":"","keywords":"scorpius scorpius scorpion scorpio astrology greek constellation stars zodiac sign sign zodiac horoscope"},"sagittarius":{"unicode":"2650","shortname":":sagittarius:","aliases":"","keywords":"sagittarius sagittarius centaur archer astrology greek constellation stars zodiac sign sign zodiac horoscope"},"capricorn":{"unicode":"2651","shortname":":capricorn:","aliases":"","keywords":"capricorn capricorn sea-goat goat-horned astrology greek constellation stars zodiac sign sign zodiac horoscope"},"aquarius":{"unicode":"2652","shortname":":aquarius:","aliases":"","keywords":"aquarius aquarius water bearer astrology greek constellation stars zodiac sign purple-square sign zodiac horoscope"},"pisces":{"unicode":"2653","shortname":":pisces:","aliases":"","keywords":"pisces pisces fish astrology greek constellation stars zodiac sign purple-square sign zodiac horoscope"},"restroom":{"unicode":"1F6BB","shortname":":restroom:","aliases":"","keywords":"restroom blue-square woman man unisex bathroom restroom sign shared toilet"},"mens":{"unicode":"1F6B9","shortname":":mens:","aliases":"","keywords":"mens symbol restroom toilet wc men bathroom restroom sign boy male avatar"},"womens":{"unicode":"1F6BA","shortname":":womens:","aliases":"","keywords":"womens symbol purple-square woman bathroom restroom sign girl female avatar"},"boys_symbol":{"unicode":"1F6C9","shortname":":boys_symbol:","aliases":"","keywords":"boys symbol "},"girls_symbol":{"unicode":"1F6CA","shortname":":girls_symbol:","aliases":"","keywords":"girls symbol "},"baby_symbol":{"unicode":"1F6BC","shortname":":baby_symbol:","aliases":"","keywords":"baby symbol child orange-square baby crawl newborn human diaper small babe"},"wheelchair":{"unicode":"267F","shortname":":wheelchair:","aliases":"","keywords":"wheelchair symbol blue-square disabled"},"potable_water":{"unicode":"1F6B0","shortname":":potable_water:","aliases":"","keywords":"potable water symbol blue-square cleaning faucet liquid restroom potable water drinkable pure clear clean aqua h20"},"no_smoking":{"unicode":"1F6AD","shortname":":no_smoking:","aliases":"","keywords":"no smoking symbol cigarette no smoking cigarette smoke cancer lungs inhale tar nicotine"},"put_litter_in_its_place":{"unicode":"1F6AE","shortname":":put_litter_in_its_place:","aliases":"","keywords":"put litter in its place symbol blue-square litter waste trash garbage receptacle can"},"arrow_forward":{"unicode":"25B6","shortname":":arrow_forward:","aliases":"","keywords":"black right-pointing triangle arrow blue-square"},"arrow_backward":{"unicode":"25C0","shortname":":arrow_backward:","aliases":"","keywords":"black left-pointing triangle arrow blue-square"},"arrow_up_small":{"unicode":"1F53C","shortname":":arrow_up_small:","aliases":"","keywords":"up-pointing small red triangle blue-square"},"arrow_down_small":{"unicode":"1F53D","shortname":":arrow_down_small:","aliases":"","keywords":"down-pointing small red triangle arrow blue-square"},"fast_forward":{"unicode":"23E9","shortname":":fast_forward:","aliases":"","keywords":"black right-pointing double triangle blue-square"},"rewind":{"unicode":"23EA","shortname":":rewind:","aliases":"","keywords":"black left-pointing double triangle blue-square play"},"arrow_double_up":{"unicode":"23EB","shortname":":arrow_double_up:","aliases":"","keywords":"black up-pointing double triangle arrow blue-square"},"arrow_double_down":{"unicode":"23EC","shortname":":arrow_double_down:","aliases":"","keywords":"black down-pointing double triangle arrow blue-square"},"arrow_right":{"unicode":"27A1","shortname":":arrow_right:","aliases":"","keywords":"black rightwards arrow blue-square next"},"arrow_left":{"unicode":"2B05","shortname":":arrow_left:","aliases":"","keywords":"leftwards black arrow arrow blue-square previous"},"arrow_up":{"unicode":"2B06","shortname":":arrow_up:","aliases":"","keywords":"upwards black arrow blue-square"},"arrow_down":{"unicode":"2B07","shortname":":arrow_down:","aliases":"","keywords":"downwards black arrow arrow blue-square"},"arrow_upper_right":{"unicode":"2197","shortname":":arrow_upper_right:","aliases":"","keywords":"north east arrow blue-square"},"arrow_lower_right":{"unicode":"2198","shortname":":arrow_lower_right:","aliases":"","keywords":"south east arrow arrow blue-square"},"arrow_lower_left":{"unicode":"2199","shortname":":arrow_lower_left:","aliases":"","keywords":"south west arrow arrow blue-square"},"arrow_upper_left":{"unicode":"2196","shortname":":arrow_upper_left:","aliases":"","keywords":"north west arrow blue-square"},"arrow_up_down":{"unicode":"2195","shortname":":arrow_up_down:","aliases":"","keywords":"up down arrow blue-square"},"left_right_arrow":{"unicode":"2194","shortname":":left_right_arrow:","aliases":"","keywords":"left right arrow shape"},"arrows_counterclockwise":{"unicode":"1F504","shortname":":arrows_counterclockwise:","aliases":"","keywords":"anticlockwise downwards and upwards open circle ar blue-square sync"},"arrow_right_hook":{"unicode":"21AA","shortname":":arrow_right_hook:","aliases":"","keywords":"rightwards arrow with hook blue-square"},"leftwards_arrow_with_hook":{"unicode":"21A9","shortname":":leftwards_arrow_with_hook:","aliases":"","keywords":"leftwards arrow with hook "},"arrow_heading_up":{"unicode":"2934","shortname":":arrow_heading_up:","aliases":"","keywords":"arrow pointing rightwards then curving upwards arrow blue-square"},"arrow_heading_down":{"unicode":"2935","shortname":":arrow_heading_down:","aliases":"","keywords":"arrow pointing rightwards then curving downwards arrow blue-square"},"twisted_rightwards_arrows":{"unicode":"1F500","shortname":":twisted_rightwards_arrows:","aliases":"","keywords":"twisted rightwards arrows blue-square"},"repeat":{"unicode":"1F501","shortname":":repeat:","aliases":"","keywords":"clockwise rightwards and leftwards open circle arr loop record"},"repeat_one":{"unicode":"1F502","shortname":":repeat_one:","aliases":"","keywords":"clockwise rightwards and leftwards open circle arr blue-square loop"},"hash":{"unicode":"0023-20E3","shortname":":hash:","aliases":"","keywords":"number sign symbol"},"zero":{"unicode":"0030-20E3","shortname":":zero:","aliases":"","keywords":"digit zero blue-square null numbers"},"one":{"unicode":"0031-20E3","shortname":":one:","aliases":"","keywords":"digit one 1 blue-square numbers"},"two":{"unicode":"0032-20E3","shortname":":two:","aliases":"","keywords":"digit two 2 blue-square numbers prime"},"three":{"unicode":"0033-20E3","shortname":":three:","aliases":"","keywords":"digit three 3 blue-square numbers prime"},"four":{"unicode":"0034-20E3","shortname":":four:","aliases":"","keywords":"digit four 4 blue-square numbers"},"five":{"unicode":"0035-20E3","shortname":":five:","aliases":"","keywords":"digit five blue-square numbers prime"},"six":{"unicode":"0036-20E3","shortname":":six:","aliases":"","keywords":"digit six 6 blue-square numbers"},"seven":{"unicode":"0037-20E3","shortname":":seven:","aliases":"","keywords":"digit seven 7 blue-square numbers prime"},"eight":{"unicode":"0038-20E3","shortname":":eight:","aliases":"","keywords":"digit eight 8 blue-square numbers"},"nine":{"unicode":"0039-20E3","shortname":":nine:","aliases":"","keywords":"digit nine 9 blue-square numbers"},"keycap_ten":{"unicode":"1F51F","shortname":":keycap_ten:","aliases":"","keywords":"keycap ten 10 blue-square numbers"},"1234":{"unicode":"1F522","shortname":":1234:","aliases":"","keywords":"input symbol for numbers blue-square numbers"},"abc":{"unicode":"1F524","shortname":":abc:","aliases":"","keywords":"input symbol for latin letters alphabet blue-square"},"abcd":{"unicode":"1F521","shortname":":abcd:","aliases":"","keywords":"input symbol for latin small letters alphabet blue-square"},"capital_abcd":{"unicode":"1F520","shortname":":capital_abcd:","aliases":"","keywords":"input symbol for latin capital letters alphabet blue-square words"},"information_source":{"unicode":"2139","shortname":":information_source:","aliases":"","keywords":"information source alphabet blue-square letter"},"signal_strength":{"unicode":"1F4F6","shortname":":signal_strength:","aliases":"","keywords":"antenna with bars blue-square"},"cinema":{"unicode":"1F3A6","shortname":":cinema:","aliases":"","keywords":"cinema blue-square film movie record cinema movie theater motion picture"},"symbols":{"unicode":"1F523","shortname":":symbols:","aliases":"","keywords":"input symbol for symbols blue-square"},"heavy_plus_sign":{"unicode":"2795","shortname":":heavy_plus_sign:","aliases":"","keywords":"heavy plus sign calculation math"},"heavy_minus_sign":{"unicode":"2796","shortname":":heavy_minus_sign:","aliases":"","keywords":"heavy minus sign calculation math"},"wavy_dash":{"unicode":"3030","shortname":":wavy_dash:","aliases":"","keywords":"wavy dash draw line"},"heavy_division_sign":{"unicode":"2797","shortname":":heavy_division_sign:","aliases":"","keywords":"heavy division sign calculation divide math"},"heavy_multiplication_x":{"unicode":"2716","shortname":":heavy_multiplication_x:","aliases":"","keywords":"heavy multiplication x calculation math"},"heavy_check_mark":{"unicode":"2714","shortname":":heavy_check_mark:","aliases":"","keywords":"heavy check mark nike ok"},"cancellation_x":{"unicode":"1F5D9","shortname":":cancellation_x:","aliases":"","keywords":"cancellation x cancel"},"arrows_clockwise":{"unicode":"1F503","shortname":":arrows_clockwise:","aliases":"","keywords":"clockwise downwards and upwards open circle arrows sync"},"clockwise_arrows":{"unicode":"1F5D8","shortname":":clockwise_arrows:","aliases":":clockwise_right_and_left_semicircle_arrows:","keywords":"clockwise right and left semicircle arrows "},"tm":{"unicode":"2122","shortname":":tm:","aliases":"","keywords":"trade mark sign brand trademark"},"copyright":{"unicode":"00A9","shortname":":copyright:","aliases":"","keywords":"copyright sign ip license"},"registered":{"unicode":"00AE","shortname":":registered:","aliases":"","keywords":"registered sign alphabet circle"},"currency_exchange":{"unicode":"1F4B1","shortname":":currency_exchange:","aliases":"","keywords":"currency exchange dollar money travel"},"heavy_dollar_sign":{"unicode":"1F4B2","shortname":":heavy_dollar_sign:","aliases":"","keywords":"heavy dollar sign currency money payment dollar currency money cash sale purchase value"},"curly_loop":{"unicode":"27B0","shortname":":curly_loop:","aliases":"","keywords":"curly loop scribble"},"loop":{"unicode":"27BF","shortname":":loop:","aliases":"","keywords":"double curly loop curly"},"part_alternation_mark":{"unicode":"303D","shortname":":part_alternation_mark:","aliases":"","keywords":"part alternation mark graph sing song vocal music karaoke cue letter m japanese"},"exclamation":{"unicode":"2757","shortname":":exclamation:","aliases":"","keywords":"heavy exclamation mark symbol surprise"},"question":{"unicode":"2753","shortname":":question:","aliases":"","keywords":"black question mark ornament confused doubt"},"grey_exclamation":{"unicode":"2755","shortname":":grey_exclamation:","aliases":"","keywords":"white exclamation mark ornament surprise"},"grey_question":{"unicode":"2754","shortname":":grey_question:","aliases":"","keywords":"white question mark ornament doubts"},"bangbang":{"unicode":"203C","shortname":":bangbang:","aliases":"","keywords":"double exclamation mark exclamation surprise"},"interrobang":{"unicode":"2049","shortname":":interrobang:","aliases":"","keywords":"exclamation question mark punctuation surprise wat"},"triangle_round":{"unicode":"1F6C6","shortname":":triangle_round:","aliases":":triangle_with_rounded_corners:","keywords":"triangle with rounded corners "},"x":{"unicode":"274C","shortname":":x:","aliases":"","keywords":"cross mark delete no remove"},"o":{"unicode":"2B55","shortname":":o:","aliases":"","keywords":"heavy large circle circle round"},"100":{"unicode":"1F4AF","shortname":":100:","aliases":"","keywords":"hundred points symbol numbers perfect score 100 percent a plus perfect school quiz score test exam"},"end":{"unicode":"1F51A","shortname":":end:","aliases":"","keywords":"end with leftwards arrow above arrow words"},"back":{"unicode":"1F519","shortname":":back:","aliases":"","keywords":"back with leftwards arrow above arrow"},"on":{"unicode":"1F51B","shortname":":on:","aliases":"","keywords":"on with exclamation mark with left right arrow abo arrow words"},"top":{"unicode":"1F51D","shortname":":top:","aliases":"","keywords":"top with upwards arrow above blue-square words"},"soon":{"unicode":"1F51C","shortname":":soon:","aliases":"","keywords":"soon with rightwards arrow above arrow words"},"cyclone":{"unicode":"1F300","shortname":":cyclone:","aliases":"","keywords":"cyclone blue cloud swirl weather cyclone hurricane typhoon storm ocean"},"m":{"unicode":"24C2","shortname":":m:","aliases":"","keywords":"circled latin capital letter m alphabet blue-circle letter"},"info":{"unicode":"1F6C8","shortname":":info:","aliases":":circled_information_source:","keywords":"circled information source "},"ophiuchus":{"unicode":"26CE","shortname":":ophiuchus:","aliases":"","keywords":"ophiuchus ophiuchus serpent snake astrology greek constellation stars zodiac purple-square sign horoscope"},"six_pointed_star":{"unicode":"1F52F","shortname":":six_pointed_star:","aliases":"","keywords":"six pointed star with middle dot purple-square"},"beginner":{"unicode":"1F530","shortname":":beginner:","aliases":"","keywords":"japanese symbol for beginner badge shield"},"mood_lightning":{"unicode":"1F5F2","shortname":":mood_lightning:","aliases":":lightning_mood:","keywords":"lightning mood "},"trident":{"unicode":"1F531","shortname":":trident:","aliases":"","keywords":"trident emblem spear weapon"},"warning":{"unicode":"26A0","shortname":":warning:","aliases":"","keywords":"warning sign exclamation wip"},"hotsprings":{"unicode":"2668","shortname":":hotsprings:","aliases":"","keywords":"hot springs bath relax warm"},"rosette":{"unicode":"1F3F5","shortname":":rosette:","aliases":"","keywords":"rosette "},"rosette_black":{"unicode":"1F3F6","shortname":":rosette_black:","aliases":"","keywords":"black rosette "},"recycle":{"unicode":"267B","shortname":":recycle:","aliases":"","keywords":"black universal recycling symbol arrow environment garbage trash"},"anger":{"unicode":"1F4A2","shortname":":anger:","aliases":"","keywords":"anger symbol anger angry mad"},"diamond_shape_with_a_dot_inside":{"unicode":"1F4A0","shortname":":diamond_shape_with_a_dot_inside:","aliases":"","keywords":"diamond shape with a dot inside diamond cute cuteness kawaii japanese glyph adorable"},"spades":{"unicode":"2660","shortname":":spades:","aliases":"","keywords":"black spade suit cards poker"},"clubs":{"unicode":"2663","shortname":":clubs:","aliases":"","keywords":"black club suit cards poker"},"hearts":{"unicode":"2665","shortname":":hearts:","aliases":"","keywords":"black heart suit cards poker"},"diamonds":{"unicode":"2666","shortname":":diamonds:","aliases":"","keywords":"black diamond suit cards poker"},"ballot_box_with_check":{"unicode":"2611","shortname":":ballot_box_with_check:","aliases":"","keywords":"ballot box with check agree ok"},"light_check_mark":{"unicode":"1F5F8","shortname":":light_check_mark:","aliases":":light_mark:","keywords":"light check mark "},"ballot_box_check":{"unicode":"1F5F9","shortname":":ballot_box_check:","aliases":":ballot_box_with_bold_check:","keywords":"ballot box with bold check "},"ballot_x":{"unicode":"1F5F4","shortname":":ballot_x:","aliases":":ballot_script_x:","keywords":"ballot script x "},"ballot_box_x":{"unicode":"1F5F5","shortname":":ballot_box_x:","aliases":":ballot_box_with_script_x:","keywords":"ballot box with script x "},"white_circle":{"unicode":"26AA","shortname":":white_circle:","aliases":"","keywords":"medium white circle shape"},"black_circle":{"unicode":"26AB","shortname":":black_circle:","aliases":"","keywords":"medium black circle shape"},"radio_button":{"unicode":"1F518","shortname":":radio_button:","aliases":"","keywords":"radio button input"},"red_circle":{"unicode":"1F534","shortname":":red_circle:","aliases":"","keywords":"large red circle shape"},"large_blue_circle":{"unicode":"1F535","shortname":":large_blue_circle:","aliases":"","keywords":"large blue circle "},"small_red_triangle":{"unicode":"1F53A","shortname":":small_red_triangle:","aliases":"","keywords":"up-pointing red triangle shape"},"small_red_triangle_down":{"unicode":"1F53B","shortname":":small_red_triangle_down:","aliases":"","keywords":"down-pointing red triangle shape"},"small_orange_diamond":{"unicode":"1F538","shortname":":small_orange_diamond:","aliases":"","keywords":"small orange diamond shape"},"small_blue_diamond":{"unicode":"1F539","shortname":":small_blue_diamond:","aliases":"","keywords":"small blue diamond shape"},"large_orange_diamond":{"unicode":"1F536","shortname":":large_orange_diamond:","aliases":"","keywords":"large orange diamond shape"},"large_blue_diamond":{"unicode":"1F537","shortname":":large_blue_diamond:","aliases":"","keywords":"large blue diamond shape"},"black_small_square":{"unicode":"25AA","shortname":":black_small_square:","aliases":"","keywords":"black small square "},"white_small_square":{"unicode":"25AB","shortname":":white_small_square:","aliases":"","keywords":"white small square shape"},"black_large_square":{"unicode":"2B1B","shortname":":black_large_square:","aliases":"","keywords":"black large square shape"},"white_large_square":{"unicode":"2B1C","shortname":":white_large_square:","aliases":"","keywords":"white large square shape"},"black_medium_square":{"unicode":"25FC","shortname":":black_medium_square:","aliases":"","keywords":"black medium square shape"},"white_medium_square":{"unicode":"25FB","shortname":":white_medium_square:","aliases":"","keywords":"white medium square shape"},"black_medium_small_square":{"unicode":"25FE","shortname":":black_medium_small_square:","aliases":"","keywords":"black medium small square "},"white_medium_small_square":{"unicode":"25FD","shortname":":white_medium_small_square:","aliases":"","keywords":"white medium small square shape"},"black_square_button":{"unicode":"1F532","shortname":":black_square_button:","aliases":"","keywords":"black square button frame"},"white_square_button":{"unicode":"1F533","shortname":":white_square_button:","aliases":"","keywords":"white square button shape"},"clock1":{"unicode":"1F550","shortname":":clock1:","aliases":"","keywords":"clock face one oclock clock time"},"clock2":{"unicode":"1F551","shortname":":clock2:","aliases":"","keywords":"clock face two oclock clock time"},"clock3":{"unicode":"1F552","shortname":":clock3:","aliases":"","keywords":"clock face three oclock clock time"},"clock4":{"unicode":"1F553","shortname":":clock4:","aliases":"","keywords":"clock face four oclock clock time"},"clock5":{"unicode":"1F554","shortname":":clock5:","aliases":"","keywords":"clock face five oclock clock time"},"clock6":{"unicode":"1F555","shortname":":clock6:","aliases":"","keywords":"clock face six oclock clock time"},"clock7":{"unicode":"1F556","shortname":":clock7:","aliases":"","keywords":"clock face seven oclock clock time"},"clock8":{"unicode":"1F557","shortname":":clock8:","aliases":"","keywords":"clock face eight oclock clock time"},"clock9":{"unicode":"1F558","shortname":":clock9:","aliases":"","keywords":"clock face nine oclock clock time"},"clock10":{"unicode":"1F559","shortname":":clock10:","aliases":"","keywords":"clock face ten oclock clock time"},"clock11":{"unicode":"1F55A","shortname":":clock11:","aliases":"","keywords":"clock face eleven oclock clock time"},"clock12":{"unicode":"1F55B","shortname":":clock12:","aliases":"","keywords":"clock face twelve oclock clock time"},"clock130":{"unicode":"1F55C","shortname":":clock130:","aliases":"","keywords":"clock face one-thirty clock time"},"clock230":{"unicode":"1F55D","shortname":":clock230:","aliases":"","keywords":"clock face two-thirty clock time"},"clock330":{"unicode":"1F55E","shortname":":clock330:","aliases":"","keywords":"clock face three-thirty clock time"},"clock430":{"unicode":"1F55F","shortname":":clock430:","aliases":"","keywords":"clock face four-thirty clock time"},"clock530":{"unicode":"1F560","shortname":":clock530:","aliases":"","keywords":"clock face five-thirty clock time"},"clock630":{"unicode":"1F561","shortname":":clock630:","aliases":"","keywords":"clock face six-thirty clock time"},"clock730":{"unicode":"1F562","shortname":":clock730:","aliases":"","keywords":"clock face seven-thirty clock time"},"clock830":{"unicode":"1F563","shortname":":clock830:","aliases":"","keywords":"clock face eight-thirty clock time"},"clock930":{"unicode":"1F564","shortname":":clock930:","aliases":"","keywords":"clock face nine-thirty clock time"},"clock1030":{"unicode":"1F565","shortname":":clock1030:","aliases":"","keywords":"clock face ten-thirty clock time"},"clock1130":{"unicode":"1F566","shortname":":clock1130:","aliases":"","keywords":"clock face eleven-thirty clock time"},"clock1230":{"unicode":"1F567","shortname":":clock1230:","aliases":"","keywords":"clock face twelve-thirty clock time"},"railway_car":{"unicode":"1F683","shortname":":railway_car:","aliases":"","keywords":"railway car transportation vehicle railway rail car coach train"},"mountain_railway":{"unicode":"1F69E","shortname":":mountain_railway:","aliases":"","keywords":"mountain railway transportation mountain railway rail train transport"},"steam_locomotive":{"unicode":"1F682","shortname":":steam_locomotive:","aliases":"","keywords":"steam locomotive train transportation vehicle locomotive steam train engine"},"train_diesel":{"unicode":"1F6F2","shortname":":train_diesel:","aliases":":diesel_locomotive:","keywords":"diesel locomotive "},"train":{"unicode":"1F68B","shortname":":train:","aliases":"","keywords":"Tram Car tram rail"},"monorail":{"unicode":"1F69D","shortname":":monorail:","aliases":"","keywords":"monorail transportation vehicle train mono rail transport"},"bullettrain_side":{"unicode":"1F684","shortname":":bullettrain_side:","aliases":"","keywords":"high-speed train transportation vehicle train bullet rail"},"bullettrain_front":{"unicode":"1F685","shortname":":bullettrain_front:","aliases":"","keywords":"high-speed train with bullet nose transportation train bullet rail"},"train2":{"unicode":"1F686","shortname":":train2:","aliases":"","keywords":"train transportation vehicle train locomotive rail"},"metro":{"unicode":"1F687","shortname":":metro:","aliases":"","keywords":"metro blue-square mrt transportation tube underground metro subway underground train"},"light_rail":{"unicode":"1F688","shortname":":light_rail:","aliases":"","keywords":"light rail transportation vehicle train rail light"},"station":{"unicode":"1F689","shortname":":station:","aliases":"","keywords":"station public transportation vehicle station train subway"},"tram":{"unicode":"1F68A","shortname":":tram:","aliases":"","keywords":"tram transportation vehicle tram transportation transport"},"railway_track":{"unicode":"1F6E4","shortname":":railway_track:","aliases":":railroad_track:","keywords":"railway track "},"bus":{"unicode":"1F68C","shortname":":bus:","aliases":"","keywords":"bus car transportation vehicle bus school city transportation public"},"oncoming_bus":{"unicode":"1F68D","shortname":":oncoming_bus:","aliases":"","keywords":"oncoming bus transportation vehicle bus school city transportation public"},"trolleybus":{"unicode":"1F68E","shortname":":trolleybus:","aliases":"","keywords":"trolleybus bart transportation vehicle trolley bus city transport transportation"},"minibus":{"unicode":"1F690","shortname":":minibus:","aliases":"","keywords":"minibus car transportation vehicle bus city transport transportation"},"ambulance":{"unicode":"1F691","shortname":":ambulance:","aliases":"","keywords":"ambulance 911 health ambulance emergency medical help assistance"},"fire_engine":{"unicode":"1F692","shortname":":fire_engine:","aliases":"","keywords":"fire engine cars transportation vehicle fire fighter engine truck emergency medical"},"fire_engine_oncoming":{"unicode":"1F6F1","shortname":":fire_engine_oncoming:","aliases":":oncoming_fire_engine:","keywords":"oncoming fire engine "},"police_car":{"unicode":"1F693","shortname":":police_car:","aliases":"","keywords":"police car cars enforcement law transportation vehicle police car emergency ticket citation crime help officer"},"oncoming_police_car":{"unicode":"1F694","shortname":":oncoming_police_car:","aliases":"","keywords":"oncoming police car enforcement law vehicle police car emergency ticket citation crime help officer"},"rotating_light":{"unicode":"1F6A8","shortname":":rotating_light:","aliases":"","keywords":"police cars revolving light 911 ambulance emergency police light police emergency"},"taxi":{"unicode":"1F695","shortname":":taxi:","aliases":"","keywords":"taxi cars transportation uber vehicle taxi car automobile city transport service"},"oncoming_taxi":{"unicode":"1F696","shortname":":oncoming_taxi:","aliases":"","keywords":"oncoming taxi cars uber vehicle taxi car automobile city transport service"},"red_car":{"unicode":"1F697","shortname":":red_car:","aliases":"","keywords":"automobile transportation vehicle"},"oncoming_automobile":{"unicode":"1F698","shortname":":oncoming_automobile:","aliases":"","keywords":"oncoming automobile car transportation vehicle sedan car automobile"},"blue_car":{"unicode":"1F699","shortname":":blue_car:","aliases":"","keywords":"recreational vehicle car suv car wagon automobile"},"truck":{"unicode":"1F69A","shortname":":truck:","aliases":"","keywords":"delivery truck cars transportation truck delivery package"},"articulated_lorry":{"unicode":"1F69B","shortname":":articulated_lorry:","aliases":"","keywords":"articulated lorry cars transportation vehicle truck delivery semi lorry articulated"},"tractor":{"unicode":"1F69C","shortname":":tractor:","aliases":"","keywords":"tractor agriculture car farming vehicle tractor farm construction machine digger"},"bike":{"unicode":"1F6B2","shortname":":bike:","aliases":"","keywords":"bicycle bicycle exercise hipster sports bike pedal bicycle transportation"},"motorway":{"unicode":"1F6E3","shortname":":motorway:","aliases":"","keywords":"motorway "},"busstop":{"unicode":"1F68F","shortname":":busstop:","aliases":"","keywords":"bus stop transportation bus stop city transport transportation"},"fuelpump":{"unicode":"26FD","shortname":":fuelpump:","aliases":"","keywords":"fuel pump gas station petroleum"},"construction":{"unicode":"1F6A7","shortname":":construction:","aliases":"","keywords":"construction sign caution progress wip"},"vertical_traffic_light":{"unicode":"1F6A6","shortname":":vertical_traffic_light:","aliases":"","keywords":"vertical traffic light transportation traffic light stop go yield vertical"},"traffic_light":{"unicode":"1F6A5","shortname":":traffic_light:","aliases":"","keywords":"horizontal traffic light traffic transportation traffic light stop go yield horizontal"},"rocket":{"unicode":"1F680","shortname":":rocket:","aliases":"","keywords":"rocket launch ship staffmode rocket space spacecraft astronaut cosmonaut"},"helicopter":{"unicode":"1F681","shortname":":helicopter:","aliases":"","keywords":"helicopter transportation vehicle helicopter heli gyro gyrocopter"},"airplane":{"unicode":"2708","shortname":":airplane:","aliases":"","keywords":"airplane flight transportation vehicle airplane plane airport travel airlines fly jet jumbo boeing airbus"},"airplane_up":{"unicode":"1F6E7","shortname":":airplane_up:","aliases":":up_pointing_airplane:","keywords":"up-pointing airplane "},"airplane_small_up":{"unicode":"1F6E8","shortname":":airplane_small_up:","aliases":":up_pointing_small_airplane:","keywords":"up-pointing small airplane "},"jet_up":{"unicode":"1F6E6","shortname":":jet_up:","aliases":":up_pointing_military_airplane:","keywords":"up-pointing military airplane "},"airplane_northeast":{"unicode":"1F6EA","shortname":":airplane_northeast:","aliases":":northeast_pointing_airplane:","keywords":"northeast-pointing airplane "},"airplane_small":{"unicode":"1F6E9","shortname":":airplane_small:","aliases":":small_airplane:","keywords":"small airplane "},"airplane_departure":{"unicode":"1F6EB","shortname":":airplane_departure:","aliases":"","keywords":"airplane departure "},"airplane_arriving":{"unicode":"1F6EC","shortname":":airplane_arriving:","aliases":"","keywords":"airplane arriving "},"seat":{"unicode":"1F4BA","shortname":":seat:","aliases":"","keywords":"seat sit"},"anchor":{"unicode":"2693","shortname":":anchor:","aliases":"","keywords":"anchor ferry ship anchor ship boat ocean harbor marina shipyard sailor tattoo"},"ship":{"unicode":"1F6A2","shortname":":ship:","aliases":"","keywords":"ship titanic transportation ferry ship boat"},"cruise_ship":{"unicode":"1F6F3","shortname":":cruise_ship:","aliases":":passenger_ship:","keywords":"passenger ship "},"motorboat":{"unicode":"1F6E5","shortname":":motorboat:","aliases":"","keywords":"motorboat "},"speedboat":{"unicode":"1F6A4","shortname":":speedboat:","aliases":"","keywords":"speedboat ship transportation vehicle motor speed ski power boat"},"sailboat":{"unicode":"26F5","shortname":":sailboat:","aliases":"","keywords":"sailboat ship transportation"},"aerial_tramway":{"unicode":"1F6A1","shortname":":aerial_tramway:","aliases":"","keywords":"aerial tramway transportation vehicle aerial tram tramway cable transport"},"mountain_cableway":{"unicode":"1F6A0","shortname":":mountain_cableway:","aliases":"","keywords":"mountain cableway transportation vehicle mountain cable rail train railway"},"suspension_railway":{"unicode":"1F69F","shortname":":suspension_railway:","aliases":"","keywords":"suspension railway transportation vehicle suspension railway rail train transportation"},"passport_control":{"unicode":"1F6C2","shortname":":passport_control:","aliases":"","keywords":"passport control blue-square custom passport official travel control foreign identification"},"customs":{"unicode":"1F6C3","shortname":":customs:","aliases":"","keywords":"customs border passport customs travel foreign goods check authority government"},"baggage_claim":{"unicode":"1F6C4","shortname":":baggage_claim:","aliases":"","keywords":"baggage claim airport blue-square transport bag baggage luggage travel"},"left_luggage":{"unicode":"1F6C5","shortname":":left_luggage:","aliases":"","keywords":"left luggage blue-square travel bag baggage luggage travel"},"yen":{"unicode":"1F4B4","shortname":":yen:","aliases":"","keywords":"banknote with yen sign currency dollar japanese money yen japan japanese banknote money currency paper cash bill"},"euro":{"unicode":"1F4B6","shortname":":euro:","aliases":"","keywords":"banknote with euro sign currency dollar money euro europe banknote money currency paper cash bills"},"pound":{"unicode":"1F4B7","shortname":":pound:","aliases":"","keywords":"banknote with pound sign bills british currency england money sterling uk pound britain british banknote money currency paper cash bills"},"dollar":{"unicode":"1F4B5","shortname":":dollar:","aliases":"","keywords":"banknote with dollar sign bill currency money dollar united states canada australia banknote money currency paper cash bills"},"bellhop":{"unicode":"1F6CE","shortname":":bellhop:","aliases":":bellhop_bell:","keywords":"bellhop bell "},"bed":{"unicode":"1F6CF","shortname":":bed:","aliases":"","keywords":"bed "},"couch":{"unicode":"1F6CB","shortname":":couch:","aliases":":couch_and_lamp:","keywords":"couch and lamp "},"fork_knife_plate":{"unicode":"1F37D","shortname":":fork_knife_plate:","aliases":":fork_and_knife_with_plate:","keywords":"fork and knife with plate "},"shopping_bags":{"unicode":"1F6CD","shortname":":shopping_bags:","aliases":"","keywords":"shopping bags "},"statue_of_liberty":{"unicode":"1F5FD","shortname":":statue_of_liberty:","aliases":"","keywords":"statue of liberty american newyork"},"moyai":{"unicode":"1F5FF","shortname":":moyai:","aliases":"","keywords":"moyai island stone"},"foggy":{"unicode":"1F301","shortname":":foggy:","aliases":"","keywords":"foggy mountain photo bridge weather fog foggy"},"tokyo_tower":{"unicode":"1F5FC","shortname":":tokyo_tower:","aliases":"","keywords":"tokyo tower japan photo"},"fountain":{"unicode":"26F2","shortname":":fountain:","aliases":"","keywords":"fountain photo"},"european_castle":{"unicode":"1F3F0","shortname":":european_castle:","aliases":"","keywords":"european castle building history royalty castle european residence royalty disneyland disney fort fortified moat tower princess prince lord king queen fortress nobel stronghold"},"japanese_castle":{"unicode":"1F3EF","shortname":":japanese_castle:","aliases":"","keywords":"japanese castle building photo castle japanese residence royalty fort fortified fortress"},"classical_building":{"unicode":"1F3DB","shortname":":classical_building:","aliases":"","keywords":"classical building "},"stadium":{"unicode":"1F3DF","shortname":":stadium:","aliases":"","keywords":"stadium "},"mountain_snow":{"unicode":"1F3D4","shortname":":mountain_snow:","aliases":":snow_capped_mountain:","keywords":"snow capped mountain "},"camping":{"unicode":"1F3D5","shortname":":camping:","aliases":"","keywords":"camping "},"beach":{"unicode":"1F3D6","shortname":":beach:","aliases":":beach_with_umbrella:","keywords":"beach with umbrella "},"desert":{"unicode":"1F3DC","shortname":":desert:","aliases":"","keywords":"desert "},"island":{"unicode":"1F3DD","shortname":":island:","aliases":":desert_island:","keywords":"desert island "},"park":{"unicode":"1F3DE","shortname":":park:","aliases":":national_park:","keywords":"national park "},"cityscape":{"unicode":"1F3D9","shortname":":cityscape:","aliases":"","keywords":"cityscape "},"city_sunset":{"unicode":"1F307","shortname":":city_sunset:","aliases":":city_sunrise:","keywords":"sunset over buildings photo city scape sunrise dawn light morning metropolitan rise sun"},"city_dusk":{"unicode":"1F306","shortname":":city_dusk:","aliases":"","keywords":"cityscape at dusk photo city scape sunset dusk lights evening metropolitan night dark"},"night_with_stars":{"unicode":"1F303","shortname":":night_with_stars:","aliases":"","keywords":"night with stars night star cloudless evening planets space sky"},"bridge_at_night":{"unicode":"1F309","shortname":":bridge_at_night:","aliases":"","keywords":"bridge at night photo sanfrancisco bridge night water road evening suspension golden gate"},"house":{"unicode":"1F3E0","shortname":":house:","aliases":"","keywords":"house building building home house home residence dwelling mansion bungalow ranch craftsman"},"homes":{"unicode":"1F3D8","shortname":":homes:","aliases":":house_buildings:","keywords":"house buildings "},"house_with_garden":{"unicode":"1F3E1","shortname":":house_with_garden:","aliases":"","keywords":"house with garden home nature plant"},"house_abandoned":{"unicode":"1F3DA","shortname":":house_abandoned:","aliases":":derelict_house_building:","keywords":"derelict house building "},"contruction_site":{"unicode":"1F3D7","shortname":":contruction_site:","aliases":":building_construction:","keywords":"building construction "},"office":{"unicode":"1F3E2","shortname":":office:","aliases":"","keywords":"office building building bureau work"},"department_store":{"unicode":"1F3EC","shortname":":department_store:","aliases":"","keywords":"department store building mall shopping department store retail sale merchandise"},"factory":{"unicode":"1F3ED","shortname":":factory:","aliases":"","keywords":"factory building"},"post_office":{"unicode":"1F3E3","shortname":":post_office:","aliases":"","keywords":"japanese post office building communication email"},"european_post_office":{"unicode":"1F3E4","shortname":":european_post_office:","aliases":"","keywords":"european post office building"},"hospital":{"unicode":"1F3E5","shortname":":hospital:","aliases":"","keywords":"hospital building doctor health surgery"},"bank":{"unicode":"1F3E6","shortname":":bank:","aliases":"","keywords":"bank building"},"hotel":{"unicode":"1F3E8","shortname":":hotel:","aliases":"","keywords":"hotel accomodation building checkin whotel hotel motel holiday inn hospital"},"love_hotel":{"unicode":"1F3E9","shortname":":love_hotel:","aliases":"","keywords":"love hotel affection dating like love hotel love sex romance leisure adultery prostitution hospital birth happy"},"wedding":{"unicode":"1F492","shortname":":wedding:","aliases":"","keywords":"wedding affection bride couple groom like love marriage"},"church":{"unicode":"26EA","shortname":":church:","aliases":"","keywords":"church building christ religion"},"convenience_store":{"unicode":"1F3EA","shortname":":convenience_store:","aliases":"","keywords":"convenience store building"},"school":{"unicode":"1F3EB","shortname":":school:","aliases":"","keywords":"school building school university elementary middle high college teach education"},"map":{"unicode":"1F5FA","shortname":":map:","aliases":":world_map:","keywords":"world map "},"flag_au":{"unicode":"1F1E6-1F1FA","shortname":":flag_au:","aliases":":au:","keywords":"australia country nation"},"flag_at":{"unicode":"1F1E6-1F1F9","shortname":":flag_at:","aliases":":at:","keywords":"austria country nation österreich osterreich"},"flag_be":{"unicode":"1F1E7-1F1EA","shortname":":flag_be:","aliases":":be:","keywords":"belgium country nation belgique belgie"},"flag_br":{"unicode":"1F1E7-1F1F7","shortname":":flag_br:","aliases":":br:","keywords":"brazil country nation brasil"},"flag_ca":{"unicode":"1F1E8-1F1E6","shortname":":flag_ca:","aliases":":ca:","keywords":"canada country nation"},"flag_cl":{"unicode":"1F1E8-1F1F1","shortname":":flag_cl:","aliases":":chile:","keywords":"chile country nation"},"flag_cn":{"unicode":"1F1E8-1F1F3","shortname":":flag_cn:","aliases":":cn:","keywords":"china china chinese prc zhong guo country nation"},"flag_co":{"unicode":"1F1E8-1F1F4","shortname":":flag_co:","aliases":":co:","keywords":"colombia country nation"},"flag_dk":{"unicode":"1F1E9-1F1F0","shortname":":flag_dk:","aliases":":dk:","keywords":"denmark country nation danmark"},"flag_fi":{"unicode":"1F1EB-1F1EE","shortname":":flag_fi:","aliases":":fi:","keywords":"finland country nation suomen tasavalta"},"flag_fr":{"unicode":"1F1EB-1F1F7","shortname":":flag_fr:","aliases":":fr:","keywords":"france banner flag france french nation country"},"flag_de":{"unicode":"1F1E9-1F1EA","shortname":":flag_de:","aliases":":de:","keywords":"germany flag german nation deutschland country"},"flag_hk":{"unicode":"1F1ED-1F1F0","shortname":":flag_hk:","aliases":":hk:","keywords":"hong kong country nation xianggang"},"flag_in":{"unicode":"1F1EE-1F1F3","shortname":":flag_in:","aliases":":in:","keywords":"india country nation bharat"},"flag_id":{"unicode":"1F1EE-1F1E9","shortname":":flag_id:","aliases":":indonesia:","keywords":"indonesia country nation"},"flag_ie":{"unicode":"1F1EE-1F1EA","shortname":":flag_ie:","aliases":":ie:","keywords":"ireland country nation éire eire"},"flag_il":{"unicode":"1F1EE-1F1F1","shortname":":flag_il:","aliases":":il:","keywords":"israel country nation yisra'el yisrael"},"flag_it":{"unicode":"1F1EE-1F1F9","shortname":":flag_it:","aliases":":it:","keywords":"italy flag italy italia country nation"},"flag_jp":{"unicode":"1F1EF-1F1F5","shortname":":flag_jp:","aliases":":jp:","keywords":"japan flag japan nation nippon country"},"flag_kr":{"unicode":"1F1F0-1F1F7","shortname":":flag_kr:","aliases":":kr:","keywords":"korea flag korea nation country"},"flag_mo":{"unicode":"1F1F2-1F1F4","shortname":":flag_mo:","aliases":":mo:","keywords":"macau country nation aomen"},"flag_my":{"unicode":"1F1F2-1F1FE","shortname":":flag_my:","aliases":":my:","keywords":"malaysia country nation"},"flag_mx":{"unicode":"1F1F2-1F1FD","shortname":":flag_mx:","aliases":":mx:","keywords":"mexico country nation"},"flag_nl":{"unicode":"1F1F3-1F1F1","shortname":":flag_nl:","aliases":":nl:","keywords":"the netherlands country nation nederland holland"},"flag_nz":{"unicode":"1F1F3-1F1FF","shortname":":flag_nz:","aliases":":nz:","keywords":"new zealand country nation aotearoa"},"flag_no":{"unicode":"1F1F3-1F1F4","shortname":":flag_no:","aliases":":no:","keywords":"norway country nation norge"},"flag_ph":{"unicode":"1F1F5-1F1ED","shortname":":flag_ph:","aliases":":ph:","keywords":"the philippines country nation pilipinas"},"flag_pl":{"unicode":"1F1F5-1F1F1","shortname":":flag_pl:","aliases":":pl:","keywords":"poland country nation polska"},"flag_pt":{"unicode":"1F1F5-1F1F9","shortname":":flag_pt:","aliases":":pt:","keywords":"portugal country nation"},"flag_pr":{"unicode":"1F1F5-1F1F7","shortname":":flag_pr:","aliases":":pr:","keywords":"puerto rico country nation"},"flag_ru":{"unicode":"1F1F7-1F1FA","shortname":":flag_ru:","aliases":":ru:","keywords":"russia banner flag nation russian country"},"flag_sa":{"unicode":"1F1F8-1F1E6","shortname":":flag_sa:","aliases":":saudiarabia: :saudi:","keywords":"saudi arabia country nation al arabiyah as suudiyah"},"flag_sg":{"unicode":"1F1F8-1F1EC","shortname":":flag_sg:","aliases":":sg:","keywords":"singapore country nation"},"flag_za":{"unicode":"1F1FF-1F1E6","shortname":":flag_za:","aliases":":za:","keywords":"south africa country nation"},"flag_es":{"unicode":"1F1EA-1F1F8","shortname":":flag_es:","aliases":":es:","keywords":"spain flag nation spain españa country espana"},"flag_se":{"unicode":"1F1F8-1F1EA","shortname":":flag_se:","aliases":":se:","keywords":"sweden country nation sverige"},"flag_ch":{"unicode":"1F1E8-1F1ED","shortname":":flag_ch:","aliases":":ch:","keywords":"switzerland country nation"},"flag_tr":{"unicode":"1F1F9-1F1F7","shortname":":flag_tr:","aliases":":tr:","keywords":"turkey country nation turkiye"},"flag_gb":{"unicode":"1F1EC-1F1E7","shortname":":flag_gb:","aliases":":gb:","keywords":"great britain UK banner britsh flag nation united kingdom england country"},"flag_us":{"unicode":"1F1FA-1F1F8","shortname":":flag_us:","aliases":":us:","keywords":"united states american banner country flag nation usa united states of america america old glory"},"flag_ae":{"unicode":"1F1E6-1F1EA","shortname":":flag_ae:","aliases":":ae:","keywords":"the united arab emirates country nation"},"flag_vn":{"unicode":"1F1FB-1F1F3","shortname":":flag_vn:","aliases":":vn:","keywords":"vietnam country nation viet nam"},"flag_af":{"unicode":"1F1E6-1F1EB","shortname":":flag_af:","aliases":":af:","keywords":"afghanistan country nation afghanestan"},"flag_al":{"unicode":"1F1E6-1F1F1","shortname":":flag_al:","aliases":":al:","keywords":"albania country nation shqiperia"},"flag_dz":{"unicode":"1F1E9-1F1FF","shortname":":flag_dz:","aliases":":dz:","keywords":"algeria country nation al jaza'ir al jazair"},"flag_ad":{"unicode":"1F1E6-1F1E9","shortname":":flag_ad:","aliases":":ad:","keywords":"andorra country nation"},"flag_ao":{"unicode":"1F1E6-1F1F4","shortname":":flag_ao:","aliases":":ao:","keywords":"angola country nation"},"flag_ai":{"unicode":"1F1E6-1F1EE","shortname":":flag_ai:","aliases":":ai:","keywords":"anguilla country nation"},"flag_ag":{"unicode":"1F1E6-1F1EC","shortname":":flag_ag:","aliases":":ag:","keywords":"antigua and barbuda country nation"},"flag_ar":{"unicode":"1F1E6-1F1F7","shortname":":flag_ar:","aliases":":ar:","keywords":"argentina country nation"},"flag_am":{"unicode":"1F1E6-1F1F2","shortname":":flag_am:","aliases":":am:","keywords":"armenia country nation hayastan"},"flag_aw":{"unicode":"1F1E6-1F1FC","shortname":":flag_aw:","aliases":":aw:","keywords":"aruba country nation"},"flag_ac":{"unicode":"1F1E6-1F1E8","shortname":":flag_ac:","aliases":":ac:","keywords":"ascension country nation"},"flag_az":{"unicode":"1F1E6-1F1FF","shortname":":flag_az:","aliases":":az:","keywords":"azerbaijan country nation azarbaycan"},"flag_bs":{"unicode":"1F1E7-1F1F8","shortname":":flag_bs:","aliases":":bs:","keywords":"the bahamas country nation"},"flag_bh":{"unicode":"1F1E7-1F1ED","shortname":":flag_bh:","aliases":":bh:","keywords":"bahrain country nation al bahrayn"},"flag_bd":{"unicode":"1F1E7-1F1E9","shortname":":flag_bd:","aliases":":bd:","keywords":"bangladesh country nation"},"flag_bb":{"unicode":"1F1E7-1F1E7","shortname":":flag_bb:","aliases":":bb:","keywords":"barbados country nation"},"flag_by":{"unicode":"1F1E7-1F1FE","shortname":":flag_by:","aliases":":by:","keywords":"belarus country nation byelarus"},"flag_bz":{"unicode":"1F1E7-1F1FF","shortname":":flag_bz:","aliases":":bz:","keywords":"belize country nation"},"flag_bj":{"unicode":"1F1E7-1F1EF","shortname":":flag_bj:","aliases":":bj:","keywords":"benin country nation"},"flag_bm":{"unicode":"1F1E7-1F1F2","shortname":":flag_bm:","aliases":":bm:","keywords":"bermuda country nation"},"flag_bt":{"unicode":"1F1E7-1F1F9","shortname":":flag_bt:","aliases":":bt:","keywords":"bhutan country nation"},"flag_bo":{"unicode":"1F1E7-1F1F4","shortname":":flag_bo:","aliases":":bo:","keywords":"bolivia country nation"},"flag_ba":{"unicode":"1F1E7-1F1E6","shortname":":flag_ba:","aliases":":ba:","keywords":"bosnia and herzegovina country nation bosna i hercegovina"},"flag_bw":{"unicode":"1F1E7-1F1FC","shortname":":flag_bw:","aliases":":bw:","keywords":"botswana country nation"},"flag_bn":{"unicode":"1F1E7-1F1F3","shortname":":flag_bn:","aliases":":bn:","keywords":"brunei country nation"},"flag_bg":{"unicode":"1F1E7-1F1EC","shortname":":flag_bg:","aliases":":bg:","keywords":"bulgaria country nation"},"flag_bf":{"unicode":"1F1E7-1F1EB","shortname":":flag_bf:","aliases":":bf:","keywords":"burkina faso country nation"},"flag_bi":{"unicode":"1F1E7-1F1EE","shortname":":flag_bi:","aliases":":bi:","keywords":"burundi country nation"},"flag_kh":{"unicode":"1F1F0-1F1ED","shortname":":flag_kh:","aliases":":kh:","keywords":"cambodia country nation kampuchea"},"flag_cm":{"unicode":"1F1E8-1F1F2","shortname":":flag_cm:","aliases":":cm:","keywords":"cameroon country nation"},"flag_cv":{"unicode":"1F1E8-1F1FB","shortname":":flag_cv:","aliases":":cv:","keywords":"cape verde country nation cabo verde"},"flag_ky":{"unicode":"1F1F0-1F1FE","shortname":":flag_ky:","aliases":":ky:","keywords":"cayman islands country nation"},"flag_cf":{"unicode":"1F1E8-1F1EB","shortname":":flag_cf:","aliases":":cf:","keywords":"central african republic country nation"},"flag_km":{"unicode":"1F1F0-1F1F2","shortname":":flag_km:","aliases":":km:","keywords":"the comoros country nation"},"flag_cd":{"unicode":"1F1E8-1F1E9","shortname":":flag_cd:","aliases":":congo:","keywords":"the democratic republic of the congo country nation république démocratique du congo republique democratique du congo"},"flag_cg":{"unicode":"1F1E8-1F1EC","shortname":":flag_cg:","aliases":":cg:","keywords":"the republic of the congo country nation"},"flag_td":{"unicode":"1F1F9-1F1E9","shortname":":flag_td:","aliases":":td:","keywords":"chad country nation tchad"},"flag_cr":{"unicode":"1F1E8-1F1F7","shortname":":flag_cr:","aliases":":cr:","keywords":"costa rica country nation"},"flag_ci":{"unicode":"1F1E8-1F1EE","shortname":":flag_ci:","aliases":":ci:","keywords":"cote d'ivoire country nation"},"flag_hr":{"unicode":"1F1ED-1F1F7","shortname":":flag_hr:","aliases":":hr:","keywords":"croatia country nation hrvatska"},"flag_cu":{"unicode":"1F1E8-1F1FA","shortname":":flag_cu:","aliases":":cu:","keywords":"cuba country nation"},"flag_cy":{"unicode":"1F1E8-1F1FE","shortname":":flag_cy:","aliases":":cy:","keywords":"cyprus country nation kibris kypros"},"flag_cz":{"unicode":"1F1E8-1F1FF","shortname":":flag_cz:","aliases":":cz:","keywords":"the czech republic country nation ceska republika"},"flag_dj":{"unicode":"1F1E9-1F1EF","shortname":":flag_dj:","aliases":":dj:","keywords":"djibouti country nation"},"flag_dm":{"unicode":"1F1E9-1F1F2","shortname":":flag_dm:","aliases":":dm:","keywords":"dominica country nation"},"flag_do":{"unicode":"1F1E9-1F1F4","shortname":":flag_do:","aliases":":do:","keywords":"the dominican republic country nation"},"flag_tl":{"unicode":"1F1F9-1F1F1","shortname":":flag_tl:","aliases":":tl:","keywords":"east timor country nation"},"flag_ec":{"unicode":"1F1EA-1F1E8","shortname":":flag_ec:","aliases":":ec:","keywords":"ecuador country nation"},"flag_eg":{"unicode":"1F1EA-1F1EC","shortname":":flag_eg:","aliases":":eg:","keywords":"egypt country nation misr"},"flag_sv":{"unicode":"1F1F8-1F1FB","shortname":":flag_sv:","aliases":":sv:","keywords":"el salvador country nation"},"flag_gq":{"unicode":"1F1EC-1F1F6","shortname":":flag_gq:","aliases":":gq:","keywords":"equatorial guinea country nation guinea ecuatorial"},"flag_er":{"unicode":"1F1EA-1F1F7","shortname":":flag_er:","aliases":":er:","keywords":"eritrea country nation hagere ertra"},"flag_ee":{"unicode":"1F1EA-1F1EA","shortname":":flag_ee:","aliases":":ee:","keywords":"estonia country nation eesti vabariik"},"flag_et":{"unicode":"1F1EA-1F1F9","shortname":":flag_et:","aliases":":et:","keywords":"ethiopia country nation ityop'iya ityopiya"},"flag_fk":{"unicode":"1F1EB-1F1F0","shortname":":flag_fk:","aliases":":fk:","keywords":"falkland islands country nation islas malvinas"},"flag_fo":{"unicode":"1F1EB-1F1F4","shortname":":flag_fo:","aliases":":fo:","keywords":"faroe islands country nation foroyar"},"flag_fj":{"unicode":"1F1EB-1F1EF","shortname":":flag_fj:","aliases":":fj:","keywords":"fiji country nation"},"flag_pf":{"unicode":"1F1F5-1F1EB","shortname":":flag_pf:","aliases":":pf:","keywords":"french polynesia country nation polynésie française polynesie francaise"},"flag_ga":{"unicode":"1F1EC-1F1E6","shortname":":flag_ga:","aliases":":ga:","keywords":"gabon country nation"},"flag_gm":{"unicode":"1F1EC-1F1F2","shortname":":flag_gm:","aliases":":gm:","keywords":"the gambia country nation"},"flag_ge":{"unicode":"1F1EC-1F1EA","shortname":":flag_ge:","aliases":":ge:","keywords":"georgia country nation sak'art'velo sakartvelo"},"flag_gh":{"unicode":"1F1EC-1F1ED","shortname":":flag_gh:","aliases":":gh:","keywords":"ghana country nation"},"flag_gi":{"unicode":"1F1EC-1F1EE","shortname":":flag_gi:","aliases":":gi:","keywords":"gibraltar country nation"},"flag_gr":{"unicode":"1F1EC-1F1F7","shortname":":flag_gr:","aliases":":gr:","keywords":"greece country nation ellas ellada"},"flag_gl":{"unicode":"1F1EC-1F1F1","shortname":":flag_gl:","aliases":":gl:","keywords":"greenland country nation kalaallit nunaat"},"flag_gd":{"unicode":"1F1EC-1F1E9","shortname":":flag_gd:","aliases":":gd:","keywords":"grenada country nation"},"flag_gu":{"unicode":"1F1EC-1F1FA","shortname":":flag_gu:","aliases":":gu:","keywords":"guam country nation"},"flag_gt":{"unicode":"1F1EC-1F1F9","shortname":":flag_gt:","aliases":":gt:","keywords":"guatemala country nation"},"flag_gn":{"unicode":"1F1EC-1F1F3","shortname":":flag_gn:","aliases":":gn:","keywords":"guinea country nation guinee"},"flag_gw":{"unicode":"1F1EC-1F1FC","shortname":":flag_gw:","aliases":":gw:","keywords":"guinea-bissau country nation guine-bissau guine bissau"},"flag_gy":{"unicode":"1F1EC-1F1FE","shortname":":flag_gy:","aliases":":gy:","keywords":"guyana country nation"},"flag_ht":{"unicode":"1F1ED-1F1F9","shortname":":flag_ht:","aliases":":ht:","keywords":"haiti country nation"},"flag_hn":{"unicode":"1F1ED-1F1F3","shortname":":flag_hn:","aliases":":hn:","keywords":"honduras country nation"},"flag_hu":{"unicode":"1F1ED-1F1FA","shortname":":flag_hu:","aliases":":hu:","keywords":"hungary country nation magyarorszag"},"flag_is":{"unicode":"1F1EE-1F1F8","shortname":":flag_is:","aliases":":is:","keywords":"iceland country nation lyoveldio island"},"flag_ir":{"unicode":"1F1EE-1F1F7","shortname":":flag_ir:","aliases":":ir:","keywords":"iran country nation"},"flag_iq":{"unicode":"1F1EE-1F1F6","shortname":":flag_iq:","aliases":":iq:","keywords":"iraq country nation"},"flag_jm":{"unicode":"1F1EF-1F1F2","shortname":":flag_jm:","aliases":":jm:","keywords":"jamaica country nation"},"flag_je":{"unicode":"1F1EF-1F1EA","shortname":":flag_je:","aliases":":je:","keywords":"jersey country nation"},"flag_jo":{"unicode":"1F1EF-1F1F4","shortname":":flag_jo:","aliases":":jo:","keywords":"jordan country nation al urdun"},"flag_kz":{"unicode":"1F1F0-1F1FF","shortname":":flag_kz:","aliases":":kz:","keywords":"kazakhstan country nation qazaqstan"},"flag_ke":{"unicode":"1F1F0-1F1EA","shortname":":flag_ke:","aliases":":ke:","keywords":"kenya country nation"},"flag_ki":{"unicode":"1F1F0-1F1EE","shortname":":flag_ki:","aliases":":ki:","keywords":"kiribati country nation kiribati kiribas"},"flag_xk":{"unicode":"1F1FD-1F1F0","shortname":":flag_xk:","aliases":":xk:","keywords":"kosovo country nation"},"flag_kw":{"unicode":"1F1F0-1F1FC","shortname":":flag_kw:","aliases":":kw:","keywords":"kuwait country nation al kuwayt"},"flag_kg":{"unicode":"1F1F0-1F1EC","shortname":":flag_kg:","aliases":":kg:","keywords":"kyrgyzstan country nation kyrgyz respublikasy"},"flag_la":{"unicode":"1F1F1-1F1E6","shortname":":flag_la:","aliases":":la:","keywords":"laos country nation"},"flag_lv":{"unicode":"1F1F1-1F1FB","shortname":":flag_lv:","aliases":":lv:","keywords":"latvia country nation latvija"},"flag_lb":{"unicode":"1F1F1-1F1E7","shortname":":flag_lb:","aliases":":lb:","keywords":"lebanon country nation lubnan"},"flag_ls":{"unicode":"1F1F1-1F1F8","shortname":":flag_ls:","aliases":":ls:","keywords":"lesotho country nation"},"flag_lr":{"unicode":"1F1F1-1F1F7","shortname":":flag_lr:","aliases":":lr:","keywords":"liberia country nation"},"flag_ly":{"unicode":"1F1F1-1F1FE","shortname":":flag_ly:","aliases":":ly:","keywords":"libya country nation libiyah"},"flag_li":{"unicode":"1F1F1-1F1EE","shortname":":flag_li:","aliases":":li:","keywords":"liechtenstein country nation"},"flag_lt":{"unicode":"1F1F1-1F1F9","shortname":":flag_lt:","aliases":":lt:","keywords":"lithuania country nation lietuva"},"flag_lu":{"unicode":"1F1F1-1F1FA","shortname":":flag_lu:","aliases":":lu:","keywords":"luxembourg country nation luxembourg letzebuerg"},"flag_mk":{"unicode":"1F1F2-1F1F0","shortname":":flag_mk:","aliases":":mk:","keywords":"macedonia country nation"},"flag_mg":{"unicode":"1F1F2-1F1EC","shortname":":flag_mg:","aliases":":mg:","keywords":"madagascar country nation"},"flag_mw":{"unicode":"1F1F2-1F1FC","shortname":":flag_mw:","aliases":":mw:","keywords":"malawi country nation"},"flag_mv":{"unicode":"1F1F2-1F1FB","shortname":":flag_mv:","aliases":":mv:","keywords":"maldives country nation dhivehi raajje"},"flag_ml":{"unicode":"1F1F2-1F1F1","shortname":":flag_ml:","aliases":":ml:","keywords":"mali country nation"},"flag_mt":{"unicode":"1F1F2-1F1F9","shortname":":flag_mt:","aliases":":mt:","keywords":"malta country nation"},"flag_mh":{"unicode":"1F1F2-1F1ED","shortname":":flag_mh:","aliases":":mh:","keywords":"the marshall islands country nation"},"flag_mr":{"unicode":"1F1F2-1F1F7","shortname":":flag_mr:","aliases":":mr:","keywords":"mauritania country nation muritaniyah"},"flag_mu":{"unicode":"1F1F2-1F1FA","shortname":":flag_mu:","aliases":":mu:","keywords":"mauritius country nation"},"flag_fm":{"unicode":"1F1EB-1F1F2","shortname":":flag_fm:","aliases":":fm:","keywords":"micronesia country nation"},"flag_md":{"unicode":"1F1F2-1F1E9","shortname":":flag_md:","aliases":":md:","keywords":"moldova country nation"},"flag_mc":{"unicode":"1F1F2-1F1E8","shortname":":flag_mc:","aliases":":mc:","keywords":"monaco country nation"},"flag_mn":{"unicode":"1F1F2-1F1F3","shortname":":flag_mn:","aliases":":mn:","keywords":"mongolia country nation mongol uls"},"flag_me":{"unicode":"1F1F2-1F1EA","shortname":":flag_me:","aliases":":me:","keywords":"montenegro country nation crna gora"},"flag_ms":{"unicode":"1F1F2-1F1F8","shortname":":flag_ms:","aliases":":ms:","keywords":"montserrat country nation"},"flag_ma":{"unicode":"1F1F2-1F1E6","shortname":":flag_ma:","aliases":":ma:","keywords":"morocco country nation al maghrib"},"flag_mz":{"unicode":"1F1F2-1F1FF","shortname":":flag_mz:","aliases":":mz:","keywords":"mozambique country nation mocambique"},"flag_mm":{"unicode":"1F1F2-1F1F2","shortname":":flag_mm:","aliases":":mm:","keywords":"myanmar country nation myanma naingngandaw"},"flag_na":{"unicode":"1F1F3-1F1E6","shortname":":flag_na:","aliases":":na:","keywords":"namibia country nation"},"flag_nr":{"unicode":"1F1F3-1F1F7","shortname":":flag_nr:","aliases":":nr:","keywords":"nauru country nation"},"flag_np":{"unicode":"1F1F3-1F1F5","shortname":":flag_np:","aliases":":np:","keywords":"nepal country nation"},"flag_nc":{"unicode":"1F1F3-1F1E8","shortname":":flag_nc:","aliases":":nc:","keywords":"new caledonia country nation nouvelle calédonie caledonie"},"flag_ni":{"unicode":"1F1F3-1F1EE","shortname":":flag_ni:","aliases":":ni:","keywords":"nicaragua country nation"},"flag_ne":{"unicode":"1F1F3-1F1EA","shortname":":flag_ne:","aliases":":ne:","keywords":"niger country nation"},"flag_ng":{"unicode":"1F1F3-1F1EC","shortname":":flag_ng:","aliases":":nigeria:","keywords":"nigeria country nation"},"flag_nu":{"unicode":"1F1F3-1F1FA","shortname":":flag_nu:","aliases":":nu:","keywords":"niue country nation"},"flag_kp":{"unicode":"1F1F0-1F1F5","shortname":":flag_kp:","aliases":":kp:","keywords":"north korea country nation"},"flag_om":{"unicode":"1F1F4-1F1F2","shortname":":flag_om:","aliases":":om:","keywords":"oman country nation saltanat uman"},"flag_pk":{"unicode":"1F1F5-1F1F0","shortname":":flag_pk:","aliases":":pk:","keywords":"pakistan country nation"},"flag_pw":{"unicode":"1F1F5-1F1FC","shortname":":flag_pw:","aliases":":pw:","keywords":"palau country nation belau"},"flag_ps":{"unicode":"1F1F5-1F1F8","shortname":":flag_ps:","aliases":":ps:","keywords":"palestinian authority country nation"},"flag_pa":{"unicode":"1F1F5-1F1E6","shortname":":flag_pa:","aliases":":pa:","keywords":"panama country nation"},"flag_pg":{"unicode":"1F1F5-1F1EC","shortname":":flag_pg:","aliases":":pg:","keywords":"papua new guinea country nation papua niu gini"},"flag_py":{"unicode":"1F1F5-1F1FE","shortname":":flag_py:","aliases":":py:","keywords":"paraguay country nation"},"flag_pe":{"unicode":"1F1F5-1F1EA","shortname":":flag_pe:","aliases":":pe:","keywords":"peru country nation"},"flag_qa":{"unicode":"1F1F6-1F1E6","shortname":":flag_qa:","aliases":":qa:","keywords":"qatar country nation dawlat qatar"},"flag_ro":{"unicode":"1F1F7-1F1F4","shortname":":flag_ro:","aliases":":ro:","keywords":"romania country nation"},"flag_rw":{"unicode":"1F1F7-1F1FC","shortname":":flag_rw:","aliases":":rw:","keywords":"rwanda country nation"},"flag_sh":{"unicode":"1F1F8-1F1ED","shortname":":flag_sh:","aliases":":sh:","keywords":"saint helena country nation"},"flag_kn":{"unicode":"1F1F0-1F1F3","shortname":":flag_kn:","aliases":":kn:","keywords":"saint kitts and nevis country nation "},"flag_lc":{"unicode":"1F1F1-1F1E8","shortname":":flag_lc:","aliases":":lc:","keywords":"saint lucia country nation"},"flag_vc":{"unicode":"1F1FB-1F1E8","shortname":":flag_vc:","aliases":":vc:","keywords":"saint vincent and the grenadines country nation "},"flag_ws":{"unicode":"1F1FC-1F1F8","shortname":":flag_ws:","aliases":":ws:","keywords":"samoa country nation american samoa"},"flag_sm":{"unicode":"1F1F8-1F1F2","shortname":":flag_sm:","aliases":":sm:","keywords":"san marino country nation"},"flag_st":{"unicode":"1F1F8-1F1F9","shortname":":flag_st:","aliases":":st:","keywords":"sao tome and principe country nation sao tome e principe"},"flag_sn":{"unicode":"1F1F8-1F1F3","shortname":":flag_sn:","aliases":":sn:","keywords":"senegal country nation"},"flag_rs":{"unicode":"1F1F7-1F1F8","shortname":":flag_rs:","aliases":":rs:","keywords":"serbia country nation srbija"},"flag_sc":{"unicode":"1F1F8-1F1E8","shortname":":flag_sc:","aliases":":sc:","keywords":"the seychelles country nation seychelles"},"flag_sl":{"unicode":"1F1F8-1F1F1","shortname":":flag_sl:","aliases":":sl:","keywords":"sierra leone country nation"},"flag_sk":{"unicode":"1F1F8-1F1F0","shortname":":flag_sk:","aliases":":sk:","keywords":"slovakia country nation"},"flag_si":{"unicode":"1F1F8-1F1EE","shortname":":flag_si:","aliases":":si:","keywords":"slovenia country nation slovenija"},"flag_sb":{"unicode":"1F1F8-1F1E7","shortname":":flag_sb:","aliases":":sb:","keywords":"the solomon islands country nation"},"flag_so":{"unicode":"1F1F8-1F1F4","shortname":":flag_so:","aliases":":so:","keywords":"somalia country nation"},"flag_lk":{"unicode":"1F1F1-1F1F0","shortname":":flag_lk:","aliases":":lk:","keywords":"sri lanka country nation"},"flag_sd":{"unicode":"1F1F8-1F1E9","shortname":":flag_sd:","aliases":":sd:","keywords":"sudan country nation as-sudan"},"flag_sr":{"unicode":"1F1F8-1F1F7","shortname":":flag_sr:","aliases":":sr:","keywords":"suriname country nation"},"flag_sz":{"unicode":"1F1F8-1F1FF","shortname":":flag_sz:","aliases":":sz:","keywords":"swaziland country nation"},"flag_sy":{"unicode":"1F1F8-1F1FE","shortname":":flag_sy:","aliases":":sy:","keywords":"syria country nation"},"flag_tw":{"unicode":"1F1F9-1F1FC","shortname":":flag_tw:","aliases":":tw:","keywords":"the republic of china country nation"},"flag_tj":{"unicode":"1F1F9-1F1EF","shortname":":flag_tj:","aliases":":tj:","keywords":"tajikistan country nation jumhurii tojikiston"},"flag_tz":{"unicode":"1F1F9-1F1FF","shortname":":flag_tz:","aliases":":tz:","keywords":"tanzania country nation"},"flag_th":{"unicode":"1F1F9-1F1ED","shortname":":flag_th:","aliases":":th:","keywords":"thailand country nation prathet thai"},"flag_tg":{"unicode":"1F1F9-1F1EC","shortname":":flag_tg:","aliases":":tg:","keywords":"togo country nation republique togolaise"},"flag_to":{"unicode":"1F1F9-1F1F4","shortname":":flag_to:","aliases":":to:","keywords":"tonga country nation"},"flag_tt":{"unicode":"1F1F9-1F1F9","shortname":":flag_tt:","aliases":":tt:","keywords":"trinidad and tobago country nation"},"flag_tn":{"unicode":"1F1F9-1F1F3","shortname":":flag_tn:","aliases":":tn:","keywords":"tunisia country nation tunis"},"flag_tm":{"unicode":"1F1F9-1F1F2","shortname":":flag_tm:","aliases":":turkmenistan:","keywords":"turkmenistan country nation"},"flag_tv":{"unicode":"1F1F9-1F1FB","shortname":":flag_tv:","aliases":":tuvalu:","keywords":"tuvalu country nation"},"flag_vi":{"unicode":"1F1FB-1F1EE","shortname":":flag_vi:","aliases":":vi:","keywords":"u.s. virgin islands country nation"},"flag_ug":{"unicode":"1F1FA-1F1EC","shortname":":flag_ug:","aliases":":ug:","keywords":"uganda country nation"},"flag_ua":{"unicode":"1F1FA-1F1E6","shortname":":flag_ua:","aliases":":ua:","keywords":"ukraine country nation ukrayina"},"flag_uy":{"unicode":"1F1FA-1F1FE","shortname":":flag_uy:","aliases":":uy:","keywords":"uruguay country nation"},"flag_uz":{"unicode":"1F1FA-1F1FF","shortname":":flag_uz:","aliases":":uz:","keywords":"uzbekistan country nation uzbekiston respublikasi"},"flag_vu":{"unicode":"1F1FB-1F1FA","shortname":":flag_vu:","aliases":":vu:","keywords":"vanuatu country nation"},"flag_va":{"unicode":"1F1FB-1F1E6","shortname":":flag_va:","aliases":":va:","keywords":"the vatican city country nation"},"flag_ve":{"unicode":"1F1FB-1F1EA","shortname":":flag_ve:","aliases":":ve:","keywords":"venezuela country nation"},"flag_wf":{"unicode":"1F1FC-1F1EB","shortname":":flag_wf:","aliases":":wf:","keywords":"wallis and futuna country nation"},"flag_eh":{"unicode":"1F1EA-1F1ED","shortname":":flag_eh:","aliases":":eh:","keywords":"western sahara country nation a\u1e63-\u1e62a\u1e25r\u0101\u2019 al-gharb\u012byah sahra gharbiyah"},"flag_ye":{"unicode":"1F1FE-1F1EA","shortname":":flag_ye:","aliases":":ye:","keywords":"yemen country nation al yaman"},"flag_zm":{"unicode":"1F1FF-1F1F2","shortname":":flag_zm:","aliases":":zm:","keywords":"zambia country nation"},"flag_zw":{"unicode":"1F1FF-1F1FC","shortname":":flag_zw:","aliases":":zw:","keywords":"zimbabwe country nation"}};
+
+module.export = emojiStrategy;
@@ -21,6 +21,7 @@
</button>
</section>
<section id="contacts-list-filters">
+ <label for="contacts-list-search" id="contacts-list-search-label" class="fa fa-search" aria-hidden="true"></label>
<input id="contacts-list-search" placeholder="Type to search...">
<button id="contacts-list-filter">Online</button>
</section>
@@ -172,11 +173,68 @@
</footer>
</dialog>
</div>
-
+
+ <script src="../helpers/emojiStrategy.js"></script>
<script>
- const filePath = __dirname;
- console.log(filePath);
require('../controllers/renderer.js');
+
+ // SHAME ON ME FOR USING JQUERY BUT THERE IS NO OTHER SIMPLE WAY :'(
+ $("#chatview-entry").textcomplete([{
+ match: /\B:([\-+\w]*)$/,
+ search: function (term, callback) {
+ var results = [];
+ var results2 = [];
+ var results3 = [];
+ $.each(emojiStrategy, function(shortname,data) {
+ if(shortname.indexOf(term) > -1) { results.push(shortname); }
+ else {
+ if((data.aliases !== null) && (data.aliases.indexOf(term) > -1)) {
+ results2.push(shortname);
+ }
+ else if((data.keywords !== null) && (data.keywords.indexOf(term) > -1)) {
+ results3.push(shortname);
+ }
+ }
+ });
+
+ if(term.length >= 3) {
+ results.sort(function(a,b) { return (a.length > b.length); });
+ results2.sort(function(a,b) { return (a.length > b.length); });
+ results3.sort();
+ }
+ var newResults = results.concat(results2).concat(results3);
+
+ callback(newResults);
+ },
+ template: function (shortname) {
+ window.emojiSearch = true;
+ return `${emojione.shortnameToImage(':'+shortname+':')} :${shortname}:`;
+ },
+ replace: function (shortname) {
+ window.emojiSearch = false;
+ return ':'+shortname+': ';
+ },
+ index: 1,
+ maxCount: 5
+ }], {
+ //height: 265,
+ maxCount: 5,
+ placement: 'top',
+ debounce: 500,
+ noResultsMessage: "<small style='padding: 0 10px;'>No emoji found for this pattern.</small>",
+ onKeydown: function (e, commands) {
+ // `commands` has `KEY_UP`, `KEY_DOWN`, `KEY_ENTER`, `KEY_PAGEUP`, `KEY_PAGEDOWN`,
+ // `KEY_ESCAPE` and `SKIP_DEFAULT`.
+ if (e.keyCode === 13) {
+ // Treat CTRL-J as enter key.
+ return commands.KEY_ENTER;
+ } else if (e.keyCode === 27 || e.keyCode === 8) {
+ window.emojiSearch = false;
+ }
+ // If the function does not return a result or undefined is returned,
+ // the plugin uses default behavior.
+ }
+ });
</script>
</body>
</html>
@@ -17,7 +17,16 @@
"type": "git",
"url": "git+https://github.com/SkyzohKey/Tox-client.git"
},
- "keywords": [ "Tox", "Toxcore", "client", "Instant Messaging", "im", "secure", "p2p", "encrypted" ],
+ "keywords": [
+ "Tox",
+ "Toxcore",
+ "client",
+ "Instant Messaging",
+ "im",
+ "secure",
+ "p2p",
+ "encrypted"
+ ],
"author": "SkyzohKey <skyzohkey@invmail.io>",
"license": "MIT",
"bugs": {
@@ -30,6 +39,8 @@
"date-format": "0.0.2",
"electron-context-menu": "^0.4.0",
"emojione": "^2.2.6",
+ "jquery": "^3.1.0",
+ "jquery-textcomplete": "^1.6.2",
"toxcore": "^1.3.0"
}
}
\n